Beheer van servomotors met PWM en Arduino

Ons het reeds op die blog verskyn Arduino (https://www.ikkaro.com/Tutoriales-basicos-arduino) en verskyn inderdaad in verskeie projekte, waaronder hierdie (https://www.ikkaro.com/node/529)

Kom ons gaan nou 'n bietjie verder en laat ons moduleer seine volgens pulswydte (PWM), kan dit byvoorbeeld gebruik word om servomotors te hanteer soos hier aangebied (https://www.ikkaro.com/node/741) of onder andere rgb leds. Vir diegene wat nie weet wat PWM is nie, is dit 'n modulasie wat aan 'n sein gedoen word en wat dien om 'inligting deur middel van 'n kommunikasiekanaal uit te stuur of om die hoeveelheid energie wat na 'n las gestuur word, te beheer' (Wikipedia)

Die servomotors word met drie drade beheer: een vir die positiewe spanning, een vir die grond en 'n ander vir die beheersein, wat in PWM gemoduleer word.

Arduino het op sy beurt 6 digitale uitgange wat as PWM-uitsette kan dien (dit is die penne: 11, 10, 9, 6, 5, 4) en ook 'n biblioteek wat voorberei is vir die hantering van servo's. Daarom gaan ons een van die uitsette gebruik om ons eerste toetse te doen om 'n servomotor te beheer.

Die voorbeeldkode van die Arduino-servobiblioteek kan ons dien, ons koppel die spanning aan 5v, aarde na GND en die beheersignaal van die servomotor (dit is die wat in PWM gemoduleer word) aan een van die Arduino-penne wat PWM het, byvoorbeeld in hierdie kode tot by digitale pen 9.

// Vee
// deur BARRAGAN

#insluit
 
Servo myservo; // skep servo-voorwerp om 'n servo te beheer
                // 'n maksimum van agt servo-voorwerpe kan geskep word
 
int pos = 0; // veranderlike om die servoposisie te stoor
 
nietige opstelling ()
{
  myservo.attach (9); // heg die servo op pen 9 aan die servo-voorwerp
}
 
 
nietige lus ()
{
  want (pos = 0; pos <180; pos + = 1) // gaan van 0 grade tot 180 grade
  {// in stappe van 1 graad
    myservo.write (pos); // sê vir servo om na posisie te gaan in die veranderlike 'pos'
    vertraging (15); // wag 15ms vir die servo om die posisie te bereik
  }
  want (pos = 180; pos> = 1; pos- = 1) // gaan van 180 grade na 0 grade
  {                               
    myservo.write (pos); // sê vir servo om na posisie te gaan in die veranderlike 'pos'
    vertraging (15); // wag 15ms vir die servo om die posisie te bereik
  }
}

Met hierdie kode kan ons die bedieningsmotor van 0º tot 180º en dan terug na 0º.

Gou meer.

[beklemtoon] Hierdie artikel is oorspronklik deur ErSame vir Ikkaro geskryf [/ uitgelig]

Skryf 'n opmerking