hvordan servomotor fungerer og Interface den med Arduino

vil du tilføje bevægelse til dit næste Arduino-projekt uden at bygge en motorcontroller? Derefter kan servomotorer være det solide startpunkt for dig.

i modsætning til DC-motorer kan du nøjagtigt kontrollere placeringen af disse motorer. Instruer dem, hvor de skal pege, og de vil gøre det for dig.

de er nyttige i mange robotikprojekter, såsom til at dreje forhjulene på en RC-model til styring eller dreje en sensor for at se sig omkring på et robotkøretøj.,

Hvad er Servo?

Servo er en generel betegnelse for et lukket kredsløb kontrolsystem.

et lukket sløjfesystem bruger feedbacksignalet til at justere motorens hastighed og retning for at opnå det ønskede resultat.

RC servo motor virker på samme hovedstol. Den indeholder en lille DC-motor forbundet til udgangsakslen gennem gearene.

udgangsakslen driver en servoarm og er også forbundet til et potentiometer (pot).,

potentiometeret giver positionsfeedback til servokontrolenheden, hvor motorens aktuelle position sammenlignes med målpositionen.

i henhold til fejlen korrigerer styreenheden motorens faktiske position, så den matcher målpositionen.

hvordan servomotorer arbejde?

Du kan styre servomotoren ved at sende en række impulser til signallinjen. En konventionel analog servomotor forventer at modtage en puls omtrent hver 20 millisekunder (dvs ., signal skal være 50h.).

pulsens længde bestemmer servomotorens position.

  • Hvis pulsen er høj for 1ms, så servo vinkel vil være nul.
  • hvis pulsen er høj i 1,5 ms, vil servoen være i sin midterposition.
  • hvis pulsen er høj i 2ms, vil servoen ved 180 grader.
  • pulser, der spænder mellem 1ms og 2ms, vil bevæge servoakslen gennem de fulde 180 grader af dens kørsel.,

varighed af pulser, kan undertiden variere med forskellige mærker, og de kan være 0,5 ms til 0 grader og 2,5 ms til 180 grader.

Servo Motor Benet

Servo motorer har typisk tre-forbindelser og er som følger:

GND er et fælles grundlag for både motor og logik.

5V er en positiv spænding, der driver servoen.

kontrol er input til styresystemet.,

trådens farve varierer mellem servomotorer, men den røde ledning er altid 5V, og GND vil enten være sort eller brun. Kontrolledningen er normalt orange eller gul.

ledning af servomotor til Arduino UNO

lad os koble servomotoren op til Arduino.

lad os for eksempel bruge SG90 mikro servomotor. Den kører på 4.8-6VDC (5V typisk) og kan rotere cirka 180 grader (90 i hver retning).

det bruger omkring 10mA ved tomgang og 100mA til 250mA, når du flytter, så vi kan tænde det op gennem 5-volt output på Arduino.,

Hvis du har en servo, der bruger mere end 250mA, kan du overveje at bruge en separat strømforsyning til din servo.

tilslut den røde ledning til 5V på Arduino (eller DC-stikket) og sort / brun ledning til jorden. Tilslut til sidst den Orange / gule ledning til den p .m-aktiverede pin 9.

Arduino Kode – Sweep

Til vores første Arduino skitse, vi vil bruge en af de indbyggede eksempler, der kommer med Arduino IDE.gå til undermenuen eksempler. Vælg Servo og indlæse feje skitse.,

Gå videre og uploade tegningen. Du vil straks se motoren bevæge sig i en retning og derefter gå tilbage i en anden.

forklaring:

styring af servoer er ikke en let opgave, men heldigvis for os indeholder Arduino IDE allerede et meget flot bibliotek kaldet Servo. Den indeholder enkle kommandoer, så du hurtigt kan instruere servoen til at dreje til en bestemt vinkel.,

Hvis du vil bruge disse kommandoer, du har brug for at fortælle Arduino IDE, at du bruger bibliotek med denne kommando:

#include <Servo.h>

Den næste ting, vi gør, er at erklære den Arduino pin-kode, som kontrol af pin-servo-motor er tilsluttet.

int servoPin = 9;

under linjen opretter et servoobjekt.,

Servo servo;

Du kan faktisk angive op til otte servoer på denne måde, hvis vi for eksempel havde to servoer, så vi kunne skrive noget lignende dette:

Servo servo1;Servo servo2;

variabel angle bruges til at gemme den aktuelle vinkel af servo i grader.

int angle = 0;

I setup-funktion, vi linker servo objektet til den pin-kode, som vil styre servo hjælp af denne kommando:

servo.attach(servoPin);

loop-funktionen, der rent faktisk indeholder to for-løkker., Den første sløjfe øger vinklen i en retning og den anden i modsat retning.

under kommando fortæller servoen at opdatere sin position til den angivne vinkel.

servo.write(angle);

fejlfinding

nogle gange kan din servo opføre sig forkert, hvis du beslutter dig for at køre den direkte fra Arduino. Årsagen til dette er, at servoen trækker betydelig strøm, især under opstart, og dette kan medføre, at Arduino-kortet nulstilles.,

Hvis dette sker, kan du som regel løse dette ved at placere en temmelig stor elektrolytisk kondensator (470uF – 1000uF) mellem GND og 5V.

kondensator fungerer som et reservoir af elektricitet, således at når motoren starter, det tager ansvaret fra kondensatoren samt Arduino forsyninger.

kondensatorens længere ledning skal tilsluttes 5V og den negative ledning til GND.,

at Styre Servo med et Potentiometer

Vores næste skridt er at tilføje et potentiometer, så vi kan styre den position af styret, ved at dreje knappen.

dette projekt kan være meget nyttigt, når du vil styre panden og hældningen af en sensor, der er tilsluttet servoen.

ledningsføring

da ledningsdiagrammet viser, at du har brug for et potentiometer, vil enhver værdi fra 10k op være OK. Tilslut den ene ende af gryden til jorden, den anden ende til Arduino 5V og viskeren til analog indgang A0.,

Arduino Kode

koden til at gøre servo følge knop ‘ s position er enklere end at gøre det til feje.

Bemærk, at der nu er en ny variabel kaldet potPin.

i loop-funktionen starter vi med at læse værdien fra den analoge pin A0.

int reading = analogRead(potPin);

dette giver os en værdi på mellem 0 og 1023. Men vi skal skalere det ned, da servoen kun kan rotere 180 grader.,

en måde at gøre dette på er at bruge Arduino map ()-funktionen, som genkortlægger et tal fra et område til et andet. Så under linjen ændrer læsningen for at repræsentere vinklen mellem 0 og 180 grader.

int angle = map(reading, 0, 1023, 0, 180);

endelig bruger vi kommandoen write(), der fortæller servoen at opdatere sin position til den vinkel, der er valgt af potentiometeret.

servo.write(angle);

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *