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.

Ovládanie motora a servopohonu pomocou Arduino

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.

DC motor

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.

Kotva motorového kolektora

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

Elektrický jednosmerný motor

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.

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.

Schéma pripojenia jednosmerného motora Arduino

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.

Výkonná a definujúca časť okruhu

Takto vyzerá moja zostava laboratórnych stojanov:

Jednosmerný motor a arduino

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.

Kontrolná funkcia PWM

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

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.

Arduino a servo

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.

Princíp činnosti servopohonu

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.

Sevroprivod pre arduino

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ť.

Ovládanie servo a Arduino

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á.

Knižnica Servo2

Tu je príklad kódu, ktorý som použil pri experimentoch so servopohonom, je v štandardnej sade príkladov:

#include // pripojte knižnicu

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

 

Spojíme servo s Arduino

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:

  • Ako je usporiadané a ako funguje servo
  • Arduino a krokový motor: základy, schémy, zapojenie a ovládanie
  • Obsahuje pripojenie zariadení k Arduino
  • Ako rozlíšiť indukčný motor od jednosmerného motora
  • Ako pripojiť inkrementálny kodér k Arduino

  •