Servomotorbesturing met PWM en Arduino

We hebben al op de blog gestaan Arduino (https://www.ikkaro.com/Tutoriales-basicos-arduino) en verschijnen in feite in verschillende projecten, waaronder deze (https://www.ikkaro.com/node/529)

Laten we nu een beetje verder gaan en laten we signalen moduleren door pulsbreedte (PWM), dit kan bijvoorbeeld worden gebruikt om servomotoren te bedienen zoals degene die hier worden gepresenteerd (https://www.ikkaro.com/node/741) of rgb leds. Voor degenen die niet weten wat PWM is, het is een modulatie die wordt gedaan op een signaal en die dient om "informatie te verzenden via een communicatiekanaal of om de hoeveelheid energie te regelen die naar een belasting wordt gestuurd" (Wikipedia)

De servomotoren worden aangestuurd met 3 draden: een voor de positieve spanning, een voor de aarde en een andere voor het stuursignaal, dat in PWM wordt gemoduleerd.

Arduino heeft daarentegen 6 digitale uitgangen die kunnen fungeren als PWM-uitgangen (dit zijn de pinnen: 11, 10, 9, 6, 5, 4) en ook een bibliotheek die is voorbereid voor het verwerken van servo's. Dus we gaan een van die uitgangen gebruiken om onze eerste tests uit te voeren met het besturen van een servomotor.

De voorbeeldcode van de Arduino-servobibliotheek kan ons van dienst zijn, we verbinden de spanning met 5v, aarde met gnd en het stuursignaal van de servomotor (die is gemoduleerd in PWM) met een van de arduino-pinnen met PWM, bijvoorbeeld in deze code naar digitale pin 9.

// Vegen
// door BARRAGAN

#inclusief
 
Servo myservo; // maak een servo-object om een ​​servo te besturen
                // er kunnen maximaal acht servo-objecten worden gemaakt
 
int pos = 0; // variabele om de servopositie op te slaan
 
leegte setup ()
{
  myservo.attach (9); // bevestigt de servo op pin 9 aan het servo-object
}
 
 
leegte lus ()
{
  for (pos = 0; pos <180; pos + = 1) // gaat van 0 graden naar 180 graden
  {// in stappen van 1 graad
    myservo.write (pos); // vertel servo om naar positie te gaan in variabele 'pos'
    vertraging (15); // wacht 15 ms tot de servo de positie bereikt
  }
  for (pos = 180; pos> = 1; pos- = 1) // gaat van 180 graden naar 0 graden
  {                               
    myservo.write (pos); // vertel servo om naar positie te gaan in variabele 'pos'
    vertraging (15); // wacht 15 ms tot de servo de positie bereikt
  }
}

Met deze code kunnen we het servomotor van 0º tot 180º en dan terug naar 0º.

Binnenkort meer.

[gemarkeerd] Dit artikel is oorspronkelijk geschreven door ErSame voor Ikkaro [/ gemarkeerd]

Laat een reactie achter