Servo's

Servo's zijn kleine elektromotoren die in twee richtingen kunnen draaien, maar doorgaans niet meer dan in totaal 180 of 360 graden. De motoren worden door middel van een spanningspuls van een bepaalde lengte in de gewenste hoek gezet. Ik heb een servo getest die hoogstens 90° naar links of naar rechts kan draaien. Het programmeren van een servo is lastig, daarom is er een speciale bibliotheek beschikbaar die dit vereenvoudigt. Deze bibliotheek (Servo.h) is waarschijnlijk al aanwezig als je een niet al te oude versie van de Arduino IDE hebt.
Je sluit de servo als volgt aan:
zwart gaat naar GND en rood naar 5V
de derde draad mag je op een willekeurige pin aansluiten, bijvoorbeeld pin 9
Om de servo soepel te laten lopen moet hij in kleine stapjes naar de gewenste positie worden gestuurd. Voor een aantal toepassingen is het hoekbereik te klein. Er bestaan ook servo's die 360° kunnen ronddraaien. De prijs van dergelijke servo's is slechts enkele euro's. De bibliotheek heeft een functie waarin het bereik kan worden opgegeven. Hieronder zie je de programmacode van het sweep programma van Barragàn. Dit programma is uitstekend geschikt om je servo's te testen.
#include <Servo.h>

Servo myservo;  // maak servo object 
// maximaal 12 servo's op de meeste Arduino's

int pos = 0;    // hierin blijft de (laatste) positie bewaard

void setup() {
  myservo.attach(9);  // de pin waarop je de servo hebt aangesloten
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // van 0 graden tot 180 graden
    myservo.write(pos);                 // stuur de servo naar positie 'pos'
    delay(15);                          // 15 ms zijn nodig om de positie te bereiken
  }
  for (pos = 180; pos >= 0; pos -= 1) { // van 180 graden tot 0 graden
    myservo.write(pos);
    delay(15);
  }
}
Als je in plaats van write(position) de functie writeMicroseconds(position) gebruikt moet je waardes invoeren tussen 1500 (linksom) en 2300 (geheel rechtsom) en moet je de stap vergroten tot i += 10. Als je write(position) gebruikt kun je de hoek gewoon in graden opgeven.

Gelijkstroommotoren

Voor gelijkstroommotoren geldt dat ze harder draaien naarmate de gelijkspanning hoger wordt. Je kunt met de Arduino de snelheid regelen door ze op een pin aan te sluiten die PWM ondersteunt. De meeste gelijkstroommotoren gebruiken echter zoveel stroom dat ze niet rechtstreeks op de Arduino mogen, er moet dan een (eenvoudige) versterker of motordriver tussen. De motor draait, afhankelijk van hoe je hem hebt aangesloten steeds dezelfde kant op. Een motordriver heeft als bijkomend voordeel dat je de richting van motor via het programma kunt omkeren. Als je de positie van de motoras wilt weten dan heb je een aparte encoder nodig, maar dan kun je beter een stappenmotor gebruiken. Gelijkstroommotoren zijn vooral geschikt voor toepassingen waarbij de positie en draairichting niet belangrijk zijn, zoals bij ventilatoren. De goedkoopste gelijkstroommotoren zijn meestal goed genoeg. Ook de motoren voor zonneceltoepassingen voldoen erg goed.

Stappenmotoren

Een stappenmotor maakt - indien hij de juiste spanningen krijgt - zeer nauwkeurige stapjes. Omdat deze motoren de laatste tijd supergoedkoop geworden zijn is er geen noodzaak meer om met gelijkstroommotoren met ingewikkelde encoders te werken. Een bekend setje is de BYJ48 motor met ULN2003a motor driver.
Stappenmotor BYJ48 en motor driver ULN2003
Dit setje is zelfs zo nauwkeurig dat je een robot kunt bouwen die lange tijd rakelings langs de rand van een tafel blijft lopen zonder er af te vallen. Dat uitsluitend door de gemaakte stappen van de motoren te tellen. Omdat de BYJ48 stappenmotor intern een versnellingsbak heeft (of liever een vertragingsbak) kan hij een behoorlijk krachtmoment leveren, maar loopt hij vrij langzaam (ca. één omwenteling in 4 seconden).

Motor drivers

Hoewel je stappenmotoren en gelijkstroommotoren rechtstreeks kunt aansluiten op de Arduino is het handiger om dit via een driver board of controller te doen. Hiermee voorkom je dat je teveel stroom trekt waardoor de Arduino kan beschadigen. Bovendien krijg je extra mogelijkheden, zoals het gemakkelijk omkeren van de draairichting. Ik testte drie soorten: