In deze tutorial gaan we een servomotor aansturen door ARDUINO UNO. Servomotoren worden gebruikt waar er behoefte is aan een nauwkeurige beweging of positie van de as. Deze worden niet voorgesteld voor toepassingen met hoge snelheid. Deze worden voorgesteld voor lage snelheid, gemiddeld koppel en nauwkeurige positietoepassing. Deze motoren worden gebruikt in robotarmmachines, vluchtbesturingen en besturingssystemen.
Servomotoren zijn verkrijgbaar in verschillende soorten en maten. Een servomotor heeft voornamelijk draden, een is voor positieve spanning, een andere is voor aarde en de laatste is voor positie-instelling. De RODE draad is verbonden met de voeding, de zwarte draad is verbonden met aarde en de GELE draad is verbonden met het signaal.
Een servomotor is een combinatie van DC-motor, positieregelsysteem, versnellingen. De positie van de as van de DC-motor wordt aangepast door de besturingselektronica in de servo, gebaseerd op de duty-ratio van het PWM-signaal de SIGNAL-pin.
Simpel gezegd, de besturingselektronica past de aspositie aan door de DC-motor te regelen. Deze gegevens met betrekking tot de positie van de as worden via de SIGNAL-pin verzonden. De positiegegevens naar de besturing moeten worden verzonden in de vorm van een PWM-signaal via de signaalpen van de servomotor.
De frequentie van het PWM-signaal (Pulse Width Modulated) kan variëren op basis van het type servomotor. Het belangrijkste hier is de DUTY RATIO van het PWM-signaal. Op basis van deze WERKREGELING past de besturingselektronica de as aan.
Zoals weergegeven in de onderstaande afbeelding, moet de INSCHAKELRATIO 1/18 zijn om de as naar 9 uur te verplaatsen. 1 ms AAN-tijd en 17 ms UIT-tijd in een 18 ms-signaal.
Om de schacht naar 12o-klok te verplaatsen, moet de AAN-tijd van het signaal 1,5 ms zijn en de UIT-tijd 16,5 ms. Deze verhouding wordt gedecodeerd door het besturingssysteem in servo en het past de positie daarop aan. Deze PWM hier wordt gegenereerd door ARDUINO UNO te gebruiken.
Circuit componenten
Hardware: ARDUINO UNO, voeding (5v), 100uF condensator, knoppen (twee stuks), 1KΩ weerstand (twee stuks), servomotor (die moest worden getest).
Software: arduino IDE (Arduino nightly).
Arduino servomotor schakelschema en uitleg
In normale gevallen moeten we naar de registers van de controller gaan voor het aanpassen van de frequentie en voor het verkrijgen van de vereiste duty-ratio voor nauwkeurige positiecontrole van de servo, in ARDUINO hoeven we die dingen niet te doen.
In ARDUINO hebben we voorgedefinieerde bibliotheken, die de frequenties en duty-ratio's dienovereenkomstig zullen instellen zodra het header-bestand wordt aangeroepen of opgenomen. In ARDUINO hoeven we alleen de positie van de servo aan te geven die nodig is en de PWM wordt automatisch aangepast door UNO.
De dingen die we moeten doen om een nauwkeurige positie van de servo te krijgen, zijn:
|
Eerst moeten we de frequentie van het PWM-signaal instellen en daarvoor moeten we “#include
Nu moeten we een naam definiëren voor de servo "Servo sg90sevo", hier is 'sg90servo' de gekozen naam, dus tijdens het schrijven voor toverdrank gaan we deze naam gebruiken, deze functie is handig als we veel servo's te bedienen hebben, we kunnen hierdoor maar liefst acht servo's besturen.
Nu vertellen we de UNO waar de signaalpen van de servo is aangesloten of waar deze het PWM-signaal moet genereren. Om dit te doen hebben we “Sg90.attach (3);”, hier vertellen we de UNO dat we de signaalpen van de servo op PIN3 hebben aangesloten.
Alles wat overblijft is om de positie in te stellen, we gaan de positie van de servo instellen met "Sg90.write (30);", door dit commando beweegt de servohand 30 graden, dus dat is het. Daarna moeten we elke keer dat we de positie van de servo moeten veranderen het commando "Sg90.write (benodigde_positie_hoek);" aanroepen. In dit circuit hebben we twee knoppen, een knop verhoogt de positie van de servo en de andere is voor het verlagen van de positie van de servo.
De Arduino Servomotorbesturing-tutorial wordt stap voor stap uitgelegd in de onderstaande C-code.