hur servomotor fungerar & amp; Gränssnitt det med Arduino

Vill du lägga till rörelse till ditt nästa Arduino-projekt utan att bygga en motorstyrning? Då kan servomotorer vara den fasta startpunkten för dig.

Till skillnad från likströmsmotorer kan du exakt styra placeringen av dessa motorer. Instruera dem var att peka, och de kommer att göra det för dig.

de är användbara i många robotprojekt, till exempel för att vrida framhjulen på en RC-modell för styrning eller svänga en sensor för att titta runt på ett robotfordon.,

Vad är Servo?

Servo är en allmän term för en sluten slinga styrsystem.

ett slutet loop-system använder återkopplingssignalen för att justera motorns hastighet och riktning för att uppnå önskat resultat.

RC servomotor fungerar på samma principal. Den innehåller en liten likströmsmotor ansluten till utgående axeln genom kugghjulen.

utgående axeln driver en servoarm och är också ansluten till en potentiometer (pot).,

potentiometern ger positionsåterkoppling till servostyrenheten där motorns nuvarande position jämförs med målpositionen.

enligt felet korrigerar styrenheten motorns faktiska position så att den matchar målpositionen.

hur servomotorer fungerar?

Du kan styra servomotorn genom att skicka en serie pulser till signalledningen. En konventionell analog servomotor förväntar sig att få en puls ungefär var 20 millisekunder (dvs, signalen ska vara 50Hz).

pulsens längd bestämmer servomotorns position.

  • om pulsen är hög för 1ms kommer servovinkeln att vara noll.
  • om pulsen är hög för 1,5 ms, kommer servoen att vara i sitt mittläge.
  • om pulsen är hög för 2ms, kommer servo vid 180 grader.
  • pulser som sträcker sig mellan 1ms och 2ms kommer att flytta servoaxeln genom hela 180 grader av sin resa.,

pulsernas varaktighet kan ibland variera med olika märken och de kan vara 0,5 ms för 0 grader och 2,5 ms för 180 grader.

servomotor Pinout

servomotorer har vanligtvis tre anslutningar och är följande:

GND är en gemensam grund för både motorn och logiken.

5V är en positiv spänning som driver servo.

Control är ingång för styrsystemet.,

färgen på trådarna varierar mellan servomotorer, men den röda tråden är alltid 5V och GND kommer antingen att vara svart eller brun. Styrtråden är vanligtvis orange eller gul.

ledningar servomotor till Arduino UNO

låt oss haka servomotorn upp till Arduino.

till exempel låt oss använda SG90 Micro servomotor. Den körs på 4.8-6VDC (5V typisk) och kan rotera ca 180 grader (90 i varje riktning).

den förbrukar runt 10mA vid tomgång och 100mA till 250mA när du flyttar, så vi kan driva upp det genom 5-volts utgång på Arduino.,

om du har en servo som förbrukar mer än 250mA, överväg att använda en separat strömförsörjning för din servo.

Anslut den röda ledningen till 5V på Arduino (eller DC jack) och Svart / brun tråd till jord. Anslut slutligen den Orange / gula ledningen till PWM-aktiverade stiftet 9.

Arduino Code – Sweep

för vår första Arduino sketch använder vi ett av de inbyggda exemplen som följer med Arduino IDE.

gå till undermenyn exempel. Välj Servo och ladda Svepskissen.,

fortsätt och ladda upp skissen. Du kommer omedelbart att se motorn rör sig i en riktning och sedan gå tillbaka i en annan.

förklaring:

kontrollerande servon är inte en lätt uppgift, men lyckligtvis för oss innehåller Arduino IDE redan ett mycket trevligt bibliotek som heter Servo. Den innehåller enkla kommandon så att du snabbt kan instruera servo att vända sig till en viss vinkel.,

om du ska använda dessa kommandon måste du berätta för Arduino IDE att du använder biblioteket med det här kommandot:

#include <Servo.h>

nästa sak vi gör är att förklara Arduino-stiftet som servomotorns styrpinne är ansluten till.

int servoPin = 9;

under raden skapas ett servoobjekt.,

Servo servo;

Du kan faktiskt definiera upp till åtta servon på detta sätt, till exempel om vi hade två servon, då kan vi skriva något så här:

Servo servo1;Servo servo2;

variabeln angle används för att lagra servoens aktuella vinkel i grader. – herr talman!

int angle = 0;

i inställningsfunktionen länkar vi objektetservo till stiftet som styr servon med det här kommandot:

servo.attach(servoPin);

loop-funktionen innehåller faktiskt två för loopar., Den första slingan ökar vinkeln i en riktning och den andra i motsatt riktning.

under kommandot talar om för servo att uppdatera sin position till den angivna vinkeln.

servo.write(angle);

felsökning

Ibland kan din servo missköta om du väljer att köra den direkt från Arduino. Anledningen till detta är att servon drar stor kraft, särskilt under uppstart, och detta kan orsaka att Arduino-kortet återställs.,

om detta händer kan du vanligtvis fixa detta genom att placera en ganska stor elektrolytkondensator (470uF – 1000uF) mellan GND och 5V.

kondensatorn fungerar som en reservoar av el, så att när motorn startar tar den laddning från kondensatorn samt Arduino-tillförseln.

kondensatorns längre ledning ska anslutas till 5V och den negativa ledningen till GND.,

kontrollera Servo med en Potentiometer

vårt nästa steg är att lägga till en potentiometer så att vi kan styra servopositionen genom att vrida på ratten.

det här projektet kan vara mycket användbart när du vill styra pannan och lutningen på en sensor som är ansluten till servo.

ledningar

eftersom kopplingsschemat visar att du behöver en potentiometer, kommer något värde från 10k upp vara OK. Anslut ena änden av potten till marken, den andra änden till Arduino 5V och torkaren till analog ingång A0.,

Arduino-kod

koden för att servo ska följa knoppens position är enklare än att göra det sopa.

Observera att det nu finns en ny variabel som heterpotPin.

i loop-funktionen börjar vi med att läsa värdet från den analoga stiftet A0.

int reading = analogRead(potPin);

detta ger oss ett värde på mellan 0 och 1023. Men vi måste skala ner det, eftersom servon bara kan rotera genom 180 grader.,

ett sätt att göra detta är att använda funktionen Arduino map() som återskapar ett tal från ett intervall till ett annat. Så, under raden ändras läsningen för att representera vinkeln mellan 0 och 180 grader.

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

slutligen använder vi kommandotwrite() som talar om för servo att uppdatera sin position till den vinkel som valts av potentiometern.

servo.write(angle);

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *