Nieuws:

Nu in MSM 249 BAAN: Saint-Hilaire * Rügen kustbaan

Hoofdmenu

Servo's

Gestart door PeterC, 29 juli 2009, 18:36:43 PM

PeterC

Voor de aansturing van zowel seinen als wissels wil ik gebruik maken van servo's.  Daar de ene servo de ander niet is (ik heb er van verschillende merken en van verschillende afmetingen) wou ik een 'apparaat' dat de servo's kon testen en waarmee ik kon meten welke puls overeenkomt met een linkeruitslag en welke met een rechteruitslag (die beperkt moet worden afhankelijk van de te besturen onderdelen).  Die waarden moeten later in een servodecoder geprogrammeerd worden (tussen de 1000 en 2000 ?s).  Het leek mij een leuk project om eens een ?Controllertje te programmeren voor het werk.  Als ?C heb ik (voorlopig) een PIC16F877 genomen, maar dit is een beetje overkill voor dergelijk projectje.  Ik heb nog een deel PIC16F628 liggen (die veel goedkoper zijn!) en ga het programma overzetten op die processor.  Het feit dat ik een 16F877 als start heb gebruikt is omdat ik daar een ontwikkelingsbord voor gemaakt heb.  Als programmeertaal gebruik in JAL (Just Another Language, waarvan er verschillende fora op het net te vinden zijn) en een deel assembler (de meeste programma's voor het bewerken en programmeren van PIC processors zijn 'gratis', alleen een PIC programmer moet worden aangeschaft of worden zelf gebouwd).  De uitlezing is op een standaard LCD display (minimum 1 * 16 karakters).

Waarom dit draadje?  Bij interesse wil ik hier wel het ??n en ander vertellen over servo's voor de aansturing van... (1000 zaken: wissels, seinen, slagbomen, deuren, beweegbare onderdelen, ...).  Ik heb al wat ervaring (en volgens bepaalde items op dit forum zijn er nog... Blausee-Mitholz? ...) met het gebruik van servo's (vroeger heb ik met RC boten gevaren).  Tegenwoordig kosten servo's geen geld meer (ik heb 4 Euro betaald voor een mini servo in Dortmund bij Conrad tijdens de modelbouwbeurs).  Een interface om het motorola-protocol om te zetten in servo informatie heb ik ondertussen ook al gemaakt (misschien later daar meer over).

Ik vraag wel een beetje geduld om de schema's te tonen.  Ik ben een beginnend gebruiker van 'Eagle' (ik gebruikte vroeger Protel en dit is een dag en nacht verschil van Eagle) en moet nog veel leren om op een vlugge wijze schema's te genereren.
Groetjes, Peter


Gerolf

Altijd interesse wat mij betreft [8D]
Ik heb hier ook wat servo's liggen, en wat microcontrollers (geen PICs, maar Atmel's) en zou er "ooit" eens iets mee willen doen [;)]
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

Dirky

ik zal dan maar met de domme vragen beginnen h? Peter!

Hoeveel servo's kan je dan via ??n controller aansturen?

en PS, ik volg je tutorial op de voet! van PIC's ken ik nog NIC's [:)]

Gerolf

citaat:
Geplaatst door Dirky
Hoeveel servo's kan je dan via ??n controller aansturen?
Kan ik ook op antwoorden [;)]
In principe: zoveel als er uitgangen zijn aan je controller, en nog meer als je zou multiplexen. Al zijn er soms uitgangen "meer bedoeld" voor bvb de aansturing van servo's.
Wat een in-, en wat een uitgang is, bepaal je zelf. je hebt uiteraard ingangen nodig om stuursignalen op te pikken.
Een ATMega16 heeft bvb 32 I/O-poorten, goedkope (lees:kleine) types hebben soms maar 2 I/O poortjes.
Het gamma aan microcontrollers is ENORM. Ik heb het idee dat er dagelijks bijkomen [B)]
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

PeterC

Hoeveel servo's er aan een controller kunnen aangesloten worden, hangt, zoals Gerolf al zei, af van het type ?controller.  Het hangt echter ook voor een groot deel af van het programma in de controller.  Het programma moet in staat zijn om de timing van de verschillende servo's nauwkeurig te kunnen aansturen.
Bij de door mij ontworpen servo-decoder kunnen 4 servo's aangestuurd worden.  Het programma moet al het volledige Motorolaprotocol decoderen en dan nog instaan voor een nauwkeurige timing van de servo's.  Voor meer servo's moet ik een andere controller kiezen of de klokfrequentie opvoeren.

Deel 1: wat is een servo?  zie voor een volledige uitleg met foto's:
http://nl.wikipedia.org/wiki/Servomotor
Groetjes, Peter


Gerolf

Bekijk vooral het tweede stukje van wiki, waar het gaat over proportionele regeling [;)]
Groeten uit "Marche-en-Bières"   ** Modelspoor is plezant **   TPIII-H0-DC-Zelfbouw

PeterC

Groetjes, Peter


PeterC

Net nog wat testen gedaan met het programma in combinatie met een multimeter: sommige servo's vreten stroom wanneer de pulsen buiten hun bereik vallen.  Een verschil in de lengte van de puls van ??n microseconde kan een verschil uitmaken van 10 maal de ruststroomopname.  Een servo die in 'rust' 4 mA opneemt, neemt bij overbelasting door te ver uitsturen al vlug een stroom van 50 mA op en staat daarbij vervelend te trillen (de uitersten zijn bereikt).  De pulsduur verder vergroten (of verkleinen in het tegenover gestelde geval) maakt het alleen maar slechter.  Een te grote puls (of te kleine) naar de servo neemt vlug 0,5 A en de servo wordt gloeiend heet (wat best niet te lang duurt!)!
Best eerst eens meten wat een servo aan kan voor hem te gebruiken!

O ja: wat ruststroomopname betreft: ik heb er hier een deel getest (kleine en normale servo's) en de ruststroom bedraagt tussen de 4 en 10 mA, afhankelijk van het model.  Wel is er een groot verschil in geluidsoverlast.  Ik heb er hier (prijzige) die je bijna niet hoort (metalen tandwielen) en (heel goedkope) waar je best oorbeschermers bij gebruikt (met 'slechte' kunststoftandwielen)  ;-)

Een stand van zaken: ik heb de handleiding van Eagle even vlug overlopen en begin deze avond aan het schema te werken.  Ik heb een (sloop, gerecupereerd van een industri?le modem) display van draadjes voorzien en ga morgen (overmorgen?) op een breadbordje de schakeling overzetten op een PIC16F628(a).

Wordt vervolgd...
Groetjes, Peter


ysbeer

Sorry een beetje terzijde.
Ik heb voor het sturen van een overwegboom twee soorten aansturing gebruikt,als eerste een servo van conrad met bijbehornde print.
Werkte wel maar was moeilijk in snelheid te regelen en ook de reproduceerbaarheid van de beweging was niet altijd je ware.
Toen heb ik een stappen motor geprobeert,de sturing daar van is simpel(software matig) in de computer te realiseren en de reproductie is perfect.
In de dumphandel kosten die dingen (uit DVD spelers E.D) 2 a 3 euro nieuw.
wim

PeterC

Wim,
Ik denk dat dit een volgend project(je) gaat worden.  Ik heb hier een kartonnen doos staan (+/- 10 kg) vol met stappenmotoren (allerhande sloop) [:)]

Wat betreft de reproduceerbaarheid: bij gebruik van gelijke servo's zie ik daar niet veel problemen in.
Groetjes, Peter


PeterC

Nog wat zitten verder werken aan mijn servotester omdat ik nu ook de tijd wil kunnen instellen die de servo nodig heeft om van de ene kant naar de andere kant te gaan (beide uitersten instelbaar, de tijd eveneens).
Momenteel zit er nog een bug in mijn programma want tijdens het verplaatsen van de ene naar de andere kant, heeft de servo plots 'de hik' en verplaatst zich een stukje verder dan voorzien.  
Ik ben nu in verlof en 'pruts' wel wat verder tijdens de rustige momenten.
Groetjes, Peter


Rochevalien

Ik heb even in de Catalogus van Conrad gekeken naar servo's zoals hierboven zo kleurijk beschreven word en wat valt mij op: de traagste schakeld bij 0.19 seconden...
Hoe je daarmee bv een slagboom gaat aansturen zou ik wel eens willen weten.
Wat is er trouwens mis met een goede oude wisselmotor?

Gerrit

Dirky

Gerrit, niets mis met de wisselmotor... gewoon iets anders proberen. Het zou leuk zijn in die zin dat mijn kleine voorraad servo's dan eindelijk eens een doel krijgen...

Een servo trager doen bewegen dan de gegeven snelste tijd kan altijd!

@ PeterC

E?n van de servo's in mijn zwever (die witte aan de muur) heeft ook de hik tenzij ie belast is. Hebben al je servo's dezelfde "hik"? Anders nekeer een veerke aanhaken...


Klaas Zondervan

citaat:
Geplaatst door Rochevalien

....de traagste schakeld bij 0.19 seconden...
Wat ze daar aangeven is de snelste tijd die de servo haalt om van de ene uiterste stand in de andere te komen.
Het kan altijd trager, en dat ligt aan de besturing. De positie van de servo wordt nl. bepaald door de lengte van de stuurpuls, de snelheid van de servo wordt daarom bepaald door de snelheid waarmee de lengte van de stuurpuls wijzigt. Als je zou willen kun je een servo er een uur over laten doen om van de ene naar de andere stand te lopen.

PeterC

citaat:
Geplaatst door Klaas Zondervan

citaat:
Geplaatst door Rochevalien

....de traagste schakeld bij 0.19 seconden...
Wat ze daar aangeven is de snelste tijd die de servo haalt om van de ene uiterste stand in de andere te komen.
Het kan altijd trager, en dat ligt aan de besturing. De positie van de servo wordt nl. bepaald door de lengte van de stuurpuls, de snelheid van de servo wordt daarom bepaald door de snelheid waarmee de lengte van de stuurpuls wijzigt. Als je zou willen kun je een servo er een uur over laten doen om van de ene naar de andere stand te lopen.


Idd Klaas, een servo werkt met pulsen (tussen de 1 en 2 ms met een herhalingsfrequentie van 50 Hz).  Wanneer je nu de pulsduur langszaam opvoert om van 1 ms naar 2 ms te gaan gaat de servo langszaam naar de andere stand.  De grootte waarmee de pulsduur moet verlengt worden kan gemakkelijk berekend worden uit de twee uitersten en deze delen door de tijd nodig om naar de andere kant te gaan.

@Dirk, de servo's hebben allemaal 'de hik' en telkens op dezelfde plaats, dus is het zeker een softwareprobleem.  Ik onderzoek verder...
Groetjes, Peter