Update rate servo signaal, hoger is beter?

Discussie in 'Model elektronica' gestart door DannyvG, 17 okt 2011.

  1. DannyvG

    DannyvG

    Lid geworden:
    24 feb 2011
    Berichten:
    1.774
    Locatie:
    Breda
    Bij de flybarless systemen voor helis is het mogelijk om een bepaalde update rate voor de staart en swash servo in te stellen.
    Voor de staart ligt dit tussen de 50 en 560Hz, voor de swash tussen de 50 en 200Hz.
    Ik had zelf het idee dat een hogere update rate in veel gevallen niet zinnig is. Tenminste als je heli (servos, bladen, toerental) toch al niet in staat is om sneller dan op bijvoorbeeld 10Hz stuurinputs te reageren waarom zou je dan met 200Hz de servos updaten.
    Nu weet ik niet wat voor bandbreedte te verwachten valt voor een 600~700size heli en hoe je de snelheid van de servo kunt vertalen naar bandbreedte dus dat is lastig in te schatten. Maar ik heb wel wat testen gedaan met een servo die zonder belasting van punt a naar b moet draaien en dit heb ik gedaan met 50, 100 en 200Hz update rate.
    En blijkbaar is de servo met 200Hz sneller op punt b dan dezelfde servo op 50Hz. Op 50Hz was het rond de 17ms en op 200Hz was het rond de 9ms. De testen zijn gedaan met een Align DS620 servo.
    Waardoor komt dit want dit had ik zelf niet verwacht?

    Een mogelijke verklaring ligt erin hoe de servo reageert nadat hij de puls heeft ontvangen en heeft verwerkt. Ik verwachte namelijk dat er een Hold van de laatste puls zou plaatsvinden. Echter testen laat zien dat dit niet zo is. Als ik de servo aanstuur met pulslengte A en vervolgens met pulslengte nul dan is de servo vrij te bewegen. Ik heb nog niet geprobeerd wat er gebeurt met pulslengtes die buiten zijn werkgebied liggen, of een continu hoge input.
    Waarom heeft de servo geen Zero Order hold of iets dergelijks. En is dit wellicht een deel van de verklaring waarom een hogere update rate zin heeft?
    Als de servo steeds maar kort kracht levert dan kan ik wel in zien dat hij met 200Hz "harder werkt" dan op 50Hz.

    Ik heb de testen uitgevoerd doormiddel van een Arduino Uno die de pulslengte geeft aan de servo en met een ADC het voltage van de potmeter in de servo uitleest en dit door een timer interrupt op vaste tijdstappen wegschrijft naar een SD kaart.
     
  2. Corrien

    Corrien In Memoriam Forum veteraan

    Lid geworden:
    28 okt 2003
    Berichten:
    12.626
    Locatie:
    Maasland
    De maximale snelheid van een servo wordt uiteraard bepaald door het motortje (+ tandwieloverbrenging). Dit verander je niet met de frame rate. Wél zal het motortje met een hogere frame rate eerder van start gaan en sneller en nauwkeuriger gestopt kunnen worden, wat de totale steltijd reduceert. Echter, zo'n spectaculair verschil als wat je hier meldt, kan ik niet verklaren.
    Vanzelfsprekend verkrijg je wel een snellere responstijd met het verhogen van de frame rate van de zender, maar daar ging de vraag niet over.
     
  3. DannyvG

    DannyvG

    Lid geworden:
    24 feb 2011
    Berichten:
    1.774
    Locatie:
    Breda
    Bedankt voor je antwoord. Ik zal eens kijken of ik de testen kan herhalen en eventueel onder belasting. Ik kan natuurlijk altijd zelf nog een fout gemaakt hebben.
    Resultaten zal ik hier posten.

    Heb de logfiles die ik al had er nog eens op nageslagen

    En er komt toch echt het volgende uit (let wel op dat ik hier een factor 10 meer millisecondes heb, kennelijk verkeerd omgerekend eerste keer) En de verschillen zijn kleiner maar nog steeds significant.
    50Hz 151ms
    100Hz 118ms
    200Hz 101ms

    hellingshoek tussen aanlopen en afremmen komt wel enigszins overeen.
    Dus maximum snelheid wordt niet beinvloed door de pulse rate.

    Corrien, heb je ook enig idee waarom de servo zijn laatste puls niet vashoudt?
     
    Laatst bewerkt: 21 okt 2011
  4. DannyvG

    DannyvG

    Lid geworden:
    24 feb 2011
    Berichten:
    1.774
    Locatie:
    Breda
    Een ander experiment dat ik heb uitgevoerd is om een random signaal als input te geven en dan ook de potmeter uit te lezen.
    Door deze signalen te transformeren naar het frequentiedomein (fourier transformatie) en vervolgens de signalen te delen hoort men in principe de closed loop transfer functie te krijgen namelijk Y/X=CH(1+CH)
    Zo gezegd zo gedaan. Echter komt er vrijwel alleen onzin uit.
    [​IMG]
    hmm het is onleesbaar geworden. Bovenste grafiek is de frequency response met frequentie horizontaal en versterking verticaal. Onderste plot is Coherentie van input en output.

    Waar het probleem zit weet ik niet.
    Wellicht dat mijn meting langer moet zijn, nu 10seconden op 50Hz. Of ik heb teveel meetruis of de 10bit ADC is te weinig of...
    Of misschien kan ik beter de Sensitivity meten, dus verstoring toevoegen na de controller en die 2 signalen samen ook meten. Dan krijg ik de transferfunctie U/W=1/(1+CH)
    Alleen om dit te doen moet ik dus het punt in de servo vinden waar het motorstuursignaal naar de amplifier wordt gestuurd.
    Heeft iemand enig idee hoe dit te herkennen of herleiden? Of weet men toevallig van een bepaald type servo waar dit punt zit?
     
    Laatst bewerkt door een moderator: 17 nov 2015

Deel Deze Pagina