Werken met servo's

Gepost door Jeroen Vreuls op maandag 9 november 2015 21:36

Modelbouw servo's

Modelbouw servo's zijn wel vaak systemen die maar een X-aantal graden versteld kunnen worden, maar ze vallen toch onder de noemer servo. De werking is dan ook een beetje hetzelfde, het zijn ook gesloten regelsystemen, net als de grotere broers. Zie het voorbeeld hieronder.

Blokschema van een modelbouw servoBlokschema van een modelbouw servo

Zoals je kan zien verschilt het blokschema niet zoveel van zijn grote broer. Het inputsignaal is wel anders, hier is het een PWM-signaal met een vaste frequentie van 50 Hz en een variabele pulsbreedte die varieert tussen de 1 en 2 milliseconden. Met een signaal van 1 ms staat de servo bijvoorbeeld helemaal links en met een signaal van 2 milliseconden staat de servo helemaal rechts. Als het signaal 1,5 ms bedraagt staat de servo precies in de middenstand.

De as van een modelbouw servo kan +/- 180 graden (verschilt per servo) verdraaien. Het inputsignaal is meestal afkomstig van een zender en ontvanger. Het zendersignaal wordt in de ontvanger omgezet naar een variabele puls breedte. De elektronica in de servo (tegenwoordig bij digitale servo's is dat een microcontroller) stuurt de eindversterker aan die op zijn beurt de motor bedient. Het teruggekoppelde potmetersignaal zorgt ervoor dat de servo naar zijn gewenste positie loopt. Dus wat de encoder doet bij de industriële systemen, doet de potmeter bij de modelbouw servo's. Niets anders dus dan de gewenste positie vergelijken met de positie van de motoras.

Opbouw

Hieronder zie je hoe zo'n modelbouw servo is opgebouwd.

Opbouw van een modelbouw servoOpbouw van een modelbouw servo

De servo bestaat uit een motor, een vertraging, de potmeter voor de positie bepaling, een mechanische stop (deze is belangrijk, want die beschermt de potmeter tegen te ver doordraaien) en niet te vergeten de besturingselektronica. De modelbouw servo heeft drie aansluitdraden, een plus, een min en de draad waar het PWM-signaal op binnen komt.

Hieronder één van de mogelijke schema's van de besturingselektronica.

Besturingselektronica met een M516600LBesturingselektronica met een M516600L

Op het schema kun je zien hoe zo'n besturing is opgebouwd. Het hart van de besturing is de M51660L, dit IC regelt alles. Het enige wat nodig is, zijn nog wat randcomponenten voor de juiste werking. Op pen 1 komt het potmetersignaal binnen, daar wordt de servo positie op ingelezen. Pen 2 en 3 zijn voor de timing. Pen 4 en 12 sturen de externe PNP transistoren aan. Pen 5 is het ingangssignaal dat bijvoorbeeld van de ontvanger komt. Op pen 6 en pen 10 zitten de interne transistoren, die samen met de externe transistoren de motor aansturen. Pin 9 is de error puls uitgang. Pen 11 de stretcher ingang.

Pen 13 verzorgt de spanning voor de potmeter. Pen 7 en pen 8 zijn de GND aansluitingen en pen 14 is de voeding voor het IC. Zo heb je een idee hoe een modelbouw servo is opgebouwd.

Besturen van modelbouw servo's

Aan de besturing in de servo kan je weinig veranderen, maar het besturen van een modelbouw servo kan op verschillende manieren. We hadden het al over de ontvanger die voor dit signaal zorgt, maar dat kan ook anders. Je kan bijvoorbeeld met een 4001 (een NOR-poort) een prima puls generator maken waar je dan de servo mee kan bedienen. Zie het schema hieronder.

Servo aansturing met NOR-gatesServo aansturing met NOR-gates

De schakeling kan gevoed worden met een spanning tussen de 4,8 en 6 V DC. Er komen twee pulsen af, de ene is geïnverteerd ten opzichte van de ander. Dit kan makkelijk zijn omdat er servo's zijn die een geïnverteerd signaal nodig hebben. Zo kan je op een eenvoudige manier dus je servo bedienen.

En zo kunnen we met een NE555 ook een puls generator maken om een modelbouw servo te bedienen. Zie schema hieronder.

Servo aansturing met een 555Servo aansturing met een 555

Het is ook mogelijk om het met een microcontroller te doen, met bijvoorbeeld een PIC12F629 of een PIC12F675 kan dat heel simpel gerealiseerd worden. Hieronder het schema.

Servo aansturing met een PIC microcontrollerServo aansturing met een PIC microcontroller

Hier het programma wat in de controller staat voor het bedienen van de servo.

Device 12F675                      ; Processor type
 
Xtal 10                            ; Kristal 10 Mhz
 
Config WDT_OFF,_                   ; WatchDog Timer uit
       PWRTE_ON,_                  ; Power-up Timer Enable aan
       MCLRE_OFF,_                 ; Externe Master Reset Enable uit
       HS_OSC                      ; X-tal groter dan 4MHz
 
All_Digital true                   ; Alle poorten digitaal
 
Symbol servo_1 = GPIO.1            ; Servo uitgang_1
Symbol servo_2 = GPIO.2            ; Servo uitgang_2
 
Declare Adin_Res = 8               ; Resolutie 8 bits
Declare Adin_Tad = frc             ; Set rc osc
Declare Adin_Stime = 50            ; Sample tijd 5
 
Dim potmeter As Byte               ; Variabele waarde potmeter
Dim positie As Word                ; Variabele waarde positie
Clear                              ; wis geheugen
 
         ;543210                   ; Hulpregel
GPIO   = %000000                   ; Maak poort laag
TRISIO = %001001                   ; In- en uitgangen
 
         ;76543210                 ; Hulpregel adcon register
ADCON0 = %00000001                 ; A/D control register
 
run:                               ; Run programma
    potmeter = ADIn 0              ; Potmeter op analoog_0
    positie = 850 + (potmeter * 7) ; Berekening positie servo
    Servo servo_1,positie          ; Uitsturing positie servo_1
    Servo servo_2,positie          ; Uitsturing positie servo_2
    DelayMS 20                     ; Pauze 20 Ms
    GoTo run                       ; Ga naar run programma
End                                ; Einde programma

Zoals je kan zien stelt het programma niet veel voor, op de analoge ingang (ADIN_0) komt de potmeter die de servo gaat bedienen. De minimale positie van de servo is 850, dat is de waarde als de potmeter op nul staat. De maximale waarde is 850 + (255 X 7) = 850 + 1785 = 2635. Die waardes vallen buiten de 1 en 2 milliseconden, maar de ene servo pikt dat wel en de andere servo niet. Dat ligt dus aan de constructie van de servo. Ik heb een HITEC HS300 gebruikt en die haalt het wel. Dus als je gaat experimenteren kan je de waarde achter positie aanpassen, plus potmeter * 7.

Modelbouw servo zonder mechanische stop

We hebben nu gezien hoe je een servo heen en weer kan laten lopen, daar is hij ook voor bedoeld. Maar met een kleine aanpassing kan je er ook een mooie aandrijving mee maken die gewoon rondjes kan draaien, bijvoorbeeld om een robot mee aan te drijven. Wat we dan doen is de mechanische stop eruit halen en de potmeter loshalen van de servo-as. De potmeter zet je nu in de middenstand en die lijm je bijvoorbeeld vast. Je kan de potmeter ook vervangen door twee weerstanden van gelijke waarde. In het schema van de standaard besturingselektronica staat dat de weerstand van de potmeter 5 kΩ is. Dus je zou twee weerstanden van bijvoorbeeld 2,2 kΩ kunnen nemen, maar je kan ook de potmeter laten zitten. Hieronder zie je het voorbeeld, kijk wat er veranderd is ten opzichte van de standaard servo.

Modelbouw servo zonder mechanische stopModelbouw servo zonder mechanische stop

Als je de potmeter wil vervangen kan je dat op deze manier doen. Zie het voorbeeld hieronder.

De potmeter vervangen door weerstandenAls je de potmeter verwijdert en je zet de twee weerstanden zo neer als in het voorbeeld, dan krijg je dezelfde waarde als met de potmeter in de middenstand.

Ik heb nu 2,2 kΩ weerstanden genomen, maar dat kan ook een andere waarde zijn natuurlijk. Als je twijfelt kan je de waarde van de potmeter even opmeten, dan weet je het helemaal zeker. Meet de waarde tussen de twee buitenste pootjes en deel de waarde door twee. Als daar een waarde uitkomt waar geen weerstand voor is, dan kies je de waarde die er zo dicht mogelijk bij in de buurt komt. Voor de weerstanden kan je gewoon 0,6 W types nemen. Ik zou wel 1 % weerstanden nemen, dan heb je de kleinste afwijking.

Als je de weerstanden gemonteerd hebt kan je de servo nu gebruiken als aandrijving om bijvoorbeeld een robot te laten rijden. Je hebt er dan wel twee nodig natuurlijk.

Als je de servo nu aansluit op bijvoorbeeld één van de drie voorbeelden die ik gegeven heb (de besturing met de NE555, de besturing met de controller of de besturing met de window comparator) dan moet de servo stilstaan als de potmeter van de besturing in de middenstand staat. Als je nu de potmeter iets verdraait zal de servo langzaam gaan draaien, bijvoorbeeld rechtsom. Als je de potmeter wat verder draait gaat de servo sneller draaien. Draai je de potmeter nu terug naar de middenstand, dan zal de servo weer stil staan. Draai je de potmeter nu de andere kant op, dan loopt de servo linksom. Dus nu kan je de servo zowel rechtsom als linksom sturen en in toerental regelen.

En hoe komt het nu dat de servo zich anders gedraagt na de aanpassing? Dat komt omdat de interne potmeter zijn werkt niet meer doet. De servo is zijn positie terugkoppeling kwijt. De servo wordt wel in toeren geregeld en een bepaalde kant op gestuurd, maar hij weet niet meer waar hij moet stoppen.

Maar zoals ik al eerder zei, kun je er op deze manier toch leuke dingen mee doen. Je zou er bijvoorbeeld een lineaire actuator mee kunnen maken, met een spindel, een tandriem, tandheugel, enzovoort. Je zou bijvoorbeeld een nep hydraulische cilinder kunnen maken met een stuk draadeind en een kleine aangepaste servo, leuk om een hydraulische kraan mee te maken. En zo is er genoeg te verzinnen.