Hvordan Servo Motor Works & Grensesnittet er Det Med Arduino

Ønsker å legge til bevegelse til din neste Arduino-prosjekt uten å bygge en motor kontrolleren? Deretter servomotorer kan være solid utgangspunkt for deg.

i Motsetning til DC-motorer, kan du nettopp kontrollere plasseringen av disse motorene. Be dem der hvor å punktet, og de vil gjøre det for deg.

De er nyttige i mange robotics prosjekter, for eksempel for å dreie hjulene på en RC modell for styring eller bevege en sensor som er å se rundt på en robot kjøretøy.,

Hva er Servo?

Servo er en generell betegnelse for en lukket sløyfe kontroll system.

En lukket sløyfe bruker systemet feedback-signalet for å justere hastighet og retning av motoren for å oppnå ønsket resultat.

RC-servo motor fungerer på samme oppdragsgiver. Den inneholder en liten DC-motor koblet til output shaft gjennom girene.

Den utgående aksel kjører en servo arm og er også koblet til et potensiometer (pot).,

potensiometeret gir posisjon tilbakemelding til servo kontroll enhet hvor den aktuelle posisjonen til motoren er i forhold til den ønskede posisjonen.

Ifølge feil, kontrollenheten korrigerer den faktiske plasseringen av motoren slik at den passer til den ønskede posisjonen.

Hvordan servomotorer Arbeid?

Du kan styre servo motor ved å sende en serie av pulser til signal linje. En vanlig analog servo motor forventer å motta en puls på omtrent hvert 20 millisekunder (dvs., signalet skal være 50Hz).

lengden på puls bestemmer posisjonen til servo motor.

  • Hvis pulsen er høy for 1ms, så servo vinkel vil være null.
  • Hvis pulsen er høy i 1,5 ms, så servo vil være i midten posisjon.
  • Hvis pulsen er høy for 2ms, så servo vil på 180 grader.
  • Pulsene som spenner mellom 1ms og 2ms vil flytte servo akselen gjennom hele 180 grader på sin reise.,

varigheten av pulser kan noen ganger variere med forskjellige merker, og de kan være 0,5 ms for 0 grader og 2,5 ms for 180 grader.

Servo Motor Pinout

servomotorer har vanligvis tre-forbindelser og er som følger:

JORD er en felles plattform for både motor og logikk.

5V er en positiv spenning som driver servo.

Control er inngang til kontroll system.,

fargen på ledningene varierer mellom servo motorer, men den røde tråden er alltid 5V og GND vil enten være svart eller brun. Kontroll-wire er vanligvis oransje eller gul.

Ledninger Servo Motor til Arduino UNO

La oss kroken servo motor opp til Arduino.

For eksempel, la oss bruke SG90 Micro Servo Motor. Det kjører på 4.8-6VDC (5V Typisk) og kan rotere ca 180 grader (90 i hver retning).

Den bruker rundt 10mA på tomgang og 100 ma til 250mA når du flytter, slik at vi kan slå det opp gjennom 5-volt utgang på Arduino.,

Hvis du har en servo som bruker mer enn 250mA, bør du vurdere å bruke en separat strømforsyning for din servo.

Koble den Røde ledningen til 5V på Arduino (eller DC jack) og Svart/Brun ledning til jord. Til slutt kobler du den Oransje/Gule ledningen til PWM-aktivert pin-9.

Arduino-Kode – Sweep

For vår første Arduino skisse, vi vil bruke en av de innebygde eksempler som kommer med Arduino IDE.

Gå til Eksempler sub-menyen. Velg Servo og Legg Sweep-skisse.,

Gå videre og laste opp skissen. Du vil umiddelbart se motoren beveger seg i en retning og deretter kommer tilbake i en annen.

Forklaring:

Controlling servoer er ikke en lett oppgave, men heldigvis for oss, Arduino IDE allerede inneholder en veldig fin bibliotek kalt Servo. Det omfatter enkle kommandoer, slik at du raskt kan instruere servo til å slå til en bestemt vinkel.,

Hvis du kommer til å bruke disse kommandoene du trenger for å fortelle Arduino IDE at du bruker biblioteket med denne kommandoen:

#include <Servo.h>

Det neste vi gjør, er å erklære Arduino pin-kode som pin-kontroll av servo motor er koblet til.

int servoPin = 9;

Nedenfor linje skaper en servo objekt.,

Servo servo;

Du kan faktisk definere opp til åtte servoer på denne måten, for eksempel, hvis vi hadde to servoer, så vi kan skrive noe sånt som dette:

Servo servo1;Servo servo2;

variabelen angle brukes til å lagre den aktuelle vinkelen på servo i grader.

int angle = 0;

I setup-funksjonen, kan vi knytte servo objekt pin-koden som vil styre servo ved hjelp av denne kommandoen:

servo.attach(servoPin);

The loop-funksjon faktisk inneholder to for-løkker., Den første loop øker vinkelen i én retning, og den andre i motsatt retning.

Under kommando forteller servo å oppdatere sin posisjon til den angitte vinkelen.

servo.write(angle);

Feilsøking

noen Ganger servo kan oppføre seg dårlig hvis du bestemmer deg for å kjøre det direkte fra Arduino. Grunnen til dette er at servo trekker betydelig makt, spesielt under oppstart, og dette kan føre til Arduino styret for å tilbakestille.,

Hvis dette skjer, kan du vanligvis løse dette ved å plassere en ganske stor elektrolytisk kondensator (470uF – 1000uF) mellom JORD og 5V.

kondensatoren fungerer som et reservoar av elektrisitet, slik at når motoren starter, det tar betalt fra kondensatoren samt Arduino forsyning.

Den lenger kan lede av kondensatoren bør være koblet til 5V og den negative ledningen til JORD.,

Styre Servo med et Potensiometer

Vår neste trinn er å legge til et potensiometer, slik at vi kan kontrollere plasseringen av servo ved å slå på bryteren.

Dette prosjektet kan være svært nyttig når du ønsker å styre pan og tilt av en sensor som er koblet til servo.

Ledninger

Som koblingsskjema viser du trenger et potensiometer, hvilken som helst verdi fra 10k opp, vil det være OK. Koble den ene enden av potten til bakken, den andre enden til Arduino 5V og vindusvisker til analog inngang A0.,

Arduino Kode

– koden for å gjøre servo følg knott ‘ s posisjon er enklere enn å gjøre det sweep.

Merke til at det er nå en ny variabel kalt potPin.

I loop-funksjon, starter vi ved å lese av verdien fra den analoge pin-A0.

int reading = analogRead(potPin);

Dette gir oss en verdi mellom 0 og 1023. Men vi trenger å skalere det ned, siden servo kan bare roter gjennom 180 grader.,

En måte å gjøre dette på er å bruke Arduino kart () – Funksjonen som re-kart, et tall fra ett område til et annet. Så, under linje endringer lesing på å representere en vinkel mellom 0 og 180 grader.

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

til Slutt, bruker vi write() kommando som forteller servo å oppdatere sin posisjon til vinkelen er valgt av potensiometeret.

servo.write(angle);

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *