Wat is een Servo Motor Controller?
Definitie van Servo Motor Controller
Een servo motor controller (of servo motor driver) wordt gedefinieerd als een circuit dat wordt gebruikt om de positie van een servo motor te controleren.
Servo Motor Driver Circuit
Het servo motor driver circuit bevat een microcontroller, voeding, potentiometer en aansluitingen, waardoor nauwkeurige motorcontrole wordt gegarandeerd.
Rol van de Microcontroller
De microcontroller genereert PWM-pulsen op specifieke intervallen om de positie van de servo motor nauwkeurig te controleren.
Voeding
Het ontwerp van de voeding voor een servo motor controller hangt af van het aantal verbonden motoren. Servo motoren gebruiken meestal een voedingsspanning van 4,8V tot 6V, waarbij 5V standaard is. Een hogere voedingsspanning kan de motor beschadigen. Het stroomverbruik varieert met de koppel en is lager in de ruststand en hoger bij draaien. De maximale stroomopname, bekend als stall current, kan voor sommige motoren oplopen tot 1A.
Voor de controle van één motor kan een spanningregelaar zoals de LM317 met een koellichaam worden gebruikt. Voor meerdere motoren is een hoogwaardige voeding met een hogere stroomcapaciteit nodig. Een SMPS (Switched Mode Power Supply) is een goede keuze.
Blokdiagram hieronder toont de interconnecties in een Servo Motor Driver

Controle van de Servo Motor
De servo motor heeft drie terminals.
Positiesignaal (PWM-pulsen)
Vcc (van de voeding)
Aarde

De hoekpositie van de servo motor wordt gecontroleerd door PWM-pulsen van specifieke breedten toe te passen. De pulsduur varieert van ongeveer 0,5 ms voor een rotatie van 0 graden tot 2,2 ms voor een rotatie van 180 graden. De pulsen moeten met frequenties van ongeveer 50 Hz tot 60 Hz worden gegeven.
Om de PWM (Pulse Width Modulation) vorm te genereren, zoals getoond in de figuur hieronder, kan men gebruik maken van het interne PWM-module van de microcontroller of timers kunnen worden gebruikt. Het gebruik van het PWM-blok is flexibeler, aangezien de meeste microcontroller-families dit PWM-blok beter aanpassen aan de behoeften van toepassingen zoals een servo motor. Voor verschillende breedten van PWM-pulsen moet men de interne registers dienovereenkomstig programmeren.
We moeten ook de microcontroller vertellen hoeveel hij moet roteren. Hiervoor kunnen we een eenvoudige potentiometer gebruiken en een ADC om de rotatiehoek te krijgen, of voor complexere toepassingen een accelerometer gebruiken.

Programmeer Algoritme
Laten we het programma ontwerpen om een enkele servo te controleren en de positie-invoer wordt gegeven via de potentiometer die is aangesloten op een pin van de controller.
Initialiseer de poortpins voor invoer/uitvoer.
Lees de ADC voor de gewenste servo positie.
Programmeer de PWM-registers voor de gewenste waarde.
Zodra u het PWM-module activeert, gaat de geselecteerde PWM-kanaalpin hoog (logisch 1) en nadat de vereiste breedte is bereikt, gaat deze weer laag (logisch 0). Dus na het activeren van het PWM, moet u een timer starten met een vertraging van ongeveer 19 ms en wachten tot de timer overloopt. Ga naar stap 2
Er zijn verschillende modi van PWM beschikbaar die u kunt gebruiken, afhankelijk van de microcontroller die u kiest. Enige mate van optimalisatie moet in de code worden gedaan om de servo te controleren.
Als u meer dan één servo wilt gebruiken, hebt u evenveel PWM-kanalen nodig. Elke servo kan sequentieel de PWM-signaal krijgen. Maar u moet ervoor zorgen dat de pulsherhalingsfrequentie voor elke servo wordt gehandhaafd. Anders zal de servo uit synchronisatie raken.