servomotoren


Servomotoren en Arduino (UNO).


servo aansturing basiscode:

#include <Servo.h> // bibliotheek Servo downloaden
Servo MyServo; //object aanmaken genaamd MyServo

void setup() 
{
  MyServo.attach (13); // object wordt gekoppeld aan poort 13
}


void loop() {
  MyServo.writeMicroseconds(800); // servo eerst naar het midden sturen 
  delay(1000);
  MyServo.writeMicroseconds(1600); // servo dan naar links sturen
  delay(1000);
MyServo.writeMicroseconds(2800); // servo vervolgens naar rechts sturen
delay(1000);
}





Voor deze versie kun kiezen voor het standaard Arduino voorbeeldprogramma Sweep". 










Arduino code:


De standaard code kun je ook - inclusief servo library -  via het Arduino voorbeeldprogramma Sweep laden.

#include <Servo.h> 
Servo myservo;  // maak een object aan genaamd mijn servo (myservo)
int pos = 0;    // uitgangspunt van de variabele positie
 
void setup() 
  myservo.attach(9);  // het object myservo wordt ge attached - gekoppeld - aan pin 9. Pin 9 is een PWM pin.
 
void loop() 
  for (pos = 0; pos <= 180; pos += 1) // in stappen van 1 naar 180 draait de servomotor een halve rotatie..... 
    myservo.write(pos);              // ... in positieve richting
    delay(15);                       // en wacht daarna 15 ms
  } 
  for(pos = 180; pos>=0; pos-=1)     // om terug te draaien van 180 graden naar 0 graden.
  {                                
    myservo.write(pos);              
    delay(15);                       
  } 




servocontrole via een potmeter

Opgelet:
De potmeter kan gemakkelijk vervangen worden voor een sensor.
Voor grotere vermogens voor servomotoren moet het Arduino motorshield L293 worden gebruikt. De Arduinopoortjes kunnen per uitgang maar ca 40mA stroom leveren over 5V, dat is slechts 0,2 W.




Arduino code:

#include <Servo.h>
Servo myservo;  //object
int potpin = 0;  // analoge pin 0 ingang potentiometer of sensor
int val;    // variabele die waarde van ingang A0 meet. 

void setup()
{
  myservo.attach(9);  // koppeling aan pin 9 PWM
}

void loop() 
  val = analogRead(potpin);            // val variabele voor opslag waarde van potpin (0 - 1023) 
  val = map(val, 0,1023, 0,180); // (10 bits waarde wordt geconverteerd naar 8 bits waarde tussen tussen 0 en 180) 
  myservo.write(val);                  // servo neemt positie in die correspondeert met de val waarde
  delay(15);                           // 15 ms vertraging



Servomotor aansturing dmv NE 555 




dmv de knoppen kun je de servo van draairichting laten veranderen. 
De knoppen kun je met wat knutselwerk vervangen met weerstandsgevoelige sensoren.