Kontrol servomotor sareng PWM sareng Arduino

Kami parantos nampilkeun dina blog Arduino (https://www.ikkaro.com/kit-inicio-arduino-super-starter-elegoo/) sareng nyatana muncul dina sababaraha proyék kalebet anu ieu (https://www.ikkaro.com/node/529)

Ayeuna hayu urang maju sakedik sareng hayu modulate sinyal ku lébar pulsa (PWM), ieu tiasa dianggo contona pikeun nanganan servomotor sapertos anu ditepikeun di dieu (https://www.ikkaro.com/introduccion-al-aeromodelismo-electrico/) atanapi rgb leds diantarana. Pikeun aranjeunna anu henteu terang naon PWM, éta mangrupikeun modulasi anu dilakukeun kana sinyal sareng anu tiasa "ngirimkeun inpormasi ngalangkungan saluran komunikasi atanapi pikeun ngontrol jumlah énergi anu dikirim kana beban" (Wikipedia)

Éta servomotor dikawasa ku 3 kabel: hiji pikeun tegangan positip, anu sanés pikeun taneuh sareng anu sanés pikeun sinyal kontrol, anu dimodulasi dina PWM.

Di sisi anu sanésna Arduino ngagaduhan 6 output digital anu tiasa berperan salaku output PWM (nyaéta pin: 11, 10, 9, 6, 5, 4) sareng ogé perpustakaan anu disiapkeun pikeun nanganan servos. Kituna, urang bakal nganggo salah sahiji kaluaran éta pikeun ngalakukeun tés munggaran urang pikeun ngatur servomotor.

Conto kode perpustakaan Arduino servo tiasa ngalayanan urang, urang sambungkeun voltase ka 5v, ground to gnd sareng sinyal kontrol servomotor (anu salah sahiji anu dimodulasi dina PWM) kana salah sahiji pin arduino anu ngagaduhan PWM, contona dina kode ieu kana pin digital 9.

// Nyapu
// ku BARRAGAN

#lebetkeun
 
Servo MyServo; // nyieun obyék servo pikeun ngendalikeun servo
                // maksimal dalapan obyék servo tiasa didamel
 
int pos = 0; // variable pikeun nyimpen posisi servo
 
batal setelan ()
{
  myservo.attach (9); // ngagantelkeun servo dina pin 9 kana obyék servo
}
 
 
batal loop ()
{
  pikeun (pos = 0; pos <180; pos + = 1) // angkat tina 0 derajat dugi ka 180 derajat
  {// dina léngkah 1 darajat
    myservo.write (pos); // ngawartosan servo pikeun angkat ka posisi dina variabel 'pos'
    reureuh (15); // ngantosan 15ms pikeun servo ngahontal posisi
  }
  pikeun (pos = 180; pos> = 1; pos- = 1) // angkat tina 180 derajat dugi ka 0 derajat
  {                               
    myservo.write (pos); // ngawartosan servo pikeun angkat ka posisi dina variabel 'pos'
    reureuh (15); // ngantosan 15ms pikeun servo ngahontal posisi
  }
}

Kode ieu bakal ngamungkinkeun urang pikeun muterkeun aktuator ti 0º dugi ka 180º teras deui ka 0º.

Moal lami deui deui.

[disorot] Tulisan ieu asalna ditulis ku ErSame pikeun Ikkaro [/ disorot]

Ninggalkeun comment hiji