2. Servo Motor S Ř-duino

by prokyber in Circuits > Arduino

197 Views, 1 Favorites, 0 Comments

2. Servo Motor S Ř-duino

IMG_20240112_174921~2.jpg

Ahoj, v tomto začátečnickém tutoriálu si vytvoříme jednoduchý program, abychom se naučili ovládat servo motor. Cílem tohoto projektu je, aby nám motor pootočil nožičku vždy o 180° na jednu stranu a zpět.

Supplies

Servomotor

inbound4929168907606465027.jpg

Servomotor (zkráceně servo) je typ motoru, u kterého je možné nastavit přesný úhel natočení. Serva mohou být volná nebo vázaná rozsahem otáčení. V našich sadách se setkáte se servem, které je omezeno na rozsah 180°. Nejčastěji se taková serva používají třeba pro pohyb páky nebo směrovky. Ve vnitřní konstrukci se nachází mikrokontrolér, který od nás obdrží data pomocí modulace PWM a ta porovná s informacemi o pozici serva dodanými určenou součástkou (například potenciometrem). Následně po porovnání požadované a reálné pozice dodá motoru dostatek energie, aby se otočil tak, že se budou obě tyto čísla shodovat.

Zapojení

Snímek obrazovky 2024-01-09 213511.png

Serva pro svou funkčnost potřebují napětí 5V. Propojíme tedy červený kabel serva (napájení) s pinem 5V.

Tam, kde připojíme proud, musíme také většinou napojit uzemnění. Je tedy třeba propojit hnědý kabel serva (uzemnění) s pinem GND.

Na závěr si také musíme vyhradit některý z PINů pro ovládání serva. V našem návodu jsme použily PIN 3, avšak můžete použít kterýkoliv digitální PIN.

Kód

A nyní již pojďme psát kód.


#include <Arduino.h>

//Přidáme knihovnu pro ovládání motoru
#include <Servo.h>

//Definujeme si člena pro motor
Servo myservo; 

//Definujeme si proměnou která bude uchovávat aktuální pozici motoru
int poziceServa = 0;

void setup() {

//Připojí motor na námi určený GPIO
  myservo.attach(3);
}


void loop() {

//Otáčí motorem na jednu stranu
  for (poziceServa = 0; poziceServa <= 180; poziceServa += 1) {
    myservo.write(poziceServa);
    delay(15);                      
  }

//Otačí motorem zpět na stranu druhou
  for (poziceServa = 180; poziceServa >= 0; poziceServa -= 1) {
    myservo.write(poziceServa);             
    delay(15);     
  }
}



Nyní klikněte na "Upload" a máte hotovo :D