OC32 Release 3.20
- Eindelijk SAS
- Initialisatie Servo's verbeterd
- Kleine buigfixes OC32Config
Let op: De aansturing van servo's is "onder de motorkap" substantieel aangepast. De werking zou, buiten de vermelde aanpassingen, identiek moeten zijn, maar de variatiemogelijkheden in configuratie zijn zo omvangrijk dat dit onmogelijk volledig is te testen
OC32 Firmware 3.20
Servo Auto Suspend (SAS)
Je kunt vanaf nu een servo in "auto-suspend" zetten. Dat betekent dat de servo wordt aangestuurd tot even na het moment dat de servo zijn eindpositie bereikt. Daarna wordt het stuursignaal uitgeschakeld, waarna de servo "onbekrachtigd" is.
Hoewel over het nut hiervan de meningen uiteenlopen, blijken sommige servo's in bepaalde gevallen storende geluiden te blijven maken. Daardoor zijn er hobbyisten die gebruik maken van deze mogelijkheid om dit hinderlijk geluid van servo's te voorkomen.
Bij de OC32 kun je een "suspend servo" instructie gebruiken om de aansturing van een servo na een vastgestelde tijd uit te schakelen. Dat betekent dat je zelf moet uitrekenen (of empirisch vaststellen) hoe lang het duurt voordat de betreffende servo zijn eindpositie bereikt heeft om deze vervolgens uit te schakelen.
In OC32 3.20 is Auto-Suspend toegevoegd. Indien deze optie is ingeschakeld, berekent Auto-Suspend wanneer een servo zijn eindpositie bereikt heeft. Dat is het geval wanneer de servo geen snelheid heeft (niet meer beweegt) én er geen verandering van die snelheid plaatsvindt. Als die situatie minimaal 1,5 seconde duurt wordt de servo "in suspend" gezet. Die 1,5 seconde is er onder andere voor bedoeld om de servo voldoende tijd te geven de laatste signalen nog te verwerken, hetgeen van belang is, vooral wanneer je geen gebruik maakt van dynamisch gedrag. In pricipe zullen alle gangbare servo's binnen een seconde een volledige slag van 180 graden kunnen uitvoeren.
Servo Auto-Suspend heeft de volgende voordelen:
- Je hoeft niet meer zelf uit te rekenen hoe lang een servo er over doet om zijn eindpositie te bereiken.
- Je hoeft geen aparte instructies meer op te nemen om de servo in suspend te zetten.
- Als de servo uit verschillende uitgangsposities kan komen zal het ook verschil maken hoe lang het duurt voordat de eindpositie bereikt is. Een vaste suspend-tijd is dan dus altijd de maximale tijd die de motor nodig heeft. Auto-Suspend werkt real-time en zal zich vanzelf aanpassen.
Aandachtspunten
- Een servo in (auto-)suspend levert geen "houdkracht". De positie wordt puur vastgehouden door de mechanische wrijving van lagers en tandwielen in de servo. Als de kracht die de servo moet leveren om in positie te blijven groter is dan deze wrijving zal de servo (ongewenst) gaan draaien.
- Wanneer je gebruik maakt van aansturing d.m.v. dynamisch gedrag vanuit de OC32 en de bewegingen van de servo sterk vertraagd zijn, lijkt het soms alsof de servo de eindpositie bereikt heeft, maar stuurt de OC32 nog wel beweging aan. De nauwkeurigheid van de servo is dan simpelweg te laag om de aansturing vanuit de OC32 nog te volgen. Auto-Suspend wordt geactiveerd wanneer de OC32 vindt dat hij klaar is met de beweging, niet wanneer de servo het niet meer kan volgen. De 1,5 seconde kan dan dus aanzienlijk langer lijken dan hij daadwerkelijk is.
- In zeer extreme gevallen (zoals zeer hoge massasimulatie i.c.m. zeer lage demping, kortom, als je de grenzen van de parameters opzoekt) kan het voorkomen dat de dynamische aansturing niet convergeert naar een stabiele eindsituatie. In die extreme gevallen kan het voorkomen dat suspend niet geactiveerd wordt. Feitelijk komt het er dan op neer dat de servo nooit echt "tot rust" komt. Het is daarbij de vraag of suspend in dergelijke extreme gevallen veel nut heeft.
- Sommige digitale servo's schakelen zichzelf niet uit als het stuursignaal wordt uitgeschakeld. Ze onthouden simpelweg de laatste ontvangen positie en blijven de motor in die positie aansturen, ook zonder stuursignaal. De enige manier om die motor uit te schakelen (in "suspend" te zetten) is de voedingsspanning onderbreken.
- Een zeer trage servo kan wellicht aan 1,5 seconde niet genoeg hebben voor een volledige slag. Dit kan dan een probleem worden wanneer je géén gebruik maakt van dynamische aansturing vanuit de OC32. Oplossing kan zijn om dynamisch gedrag dan wél in te schakelen, gebruik te maken van de Servo Suspend instructie (oude methode) of suspend gewoon helemaal niet te gebruiken.
Servo Auto-Suspend kun je inschakelen door met OC32Config 3.20 het betreffende vinkje aan te zetten onder OC32 Device Definition -> Pin Configuratie (=gedeelte rechtsonder) -> Servo. Het dringend advies is om per servo ófwel Auto-Suspend te gebruiken óf de Suspend-Servo instructie, maar niet beide.
Initialisatie Servo's
Servo's willen soms een soort "stuiptrekking" vertonen wanneer de spanning wordt ingeschakeld. Als servo's dat gedrag vertonen kan dat bij veel servo's worden voorkomen of verminderd door een weerstand aan te brengen tussen stuursignaal en servo voeding. Die weerstanden zitten standaard op de SP04R. In sommige gevallen blijkt deze remedie niet (voldoende) te helpen. Met OC32 3.20 is de initialisatie van servo's aangepast waardoor deze resterende problemen verder worden verminderd of geheel geëlimineerd.
OC32Config 3.20
- Auto-Suspend optie is toegevoegd
- Gecorrigeerd: Inlezen device configuration leidde tot een onlogische actuele positie (-64) als de Pin Configuratie van de OC32 een servo is en de Pin Configuratie in OC32Config anders (of niet gedefinieerd)
- Aangepast: "Set Pin Config" zette de positie van het "device" in de initiele positie i.p.v. de positie aangegeven door de slider. Hoe wel dit niet per definitie fout is, is het wel onlogisch.