Powerup en powerdown van servo motoren.

Ik ben volop bezig met mijn controller voor een reuze knikkerbaan. De controller is nu bestukt tot 32 servo's, maar kan tot 64 uitgerust worden. De meest gebruikte servo's zijn kleine types, de SG90 9G. Voor mijn knikkerbaan hebben ze meestal slechts 3 werk positie's nodig. Een 4de positie gebruik ik bij powerup, een neutrale toestand die ik wens te geven aan mijn knikkerbaan.

Nu zie ik dat de servo's zowel bij het opstarten als bij het afleggen niet altijd doen wat ik zou willen. Een aantal redenen liggen voor de hand:

Bij de powerdown blijft de 5V van de servo's nog een tijd aan door de elco van de powermodule. De pwm pulsen van de servo's vallen vroeger weg dan de servo spanning. Dus ja, er zijn er die nog even een andere positie gaan innemen. Dit is erg vervelend omdat sommige maar een beperkte hoekverdraaiing mogen hebben om mechanische reden.

Bij powerup komt de spanning op de servo's ongeveer gelijktijdig met de pwm pulsen. Ze krijgen vanaf de start een pwm positie die normaal veilig zou moeten zijn.

Ik denk om hiervoor nog 2 aanpassingen te maken.
- De 5V van de servo's iets vertragen bij powerup via een fet. De pwm pulsen voor alle servo's lopen dan zeker correct.
- De servo's voor de powerdown via een toets naar save mode laten gaan en dan met een fet eerst de 5V van de servo's afschakelen. Zo zouden ze zeker niet meer kunnen verdraaien bij de verdere powerdown. De netspanning zomaar afschakelen zou echter nog steeds problemen kunnen geven ten zij ik een powerfail detectie toepas.

Ter info, mijn pwm waarden liggen tussen 800 en 2200 usec als grenswaarden. Die heb ik getest op al mijn soorten servo's zodat ze niet tot het absolute min/max gaan. Ik heb geen snelheids regeling nodig voor de normale positie's, hoe sneller ze zich verplaatsen hoe liever voor de stalen knikkers. Maar dit werkt perfect.

Voor iedere servo beschik ik dus over 4 postie's:
N: opstart en eventueel powerdown
L: links
M: midden
R: rechts

iedere servo kan via het bedienings paneel op een gewenste waarde getrimd worden voor alle 4 de positie's. Op de LCD display zie ik iedere pwm waarde. De meeste waarden liggen rond de 1200 1550 en 1850 usec. Dit hangt ook af van de mechanische montage in de knikkerbaan.

Mijn vraag is of er nog andere methodes zijn om de powerup en powerdown zo goed mogelijk te hebben. Deze problemen zie ik soms ook op andere forum's voorbij komen maar leveren weinig meer informatie dan de stappen die ik nu zou ondernemen. Mijn 32 servo's kan ik indelen indien nodig in 4 groepen van 8 om eventuele stroom problemen of pieken te verlagen. Alle servo's samen heb ik nog niet kunnen testen, moet eerst nog meedere aansluitkabels maken.

Wie heeft hiermee praktische ervaring?

Lambiek

Special Member

Nou geen praktische ervaring, maar je redenatie klopt wel. Als je bij het opstarten het volgende doet: Je zorgt ervoor dat je controller eerst is opgestart voordat je de servo's voorziet van de voedingspanning. Bij afsluiten van je controller moet je ervoor zorgen dat de voeding van je servo's er als laatste af gaat.

Dit kun je doen met een externe timer, dat kan bijv. in de vorm van een NE555, of iets anders natuurlijk.

Ik zou een relais gebruiken om de voeding op de servo's te zetten.

Je zou het geheel ook via een accu kunnen voeden, en via een lader aan het net hangen. Dan heb je ook niets met een falende netspanning te maken.

Als je haar maar goed zit, GROETEN LAMBIEK.

Als timer is er geen probleem gezien mijn FPGA met 22.000 LE. Ik heb al een kleine test module gemaakt met 2x2 stuks IRLML6401 P-fets goed voor zo een 9A. Maar ik heb die nog niet onder full load met servo's getest. Piekstroom servo's als ze allemaal opstarten kan nogal oplopen. Wel zijn mijn servo's gemultiplexed, in een timeslot van 20 msec passen mooi 8 servo's en ik heb 8 lijnen parallel, vandaar dat er max 64 kunnen aangesloten worden.

Accu voeding zie ik minder zitten vanwege het hoge stroomverbruik. Ik heb ook nog 16 DC motoren op 9V. Die hebben een eigen voeding 9V 2.7A
De servo's hebben een voeding 5V 4A en de rest van de logica draait op een 7.5V blok met dc/dc naar 3.3 en 5V. Zo is er geen onderlinge storing van de motoren en de servo's naar de logica.

Een powerfail zou nog wel te maken zijn waarbij er nog voldoende tijd zou zijn als ik de 7.5V spanning monitor. Trouwens die 7.5 mag ook hoger zijn (tot 18V) dan zou er nog meer reserve over zijn om een powerdown automatisch uit te voeren. Ik zou dit op een kleine print kunnen toevoegen (oef weer een redelijke module).

Ik vraag me af of je conclusie wel klopt. Nu heb ik weinig ervaring met modelbouw servo's, maar gaan die niet in passieve modus als je ze even (een seconde of zo) geen pulsen meer geeft? Misschien gaan ze juist verplaatsen doordat de voeding wegzakt, en ze daardoor de potmeter die ze gebruiken voor de positie feedback verkeerd inlezen?

Je zou dus kunnen proberen eerst te stoppen de servo's pulsen te voeren, en even later pas de voeding uitschakelen. Ik neem toch aan dat ze ook vrij kunnen bewegen als ze bij het inschakelen voeding geeft, maar geen pulsen?

Een alternatief zou kunnen zijn om de voeding niet alleen af te schakelen, maar de 5V ook actief laag te trekken (een MOSFET met een kleine weerstand in serie of zo), zodat de condensators snel leeglopen, en ze simpelweg geen energie hebben om significant van positie te veranderen.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

De pwm pulsen beheren heb ik nog niet getest of aangedacht. Dit ga ik morgen even testen.Om die pwm pulse vertraagd te laten opkomen is het niet moeilijk.

Bij het uitschakelen verdraaien de servo's ongecontroleerd en dit zou niet mogen. Ze hebben daarna bij het opstarten zeker een foute positie. Als de voeding snel wegvalt zouden ze niet meer kunnen verdraaien en zou de helft of meer van het probleem opgelost zijn

Die 5V servo's laag trekken zou kunnen als ik ze toch eerst via een fet afschakel. Er zijn 2 plaatsen van elco's, die op de voedingsblok (en is nogal fors gezien die 5V behoorlijk lang erop blijft nadat de FPGA stopt). Er staan ook nog wat elco's op de verdeelprinten van de servo's die zouden dan moeten sneller ontladen worden met een fet + R naar de GND.

Servo's verdraaien met de hand zonder voeding is niet aangeraden bij deze kleintjes. Is trouwens nogal lastig draaien door de tandwieltjes die erin zitten (kunstof) Ik heb er ook met metalen tandwieltjes, die draaien iets zachter maar ook zij reageren gelijkaardig bij powerup/powerdown.

[Bericht gewijzigd door fotoopa op donderdag 14 september 2017 21:05:09 (14%)

Arco

Special Member

Heb je wel pull-down weerstanden aan de pwm inputs van de servo's / outputs van de FPGA hangen? (anders worden die ongedefinieerd bij afwezigheid van voeding...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Wat ik bedoel, is dat ze vooral niet vanzelf gaan draaien als je ze 5V geeft maar geen ingangssignaal. Als het goed is, sturen ze hun motortje dan niet aan, en zou je ze dus vrij kunnen bewegen. Het is ook mogelijk dat ze de positie waarin ze zijn opgestart actief proberen vast te houden, wat ook acceptabel is natuurlijk.

Als ze met voeding maar zonder signaal gaan draaien, naar een willekeurige positie of altijd naar het midden of zo, is er weinig aan te doen.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Deze morgen heb ik 8 servo's in een testopstelling geplaatst.
Beschrijving:
5V servo's kan ik met een schakelaar in/uit schakelen.
Alle servo's krijgen bij powerup een pwm waarde van 1500.

- De 5V/4A servo voeding is een standard blokje op 220V (low cost).
Intern bezit deze 5V een vrij grote cap want de spanning valt niet snel weg bij net uitschakeling, later dan de voeding voor de FPGA stuurmodule.

- Zoals in de OT beschreven bewegen de servo's ongecontroleerd bij powerup en powerdown als alle voedingen aan staan, dus gewoon net switch 220V on en off.

- Bij off gaan alle type servo's willekeurig ongecontroleerd zich verplaatsen. Ik heb in de test 4 merken, zowel zeer goedkoop als duur maar de reactie's zijn gelijk.

- De grootste fout heb je al bij het afleggen van de net schakelaar. Oplossing hiervoor is de 5V servo afschakelen. In de test heb ik het nu met een schakelaar gedaan. Resultaat: alle servo's blijven op hun plaats. Je ziet soms nog een heel licht beving maar dit komt door de 16 elco's 10 uF die op de backplane staan bij de connector uitgangen. Deze minimale beweging is echt verwaarloosbaar. Deze test is met alle servo's op 1500 us pwm.
Doe je dezelfde test op 1800 of 1200 us dan is het resultaat gelijk. Dus poweroff moet voeding servo's kordaat uitschakelen.

- Nu het terug aanschakelen:
We vertrekken van een gecontroleerde positie van alle servo's. Ga je nu direct het net aanschakelen met alle voedingen on dan maken de servo's opnieuw ongecontroleerde bewegingen. Besluit hun voorgaande positie speelt eigenlijk weinig rol behalve dat ze 2 maal een ongecontroleerde richting kunnen aannemen, eenmaal bij de afval en eenmaal bij de start. Ze hebben trouwens de neiging steeds verder in dezelfde richting ongecontroleerd verder te gaan. In die situatie heb je een behoorlijke ontoelaatbare afwijking.
- Nu het net aanschakelen maar de 5V servo voedings switch staat off. De servo's kunnen uiteraard zich niet verplaatsen, ze hebben geen voeding wel staat de pwm waarde uitgestuurd op 1500 us. Als je nu de 5V switch op on plaatst gaan de servo's zich netjes op de pwm waarde gaan staan. Was die pwm dezelfde als een powerdown stop dan bewegen de servo's niet.

Besluit:
Bij het aanleggen mag de controller de powerup positie van alle servo's geven. Daarna mag de 5V van de servo's doorgeschakeld worden. Bij powerdown net het omgekeerde en je servo's blijven waar ze moesten staan of gaan naar waar je ze stuurd.

Nu de schakeling die ik ga bijplaatsen. Een P-fet 10A mag slechts aangaan na de powerup van de FPGA. Dit is zeer eenvoudig, nadat alle servo's hun init pwm waarde krijgen, gewoon die fet enable on zetten.
Powerdown kan eenvoudig gedaan worden met een commando toets. Net zoals je windows shutdown. Je stuurt de servo's eerst naar een veilige positie, vb lift deuren half open zodat er speling is van de servo's in beide richtingen als ze weer moeten opstarten. De P-fet wordt afgeschakeld, en je mag nu gewoon de spanning afleggen.

Nu de powerfail, bij plotse netafschakeling. Op de FPGA module heb ik 8 analoge inputs. Eentje ervan ga ik gebruiken voor het monitoren van de ingangsspanning van de FPGA module. nu is die 7.5V maar ik ga 9 of 12v gebruiken. Zodra die spanning te laag wordt voer de FPGA een shutdown uit.

Veel heb ik niet nodig, die P-fet circuit heb ik al en die powerfail spanningsmeting zijn enkele regels verilog.