kategória: Obvody mikrokontrolérov
Počet zobrazení: 19709
Komentáre k článku: 0
Ovládanie motora a servopohonu pomocou Arduino
Pri jednoduchých konštrukciách automatizačných systémov je často potrebné nielen odčítat 'hodnoty snímačov, ale tiež zapisovat' pohybové mechanizmy. Na tento účel sa používajú rôzne elektrické motory. Najjednoduchšou a najobľúbenejšou možnosťou je jednosmerný motor. Svojou prístupnosťou, ľahkosťou nastavenia rýchlosti získal lásku milencov. Ak je úlohou presunúť akýkoľvek mechanizmus do určitého uhla alebo vzdialenosti, je vhodné použiť servopohon alebo krokový motor.
V tomto článku sa zameriame na servá a malé jednosmerné motory, pripájame ich k doske Arduino a nastavujeme DCT.

DC motor
Najbežnejší elektrický motor, ktorý sa používa v prenosných zariadeniach, hračkách, rádiom riadených modeloch a iných zariadeniach. Permanentné magnety sú upevnené na malom elektrickom motore na statore a na vinutí rotora.

Prúd sa dodáva do vinutia cez zostavu kefy. Štetce sú vyrobené z grafitu, niekedy sa vyskytujú medené klzné kontakty. Kefy kĺzajú po lamelách umiestnených na jednom konci rotora. Ak sa nezaoberáte podrobnosťami, potom jej rýchlosť rotácie závisí od prúdu vinutia kotvy.

U veľkých jednosmerných motorov je na statore určité budiace vinutie spojené s vinutím rotora (prostredníctvom zostavy kefy) (sekvenčné, paralelné alebo zmiešané budenie). Takto sa dosiahne požadovaný krútiaci moment a počet otáčok.
Regulácia rýchlosti

Po pripojení k sieti sa jednosmerný motor začne otáčať menovitými otáčkami. Ak chcete znížiť rýchlosť, musíte obmedziť prúd. Na tento účel sa zavádzajú odpory štrku, čo však znižuje účinnosť zariadenia ako celku a objavuje sa nadmerný zdroj tepla. Pre efektívnejšiu reguláciu napätia a prúdu sa používa iná metóda - Regulácia PWM.

Spôsob riadenia signálu (napätia) modulovaného na šírku impulzu je generovať požadovanú hodnotu napätia zmenou šírky impulzu pri konštantnej dobe trvania periódy (frekvencie).
To znamená, že obdobie je rozdelené na dve časti:
1. Impulzný čas.
2. Pozastavte čas.
Pomer času impulzu k celkovému času periódy sa nazýva pracovný cyklus:
Ks = ti / t
recipročný sa nazýva „pracovný cyklus“:
D = 1 / KZ = tper / ta an
Na opis prevádzkového režimu regulátora PWM sa používajú obidva pojmy: pracovný cyklus aj pracovný cyklus.
Prúdová spotreba motora závisí od jeho výkonu. Počet otáčok, ako už bolo povedané, závisí od aktuálneho stavu. Prúd môže byť nastavený zmenou množstva napätia aplikovaného na vinutie. V skutočnosti, keď je napájané napätím, ktoré prekračuje nominálnu hodnotu podľa osvedčenia o motore, jeho rýchlosť tiež prekročí nominálnu rýchlosť. Takéto prevádzkové režimy sú však pre motor nebezpečné, pretože vo vinutí prúdi väčší prúd, ktorý spôsobuje ich zvýšené zahrievanie.
Ak je poškodenie motora spôsobené krátkodobými impulzmi alebo opakovane krátkodobými prevádzkovými režimami minimálne, potom pri dlhodobej prevádzke pri vysokom napätí a otáčkach vyhorí alebo sa jeho ložiská zahrievajú a klínujú a potom vinutia vyhoria, ak nie je odpojené napájanie.
Ak je vstupné napätie príliš nízke, malý motor jednoducho nemusí mať dostatok energie na pohyb. Preto je potrebné experimentálne zistiť normálne otáčky a napätie pre konkrétny motor, ktoré nepresahujú nominálnu hodnotu.
Pripojili sme sa k arduino
Mal som malý motor, zdá sa, z kazetového prehrávača, čo znamená, že jeho menovité napätie bude nižšie ako 5 voltov, potom bude stačiť výstupný výkon arduina. Budem napájať z 5V kolíka, t. z výstupu lineárneho stabilizátora umiestneného na doske. Podľa schémy, ktorú vidíte nižšie.
Neviem prúd tohto motora, tak som ho pripojil k napájaniu a nainštaloval som tranzistor s efektom poľa medzi motorom a napájacím kolíkom, na ktorého bránu bol vysielaný signál z výstupu PWM, je možné použiť ktorýkoľvek z dostupných.

Na nastavenie rýchlosti som do obvodu pridal variabilný rezistor a pripojil ho k analógovému vstupu A0. Na rýchle pripojenie som použil nepájkovanú dosku, ktorá sa nazýva aj doštička na varenie.
Nainštaloval som rezistor obmedzujúci prúd do vodiča tranzistora (aby sa znížil nabíjací prúd hradla, tým sa ušetrí port zo spaľovania a napájania mikrokontroléra pred poklesom a jeho zamrznutím) o 240 ohmov a ťahom na zem s odporom 12 kOhm sa to musí urobiť, aby sa ustálil. uzáverová nádrž pracovala a vybíjala rýchlejšie.
Podrobnosti o tranzistoroch s poľným efektom sú opísané v článku na našej webovej stránke, Použil som výkonný, bežný a nie príliš drahý mosfet s n-kanálom a vstavanou reverznou diódou IRF840.

Takto vyzerá moja zostava laboratórnych stojanov:

Riadiaca funkcia PWM sa vyvolá pri zápise na príslušné výstupné (3, 5, 6, 9, 10, 11) hodnoty od 0 do 255 pomocou príkazu AnalogWrite (pin, hodnota). Logika jej práce je znázornená v grafoch nižšie.

Takýto signál sa privádza na hradlo tranzistora:

Programový kód hanby je stručný a jednoduchý, podrobne boli opísané všetky tieto funkcie v predchádzajúcich článkoch o arduino.
int sensorPin = A0; // vstup z potenciometra
int motorPin = 3; // Výstup PWM do brány kamery
neplatné nastavenie () {
pinMode (motorPin, OUTPUT);
}
void loop () {
analogWrite (motorPin, mapa (analogRead (senzorPin), 0, 1023, 0, 256));
}
Vo funkcii analogWrite priraďujem výstupu PWM hodnotu, pomocou príkazu map vám jeho použitie umožňuje odstrániť niekoľko riadkov kódu a jednu premennú.
Toto je pracovná schéma a je vynikajúca na pozorovanie procesov pri nastavovaní výkonu záťaže, jasu diód LED, rýchlosti motorov, stačí namiesto motora pripojiť požadované zaťaženie. Súčasne, namiesto 5V, môže byť na záťaž privedené akékoľvek napätie, napríklad 12V, nezabudnite pripojiť záporný napájací zdroj na kontakt, napríklad 12V, nezabudnite pripojiť záporný napájací zdroj na GND kolík na doske mikrokontroléra.
V arduino je frekvencia PWM, keď je volaná prostredníctvom funkcie AnaWrite, iba 400 Hz, pri minimálnych hodnotách napätia bolo z vinutí motora počuť bzučanie zodpovedajúcej frekvencie.

servo
Motor, ktorý môže byť vo vopred určenej polohe a keď je vystavený vonkajším faktorom, napríklad nútenému vychyľovaniu hriadeľa, udržuje svoju polohu nezmenenú - nazýva sa servopohon. Definícia znie všeobecne trochu inak:
Servo je motor s negatívnou spätnou väzbou.
Z servopohonu obvykle vychádzajú tri káble:
-
Plus výkon.
-
Menší výkon.
-
Riadiaci signál.
Servopohon sa skladá z:
-
Jednosmerný motor (alebo bezkartáčový motor);
-
Poplatky za správu;
-
Vysielač polohy (kódovač pre servá s uhlom natočenia 360 ° alebo potenciometer pre servá s uhlom natočenia 180 °);
-
Redukcia prevodového stupňa (znižuje otáčky motora a zvyšuje krútiaci moment na hnacom hriadeli).
Riadiaca jednotka porovnáva signál na zabudovanom snímači polohy a signál, ktorý prešiel cez riadiaci drôt, ak sa líšia, potom existuje rotácia v uhle, v ktorom je vyrovnaný rozdiel medzi signálom.

Hlavné charakteristiky serv:
-
Rýchlosť otáčania (čas, počas ktorého sa hriadeľ otáča o uhol 60 °);
-
Krútiaci moment (kg / cm, t.j. koľko kilogramov motor vydrží na páke 1 cm od hriadeľa);
-
Napájacie napätie;
-
Bežná spotreba;
-
Pri kontrolnej metóde (analógovej alebo digitálnej nie je žiadny významný rozdiel, ale digitálna je rýchlejšia a stabilnejšia).
Obvykle je signálová perióda 20 ms a doba trvania regulačného impulzu:
-
544 μs - zodpovedá 0 °;
-
2400 μs - zodpovedá uhlu 180 °.
V zriedkavých prípadoch sa dĺžka impulzu môže líšiť, napríklad 760 a 1520 μs, tieto informácie je možné objasniť v technickej dokumentácii pre pohon. Jedným z najpopulárnejších hobby seriálov je Tower Pro SG90 a podobné modely.Je to lacné - asi 4 doláre.

Držia 1,8 kg / cm na hriadeli a spolu s ním sú upevňovacie skrutky a páky s drážkami pre hriadeľ. V skutočnosti je toto dieťa dosť silné a je veľmi problematické ho zastaviť jedným prstom - pohon sám začína vypadávať z prstov - taká je jeho sila.
Ovládanie servo a Arduino
Ako už bolo uvedené, riadenie sa vykonáva zmenou trvania impulzu, ale nezamieňajte túto metódu s PWM (PWM), jej správny názov je PDM (Pulse Duration Modulation). Mierne odchýlky vo frekvencii signálu (20 ms - trvanie, frekvencia 50 Hz) nehrajú špeciálnu úlohu. Neodkláňajte sa však od frekvencie o viac ako 10 Hz, motor môže trhať alebo vyhorieť.

Pripojenie k arduino je pomerne jednoduché, môžete ho tiež napájať z 5V kolíka, ale nie je to žiaduce. Pravda je, že na začiatku je malý skok v prúde, môže to spôsobiť výpadok energie a Falošné výstupy mikrokontroléra, Aj keď je možná jedna malá jednotka (typ SG90), ale nie viac.
Ak chcete ovládať takéto servá pomocou arduina, máte zabudovanú knižnicu servo do IDE, ktorá obsahuje malú množinu príkazov:
-
attach () - pridanie premennej do špendlíka. Príklad: drive name.attach (9) - pripojte servo na pin 9. Ak váš pohon potrebuje neštandardné dĺžky riadiacich impulzov (544 a 2400 μs), potom ich môžete zadať oddelené čiarkou za číslom kolíka, napríklad: servo.attach (kolík, min. Uhol (μs), maximálny uhol v ISS));
-
write () - nastavuje uhol natočenia hriadeľa v stupňoch;
-
writeMicroseconds () - nastavuje uhol cez dĺžku impulzu v mikrosekundách;
-
read () - určuje aktuálnu polohu hriadeľa;
-
pripojený () - Skontroluje, či je kolík nastavený s pripojeným servomotorom;
-
detach () - zruší príkaz na pripojenie.
Táto knižnica vám umožňuje ovládať 12 serv od UNO, Nano a podobných dosiek (mega368 a 168), zatiaľ čo schopnosť používať PWM na pin 9 a 10 zmizne. Ak máte MEGA, môžete ovládať 48. servery, ale PWM na pinoch 11 a 12 zmizne, ak používate až 12 serv, potom funkcia PWM zostáva na všetkých kontaktoch plná.
Ak ste pripojili túto knižnicu, nebudete môcť pracovať s 433 MHz prijímačmi / vysielačmi. K dispozícii je knižnica Servo2, ktorá je inak rovnaká.

Tu je príklad kódu, ktorý som použil pri experimentoch so servopohonom, je v štandardnej sade príkladov:
#include
Servo myservo; // deklarovaný názov premennej pre servo myservo
int potpin = 0; // kolík na pripojenie nastavovacieho potenciometra
int val; // premenná na uloženie výsledkov čítania signálu z potenciometra
neplatné nastavenie () {
myservo.attach (9); // nastaví 9 pinov ako riadiaci výstup pre servo
}
void loop () {
val = analogRead (potpin); // výsledky odčítania potenciometra uloženého v trans. val, budú v rozsahu od 0 do 1023
val = mapa (val, 0, 1023, 0, 180); // preložiť merací rozsah z analógového vstupu 0-1023
// v rozsahu úloh pre servo 0-180 stupňov
myservo.write (val); // prejsť konverziu signál z pot-ra na ovládanie vstup serva
oneskorenie (15); // oneskorenie je potrebné pre stabilnú prevádzku systému

záver
Používanie najjednoduchších elektrických motorov spárovaných s arduino je pomerne jednoduchá úloha, zatiaľ čo zvládnutie tohto materiálu rozširuje vaše schopnosti v oblasti automatizácie a robotiky. Najjednoduchšie roboty alebo rádiom riadené modely automobilov pozostávajú z takýchto motorov a servá sa používajú na riadenie rotácie kolies.
V uvažovaných príkladoch bol potenciometer použitý na nastavenie uhla natočenia alebo rýchlosti otáčania, namiesto toho môže byť použitý akýkoľvek iný zdroj signálu, napríklad môže dôjsť k otáčaniu alebo zmene rýchlosti v dôsledku informácií získaných zo senzorov.
Príklad použitia serv v alternatívnej energii: sledovanie uhla dopadu slnečného žiarenia a úprava polohy solárnych panelov v elektrárňach.
Na implementáciu takéhoto algoritmu môžete použiť niekoľko fotorezistenty alebo iné optoelektronické zariadenia na meranie množstva dopadajúceho svetla av závislosti od ich hodnoty nastavujú uhol natočenia solárneho panela.
Pozri tiež na electro-sk.tomathouse.com
: