Kategorijos: Mikrovaldiklio grandinės
Peržiūrų skaičius: 19709 m
Straipsnio komentarai: 0

Variklio ir servo valdymas naudojant „Arduino“

 

Paprastose automatikos sistemų konstrukcijose dažnai reikia ne tik skaityti jutiklių rodmenis, bet ir įjungti judesio mechanizmus. Tam naudojami įvairūs elektros varikliai. Paprasčiausias ir populiariausias variantas yra nuolatinės srovės variklis. Jis laimėjo mėgėjų meilę dėl savo prieinamumo, lengvo greičio reguliavimo. Jei užduotis yra bet kurį mechanizmą perkelti į nurodytą kampą ar atstumą, patogu naudoti servopavarą arba žingsninį variklį.

Šiame straipsnyje apžvelgiame servovaizdžius ir mažus nuolatinės srovės variklius, prijungdami juos prie „Arduino“ plokštės ir sureguliuodami DCT.

Variklio ir servo valdymas naudojant „Arduino“

Nuolatinis variklis

Labiausiai paplitęs elektrinis variklis, kuris naudojamas nešiojamuosiuose įrenginiuose, žaisluose, radijo bangomis valdomuose modeliuose ir kituose prietaisuose. Nuolatiniai magnetai pritvirtinami ant mažo elektrinio variklio ant statoriaus, o apvija - ant rotoriaus.

Nuolatinis variklis

Į apviją srovė tiekiama per šepečio mazgą. Šepečiai gaminami iš grafito, kartais randami variniai stumdomi kontaktai. Šepečiai slysta per lameles, esančias viename rotoriaus gale. Jei nesigilinsite į detales, tada jo sukimosi greitis priklauso nuo armatūros apvijos srovės.

Kolektoriaus variklio inkaras

Dideliuose nuolatinės srovės varikliuose ant statoriaus yra sužadinimo apvija, sujungta su rotoriaus apvija (per šepečio mazgą) tam tikru būdu (nuoseklus, lygiagretus ar mišrus sužadinimas). Taigi pasiekiamas norimas sukimo momentas ir apsisukimų skaičius.


Greičio kontrolė

Elektrinis nuolatinis variklis

Prijungtas prie tinklo nuolatinės srovės variklis pradeda suktis vardiniu greičiu. Norėdami sumažinti greitį, turite apriboti srovę. Norėdami tai padaryti, įvedami balasto varžos, tačiau tai sumažina viso įrenginio efektyvumą ir atsiranda perteklinis šilumos šaltinis. Efektyvesniam įtampos ir srovės reguliavimui naudojamas kitas metodas - PWM valdymas.

PWM valdymas

Impulsinio pločio moduliuoto signalo (įtampos) valdymo būdas yra sukurti norimą įtampos vertę, keičiant impulsų plotį, su pastovia laikotarpio trukme (dažniu).

T. y., Periodas yra padalintas į dvi dalis:

1. Impulsinis laikas.

2. Pauzė laikas.

Impulsų laiko ir viso laikotarpio santykis vadinamas darbo ciklu:

Ks = ti / tper

abipusis vadinamas „darbo ciklu“:

D = 1 / KZ = tper / t ir

Norint apibūdinti PWM valdiklio darbo režimą, naudojamos abi sąvokos: ir darbo ciklas, ir darbo ciklas.

Dabartinis variklio sunaudojimas priklauso nuo jo galios. Kaip buvo minėta, apsisukimų skaičius priklauso nuo srovės. Srovę galima reguliuoti keičiant apvijoms naudojamos įtampos dydį. Tiesą sakant, kai energiją tiekia įtampa, viršijanti nominalią vertę pagal variklio pasą, jos greitis taip pat viršys vardinį greitį. Tačiau tokie darbo režimai yra pavojingi varikliui, nes apvijose teka didesnė srovė, dėl kurios padidėja jų šildymas.

Jei variklio žala dėl trumpalaikių impulsų ar pakartotinai trumpalaikių veikimo režimų yra minimali, tada ilgo darbo metu esant padidintai įtampai ir greičiui jis sudegs arba jo guoliai įkaista ir pleištuosis, o tada apvijos išdegs, jei nebus atjungtas maitinimas.

Jei įėjimo įtampa yra per maža, mažam varikliui gali neužtekti jėgų judėti. Todėl būtina eksperimentiškai išsiaiškinti normalų tam tikro variklio greitį ir įtampą, neviršijančią vardinės.


Mes prisijungiame prie arduino

Turėjau mažą variklį, atrodo, iš kasečių grotuvo, tai reiškia, kad jo vardinė įtampa bus žemiau 5 voltų, tada pakaks arduino išėjimo galios. Aš maitinsiu jį iš 5V kaiščio, t.y. nuo linijinio stabilizatoriaus išvesties, esančios lentoje. Pagal schemą, kurią matote žemiau.

Aš nežinau šio variklio srovės, todėl prijungiau jį prie maitinimo ir tarp variklio ir maitinimo kaiščio sumontavau lauko efekto tranzistorių, ant kurio vartų buvo įjungtas PWM išėjimo signalas, bet kurį iš turimų galima naudoti.

„Arduino“ DC variklio prijungimo schema

Norėdami sureguliuoti greitį, aš prie grandinės pridėjau kintamąjį rezistorių, prijungdamas jį prie analoginio įėjimo A0. Greitam prisijungimui aš panaudojau nelituotą lentų lentą, kuri taip pat vadinama duonos lenta.

Į tranzistoriaus laidus įmontavau srovę ribojantį rezistorių (kad būtų sumažinta vartų įkrovimo srovė, tai išgelbės uostą nuo degimo ir mikrovaldiklio maitinimo šaltinio nuo kritimo ir jo užšalimo) 240 omų ir ištraukiau jį į žemę su 12 kOhm rezistoriumi, tai reikia padaryti, kad jis būtų stabilesnis. langinės bakas veikė ir greičiau išsikrovė.

Aprašyta išsami informacija apie lauko tranzistorius mūsų tinklalapio straipsnyje. Aš naudojau galingą, įprastą ir ne per brangų mosfetą su n-kanalu ir įmontuotu IRF840 atvirkštiniu diodu.

Vykdomoji ir apibrėžianti grandinės dalis

Kaip atrodo mano laboratorijos stendo komplektas:

Nuolatinis variklis ir arduino

PWM valdymo funkcija iškviečiama rašant į atitinkamą išvesties (3, 5, 6, 9, 10, 11) reikšmes nuo 0 iki 255 su „AnalogWrite“ komanda (smeigtukas, vertė). Jos darbo logika pavaizduota žemiau pateiktuose grafikuose.

PWM valdymo funkcija

Toks signalas dedamas į tranzistoriaus vartus:

Toks signalas dedamas į tranzistoriaus vartus

Gėdos programos kodas yra trumpas ir paprastas, išsamiai aprašytos visos šios funkcijos ankstesniuose straipsniuose apie arduino.

int sensorPin = A0; // įvestis iš potenciometro

int motorPin = 3; // PWM išėjimas į kameros vartus

negaliojanti sąranka () {

pinMode (motorPin, OUTPUT);

}

tuščia kilpa () {

analoWrite (motorPin, map (analogRead (sensorPin), 0, 1023, 0, 256));

}

Funkcijai „analogWrite“ per žemėlapio komandą priskiriu reikšmę PWM išėjimui, jos naudojimas leidžia pašalinti kelias kodo eilutes ir vieną kintamąjį.


Tai yra darbinė schema ir ji puikiai tinka stebėti procesus, kai sureguliuojama apkrovos galia, šviesos diodų ryškumas, variklio apsisukimų dažnis, tereikia vietoj variklio prijungti norimą krovinį. Tuo pačiu metu vietoj 5 V bet kokia apkrova gali būti naudojama įtampa, pavyzdžiui, 12 V, nepamirškite prijungti neigiamą galią prie kontakto, pavyzdžiui, 12 V, nepamirškite prijungti neigiamą galią prie GND kaiščio, esančio mikrovaldiklio plokštėje.

Arduino PWM dažnis, kai jis vadinamas „analogWrite“ funkcija, yra tik 400 Hz, esant minimalioms įtampos vertėms, iš variklio apvijų buvo girdimas atitinkamo dažnio hum.

Arduino ir servo

Servosas

Variklis, kuris gali būti iš anksto nustatytoje padėtyje, o veikiamas išorinių veiksnių, pavyzdžiui, priverstinio veleno deformacijos, palaiko savo padėtį nepakitusią - vadinamas servovarikliu. Apskritai apibrėžimas skamba šiek tiek kitaip:

„Servo“ yra neigiamų atsiliepimų variklis.

Paprastai iš servovariklio išeina trys laidai:

  • Plius galia.

  • Mažiau energijos.

  • Kontrolinis signalas.

Servo pavarą sudaro:

  • DC variklis (arba be šepetėlių variklis);

  • Valdymo mokesčiai;

  • Padėties jutiklis (kodavimo įtaisas su 360 ° sukimosi kampu arba potenciometras su „servos“ su 180 ° pasisukimo kampu);

  • Sumažinta pavara (sumažina variklio greitį ir padidina sukimo momentą ant varančiojo veleno).

Valdymo blokas palygina signalą, esantį įmontuotame padėties jutiklyje, ir signalą, kuris pateko per valdymo laidą, jei jie skiriasi, tada vyksta sukimasis kampu, kuriuo skirtumas tarp signalo yra lygus.

Servo veikimo principas

Pagrindinės servo charakteristikos:

  • Posūkio greitis (laikas, per kurį velenas sukasi 60 ° kampu);

  • Sukimo momentas (kg / cm, t.y. kiek kilogramų variklis gali atlaikyti ant svirties 1 cm atstumu nuo veleno);

  • Maitinimo įtampa;

  • Dabartinis suvartojimas;

  • Valdymo metodu (analoginis ar skaitmeninis, žymaus skirtumo nėra, tačiau skaitmeninis yra greitesnis ir stabilesnis).

Paprastai signalo laikotarpis yra 20 ms, o valdymo impulso trukmė:

  • 544 μs - atitinka 0 °;

  • 2400 μs - atitinka 180 ° kampą.

Retais atvejais impulsų ilgis gali skirtis, pavyzdžiui, atitinkamai 760 ir 1520 μs, šią informaciją galima paaiškinti pavaros techninėje dokumentacijoje. Vienas iš populiariausių hobis servo yra „Tower Pro SG90“ ir panašūs modeliai.Tai nebrangu - apie 4 dolerius.

Sevroprivod for arduino

Ant veleno jis sulaiko 1,8 kg / cm, kartu su ja yra tvirtinimo varžtai ir svirtys su veleno smaigalais. Tiesą sakant, šis kūdikis yra gana stiprus, ir jį sustabdyti vienu pirštu yra labai problematiška - pati pavara pradeda kristi iš pirštų - tokia jo jėga.


„Servo control“ ir „Arduino“

Kaip jau minėta, valdymas atliekamas keičiant impulsų trukmę, tačiau nepainiokite šio metodo su PWM (PWM), jo teisingas pavadinimas yra PDM (Pulse Duration Modulation). Nedideli signalo dažnio nuokrypiai (20 ms - trukmė, 50 Hz dažnis) neturi ypatingo vaidmens. Tačiau nenukrypkite nuo dažnio daugiau kaip 10 Hz, variklis gali suktis varikliui ar perdegti.

„Servo control“ ir „Arduino“

Prijungimas prie arduino yra gana paprastas, taip pat galite maitinti diską iš 5 V kaiščio, bet tai nėra pageidautina. Faktas yra tas, kad pradžioje yra nedidelis srovės šoktelėjimas, tai gali sukelti galios sumažėjimą ir Neteisingi mikrovaldiklio išėjimai. Nors įmanoma 1 maža pavara (tipas SG90), bet ne daugiau.

Norėdami valdyti tokias servo funkcijas su „arduino“, turite „IDE“ įmontuotą „Servo“ biblioteką, joje yra nedidelis komandų rinkinys:

  • pritvirtinti () - pridėti kintamąjį prie kaiščio. Pavyzdys: disko pavadinimas.sąlyga (9) - prijunkite servutę prie 9 kaiščio. Jei jūsų diskui reikalingi nestandartiniai valdymo impulsų ilgiai (544 ir 2400 μs), tada juos galima nurodyti kableliu po kaiščio skaičiaus, pvz .: servo.attach (kaištis, min. Kampas (μs), maksimalus kampas ISS);

  • rašyti () - nustato veleno sukimosi kampą laipsniais;

  • writeMicroseconds () - nustato kampą per impulso ilgį mikrosekundėmis;

  • skaityti () - nustato dabartinę veleno padėtį;

  • pridedamas () - tikrina, ar kaištis nustatytas su prijungtu servo įtaisu;

  • atjungti () - atšaukti pridėjimo komandą.

Ši biblioteka leidžia valdyti 12 serijų iš UNO, Nano ir panašių plokščių (mega368 ir 168), tuo tarpu dingsta galimybė naudoti PWM 9 ir 10 kaiščiuose. Jei turite MEGA, galite valdyti 48-uosius serverius, tačiau PWM 11 ir 12 kaiščiuose išnyks, jei naudosite iki 12 serverių, tada PWM liks visu pajėgumu visuose kontaktuose.

Jei prijungsite šią biblioteką, negalėsite dirbti su 433 MHz imtuvais / siųstuvais. Tam yra „Servo2“ biblioteka, kuri kitaip yra identiška.

„Servo2“ biblioteka

Štai kodo, kurį naudojau eksperimentams su servo pavara, pavyzdys, jis yra standartiniame pavyzdžių rinkinyje:

#include // prijunkite biblioteką

Servo miservo; // deklaruojamas kintamasis „myservo“ servo pavadinimas

int potpin = 0; // nustatymo potenciometro prijungimo kaištis

int val; // kintamasis, kad būtų išsaugoti signalo nuskaitymo iš potenciometro rezultatai

negaliojanti sąranka () {

myservo.attach (9); // nustatykite 9 kontaktus kaip servo valdymo išėjimą

}

tuščia kilpa () {

val = analogRead (pinpin); // potenciometro nuskaitymo rezultatai, išsaugoti trans. val, jie bus intervale nuo 0 iki 1023

val = žemėlapis (val, 0, 1023, 0, 180); // išverskite matavimo diapazoną nuo analoginio įėjimo 0-1023

// 0–180 laipsnių servo užduočių diapazonas

myservo.write (val); // praeiti konversiją signalas iš pot-ra į valdymą servo įvestis

vėlavimas (15); // Reikia atidėlioti stabilų sistemos darbą

 

Mes prijungiame servą prie Arduino

Išvada

Naudoti paprasčiausius elektros variklius, suporuotus su arduino, yra gana paprasta užduotis, o įsisavinus šią medžiagą išplečiamos jūsų galimybės automatikos ir robotikos srityje. Iš tokių variklių susideda patys paprasčiausi robotai arba radijo bangomis valdomi automobilių modeliai, o ratų sukimui valdyti naudojamos servos.

Nagrinėjamuose pavyzdžiuose sukimosi kampui ar sukimosi greičiui nustatyti buvo naudojamas potenciometras, vietoj to gali būti naudojamas bet koks kitas signalo šaltinis, pavyzdžiui, pasisukimas ar greičio pokytis gali atsirasti dėl informacijos, gautos iš jutiklių.

Servo naudojimo alternatyvioje energijoje pavyzdys: saulės šviesos kritimo kampo stebėjimas ir saulės baterijų padėties elektrinėse reguliavimas.

Norėdami įdiegti tokį algoritmą, galite naudoti kelis fotorezistoriai ar kiti optoelektroniniai įtaisai krintančios šviesos kiekiui matuoti ir, atsižvelgiant į jų rodmenis, nustatyti saulės kolektoriaus sukimosi kampą.

Taip pat žiūrėkite tinklalapyje bgv.electricianexp.com:

  • Kaip servo yra išdėstytos ir veikia
  • „Arduino“ ir „stepper“ variklis: pagrindai, schemos, prijungimas ir valdymas
  • Funkcijos, jungiančios įrenginius prie Arduino
  • Kaip atskirti indukcinį variklį nuo nuolatinės srovės variklio
  • Kaip prisijungti prie Arduino prieauginį kodą

  •