Servo met bekrachtiging (Servo-1)

Leerdoelen

Bekrachtiging van een servo met een externe voeding - en besturing vanuit de Arduino.

Functies en libraries

Servo-library: Servo object, attach, write

Functie: map

Elektrische componenten

Servo

potmeter 10kOhm

Extra voeding 5-6V (batterij of netvoeding)

Voorkennis

Servo-0

Inleiding

Een krachtige servo vereist een krachtige voeding: de voeding van de Arduino is daarvoor te beperkt.

Je kunt de servo bekrachtigen met een externe voeding. De Arduino zorgt dan alleen voor de besturing.

Opbouwen van de schakeling

De schakeling is een kleine aanpassing van de schakeling voor Servo-0

We gebruiken op het breadboard de tweede voedingsrail (in de tekening de bovenste) voor de extra "power" voeding (batterij), voor de bekrachtiging van de servo.

De onderste voedingsrail gebruiken we voor de besturing; hier is de potmeter op aangesloten.

De 0V (GND) van beide voedingsrails moeten hierbij met elkaar verbonden zijn.

Servo-slave-2_bb.png

Schema

Er zijn in dit schema twee voedingsbronnen: de Arduino - voor de voeding van de microcontroller en de potmeter; en een externe voeding, voor de servo.

De servo wordt bestuurd door de Arduino, en bekrachtigd door de externe voeding.

Let op: de 0V (GND) van de Arduino en van de externe voeding (batterij) moeten met elkaar verbonden zijn! 

Servo-slave-2_schema.png

#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);        // read the pot-value (between 0 and 1023)
 val = map(val, 0, 1023, 0, 180); // scale it to a value between 0 and 180
 myservo.write(val);              // set the servo position to the scaled value
 delay(15);                       // wait for the servo to get there
}

Uitleg programma

Het programma is hetzelfde als voor Servo-0: aan de software van de besturing verandert niets.

De code voor dit programma vind je in de Arduino IDE onder Voorbeelden->Servo->Knob

In het programma gebruiken we de Servo-library.

Voor het aansturen van een servo moeten we een Servo-object declareren; deze noemen we myservo.

Bij de initialisatie (setup) koppelen we dit object aan pin 9.

In de loop lezen we de waarde van de potmeter (verbonden aan A0): dit geeft een waarde tussen 0 en 1023. Deze rekenen we om tot een waarde tussen 0 en 180, via de functie “map”. Die waarde gebruiken we voor het instellen van de servo. Na het instellen van de servo geven we deze even de tijd om naar de nieuwe positie te bewegen (“sleep”).

Zie:

https://www.arduino.cc/en/Reference/Servo

https://www.arduino.cc/en/Reference/Map

Vragen en opdrachten

Antwoorden:

Servo-1     --