Kuidas juhtida servomootorit Arduinoga

Kuidas Juhtida Servomootorit Arduinoga



Servo mootorid on teatud tüüpi elektriseade, mis suudab suure täpsusega muuta või pöörata objekti asendit. Alguses kasutati neid RC lennukitiibade juhtimiseks, hetk hiljem jõudsid nad robootika, humanoidrobotite ja paljude automatiseerimisprojektide juurde. Erinevalt samm-mootoritest on nende liikumine piiratud vahemikus 0o kuni 180o.

Tavaliselt on servomootoritel käed, mida saab Arduino abil juhtida. Servomootorid koosnevad juhtimissüsteemist, mis tagab tagasisidet mootori võlli hetkeasendi kohta võimaldab see tagasiside liikuda väga täpselt.

Servo mootori pinout

Tavaliselt on enamikul servomootoritel kolm kontakti:







  • Vcc pin (tavaliselt punane 5 V)
  • GND pin (tavaliselt must 0 V)
  • Sisendsignaali viik (PWM-signaali vastuvõtmine Arduinost)



Servo mootori töö

Saame juhtida servomootorit, ühendades Vcc-pistiku 5 V-ga ja GND-pistiku 0 V-ga. Kollase värvi terminalil pakume a PWM signaal, mis juhib servomootori pöördenurka. PWM-signaali laius annab meile nurga, mille all mootor oma kätt pöörab.



Kui vaatame servomootorite andmelehte, saame järgmised parameetrid:





  • PWM signaali ajaperiood
  • PWM-i minimaalne laius
  • PWM-i maksimaalne laius

Kõik need parameetrid on Arduino Servo teegis eelnevalt määratletud.

Servomootorid koos Arduinoga

Tänu servomootoritele on Arduinoga ülilihtne juhtida Servo raamatukogu mis aitab meil koodi vastavalt vajadusele kohandada ja võimaldab meil pöörata servohooba soovitud nurga all.



Kõik kolm ülalmainitud parameetrit on Servo teegis fikseeritud. Neid parameetreid kasutades saame servomootori nurka juhtida järgmiselt:

  • Kui PWM-signaali laius = WIDTH_MAX, pöörleb servo 180o
  • Kui PWM signaali laius = WIDTH_MIIN, pöördub servo 0o
  • Kui PWM signaali laius jääb vahele WIDTH_MAX ja WIDTH_MIN servomootor pöörleb vahemikus 0o kuni 180o

Mõnel Arduino tihvtil saame genereerida soovitud PWM-signaali. PWM-signaal antakse servomootori sisendsignaali kontakti kaudu. Ülejäänud kahe servo kontakti ühendamine Arduino 5v ja GND-ga.

Kuidas juhtida servomootorit Arduino abil

Siin selgitan, kuidas saame oma servomootorit Arduino abil ühendada ja programmeerida. Kõik, mida vajate, on:

  • Arduino UNO
  • USB B kaabel
  • Servo mootor
  • Jumper juhtmed

Kuidas programmeerida servot Arduinoga

Järgnevalt on toodud mõned lihtsad sammud.

Samm 1: Kaasa eelmääratletud servoteek:

# sisaldama < Servo.h >

2. samm: Loo servoobjekt:

Servo myservo;

Näpunäide: kui juhite rohkem kui ühte servomootorit, peate looma rohkem servoobjekte:

Servo myservo1;
Servo myservo2;

3. samm: Seadke Arduino Uno juhttihvt (9), mis saadab PWM-signaali servo sisendsignaali porti:

myservo.attach ( 9 ) ;

4. samm: Pöörake servomootori nurk soovitud väärtuseni, näiteks 90o:

myservo.kirjutada ( pos ) ;

Arduino kood

Avage servomootori näidisprogramm alates Fail>Näide>Servo>Pühkimine , avaneb uus aken, mis näitab meile meie servo visandit:

#include

Servo myservo; // servoobjekt luuakse jaoks servomootori juhtimine
int pos = 0 ; // servopositsiooni salvestamiseks luuakse uus muutuja
tühine seadistus ( ) {
myservo.attach ( 9 ) ; // see tahe seatud Arduino pin 9 jaoks PWM väljund
}
tühi silmus ( ) {
jaoks ( pos = 0 ; pos = 0 ; pos -= 1 ) { // läheb alates 180 juurde 0 kraadid
myservo.kirjutada ( pos ) ; // käskige servol minna asendisse 'pos'.
viivitus ( 5 ) ; // ootab jaoks 5 ms, et servo jõuaks positsioonini
}
}

Kui programm on koostatud ja üles laaditud, hakkab servomootor aeglaselt pöörlema ​​lähteasendist 0 kraadist 180 kraadini, üks kraad korraga nagu sammud. Kui mootor on 180-kraadise pöörlemise lõpetanud, hakkab see pöörlema ​​vastupidises suunas oma alguspunkti, st 0 kraadi suunas.

Skeemid

Kuidas juhtida servomootorit potentsiomeetri abil

Samuti saame käsitsi juhtida servomootori asendit. Selleks vajame a Potentsiomeeter . Potentsiomeetril on kolm kontakti. Ühendage kaks välimist tihvti Arduino 5 V Vcc ja GND-ga ning keskmine üks A0 viiguga Arduino plaadil.

Kuidas programmeerida servot potentsiomeetriga

Suurem osa potentsiomeetri visandist on sama, mis eelmises näites. Ainus erinevus on uus muutuja val ja alamtihvt on määratletud enne koodi seadistus- ja tsükliosa.

int potpin = A0;
int val;

Tingimuses kasutatakse analoogtihvti A0 funktsiooniga potentsiomeetri väärtuste lugemiseks analoogRead() . Arduino plaadid sisaldavad 10-bitist ADC-d (analoog-digitaalmuundur), mis annab meile väärtused vahemikus 0 kuni 1023, sõltuvalt sellest, millises asendis potentsiomeeter on:

val = analoogLoe ( alamtihvt ) ;

Lõpuks oleme kasutanud kaart () funktsioon numbrite 0 kuni 1023 ümber kaardistamiseks vastavalt servo nurgale, nagu me teame, servomootorid saavad pöörata ainult vahemikus 00 kuni 1800.

val = kaart ( val, 0 , 1023 , 0 , 180 ) ;

Arduino kood

Arduino IDE-s on saadaval avatud nupu visand, minge aadressile Failid> Näited> Servo> Nupp . Avaneb uus aken, mis näitab meile meie servo nupu visandit:

#include
Servo myservo; // Servoobjekti nime myservo loomine
int potpin = A0; // määratledes analoogtihvti jaoks potentsiomeeter
int val; // muutuv mis tahe lugeda analoogviigu väärtused jaoks potentsiomeeter

tühine seadistus ( ) {
myservo.attach ( 9 ) ; // määratletud pin 9 jaoks Arduino servo PWM-sisendsignaal
}
tühi silmus ( ) {
val = analoogLoe ( alamtihvt ) ; // loeb väärtust potentsiomeetrilt ( väärtus vahel 0 ja 1023 )
val = kaart ( val, 0 , 1023 , 0 , 180 ) ; // skaleerida servoga kasutatavat väärtust ( väärtus vahel 0 ja 180 )
myservo.kirjutada ( val ) ; // määrab servo asendi skaleeritud väärtusega
viivitus ( viisteist ) ; // ootab jaoks servo asendisse jõudmiseks
}

Ülaltoodud kood aitab meil juhtida servomootori võlli potentsiomeetri abil, võll pöörleb vahemikus 0 kuni 180 kraadi. Samuti saame säilitada kiirust koos seda kasutava servo suunaga.

Vooluahela skeem

Mitu servomootorit saan Arduinoga ühendada?

Maksimaalne servomootorite arv, millega Arduino UNO saab hakkama, on kuni 12 koos Arduino teegiga servo jaoks ja maksimaalne 48 servot saab ühendada selliste tahvlitega nagu Mega.

Näpunäide: Saame servot otse käivitada, kasutades Arduino voolu, kuid pidage meeles, kas servomootorid tarbivad rohkem kui 500mA siis saab teie Arduino plaat automaatselt lähtestada ja kaotada toite. Servomootoritele on soovitatav alati kasutada spetsiaalset toiteallikat.

Järeldus

Selles õpetuses oleme käsitlenud Arduino servomootorite juhtimismehhanismi. Käsitlesime servo asendi ja kiiruse juhtimise põhitõdesid potentsiomeetri abil. Nüüd on teil servost aimu ja võimalused teie robootika jaoks, RC projektid ja servo abil automatiseerimine on lõputud.