Kuinka ohjata servomoottoria Arduinolla

Kuinka Ohjata Servomoottoria Arduinolla



Servo moottorit on eräänlainen sähkölaite, joka voi muuttaa tai pyörittää kohteen sijaintia erittäin tarkasti. Alussa niitä käytettiin ohjaamaan RC-lentokoneen siipiä, hetki myöhemmin he pääsivät robotiikkaan, humanoidiroboteihin ja moniin automaatioprojekteihin. Toisin kuin askelmoottoreissa, niiden liike on rajoitettu välillä 0o - 180o.

Yleensä servomoottoreissa on varret, joita voidaan ohjata Arduinolla. Servomoottorit koostuvat ohjausjärjestelmästä, joka tarjoaa palautetta moottorin akselin nykyisestä asennosta tämä palaute mahdollistaa liikkumisen erittäin tarkasti.

Servomoottorin pinout

Yleensä useimmissa servomoottoreissa on kolme nastaa:







  • Vcc Pin (tavallisesti punainen 5 V)
  • GND Pin (tavallisesti musta 0V)
  • Tulosignaalin pin (vastaanota PWM-signaali Arduinosta)



Servomoottorin toiminta

Voimme ohjata servomoottoria kytkemällä Vcc-nastan 5V:iin ja GND-nastan 0V:iin. Keltaisessa terminaalissa tarjoamme a PWM signaali, joka ohjaa servomoottorin pyörimiskulmaa. PWM-signaalin leveys antaa meille kulman, jossa moottori pyörittää varttansa.



Jos tarkastelemme servomoottorien tietolehteä, saamme seuraavat parametrit:





  • PWM-signaalin aikajakso
  • PWM:n vähimmäisleveys
  • PWM:n enimmäisleveys

Kaikki nämä parametrit on ennalta määritetty Arduino Servo -kirjastossa.

Servomoottorit Arduinolla

Servomoottoreita on erittäin helppo ohjata Arduinolla, kiitos Servo kirjasto joka auttaa meitä räätälöimään koodimme tarpeen mukaan ja antaa meille mahdollisuuden kääntää servovartta haluamaasi kulmaan.



Kaikki kolme edellä mainittua parametria on kiinteästi Servo-kirjastossa. Käyttämällä näitä parametreja voimme ohjata servomoottorin kulmaa seuraavalla tavalla:

  • Jos PWM-signaalin leveys = WIDTH_MAX, servo kääntyy 180o
  • Jos PWM-signaalin leveys = WIDTH_MIIN, servo kääntyy 0o:een
  • Jos PWM-signaalin leveys on välissä WIDTH_MAX ja WIDTH_MIN , servomoottori pyörii 0 - 180 astetta

Voimme luoda halutun PWM-signaalin joihinkin Arduino-nastoihin. PWM-signaali annetaan servomoottorin tulosignaalin nastasta. Jäljellä olevat kaksi servon nastaa yhdistetään Arduinon 5v:iin ja GND:hen.

Kuinka ohjata servomoottoria Arduinon avulla

Tässä selitän, kuinka voimme yhdistää ja ohjelmoida servomoottorimme Arduinon avulla. Kaikki mitä tarvitset on:

  • Arduino UNO
  • USB B -kaapeli
  • Servo moottori
  • Jumper johdot

Kuinka ohjelmoida servo Arduinon kanssa

Seuraavassa on muutamia yksinkertaisia ​​vaiheita:

Vaihe 1: Sisällytä ennalta määritetty servokirjasto:

# sisältää < Servo.h >

Vaihe 2: Luo servo-objekti:

Servo myservo;

Vinkki: Jos ohjaat useampaa kuin yhtä servomoottoria, sinun on luotava lisää servo-objekteja:

Servo myservo1;
Servo myservo2;

Vaihe 3: Aseta ohjausnasta (9) Arduino Unoon, joka lähettää PWM-signaalin servon tulosignaaliporttiin:

myservo.attach ( 9 ) ;

Vaihe 4: Käännä servomoottorin kulma haluttuun arvoon, esimerkiksi 90o:

myservo.write ( pos ) ;

Arduino koodi

Avaa servomoottorin esimerkkiohjelma osoitteesta Tiedosto>Esimerkki>Servo>Sweep , avautuu uusi ikkuna, joka näyttää meille servo-luonnoksen:

#include

Servo myservo; // servo-objekti luodaan varten ohjaa servomoottoria
int pos = 0 ; // servoaseman tallentamiseksi luodaan uusi muuttuja
tyhjä asetus ( ) {
myservo.attach ( 9 ) ; // Tämä tulee aseta Arduino pin 9 varten PWM-lähtö
}
tyhjä silmukka ( ) {
varten ( pos = 0 ; pos = 0 ; pos -= 1 ) { // lähtee 180 to 0 astetta
myservo.write ( pos ) ; // käske servolle mennä 'pos'-asentoon
viive ( 5 ) ; // odottaa varten 5 ms, jotta servo pääsee asentoon
}
}

Kun ohjelma on käännetty ja ladattu, servomoottori alkaa pyöriä hitaasti aloitusasennosta 0 astetta 180 asteeseen, aste kerrallaan aivan kuten askeleita. Kun moottori on pyörinyt 180 astetta, se alkaa pyöriä vastakkaiseen suuntaan kohti aloituspistettä eli 0 astetta.

Kaavio

Kuinka ohjata servomoottoria potentiometrillä

Voimme myös ohjata servomoottorin asentoa käsin. Tätä varten tarvitsemme a Potentiometri . Potentiometrissä on kolme nastaa. Liitä kaksi ulkopuolista nastaa Arduinon 5 V Vcc:iin ja GND:hen ja keskimmäinen Arduino-levyn A0-nastaan.

Kuinka ohjelmoida servo potentiometrillä

Suurin osa potentiometrin luonnoksesta on sama kuin edellinen esimerkki. Ainoa ero on uusi muuttuja val ja subpin on määritetty ennen koodin asennus- ja silmukkaosaa.

int potpin = A0;
int val;

Silmukkaosassa analogista nastaa A0 käytetään potentiometrin ja toiminnon arvojen lukemiseen analogRead() . Arduino-levyt sisältävät 10-bittisen ADC:n (Analog to Digital Converter), joka antaa meille arvot välillä 0 - 1023 riippuen siitä, missä asennossa potentiometri on:

val = analogiLue ( subpin ) ;

Lopuksi olemme käyttäneet kartta() toiminto kartoittaa numerot 0 - 1023 servon kulman mukaan, koska tiedämme, että servomoottorit voivat pyöriä vain välillä 00 - 1800.

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

Arduino koodi

Avaa nupin luonnos saatavilla Arduino IDE:ssä, siirry osoitteeseen Tiedostot>Esimerkit>Servo>Nuppi . Uusi ikkuna avautuu, joka näyttää meille servon nuppiluonnoksen:

#include
Servo myservo; // Luodaan servoobjektin nimi myservo
int potpin = A0; // määrittävä analoginen nasta varten potentiometri
int val; // muuttuja joka tahtoa lukea analogiset pin-arvot varten potentiometri

tyhjä asetus ( ) {
myservo.attach ( 9 ) ; // määritelty pin 9 varten Arduinon servon PWM-tulosignaali
}
tyhjä silmukka ( ) {
val = analogiLue ( subpin ) ; // lukee arvon potentiometristä ( arvo välillä 0 ja 1023 )
val = kartta ( val, 0 , 1023 , 0 , 180 ) ; // skaalata servon kanssa käytettävä arvo ( arvo välillä 0 ja 180 )
myservo.write ( val ) ; // asettaa servon asennon skaalatulla arvolla
viive ( viisitoista ) ; // odottaa varten servo päästäkseen asentoon
}

Yllä oleva koodi auttaa meitä ohjaamaan servomoottorin akselia potentiometrillä, akseli pyörii 0 - 180 astetta. Pystymme myös ylläpitämään nopeutta yhdessä servon suunnan kanssa sitä käyttämällä.

Piirikaavio

Kuinka monta servomoottoria voin yhdistää Arduinoon?

Arduino UNO:n käsittelemien servomoottorien enimmäismäärä on 12 Arduino-kirjastolla servolle ja enintään 48 servoa voidaan yhdistää levyihin, kuten Mega.

Kärki: Voimme käyttää servoa suoraan Arduino-virralla, mutta muista, jos servomoottorit kuluttavat enemmän kuin 500mA silloin Arduino-korttisi voi nollata automaattisesti ja menettää virran. Servomoottoreille on suositeltavaa käyttää aina erillistä virtalähdettä.

Johtopäätös

Tässä opetusohjelmassa olemme käsitelleet servomoottorien ohjausmekanismia Arduinon kanssa. Kävimme läpi servon asennon ja nopeuden ohjauksen perusteet potentiometrillä. Nyt sinulla on käsitys servosta ja mahdollisuudet robotiikkaan, RC-projektit ja automaatio servolla ovat loputtomat.