Kategorijas: Mikrokontrolleru shēmas
Skatījumu skaits: 19709. gads
Komentāri par rakstu: 0
Motora un servovadība ar Arduino
Automātisko sistēmu vienkāršā dizainā bieži ir ne tikai jānolasa sensoru rādījumi, bet arī jāieslēdz kustības mehānismi. Šim nolūkam tiek izmantoti dažādi elektromotori. Vienkāršākais un populārākais variants ir līdzstrāvas motors. Viņš ieguva cienītāju mīlestību ar savu pieejamību, ātruma pielāgošanas vieglumu. Ja uzdevums ir jebkuru mehānismu pārvietot noteiktā leņķī vai attālumā, ir ērti izmantot servopiedziņu vai pakāpju motoru.
Šajā rakstā mēs aplūkojam servos un mazos līdzstrāvas motorus, savienojot tos ar Arduino plati un pielāgojot DCT.
Līdzstrāvas motors
Visizplatītākais elektromotors, ko izmanto portatīvās ierīcēs, rotaļlietās, radiovadāmos modeļos un citās ierīcēs. Pastāvīgie magnēti ir piestiprināti uz mazā elektromotora uz statora, bet tinums - uz rotora.
Caur sukas komplektu tinumam tiek piegādāta strāva. Sukas ir izgatavotas no grafīta, dažreiz tiek atrasti vara bīdāmie kontakti. Sukas slīd pār lamelēm, kas atrodas rotora vienā galā. Ja jūs neiedziļināties detaļās, tad tā griešanās ātrums ir atkarīgs no armatūras tinuma strāvas.
Uz lieliem līdzstrāvas motoriem uz statora tiek savienots ierosināšanas tinums, kas noteiktā veidā (secīga, paralēla vai jaukta ierosināšana) ir savienots ar rotora tinumu (caur sukas komplektu). Tādējādi tiek sasniegts vēlamais griezes moments un apgriezienu skaits.
Ātruma kontrole
Pievienojot elektrotīklam, līdzstrāvas motors sāk griezties ar nominālo ātrumu. Lai samazinātu ātrumu, jums jāierobežo strāva. Lai to izdarītu, tiek ieviesta balasta pretestība, taču tas samazina instalācijas efektivitāti kopumā un parādās liekā siltuma avots. Lai efektīvāk regulētu spriegumu un strāvu, tiek izmantota cita metode - PWM vadība.
Impulsu platuma modulēta signāla (sprieguma) kontroles metode ir vēlamās sprieguma vērtības ģenerēšana, mainot impulsa platumu, ar nemainīgu perioda ilgumu (frekvenci).
Tas ir, periods ir sadalīts divās daļās:
1. Impulsa laiks.
2. Pārtraukt laiku.
Impulsa laika attiecību pret kopējo perioda laiku sauc par darba ciklu:
Ks = ti / tper
abpusēju sauc par "darba ciklu":
D = 1 / KZ = tper / t un
Lai aprakstītu PWM kontroliera darbības režīmu, tiek izmantoti abi jēdzieni: gan darba cikls, gan darba cikls.
Motora pašreizējais patēriņš ir atkarīgs no tā jaudas. Apgriezienu skaits, kā tika teikts, ir atkarīgs no strāvas. Strāvu var noregulēt, mainot tinumiem pielietotā sprieguma daudzumu. Faktiski, ja to darbina spriegums, kas pārsniedz nominālo vērtību saskaņā ar motora pasi, tā ātrums arī pārsniegs nominālo ātrumu. Tomēr šādi darba režīmi ir bīstami motoram, jo tinumos plūst lielāka strāva, kas izraisa to pastiprinātu sildīšanu.
Ja motora bojājums no īslaicīgiem impulsiem vai atkārtoti īslaicīgiem darbības režīmiem ir minimāls, tad ilgstošas darbības laikā ar augstu spriegumu un apgriezieniem tas izdegsies vai tā gultņi sakarst un iestrēgst, un tad tinumi izdegsies, ja strāvas padeve netiks atvienota.
Ja ieejas spriegums ir pārāk zems, mazajam motoram var vienkārši nepietikt enerģijas, lai kustētos. Tāpēc ir nepieciešams eksperimentāli noskaidrot normālu ātrumu un spriegumu konkrētam motoram, kas nepārsniedz nominālo.
Mēs pieslēdzamies arduino
Man bija mazs motors, šķiet, no kasešu atskaņotāja, kas nozīmē, ka tā nominālais spriegums būs mazāks par 5 voltiem, tad arduino izejas jauda būs pietiekama. Es to darbināšu no 5 V tapas, t.i. no lineārā stabilizatora izejas, kas atrodas uz tāfeles. Saskaņā ar zemāk redzamo shēmu.
Es nezinu šī motora strāvu, tāpēc to pieslēdzu pie strāvas, un starp motoru un strāvas kontaktu uzstādīju lauka efekta tranzistoru, uz kura vārtiem tika uzlikts signāls no PWM izejas, var izmantot jebkuru no pieejamajiem.
Lai regulētu ātrumu, shēmai pievienoju mainīgu rezistoru, savienojot to ar analogo ieeju A0. Lai ātri izveidotu savienojumu, es izmantoju bezlodētu maizes dēli, ko sauc arī par maizes dēli.
Tranzistora elektroinstalācijā uzstādīju strāvu ierobežojošu rezistoru (lai samazinātu vārtu uzlādes strāvu, tas ietaupīs ostu no sadegšanas un mikrokontrollera barošanas avota no nogrimšanas un tā sasalšanas) par 240 omi un ar 12 kOhm rezistoru to ievilku zemē, tas jādara, lai padarītu to stabilāku slēģa tvertne strādāja un izlādējās ātrāk.
Aprakstīta informācija par lauka efektu tranzistoriem mūsu mājas lapas rakstā. Es izmantoju jaudīgu, parastu un ne pārāk dārgu mošetu ar n-kanālu un iebūvētu IRF840 reverso diodi.
Izskatās mans laboratorijas stenda montāža:
PWM vadības funkcija tiek izsaukta, rakstot uz atbilstošās izvades (3, 5, 6, 9, 10, 11) vērtībām no 0 līdz 255 ar komandu AnalogWrite (tapa, vērtība). Viņas darba loģika ir attēlota zemāk redzamajos grafikos.
Šāds signāls tiek uzlikts uz tranzistora vārtiem:
Kaunas programmas kods ir īss un vienkāršs, detalizēti aprakstītas visas šīs funkcijas iepriekšējos rakstos par arduino.
int sensorsPin = A0; // ieeja no potenciometra
int motorPin = 3; // PWM izeja uz kameras vārtiem
Nederīga iestatīšana () {
pinMode (motorPin, OUTPUT);
}
tukšs cilpa () {
analogWrite (motorPin, karte (analogRead (sensorPin), 0, 1023, 0, 256));
}
Funkcijā analogWrite es piešķiru vērtību PWM izvadei caur kartes komandu, tās izmantošana ļauj noņemt vairākas koda rindiņas un vienu mainīgo.
Šī ir darba shēma, un tā ir lieliski piemērota procesu novērošanai, pielāgojot slodzes jaudu, gaismas diožu spilgtumu, motora apgriezienus, jums vienkārši jāpievieno vēlamā slodze, nevis motors. Šajā gadījumā 5 V vietā slodzei var pielikt jebkuru spriegumu, piemēram, 12 V, neaizmirstiet pievienot kontaktam negatīvo strāvu, piemēram, 12 V, neaizmirstiet pievienot negatīvo strāvu GND tapai mikrokontrollera plāksnē.
Arduino gadījumā PWM frekvence, kad to izsauc caur analogWrite funkciju, ir tikai 400 Hz, pie minimālajām sprieguma vērtībām no motora tinumiem tika dzirdēts atbilstošās frekvences hum.
Servos
Motors, kas var būt iepriekš noteiktā stāvoklī un pakļauts ārējiem faktoriem, piemēram, ar piespiedu vārpstas novirzi, nemaina savu stāvokli - tiek saukts par servo piedziņu. Kopumā definīcija izklausās nedaudz savādāk:
Servo ir negatīvu atgriezeniskās saites vadīts motors.
Parasti no servo piedziņas iznāk trīs vadi:
-
Plus jauda.
-
Mazāk enerģijas.
-
Vadības signāls.
Servo piedziņa sastāv no:
-
Līdzstrāvas motors (vai bez motora);
-
Pārvaldības maksa;
-
Pozīcijas sensors (kodētājs servo ar 360 ° griešanās leņķi vai potenciometrs servo ar 180 ° griešanās leņķi);
-
Samazinot pārnesumu (pazemina motora apgriezienus un palielina griezes momentu uz piedziņas vārpstas).
Vadības bloks salīdzina signālu uz iebūvētā stāvokļa sensora un signālu, kas nāca caur vadības vadu, ja tie ir atšķirīgi, tad notiek pagriešanās leņķī, pie kura tiek izlīdzināta atšķirība starp signālu.
Galvenie servo raksturlielumi:
-
Pagrieziena ātrums (laiks, kurā vārpsta griežas 60 ° leņķī);
-
Griezes moments (kg / cm, t.i., cik kilogramus motors var izturēt uz sviras 1 cm attālumā no vārpstas);
-
Barošanas spriegums;
-
Pašreizējais patēriņš;
-
Izmantojot vadības metodi (analogā vai digitālā, nav būtiskas atšķirības, bet digitālā ir ātrāka un stabilāka).
Parasti signāla periods ir 20 ms, un vadības impulsa ilgums:
-
544 μs - atbilst 0 °;
-
2400 μs - atbilst 180 ° leņķim.
Retos gadījumos impulsa garums var atšķirties, piemēram, attiecīgi 760 un 1520 μs, šo informāciju var noskaidrot piedziņas tehniskajā dokumentācijā. Viens no populārākajiem hobija servo ir Tower Pro SG90 un tamlīdzīgi modeļi.Tas ir lēts - apmēram 4 dolāri.
Uz ass ir 1,8 kg / cm, un kopā ar to ir montāžas skrūves un sviras ar vārpstu šķeltēm. Faktiski šis mazulis ir diezgan spēcīgs, un ir ļoti problemātiski to apturēt ar vienu pirkstu - pats piedziņa sāk izkrist no pirkstiem - tāds ir tā spēks.
Servovadība un Arduino
Kā jau minēts, kontroli veic, mainot impulsa ilgumu, taču nejauciet šo metodi ar PWM (PWM), tās pareizais nosaukums ir PDM (Pulse Duration Modulation). Nelielām signāla frekvences novirzēm (20 ms - ilgums, frekvence 50 Hz) nav īpaša loma. Bet nenovirzieties no frekvences vairāk kā par 10 Hz, motors var darboties nervozi vai izdegt.
Savienojums ar arinoino ir diezgan vienkāršs, jūs varat arī barot disku no 5 V tapas, bet tas nav vēlams. Fakts ir tāds, ka sākumā ir neliels strāvas lēciens, tas var izraisīt strāvas samazināšanu un Viltus mikrokontrolleru izejas. Lai gan ir iespējams 1 mazs piedziņa (tips SG90), bet ne vairāk.
Lai kontrolētu šādas servos arduino, IDE ir iebūvēta Servo bibliotēka, tai ir neliels komandu komplekts:
-
pievienot () - pievienot mainīgo tapai. Piemērs: Drive.attach (9) nosaukums - mēs savienojam servo ar 9. piespraudi. Ja jūsu piedziņai nepieciešami nestandarta vadības impulsu garumi (544 un 2400 μs), tad tos var norādīt, atdalot ar komatu pēc tapu skaita, piemēram: servo.attach (tapa, min leņķis (μs), maksimālais leņķis ISS);
-
rakstīt () - nosaka ass griešanās leņķi grādos;
-
writeMicroseconds () - iestata leņķi caur impulsa garumu mikrosekundēs;
-
lasīt () - nosaka vārpstas pašreizējo stāvokli;
-
pievienots () - pārbauda, vai tapu ir iestatījis ar pieslēgtu servo;
-
atdalīt () - atcelt pievienošanas komandu.
Šī bibliotēka ļauj kontrolēt 12 servo no UNO, Nano un tamlīdzīgiem dēļiem (mega368 un 168), savukārt pazūd spēja izmantot PWM 9. un 10. tabulā. Ja jums ir MEGA, jūs varat kontrolēt 48. serverus, bet PWM uz 11. un 12. piespraudes pazudīs, ja izmantosit līdz 12 servām, tad PWM paliks pilnībā funkcionējošs visiem kontaktiem.
Ja jūs savienojat šo bibliotēku, jūs nevarēsit strādāt ar 433 MHz uztvērējiem / raidītājiem. Tam ir paredzēta Servo2 bibliotēka, kas citādi ir identiska.
Šeit ir koda piemērs, kuru es izmantoju eksperimentiem ar servo piedziņu, tas ir standarta piemēru komplektā:
#include
Servo miservo; // deklarētais mainīgais nosaukums myservo servo
int potpin = 0; // tapa potenciometra pievienošanai
int val; // mainīgs, lai saglabātu signāla nolasīšanas rezultātus no potenciometra
Nederīga iestatīšana () {
myservo.attach (9); // iestatiet 9 pin kā servo vadības izeju
}
tukšs cilpa () {
val = analogRead (pods); // potenciālā potenciāla nolasīšanas rezultāti, kas saglabāti trans. val, tie būs diapazonā no 0 līdz 1023
val = karte (val, 0, 1023, 0, 180); // iztulkot mērījumu diapazonu no analogās ieejas 0-1023
// uzdevumu diapazonā servo 0-180 grādiem
myservo.write (val); // izturēt reklāmguvumu signāls no pot-ra uz kontroli servo ieeja
kavēšanās (15); // kavēšanās ir nepieciešama sistēmas stabilai darbībai
Secinājums
Vienkāršāko elektromotoru izmantošana pārī ar arduino ir diezgan vienkāršs uzdevums, savukārt šī materiāla apguve paplašina jūsu iespējas automatizācijas un robotikas jomā. Vienkāršākie roboti vai radiovadāmie automašīnu modeļi sastāv no šādiem motoriem, un riteņu griešanās kontrolei tiek izmantotas servo.
Apskatītajos piemēros rotācijas leņķa vai griešanās ātruma iestatīšanai tika izmantots potenciometrs, tā vietā var izmantot jebkuru citu signāla avotu, piemēram, no sensoriem saņemtās informācijas rezultātā var notikt rotācija vai ātruma izmaiņas.
Servo izmantošanas piemērs alternatīvajā enerģijā: saules gaismas iedarbības leņķa izsekošana un saules paneļu novietojuma pielāgošana spēkstacijās.
Lai ieviestu šādu algoritmu, varat izmantot vairākus fotorezistori vai citas optoelektroniskas ierīces krītošās gaismas daudzuma mērīšanai un, atkarībā no to rādījumiem, iestatīt saules paneļa griešanās leņķi.
Skatīt arī vietnē e.imadeself.com
: