Stap 12: Controlemethoden
Stappenmotoren worden normaal gesproken op een absolute manier waar de hoeveelheid stappen naar de motor gestuurd worden bijgehouden om te bepalen van motor verkeer geëxploiteerd. Deze procedure heeft twee ongewenste kwaliteiten. De meest voor de hand liggende gaat stappen verloren. Als de motor een lading voldoende om te stoppen met beweging ondervindt, is de werkelijke positie verloren, omdat de bevolen maatregelen niet langer overeenkomt met de locatie van de motoren. De minder voor de hand liggende probleem is produceren en tellen motor stappen bij het gebruik van microstepping bij hoge snelheden. Een typische stappenmotor heeft 200 stappen voor een volledige revolutie. Dit vertaalt zich naar 6400 stappen voor een volledige revolutie als met behulp van 32 uitvoeringen controllers. Bij het uitvoeren van de motoren op 300 rpm, zijn een output van 32000 stappen per seconde per motor nodig. Uitvoeren van drie motoren zou resulteren in bijna 200K logica wijzigingen per seconde. Dit niveau van real-time verwerking op een 16MHz 8-bit microcontroller doet laat geen ruimte voor andere taken.
De oplossing is te ontladen de stap generatie hardware niveau timers en registers te vergelijken terwijl het gebruiken van encoders op de motoren te meten direct verkeer. Een gesloten lussysteem kan dan worden ingesteld met de invoerwaarde die vertegenwoordigt het verschil tussen een gewenste hoek van de motor en de gemeten hoek van het coderingsprogramma. De uitvoer van de lus van de controle zou stel van de motor RPM. De benodigde pulse-trein is gegenereerd op basis van drie 16-bits hardware timers met drie vergelijk registers. De tijdopnemers zijn opgezet met geen vooraf schaling produceren een graaf tarief van 16 MHz die opnieuw ingesteld wanneer de telling gelijk is aan het vergelijken registreren. Op timer reset, het genereren van een puls-trein die nodig zijn voor het verplaatsen van de stappenmotor is een corresponderende pin van de uitvoer van een knevel gevoorzid. De frequentie van de puls-trein wordt ingesteld door de grootte van het Vergelijk register en bepaalt de RPM van de motor. Geschaalde uitvoer van de lus van de motorische controle stepper kan nu worden gevoerd in het Vergelijk register instellen van motor RPM. Met deze methode wordt alle stepper motor signaal generatie bereikt op een hardwareniveau verlaten van de microcontroller vrij voor andere taken.
Een evenredige-afgeleide (PD) controle lus wordt geïmplementeerd teneinde nietje bal positionering. Een integraal onderdeel was toegevoegd, maar niet nodig. De proportionele term in de controle-lus is gewoon het verschil tussen de bevolen locatie en de locatie van de gemeten bal vermenigvuldigd met een proportionele winst. De proportionele termijn resultaten in vloeiende beweging van de hoek van de plaat, als wijzigingen in bal locatie normaliter leiden tot een groot aantal. Dit geldt niet wanneer een eenvoudige berekening afgeleide dx ≈ [x(i) − x(i−1)] /h eerst bestelt zoals ball beweging tussen metingen is klein met relatief grote ruis. Het gedrag kan worden verbeterd door het verhogen van de tijd tussen metingen maar dan de responsietijd van het systeem wordt groot. De oplossing is het gebruik van meer van de geschiedenis van de ballen te beter voorspellen de stroomsnelheid. Een goede benadering voor de ballen motie is constante versnelling zoals de hoek van de plaat zelf niet rabidly worden gewijzigd. Een tweede bestelling nauwkeurig stencil gebruiken alleen verleden metingen te voorspellen van de huidige afgeleide is gewenst. Het stencil moet goede ruisonderdrukking afwijzing en tijd antwoord gedrag. Pavel Holoborodko heeft deze een lijst gepubliceerd van stencils voor een opgeruimde afgeleide schatting waaruit een stencil 16 punten werd geselecteerd. De resulterende afgeleide is aanzienlijk soepeler dan het eenvoudige geval met behoud van goed systeem responstijd.
Zowel proportioneel als afgeleide onderdelen bij elkaar opgeteld zodat het proportionele deel kantelt de plaat om te versnellen de bal richting de locatie instellen en de afgeleide component de plaat kantelt om langzaam de beweging van ballen. De omvang van elke waarde kan worden ingesteld door de winst waarden aan te passen totdat het systeem kritisch gedempt zijn is.
Platform hoeken vertegenwoordigen van X en Y tilt moeten worden omgevormd tot de drie stepper motor hoeken. De X- en Y-as worden geprojecteerd op de drie motoras om controle van de relatieve weging vast te stellen. Deze aanpak is slechts een benadering van het gewenste gedrag maar werkt zo nodig.
Consistente code uitvoeringscijfers komen. Dit wordt bereikt door het gebruik van een interrupt routine die als trigger elke 1ms off van Timer0 fungeert. Code uitvoering vlaggen worden geactiveerd in de interrupt routine waarmee verschillende delen van de code kan worden uitgevoerd.