Jak již bylo řečeno, Arduino Due je deska založená na řadiči ARM určená pro elektronické inženýry a fandy. Tuto desku DUE lze použít k výrobě CNC strojů, 3D tiskáren, robotických ramen atd. Všechny tyto projekty mají společnou vlastnost, kterou je Position Control. Kterýkoli z těchto projektů vyžaduje přesnost ve vztahu k jejich poloze. Přesných pozic u těchto strojů lze dosáhnout servomotory. V této relaci budeme řídit polohu servomotoru s Arduino Due. Interfacing servomotorů jsme již pokryli pomocí Arduino Uno a Servo Motor Interfacing pomocí mikrokontroléru 8051.
Servomotory:
Servomotory jsou známé svým přesným pohybem nebo polohou hřídele. Nejsou navrženy pro vysokorychlostní aplikace. Jsou navrženy pro nízké otáčky, střední točivý moment a přesnou polohu. Tyto motory se používají v robotických ramenech, řízeních letu a řídicích systémech. Servomotory se také používají v některých tiskárnách a faxech.
Servomotory jsou k dispozici v různých tvarech a velikostech. V tomto tutoriálu budeme používat servomotor SG90. SG90 je 180 stupňový servomotor. S tímto servem tedy můžeme polohovat osu od 0 do 180 stupňů.
Servomotor má hlavně tři vodiče, jeden je pro kladné napětí, druhý pro uzemnění a poslední pro nastavení polohy. Červený vodič je připojen k napájení, hnědý vodič k zemi a ŽLUTÝ vodič (nebo BÍLÝ) k signálu.
Servomotor je kombinací stejnosměrného motoru, systému řízení polohy a převodů. V servu máme řídicí systém, který bere signál PWM ze signálního kolíku. Dekóduje signál a získá z něj poměr výkonu. Poté porovná poměr s předdefinovanými hodnotami pozic. Pokud je rozdíl v hodnotách, upraví to odpovídajícím způsobem polohu serva. Poloha osy servomotoru je tedy založena na poměru zatížení signálu PWM ke kolíku SIGNAL.
Frekvence signálu PWM (Pulse Width Modulated) se může lišit podle typu servomotoru. Důležitá je zde ZÁVAŽNOST PWM signálu. Zaškrtněte toto pro PWM s Arduino Due. V tomto případě se ale s výběrem Duty Ratio nemusíme ani starat. V Arduinu máme speciální funkci; při jeho volání můžeme upravit polohu serva pouhým uvedením úhlu. O tom si povíme v pracovní sekci níže.
Před připojením servomotoru k Arduino Due můžete své servo otestovat pomocí tohoto testovacího obvodu servomotoru. Zkontrolujte také tyto projekty na Control Servo pomocí Flex Sensor nebo Force Sensor.
Součásti:
Hardware: Arduino Due, napájecí zdroj (5v), servomotor.
Software: Arduino nightly, download it from link below (https://www.arduino.cc/en/Main/Software)
Podrobnosti o tom, jak stáhnout a nainstalovat tento software, najdete v prvním kurzu Začínáme s Arduino Due.
Schéma zapojení a pracovní vysvětlení:
Jak již bylo řečeno v ARDUINO, máme předdefinované knihovny, které odpovídajícím způsobem nastaví frekvence a pracovní poměry, jakmile je soubor záhlaví vyvolán nebo zahrnut. V ARDUINO musíme jednoduše uvést polohu serva, která je potřebná, a DUE generuje vhodný signál PWM pro servo. Věci, které musíme udělat pro získání přesné polohy serva, jsou,
#zahrnout
Servo myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (needed_position_ angle);
Hlavičkový soubor „#include
Zadruhé je třeba zvolit název serva pomocí „Servo myservo“ , zde je zvoleno jméno myservo , takže při psaní pro pozici budeme tento název používat, tato funkce se hodí, když máme k dispozici mnoho serv, tímto můžeme ovládat až 12 serv.
Vzhledem k tomu, že Arduino Due má 12 PWM kanálů, musíme DUE říct, kde je připojen signální kolík serva nebo kde potřebuje generovat PWM signál. K tomu máme „myservo.attach (2);“ , zde říkáme DUE, že jsme připojili signální kolík serva na PIN2.
Zbývá jen nastavit polohu, nastavíme polohu serva pomocí „ myservo.write (45);“ , tímto povelem se servo ruka přesune o 45 stupňů. Pokud změníme '45' na '175', osa serva se nakloní na 175 stupňů a zůstane tam. Poté, kdykoli potřebujeme změnit polohu serva, stačí zavolat příkaz „ myservo.write (needed_position_angle);“ .
V programu budeme zvyšovat a snižovat úhly pomocí smyček. Takže servo se pohybuje od 0 do 180, poté od 180 do 0 atd. Ovládání servomotoru od Arduino Due je nejlépe vysvětleno krok za krokem v C kódu níže.