Hvad er en servo motorcontroller?
Definition af servo motorcontroller
En servo motorcontroller (eller servo motordriver) defineres som et kredsløb, der bruges til at styre positionen på en servo motor.
Servo motordriverkredsløb
Kredsløbet for servo motordriver inkluderer en mikrocontroller, strømforsyning, potentiometer og forbindelser, hvilket sikrer præcis motorstyring.
Mikrocontrollers rolle
Mikrocontrolleren genererer PWM-pulser i specifikke intervaller for at kontrollere servo motorens position præcist.
Strømforsyning
Designet af strømforsyningen til en servo motorcontroller afhænger af antallet af forbundne motorer. Servo motorer bruger typisk en strømforsyning på 4,8V til 6V, med 5V som standard. Overskridelse af spændingsniveauet kan skade motoren. Strømforbruget varierer med drejningsmomentet og er lavere i inaktiv tilstand og højere under kørsel. Det maksimale strømforbrug, kendt som stopstrøm, kan nå op til 1A for nogle motorer.
Til kontrol af en enkelt motor, anvend en spændingsregulator som LM317 med en kulder. Til flere motorer er en højkvalitets strømforsyning med et højere strømniveau nødvendig. En SMPS (Switched Mode Power Supply) er en god valgmulighed.
Blokkdiagram nedenfor viser forbindelser i en servo motordriver

Kontrol af servo motor
Servo motoren har tre terminaler.
Positionsignal (PWM-pulser)
Vcc (fra strømforsyning)
Jord

Servo motorens vinkelposition styres ved at anvende PWM-pulser med specifikke bredde. Pulsdurationen varierer fra omkring 0,5ms for 0-graders rotation til 2,2ms for 180-graders rotation. Pulserne skal gives ved frekvenser omkring 50Hz til 60Hz.
For at generere PWM (Pulse Width Modulation) bølgeform, som vist på figuren nedenfor, kan man enten bruge den interne PWM-module i mikrocontrolleren eller tidsregistranter kan anvendes. Brugen af PWM-blokken er mere fleksibel, da de fleste mikrocontrollerfamilier er designet, og denne PWM-blok bedre passer til behovene for applikationer som en servo motor. For forskellige bredder af PWM-pulser, skal interne registre programmeres i overensstemmelse hermed.
Nu skal vi også fortælle mikrocontrolleren, hvor meget den skal rotere. Til dette formål kan vi bruge et simpelt potentiometer og anvende en ADC for at få rotationsvinklen, eller for mere komplekse applikationer kan en accelerometer anvendes.

Programalgoritme
Lad os designe programmet til at kontrollere en enkelt servo, og positionsindgangen er givet via potentiometeret, der er forbundet til en pin på controlleren.
Initialiser portpinsene for input/output.
Læs ADC for ønsket servoposition.
Programmer PWM-registre for det ønskede værdi.
Så snart du aktiverer PWM-modulen, går den valgte PWM-kanalpin op (logisk 1), og når den nødvendige bredde er nået, går den igen ned (logisk 0). Så efter at have aktiveret PWM, skal du starte en tidsregistrant med en forsinkelse på ca. 19 ms og vente, indtil tidsregistranten overskrides. Gå til trin 2
Der findes forskellige PWM-tilstande, som du kan bruge, afhængigt af den mikrocontroller, du vælger. Nogen grad af optimering skal udføres i koden for at kontrollere servo.
Hvis du planlægger at bruge mere end en servo, vil du have brug for lige så mange PWM-kanaler. Hver servo kan gives PWM-signal sekventielt. Men du skal passe på, at pulsgentagelseshastigheden for hver servo opretholdes. Ellers vil servo miste synkronisering.