web counter

Beladen kolenwagons

Digitale servosturing

Digitale servosturing via Marklin Motorola protocol

Wissels aansturen met een MS1

S88 Terugmelders


Zelfbouw LocoNet projecten

Contact:
Geert.Giebens(at)gmail.com


 

 

NIEUW: LocoNet projecten

Een servo zelf aansturen met eenvoudige elektronica:
 

Inhoud:

Principe werking
Basisschakeling
Meerdere servo's aansturen met dezelfde elektronica
Geleidelijke 1ms naar 2ms en andersom


Principe werking:

De werking van een standaard servo is als volgt uit te leggen:

Standaard servo's hebben drie aansluitingen:
-Op n ingang van een servo worden pulsen gezet die kunnen variren tussen 1ms en 2ms. Deze pulsen herhalen zich ongeveer elke 20ms.
  Een puls van 1,5ms is min of meer de middenstand van een servo.
-De overige twee ingangen dienen voor de voeding van de servo, 5V en massa.

De servos die ik gebruik draaien ook verder met pulsen lager dan 1ms of hoger dan 2ms. De elektronica zoals verder beschreven is hierop aangepast.
De elektronica van een servo vergelijkt de aangebrachte puls met een intern opgewekte puls. De interne pulstijd is afhankelijk van de positie van een potmeter (een soort variabele weerstand) die aangebracht is op een as in de servo.
Als de aangebrachte puls langer is dan de interne opgewekte puls, dan krijgt de motor van de servo even een positieve stroom en draait iets verder. Is de aangebrachte puls korter, dan krijgt de motor even een negatieve stroom, en draait iets terug. Enkel als er een verschil is tussen de pulsen, krijgt de servomotor ofwel een positieve of negatieve stroom. De servomotor blijft stroompulsen krijgen totdat de interne en externe pulsen gelijk zijn.

Je ziet op de foto hiernaast (een opengemaakte servo) rechtsboven de potmeter met drie rode aansluitdraden  die op de as van de servoarm geplaatst is. Linksonder zie je het kleine motortje dat de tandwielen aandrijft van de servoarm. En in het midden zie je de stuurelektronica. De door mij gebruikte servo's hebben PVC tandwielen. Maar deze voldoen om een wisseltong te verplaatsen. En voor 2 moet je ook niet te veel willen h....

 

 

 

 


 

Basisschakeling:

Dit is de basisschakeling (wat later iets uitgebreid gaat worden) die we gaan gebruiken om een servo aan te sturen. De basis bestaat uit een NE555 timer IC. Een zeer goedkoop ICtje en gemakkelijk te verkrijgen.
Zeer simplistisch door mij voorgesteld bestaat deze IC uit: 2 spanning-vergelijkers (de driehoekjes), een Flip-Flop en een ontlaadschakelaar S.
De spanning op pin 2 wordt vergeleken met 1/3 van de waarde van de voedingsspanning Vcc. Als deze spanning lager is, dan SET de Flip-Flop zich en Q op pin 3 wordt +Vcc.
De spanning op pin 6 wordt vergeleken met 2/3 van de waarde van de voedingsspanning. Als deze spanning hoger is, dan RESET de Flip-Flop zich en Q wordt 0V.
Q met een streepje boven is de tegengestelde toestand van Q en bediend schakelaar S.

 

 

In ons geval gebruiken we een voedingsspanning Vcc van 5V. De timer IC begint altijd met een SET toestand van de Flip-Flop (spanning op pin 2 is lager dan 1,66V =1/3 van 5V) De uitgang Q op pin 3 zal hoog worden (5V). (En schakelaar S staat open).

De condensator C1 laadt zich positief op via R1 en de diode D1 die stroom doorlaat. Bij het positief opladen van C1 zal de spanning erover toenemen. Omdat R1 een lage waarde heeft, gebeurd dat opladen zeer snel. (ongeveer 1,5ms)

Op het moment dat de spanning over condensator C1 hoger is dan 3,33V (2/3 van 5V), de spanning op pin 6 dus, dan RESET de Flip-Flop.
Uitgang Q van de Flip-Flop wordt laag (0V) en schakelaar S gaat dicht.

 

 

Als schakelaar S dicht is, dan ontlaad condensator C1 zich via R2 en pin 7 naar de massa van de voeding (pin 1).

D1 staat op dit moment in sper, en geleid geen stroom. De ontlaadstroom kan enkel door R2. Omdat R2 een hoge waarde heeft, gebeurd dit ontladen veel trager (ongeveer 20ms)

Op het moment dat de spanning over C1, gemeten op pin 2, gezakt is tot 1,66V, dan SET de Flip-Flop zich terug. De schakelaar S gaat open en begint het opladen van C1 opnieuw via R1 en D1.

De spanning op uitgang pin 3 is nu een oneindige reeks pulsen van ongeveer 50Hz (20ms) met een pulstijd van 1,5ms.

 

 


 

De uitgangsspanning Q in functie van spanning U over C1 ziet er als de figuur hiernaast uit. Rood is opladen, blauw ontladen van de condensator.

 

 

 

 

 

 

De pulstijd voor het stuursignaal van de servo is enkel afhankelijk van R1.

Door R1 te verlagen (0,56k) en er een regelbare weerstand in serie mee te schakelen Rp1 2,2k, kunnen we de pulstijd variren tussen iets minder dan 1ms (Rp1=0) en iets meer dan 2ms (Rp1=2,2k).

Omdat de servo de puls op uitgang pin 3 enkel maar gebruikt als referentiesignaal en er geen vermogen uit haalt, kunnen we het servo stuursignaal (geel) rechtstreeks op deze pin aansluiten.

Dit samen met 5V voeding (rood) en massa (bruin). Let wel: elk merk en type servo heeft mogelijk zijn eigen kleuren! De 5V voeding moet wel voldoende vermogen kunnen leveren. 1A of meer is geen onaardigheid!

 

Het is niet praktisch een wissel telkens om te leggen door het verdraaien van een potmeter. Beter is dit te doen met drukknoppen.

Een handige eigenschap van servos is dat als het stuursignaal wegvalt deze vast in de laatste positie blijft staan. Het is dus voldoende gedurende enkele seconden een reeks pulsen door te sturen naar de servo met de gewenste stand totdat de servo deze stand heeft bereikt. Als C1 zich niet kan opladen via R1 dan stopt de timer met het verzenden van pulsen.

We kunnen nu R1 en Rp1 opsplitsen in twee kringen (R1-Rp1 en R1-Rp1) elk gestuurd door een eigen drukknop om de condensator op te laden.

 

Door het verdraaien van Rp1 en Rp1 kunnen we de juiste pulsbreedte instellen die de servo nodig heeft om de wissel in de juiste stand te zetten (of rechtdoor of afslaan). Dit afregelen is voor elke wissel iets anders. Het best is zo te beginnen dat de servo in de middenstand staat (Rp1=0 en Rp1=1k). Dan door n drukknop ingedrukt te houden, en de daarbij horende potmeter bij te draaien totdat de wisseltong goed staat aan n zijde van de rails. Herhaal dit voor de andere zijde. 

 

Een printje voor de gebruikte componenten hoeven we niet zelf te ontwikkelen. Het is nu net het ontwerpen, uittekenen printbanen, belichten, ontwikkelen, etsen en boren dat vele weerhoud zelf iets met elektronica te doen.

We kunnen hiervoor beter speciaal in de handel te verkrijgen printen aanschaffen die bestaat uit rijen koperstrips waarin al gaten zijn geboord. (formaat print meestal 10op16cm) 

Voor onze toepassing is het voldoende om daar een stuk uit te zagen, wat koper weg te halen op de plaats waar IC1 komt. (zie foto1: onderzijde print voor meer duidelijkheid)

De onderlinge verbindingen voeren we uit met gesoleerde koperdraad. (zie foto2: bovenzijde print)

 

 

 

 

 

servo1.jpg   servo2.jpg   servo3.jpg
 Foto 1                                                              Foto 2                                                            Foto 3

 

Meerdere servo's aansturen met dezelfde elektronica

Als je meerdere wissels wilt aansturen, en je hebt dezelfde type servo's en wissels, dan kan je dat ook doen met 2 basistimers waarvan er n afgeregeld wordt op korte puls (ongeveer 1ms) en n op een langere puls (ongeveer 2ms).  Even een drukknop indrukken om de gewenste stand bij die wissel te laten omlopen. Het schema maakt meer duidelijk...

Geleidelijke 1ms naar 2ms overgang en andersom:

We gaan nu iets dieper in op de wijze hoe de NE555 IC zijn 1/3 en 2/3Vcc bekomt, en hoe wij deze kunnen manipuleren en er iets nuttig mee kunnen doen.

Intern in het IC zijn drie weerstanden aangebracht van elk 5k die in serie staan en gevoed worden tussen massa en +Vcc. Over elke weerstand staat dus 1/3 Vcc. De onderste spanningsvergelijker krijgt 1/3 Vcc en de bovenste 2/3Vcc.

Nu is pin 5 van het IC intern verbonden met het 2/3Vcc punt. Het schemaatje hiernaast maakt dit duidelijk.

 

 

 

Door nu op pin 5 een externe weerstand R3 aan te leggen verbonden met +Vcc, eigenlijk parallel aan de inwendige R van 5k, kan men het schakelniveau van 2/3 Vcc verhogen.  C1 moet nu langer opladen via R1 om het hogere schakelniveau op pin 6 te bereiken voor het resetten van de Flip-Flop. De positieve pulstijd wordt hierdoor langer.

De schakeling zoals nu hiernaast voorgesteld heeft een pulstijd van 1ms als er geen externe weerstand R3 aangesloten is. Als er wel een externe weerstand aangesloten is via S1, dan is de pulstijd 2ms.

 

 

 

Het wisselen tussen 1ms en 2ms pulsen bij het sluiten van S1 gaat zo goed als ogenblikkelijk.

Praktisch gezien komt op pin 5 van het IC de volgende spanningen te staan (bij Vcc=5V): bij open S1: 3,33V (1ms); bij gesloten S1:4,33V (2ms) ten opzichte van de massa.

Door nu op pin 5 een flinke condensator C2 te hangen bv. 2200F t.o.v. de massa, zal deze condensator werken als een soort demping bij het overgaan van 3,33V naar 4,33V. De spanning over C2 kan niet plots een hogere spanning zijn, deze condensator moet zich eerst verder opladen en dwingt zo de 2/3Vcc punt van de bovenste spanningsvergelijker deze oplaadcurve mee te volgen. Met een condensator van 2200F duurt dit iets meer dan 5s.

Bij het openen van S1 gebeurd het tegenovergestelde. De spanning over condensator C2 kan niet plots van 4,33V naar 3.33V gaan. De condensator moet zich eerst iets ontladen. De spanning op pin 5 volgt de ontlaadcurve van C2 en dwingt zo de spanningsvergelijker de ontlaadcurve te volgen.

De spanning op pin 2 (1/3Ucc of 1,66V) wordt in werkelijkheid ook benvloed door het al of niet inschakelen van een externe R3. Deze zal ook iets hoger komen te liggen. Maar de invloed op de ontlaadtijd van C1 is minimaal, en de pulsinterval blijft ongeveer 20ms (50Hz).

 

 

Het hiernaast voorgestelde spanningsverloop geeft UC2 (licht blauw) weer en hoe deze de oplaadtijd benvloed van C1 (rood). De schaal van UC2 is in seconden, de schaal UC1 in ms! In werkelijkheid zijn er over een verloop van 5s ongeveer 250 positieve pulsen die elke keer iets langer duren. (1ms -> 2ms) Hetzelfde verloop geld indien S1 terug open gaat. (2ms -> 1ms).

 

Bij het op spanning brengen van deze schakeling kan de servomotor hevig beginnen draaien. Dit  kan voorkomen worden door de spanning voor de servo wat later aan te brengen, of pin 4 van het IC bij de opstart aan de massa te leggen gedurende een 5 tal seconden.

 

 

Update 21/6/2012:

Niet alle servo's werken met pulsen tussen 1ms en 2ms. De servo's die ik gebruik werken met pulsen tussen 0.5ms (0) en 2.5ms (180). Om het gemakkelijk te maken heb ik R1 regelbaar gemaakt met een potmeter in serie, en R3 ook. Met Rp1 regel je eerst de minimale servopuls in, en daarna met Rp3 de maximale servopuls.

Op een digitale oscilloscoop kan je duidelijk zien dat de instellingen van zowel Rp1 en Rp3 bijna geen invloed heeft op de pulsinterval:

Het volgende filmpje geeft weer wat deze schakeling doet telkens je schakelaar S1 omzet. Je ziet dat de pulsbreedte de (ont)laadcurve van C2 volgt.

Miniatuur

 

Geert

Ga verder naar digitale servo sturing.

Of ga verder met: LocoNet zelfbouw projecten