Arduino lessen/les 7

Uit Lab
< Arduino lessen
Versie door Eelco (overleg | bijdragen) op 26 aug 2015 om 09:20 (Nieuwe pagina aangemaakt met '== Servo-motoren == Een servo is een motor die gebruikt wordt voor besturing - in tegenstelling tot andere motoren, die je meestal gebruikt voor aandrijving. Enkel...')
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

Servo-motoren

Een servo is een motor die gebruikt wordt voor besturing - in tegenstelling tot andere motoren, die je meestal gebruikt voor aandrijving. Enkele voorbeelden: besturing van een robot, speelgoedauto, modelvliegtuig, enz.

In deze opstelling voeren we de gewenste stand van de servo in met een potmeter.

Voor het aansturen van de servo maken we gebruik van de Arduino-library hiervoor. Het uiteindelijke programma is daardoor erg eenvoudig.

Ook het opbouwen van de hardware is eenvoudig:

  • de aansluitdraden van de servo zijn voorzien van een connector; daarop passen breadboard-draadjes voor aansluiting op het breadboard of op de Arduino.
  • de servo heeft 3 aansluitingen: (i) GND (bruin of zwart), (ii) voeding - bijv. 5V (rood); (iii) data (oranje, geel, of wit).

* sluit GND en 5V aan op de voedingslijnen op het breadboard. * sluit de data-verbinding aan op D9 van de Arduino

Als sketch gebruik je: Bestand->Voorbeelden->Servo->Knob

/* 
 Controlling a servo position using a potentiometer (variable resistor) 
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott> 

 modified on 8 Nov 2013 by Scott Fitzgerald  http://www.arduino.cc/en/Tutorial/Knob
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() 
{ 
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023) 
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180) 
  myservo.write(val);                  // sets the servo position according to the scaled value 
  delay(15);                           // waits for the servo to get there 
}


Zie ook:


Als de servo zich "misdraagt" kan dat liggen aan de grote stroom die de servo gebruikt als deze begint te bewegen. Hierdoor kan de spanning inzakken, waardoor de elektronica niet meer goed werkt. Dit kun je oplossen door een grote condensator (470 uF of meer) over de voedingslijnen op het breadboard te plaatsen, dicht bij de aansluiting van de servo.

> Meestal gebruik je hiervoor een elektrolytische condensator. Deze moet je wel op de juiste manier aansluiten (anders loop je het risico dat deze ontploft...): de plus en/of min-aansluiting zijn duidelijk aangegeven.