Rheolaeth servomotor gyda PWM ac Arduino

Rydym eisoes wedi ymddangos ar y blog Arduino (https://www.ikkaro.com/kit-inicio-arduino-super-starter-elegoo/) ac mewn gwirionedd yn ymddangos mewn sawl prosiect gan gynnwys yr un hwn (https://www.ikkaro.com/node/529)

Nawr, gadewch i ni fynd ychydig ymhellach a gadewch i ni modiwleiddio signalau yn ôl lled pwls (PWM), gellir defnyddio hyn er enghraifft i drin servomotors fel y rhai a gyflwynir yma (https://www.ikkaro.com/introduccion-al-aeromodelismo-electrico/) neu rgb leds ymhlith eraill. I'r rhai nad ydyn nhw'n gwybod beth yw PWM, mae'n fodiwleiddio sy'n cael ei wneud i signal ac sy'n gwasanaethu i "drosglwyddo gwybodaeth trwy sianel gyfathrebu neu i reoli faint o egni sy'n cael ei anfon i lwyth" (Wicipedia)

Mae'r servomotors yn cael eu rheoli gyda 3 gwifren: un ar gyfer y foltedd positif, un arall ar gyfer y ddaear ac un arall ar gyfer y signal rheoli, sy'n cael ei fodiwleiddio yn PWM.

Ar y llaw arall mae gan Arduino 6 allbwn digidol a all weithredu fel allbynnau PWM (nhw yw'r pinnau: 11, 10, 9, 6, 5, 4) a hefyd llyfrgell wedi'i pharatoi ar gyfer trin servos. Felly, rydyn ni'n mynd i ddefnyddio un o'r allbynnau hynny i wneud ein profion cyntaf yn rheoli servomotor.

Gall cod enghreifftiol llyfrgell servo Arduino ein gwasanaethu, rydym yn cysylltu'r foltedd â 5v, daear i gnd a signal rheoli'r servomotor (sef yr un sy'n cael ei fodiwleiddio yn PWM) ag un o'r pinnau arduino sydd â PWM, er enghraifft yn y cod hwn i pin digidol 9.

// Ysgubo
// gan BARRAGAN

#cynnwys
 
Servo myservo; // creu gwrthrych servo i reoli servo
                // gellir creu uchafswm o wyth gwrthrych servo
 
int pos = 0; // newidiol i storio'r safle servo
 
setup gwag ()
{
  myservo.attach (9); // yn atodi'r servo ar pin 9 i'r gwrthrych servo
}
 
 
dolen gwag ()
{
  ar gyfer (pos = 0; pos <180; pos + = 1) // yn mynd o 0 gradd i 180 gradd
  {// mewn camau o 1 gradd
    myservo.write (pos); // dweud wrth servo am fynd i'w safle mewn 'pos' amrywiol
    oedi (15); // yn aros 15ms i'r servo gyrraedd y safle
  }
  ar gyfer (pos = 180; pos> = 1; pos- = 1) // yn mynd o 180 gradd i 0 gradd
  {                               
    myservo.write (pos); // dweud wrth servo am fynd i'w safle mewn 'pos' amrywiol
    oedi (15); // yn aros 15ms i'r servo gyrraedd y safle
  }
}

Byddai'r cod hwn yn caniatáu inni gylchdroi'r servomotor o 0º i 180º ac yna yn ôl i 0º.

Mwy yn dod yn fuan.

[amlygwyd] Ysgrifennwyd yr erthygl hon yn wreiddiol gan ErSame ar gyfer Ikkaro [/ amlygwyd]

Os ydych chi'n berson aflonydd fel ni ac eisiau cydweithio i gynnal a chadw a gwella'r prosiect, gallwch chi wneud cyfraniad. Bydd yr holl arian yn mynd i brynu llyfrau a deunyddiau i arbrofi a gwneud tiwtorialau

Gadael sylw