Kaip valdyti servo variklį naudojant „Arduino“.

Kaip Valdyti Servo Varikli Naudojant Arduino



Servo varikliai yra elektrinio prietaiso tipas, galintis labai tiksliai keisti arba pasukti objekto padėtį. Pradžioje jie buvo naudojami valdyti RC lėktuvo sparnus, o vėliau jie pasiekė robotiką, humanoidinius robotus ir daugelį automatizavimo projektų. Skirtingai nuo žingsninių variklių, jų judėjimas ribojamas nuo 0o iki 180o.

Paprastai servo varikliai turi rankas, kurias galima valdyti naudojant Arduino. Servo variklius sudaro valdymo sistema, kuri numato Atsiliepimas apie esamą variklio veleno padėtį šis grįžtamasis ryšys leidžia judėti labai tiksliai.

Servo variklio smaigalys

Paprastai dauguma servo variklių turi tris kaiščius:







  • Vcc kaištis (paprastai raudonas 5 V)
  • GND kaištis (paprastai juodas 0 V)
  • Įvesties signalo kaištis (gauti PWM signalą iš „Arduino“)



Servo variklio veikimas

Servo variklį galime valdyti prijungdami Vcc kaištį prie 5 V, o GND kištuką prie 0 V. Geltonos spalvos terminale pateikiame a PWM signalas, valdantis servo variklio sukimosi kampą. PWM signalo plotis suteikia mums kampą, kuriuo variklis suks savo ranką.



Jei pažvelgsime į servo variklių duomenų lapą, gausime šiuos parametrus:





  • PWM signalo laikotarpis
  • Mažiausias PWM plotis
  • Didžiausias PWM plotis

Visi šie parametrai yra iš anksto nustatyti „Arduino Servo“ bibliotekoje.

Servo varikliai su Arduino

Servo variklius labai lengva valdyti naudojant „Arduino“, nes Servo biblioteka kuri padeda mums pritaikyti savo kodą pagal poreikį ir leidžia pasukti servo rankenėlę norimu kampu.



Visi trys aukščiau paminėti parametrai yra nustatyti servo bibliotekoje. Naudodami šiuos parametrus galime valdyti servo variklio kampą taip:

  • Jei PWM signalo plotis = WIDTH_MAX, servo sukasi iki 180o
  • Jei PWM signalo plotis = WIDTH_MIIN, servo sukasi iki 0o
  • Jei PWM signalo plotis yra tarp WIDTH_MAX ir WIDTH_MIN servo variklis suksis nuo 0o iki 180o

Kai kuriuose Arduino kaiščiuose galime generuoti norimą PWM signalą. PWM signalas bus duodamas servo variklio įvesties signalo kaištyje. Likusių dviejų servo kaiščių prijungimas prie 5v ir GND Arduino.

Kaip valdyti servo variklį naudojant Arduino

Čia paaiškinsiu, kaip galime prijungti ir programuoti savo servo variklį naudodami Arduino. Viskas, ko tau reikia, yra:

  • Arduino UNO
  • USB B laidas
  • Servo variklis
  • Jumperių laidai

Kaip programuoti „Servo“ naudojant „Arduino“.

Toliau pateikiami keli paprasti žingsniai:

1 žingsnis: Įtraukti iš anksto nustatytą servo biblioteką:

# įtraukti < Servo.h >

2 žingsnis: Sukurti servo objektą:

Servo myservo;

Patarimas: jei valdote daugiau nei vieną servo variklį, turite sukurti daugiau servo objektų:

Servo myservo1;
Servo myservo2;

3 veiksmas: „Arduino Uno“ nustatykite valdymo kaištį (9), kuris siunčia PWM signalą į servo įvesties signalo prievadą:

myservo.prisegti ( 9 ) ;

4 veiksmas: Pasukite servo variklio kampą iki norimos vertės, pavyzdžiui, 90o:

myservo.rašyti ( poz ) ;

Arduino kodas

Atidarykite servo variklio pavyzdinę programą iš Failas>Pavyzdys>Servo>Šlavimas , atsidarys naujas langas, kuriame bus rodomas mūsų servo eskizas:

#include

Servo myservo; // sukuriamas servo objektas dėl valdantis servo variklį
int poz. = 0 ; // servo pozicijai išsaugoti sukuriamas naujas kintamasis
tuščias nustatymas ( ) {
myservo.prisegti ( 9 ) ; // tai bus rinkinys Arduino kaištis 9 dėl PWM išvestis
}
tuščia kilpa ( ) {
dėl ( poz = 0 ; poz = 0 ; poz -= 1 ) { // eina iš 180 į 0 laipsnių
myservo.rašyti ( poz ) ; // liepkite servo eiti į „pos“ padėtį
uždelsimas ( 5 ) ; // laukia dėl 5 ms, kad servo gali pasiekti padėtį
}
}

Kai programa bus sudaryta ir įkelta, servo variklis pradės lėtai suktis nuo pradinės padėties 0 laipsnių iki 180 laipsnių, po vieną laipsnį, kaip ir žingsniai. Kai variklis apsisuks 180 laipsnių, jis pradės suktis priešinga kryptimi, link pradinio taško, ty 0 laipsnių.

Schemos

Kaip valdyti servo variklį naudojant potenciometrą

Taip pat galime valdyti servo variklio padėtį ranka. Norėdami tai padaryti, mums reikia a Potenciometras . Potenciometras turi tris kaiščius. Prijunkite du išorinius kaiščius prie 5 V Vcc ir Arduino GND, o vidurinį - prie A0 kaiščio Arduino plokštėje.

Kaip programuoti servo su potenciometru

Didžioji potenciometro eskizo dalis yra tokia pati kaip ankstesniame pavyzdyje. Vienintelis skirtumas yra naujas kintamasis val ir subsmeigtukas yra apibrėžtas prieš kodo sąrankos ir ciklo skyrių.

int potpin = A0;
int val;

Ciklo skyriuje analoginis kaištis A0 naudojamas potenciometro su funkcija reikšmėms nuskaityti analogiškas skaitymas () . „Arduino“ plokštėse yra 10 bitų ADC (analoginis skaitmeninis keitiklis), suteikiantis mums reikšmes nuo 0 iki 1023, atsižvelgiant į potenciometro padėtį:

val = analogas Skaityti ( subsmeigtukas ) ;

Galiausiai, mes panaudojome žemėlapis () funkcija, kad perskirstytų skaičius nuo 0 iki 1023 pagal servo kampą, nes žinome, kad servo varikliai gali suktis tik nuo 00 iki 1800.

val = žemėlapis ( val, 0 , 1023 , 0 , 180 ) ;

Arduino kodas

Atidarykite rankenėlės eskizą, kurį galite rasti „Arduino IDE“, eikite į Failai> Pavyzdžiai> Servo> Rankenėlė . Atsidarys naujas langas, kuriame parodytas mūsų servo rankenėlės eskizas:

#include
Servo myservo; // Servo objekto pavadinimo myservo kūrimas
int potpin = A0; // apibrėžiantis analoginį kaištį dėl potenciometras
int val; // kintamasis kurios valios skaityti analoginės kaiščio reikšmės dėl potenciometras

tuščias nustatymas ( ) {
myservo.prisegti ( 9 ) ; // apibrėžtas kaištis 9 dėl „Arduino“ servo PWM įvesties signalas
}
tuščia kilpa ( ) {
val = analogas Skaityti ( subsmeigtukas ) ; // nuskaito vertę iš potenciometro ( vertė tarp 0 ir 1023 )
val = žemėlapis ( val, 0 , 1023 , 0 , 180 ) ; // pakeiskite vertę, kurią naudosite su servo ( vertė tarp 0 ir 180 )
myservo.rašyti ( val ) ; // nustato servo padėtį su skalės verte
uždelsimas ( penkiolika ) ; // laukia dėl servo, kad patektų į padėtį
}

Aukščiau pateiktas kodas padės mums valdyti servo variklio veleną potenciometru, velenas suksis nuo 0 iki 180 laipsnių. Taip pat galime išlaikyti greitį kartu su servo kryptimi naudodami jį.

Grandinės schema

Kiek servo variklių galiu prijungti prie „Arduino“?

Maksimalus servo variklių, kuriuos gali valdyti Arduino UNO, skaičius yra iki 12 su Arduino biblioteka, skirta servo sistemai, ir daugiausia 48 servosai galima sujungti su tokiomis plokštėmis kaip Mega.

Patarimas: Mes galime tiesiogiai paleisti servo srovę naudodami Arduino srovę, tačiau atminkite, ar servo varikliai sunaudoja daugiau nei 500 mA tada jūsų Arduino plokštė gali automatiškai nustatyti iš naujo ir prarasti maitinimą. Servo varikliams visada rekomenduojama naudoti tam skirtą maitinimo šaltinį.

Išvada

Šioje pamokoje mes apžvelgėme servo variklių valdymo mechanizmą su Arduino. Apėmėme servo padėties ir greičio valdymo potenciometru pagrindus. Dabar jūs turite idėją apie servo ir jūsų robotikos galimybes, RC projektai ir automatizavimas naudojant servo yra beribės.