Arduino návody: Ovládání serv s Arduino

Vlastimil Vágner

Potřeboval jsem jednoduchý přípravek na testování programů pro ovládání modelářských serv, s Arduino volba padla na servo shield zakoupený e-shopu Laskakit který je již takto vyrobený pro Arduino Nano. Zadávání parametrů pro natáčení polohy serv je možné ze sériového terminálu na PC, nebo s použitím bluetooth modulu pomocí chytrého telefonu nebo tabletu s terminálem pro Android.

Arduino 16-kanálový PWM-Servo Shield PCA9685

Stručný popis servo shieldu

Použitý shield umožňuje připojit více modelářských servArduino Nano nebo Arduino Uno pokud se shield osadí konektory s piny pro nasunutí do konektorů na Arduino Uno. Shield je osazen napájecím konektorem pro připojení napájení v rozsahu 7 – 12VDC, toto napětí je na desce Arduino Nano stabilizováno na hodnotu 5V a z tohoto napětí na servo shieldu poté stabilizováno na hodnotu napětí 3.3V. V případě použití Arduino Uno se připojuje napájecí napětí do napájecího konektoru 7 – 12V osazeném na desce Arduino Uno, které stabilizuje toto napětí na hodnotu 5V a tímto napětím je pak napájen servo shield a připojená serva. Napětí 3.3V je opět stabilizováno na servo shieldu.

Počet připojených serv je ovlivněn proudem, který je schopen v případě použití dodat deska Arduino Nano nebo deska Arduino Uno v obou případech je krátkodobý maximální proud stabilizátorů 1A. V mém případě na testování programů používám serva KAVAN G05 což jsou 5g serva s malou proudovou špičkou při spuštění napájení motorků a pohybem serva v rozsahu 0° – 180° což tento stabilizátor na desce Arduino zvládne. Při dlouhodobém používání řídících desek Arduino Nano, Arduino Uno na ovládání serv je vhodné použít jiný servo shield schopný dodat trvale požadovaný proud pro počet serv a volit takový, který má oddělené napájení, kdy řídící deska s Arduino pouze vysílá pulsy pro ovládání poloh serv. Nebo si vyrobit vlastní servo shield dle svých požadavků a pak pouze propojit mínus póly obou zdrojů a vstupní řídící signály na vstupy signálů serv. Vždy je nutné, aby servo shield měl provedeno dokonalé odrušení, které by jinak mohlo způsobovat nekontrolované pohyby serv. Arduino Nano i Arduino Uno s tím to programem umožňuje ovládat celkem 11 serv.

Popis zapojení

Vzhledem k tomu že je použito hotových modulů jsou na obrázku č.02 přímo označeny piny s připojenými servy k servo shieldu, zde jde o dvě připojená serva k datovým PINŮM D2 a D3 a pro komunikaci se sériovým terminálem nebo bluetooth modulem pro komunikaci s tabletem jsou použity piny D10,  D11 + GND. Pin D10 na desce Arduino je signál RXD pin D11 na desce Arduino je signál TXD a pin GND je spojený s GND PC nebo bluetooth modulu. Pro komunikaci s bluetooth modulem je nutné použít převodník napěťových úrovní aby nedošlo k jeho poškození.

Schéma zapojení a propojení desky Arduino Nano s bluetooth modulem, servy nebo komunikačním převodníkem pro komunikaci s PC pomocí převodníku USB/COM s CH340 – TTL signály je na obrázku č.01 a Obr.č.03.

Popis programů

Vlastní program pro ovládání serv s Arduino Nano nebo Arduino UNO počítačem PC nebo pomocí tabletu s BLUETOOTH  má název OVLÁDÁNÍ_SERV.INO je uložen v adresáři ARDUINO. Program využívá dvě knihovny:

  1. „<SoftwareSerial.h>“ – tato knihovna je součástí programovacího prostředí Arduino IDE,
  2. „<servo.h>“ – se dá stáhnout z internetu například ze stránek arduino.cc.

Program je velice jednoduchý v případě použití více serv. Ty si nadefinujeme hned na začátku programu v řádku Servo: Servo1, Servo2, Servo3 atd., k nim si na dalších řádcích nadefinujeme proměnné: poloha1, poloha2, až poloha3 atd. Tyto přidaná serva pak v setupu doplníme pod již zadané názvy: SERVO1(ATTACH2), SERVO2(ATTACH3), přidané SERVO3(ATTACH4) atd., kde příkaz attach2 znamená že servo1 je připojeno k datovému pinu D2, servo2 k datovému pinu D3, servo3 k datovému pinu D4.

V hlavní smyčce pak doplníme názvy servo3 až ….. servox, a doplníme „poloha3….až polohax. Program je okomentován a přehledný, takže přidání dalších serv do programu je jednoduché a nečiní žádné problémy. V setupu nezapomeneme přidat výchozí polohy pro přidaná serva aby se při spuštění programu nastavily do výchozí polohy. Pro ovládání serv při testování programů pro Arduino při ovládání s PC používám program ARDUINO.EXE jde o sériový terminál pro PC kdy jsou zadány hodnoty jako číslo serva a hodnota polohy do které se má servo natočit.

Hodnoty se zadávají současně pro počet připojených serv příklad pokud se má otočit pouze servo číslo.2 a servo č.1 má zůstat ve stejné poloze. Servo č.1 má nastavenou polohu 90° a servo č.2 má nastavenou hodnotu 50° a tuto chceme změnit na hodnotu 170°, tudíž zadáme 1, 90, 2, 170° a odešleme sériovým terminálem do Arduina a serva provedou požadované nastavení. Program pro PC je uložen v adresáři POČÍTAČ v tomto adresáři je uložena i knihovna DLL která je nutná pro spuštění uvedeného programu. Je zde i popis pro ovládání programu ARDUINO.EXE. Při testování ovládání serv pomocí bluetooth používám sériový terminál pro Android, který se dá stáhnout z internetu. V tomto případě se bluetooth připojuje pomocí převodníku na stejné datové piny na Arduino Nano, tj. na D10 a D11 podle popisu výše.

Zadání hodnot pro natočení serva č.1 a serva č.2

Přijaté hodnoty z Arduino Nano

Osazený servo shield s připojeným převodníkem USB/COM CH340 – TTL a servy

Používaná serva na testování programů

Připojení bluetooth modulu JDY-33 k servo shieldu společně se servy

Zadaná data v terminálu pro Android a načtená odeslaná data z bluetooth

  

Sdílet článek

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Mohlo by se také líbit