Szervó vezérlése Arduinóval

Egy potencia méter segítségével az Arduino analóg bemenetén keresztül fogjuk
a szervónkat mozgatni.
Ehhez a következő alkatrészek szükségesek:

  • Arduino uno

  • Usb kábel

  • Próbapanel

  • Összekötő vezetékek

  • Szervó motor

  • 1db 10kohm-os poti

  • 1db 100uF kondenzátor





A szervó általában három vezetékkel kapcsolódik az áramkörhöz, a piros a +5V, a fekete vagy
barna a GND, és a harmadik szál ami narancs vagy sárga a vezérlő szál. Ezt kötjük az
Arduinonk 9-es pinjéhez.
Ha USB portról üzemeltetjük az alaplapunkat akkor érdemes a szervó +5V és Gnd bemenete
közé bekötni egy 100uF-os vagy még nagyobb kondenzátort. A szervó indításánál illetve
leállításánál fellépő áramfelvétel kiegyenlítésére, különben megeshet hogy Arduinonk furcsán
fog működni.

Építsük meg az áramkört:

 

A kondenzátor a villamos energiát raktározza el, indításkor ez az elraktározott energia egészíti ki
a táp áramot így stabillá téve az áramkör működését.

A kód:

/*
Adafruit Arduino - Lesson 14. Sweep
*/
#include <Servo.h> //a servo könyvtár betöltése
int servoPin = 9;//változó rendelése a 9-es kimenethez

Servo servo; //a servo könyvtárba létrehoz egy servo nevű változót
int angle = 0; // szervó pozíció változója és értékadása

void setup()
{
servo.attach(servoPin); //servó vezérlőszál összerendelése a digitális kimenetünkkel
}


void loop()
{
// 0-tól 180 fokig mozdítja el a szervót
for(angle = 0; angle < 180; angle++) //amig nem éri el a 180-at addig fut a ciklus
{
servo.write(angle); //kirakja az értéket a szervóra
delay(15);
}
// vissza számlálás 180-tól 0-ig
for(angle = 180; angle > 0; angle--) //amig nem éri el a 0-át addig fut a ciklus
{
servo.write(angle); //kiíratja a szervóra
delay(15);
}
}

A skich egy általános szervó mozgást mutat be, un.: söprögetést, a szervó jobbra majd balra

fordul 180 fokos szögben.


Ha több szervót akarunk üzemeltetni akkor több servo változót kell létrehoznunk:

Servo servo1;
Servo servo2;

Az arduinohoz így 8db szervót tudunk hozzárendelni.

Lássunk egy másik kapcsolást ahol már mi szabályozzuk a szervó mozgását:




Kód:

/*
Adafruit Arduino - Lesson 14. Knob
*/

#include <Servo.h> // servo könyvtár betöltése

int potPin = 0; //poti 0-s lábon, értéke potPin változóba
int servoPin = 9;// servo 9-es lábon, értéke servoPin változóba
Servo servo; //servo változó létrehozása

void setup()
{
servo.attach(servoPin);
}

void loop()
{
int reading = analogRead(potPin); // poti értéke 0-1023-ig
int angle = reading / 6; // poti értéke átalakítva kimeneti értéké 0-180-ig (osztás 6-al)
servo.write(angle); // kiíratás a szervóra
}

Itt a poti mozgását követi a szervónk.


Szervó működése
Szervók vezérlő vezetéken át kapnak egy négyszögjelet, a négyszögjel hossza
határozza meg a szervó kar pozícióját. Általában 1.5ms jel állítja középállásba a szervót.
1ms-os jel minimum pozíció 0fok, 2ms-os jel max pozíció 180fokos elfordulás.
A négyszög impulzusoknak 20ms-onként kell ismétlődni ahhoz hogy a szervó megtarthassa pozícióját.

Remélem egy próbát megérnek a cikkben leírtak, jó kísérletezést.