kategorije: Sklopovi mikrokontrolera
Broj pregleda: 19709
Komentari na članak: 0

Motor i servo upravljanje s Arduino

 

U jednostavnim izvedbama sustava za automatizaciju često je potrebno ne samo očitavanje očitanja senzora, već i pokretanje mehanizama za kretanje. Za to se koriste razni elektromotora. Najjednostavnija i najpopularnija opcija je istosmjerni motor. Ljubav ljubavnika osvojio je svojom pristupačnošću, lakoćom podešavanja brzine. Ako je zadatak pomaknuti bilo koji mehanizam u zadanom kutu ili udaljenosti, prikladno je koristiti servo pogon ili stepper motor.

U ovom ćemo članku pogledati servo motore i male istosmjerne motore, spojiti ih na Arduino ploču i podešavati DCT.

Motor i servo upravljanje s Arduino

DC motor

Najčešći elektromotor koji se koristi u prijenosnim uređajima, igračkama, radio kontroliranim modelima i drugim uređajima. Stalni magneti učvršćeni su na malom elektromotoru na statoru, a namatanje na rotoru.

DC motor

Struja se dovodi do namotaja preko sklopa četke. Četke su izrađene od grafita, ponekad se nalaze bakreni klizni kontakti. Četke klize iznad lamela smještenih na jednom kraju rotora. Ako ne ulazite u detalje, tada njegova brzina rotacije ovisi o struji navijanja armature.

Sidro za motore kolektora

Na velikim istosmjernim motorima na statoru dolazi do uzbudnog namota, koji je povezan na namot rotora (kroz sklop četke) na određeni način (sekvencijalno, paralelno ili miješano pobuđenje). Tako se postiže željeni okretni moment i broj okretaja.


Kontrola brzine

Električni istosmjerni motor

Kad je spojen na mrežnu mrežu, DC motor se počinje vrtjeti nazivnom brzinom. Za smanjenje brzine potrebno je ograničiti struju. Da biste to učinili, uvode se otpori balasta, ali to smanjuje učinkovitost instalacije u cjelini i pojavljuje se višak izvora topline. Za učinkovitiju regulaciju napona i struje koristi se druga metoda - PWM regulacija.

PWM regulacija

Metoda upravljanja signalom (naponom) koji modulira širinu impulsa jest generiranje željene vrijednosti napona promjenom širine impulsa, s konstantnim trajanjem razdoblja (frekvencija).

Odnosno, razdoblje je podijeljeno na dva dijela:

1. Impulsno vrijeme.

2. Vrijeme pauze.

Odnos vremena impulsa prema ukupnom vremenu razdoblja naziva se radnim ciklusom:

Ks = ti / tper

uzajamnost se naziva "radni ciklus":

D = 1 / KZ = tper / t i

Za opis načina rada regulatora PWM koriste se oba koncepta: i radni i delovni ciklus.

Trenutna potrošnja motora ovisi o njegovoj snazi. Kao što je rečeno, broj okretaja ovisi o struji. Struja se može prilagoditi promjenom količine napona koji se primjenjuje na namote. Zapravo, kada se napaja naponom koji premašuje nazivnu vrijednost u skladu s putovnicom motora, njegova brzina će također premašiti nazivnu brzinu. Međutim, takvi su načini rada opasni za motor, jer veća struja teče u namotima, što uzrokuje njihovo povećano zagrijavanje.

Ako je oštećenje motora uslijed kratkotrajnih impulsa ili opetovano kratkotrajnih načina rada minimalno, tada će se tijekom dugotrajnog rada na visokom naponu i okretajima izgorjeti ili će se njegovi ležajevi zagrijati i kliniti, a namotaji će izgorjeti ako ne isključite napajanje.

Ako je ulazni napon prenizak, mali motor jednostavno nema dovoljno snage za pomicanje. Stoga je potrebno eksperimentalno otkriti normalnu brzinu i napon za određeni motor koji ne prelazi nazivne.


Povezujemo se s arduinom

Imao sam mali motor, čini se iz kasetofona, što znači da će njegov nazivni napon biti ispod 5 volti, tada će izlazna snaga arduina biti dovoljna. Napajat ću ga iz 5V pina, tj. s izlaza linearnog stabilizatora smještenog na ploči. Prema shemi koju vidite dolje.

Ne znam struju ovog motora, pa sam ga spojio na napajanje i instalirao poljski tranzistor između motora i utikača, na vrata na koji je primijenjen signal iz PWM izlaza, može se koristiti bilo koji od dostupnih.

Dijagram povezivanja istosmjernog motora Arduino

Za podešavanje brzine dodao sam u strujni krug promjenjivi otpornik, povezujući ga s analognim ulazom A0. Za brzu vezu koristio sam ploču bez lemljenja, koja se još naziva i krušna ploča.

Ugradio sam otpornik na ograničavanje struje u ožičenju tranzistora (da bih smanjio struju naboja vrata, ovo će spasiti luku od izgaranja i napajanja mikrokontrolera od utapanja i zamrzavanja) za 240 Ohma i povukao ga u zemlju pomoću otpornika od 12 kOhm, to treba učiniti kako bi bio stabilniji spremnik zatvarača radio je i brže se praznio.

Pojedinosti o opisanim tranzistorima s efektom polja u članku na našoj web stranici, Koristio sam snažan, uobičajen i ne previše skup mosfet s n-kanalnim i ugrađenom IRF840 reverznom diodom.

Izvršni i definirajući dio kruga

Ovako izgleda sklop mog laboratorijskog stalka:

DC motor i arduino

PWM upravljačka funkcija poziva se pri pisanju na odgovarajuće izlazne (3, 5, 6, 9, 10, 11) vrijednosti od 0 do 255 pomoću naredbe AnalogWrite (pin, vrijednost). Logika njenog rada prikazana je na grafovima u nastavku.

PWM funkcija upravljanja

Takav se signal primjenjuje na vrata tranzistora:

Takav se signal primjenjuje na vrata tranzistora

Programski kod sramote kratak je i jednostavan, detaljno su opisane sve ove funkcije u prethodnim člancima o arduinu.

int sensorPin = A0; // ulaz s potenciometra

int motorPin = 3; // PWM izlaz na vrata fotoaparata

poništavanje postave () {

pinMode (motorPin, OUTPUT);

}

void petlja () {

analogWrite (motorPin, karta (analogRead (sensorPin), 0, 1023, 0, 256));

}

U funkciji analogWrite dodijelim vrijednost PWM izlazu, putem naredbe map njegova upotreba omogućava uklanjanje nekoliko redaka koda i jednu varijablu.


Ovo je radna shema i izvrsno je za promatranje procesa prilikom kontrole snage opterećenja, svjetline LED-ova, brzine motora, samo trebate spojiti željeni teret umjesto motora. Istodobno, umjesto 5V, na opterećenje se može primijeniti bilo koji napon, na primjer 12V, ne zaboravite na kontakt priključiti minus napajanje, na primjer 12V, ne zaboravite priključiti minus napajanje na GND pin na ploči mikrokontrolera.

U arduinu, frekvencija PWM-a, kada se poziva preko analogWrite funkcije, iznosi samo 400 Hz, pri minimalnim vrijednostima napona začu se zvuk odgovarajuće frekvencije iz namotaja motora.

Arduino i servo

servo

Motor koji može biti u unaprijed određenom položaju i kada je izložen vanjskim čimbenicima, na primjer, prisilnim otklizavanjem osovine, zadržava svoj položaj nepromijenjen - naziva se servo pogon. Općenito, definicija zvuči malo drugačije:

Servo je motor s negativnim povratnim informacijama.

Obično iz servo pogona izlaze tri žice:

  • Plus snage.

  • Manje snage.

  • Upravljački signal.

Servo pogon se sastoji od:

  • Istosmjerni motor (ili motor bez četkica);

  • Naknade za upravljanje;

  • Položajni predajnik (koder za servo-motore s kutom rotacije od 360 ° ili potenciometar za servo-motore s kutom rotacije od 180 °);

  • Smanjivanje brzina (smanjuje broj okretaja motora i povećava zakretni moment na pogonskom vratilu).

Upravljačka jedinica uspoređuje signal na ugrađenom senzoru položaja i signal koji je došao preko upravljačke žice, ako se razlikuju, tada postoji rotacija za kut pod kojim se izravnava razlika između signala.

Princip rada serva

Glavne karakteristike servo:

  • Brzina okretanja (vrijeme tijekom kojeg se osovina rotira kroz kut od 60 °);

  • Moment (kg / cm, tj. Koliko kilograma motor može izdržati na ručici 1 cm od osovine);

  • Napon napajanja;

  • Trenutna potrošnja;

  • Načinom upravljanja (analogni ili digitalni) nema značajne razlike, ali digitalni je brži i stabilniji).

Obično je signalno razdoblje 20 ms, a trajanje kontrolnog pulsa:

  • 544 μs - odgovara 0 °;

  • 2400 μs - odgovara kutu od 180 °.

U rijetkim se slučajevima duljina impulsa može razlikovati, na primjer, 760 i 1520 μs, odnosno ove se informacije mogu razjasniti u tehničkoj dokumentaciji pogona. Jedan od najpopularnijih servo hobija je Tower Pro SG90 i slični modeli.Jeftin je - oko 4 dolara.

Sevroprivod za arduino

Na vratilu drži 1,8 kg / cm, a zajedno s njim su pričvrsni vijci i poluge s utorima za vratilo. Zapravo je ova beba prilično jaka i vrlo je problematično zaustaviti je jednim prstom - sam pogon počinje ispadati iz prstiju - takva je njegova snaga.


Servo kontrola i Arduino

Kao što je već spomenuto, kontrola se provodi promjenom trajanja impulsa, ali nemojte brkati ovu metodu sa PWM (PWM), njen točan naziv je PDM (Pulse Duration Modulacija). Mala odstupanja u frekvenciji signala (20 ms - trajanje, frekvencija 50 Hz) ne igraju posebnu ulogu. No, ne odstupajte od frekvencije za više od 10 Hz, motor se može trzati ili izgorjeti.

Servo kontrola i Arduino

Priključak na arduino uređaj prilično je jednostavan, pogon također možete napajati s 5 V pina, ali nije poželjno. Činjenica je da u startu postoji mali skok struje, to može uzrokovati pad struje i Lažni izlazi mikrokontrolera, Iako je moguć 1 mali pogon (tip SG90), ali ne više.

Za kontrolu takvih servo-a sa arduinom, imate biblioteku Servo-a ugrađenu u IDE, ona ima mali skup naredbi:

  • attach () - dodajte varijablu u pin. Primjer: ime pogona.attach (9) - spojite servo na pin 9. Ako vaš pogon treba nestandardne duljine kontrolnih impulsa (544 i 2400 μs), oni se mogu postaviti odvojeni zarezom nakon broja PIN-a, na primjer: servo.attach (pin, min kut (μs), maks. Kut u ISS-u));

  • write () - postavlja kut rotacije osovine u stupnjevima;

  • writeMicroseconds () - postavlja kut kroz duljinu pulsa u mikrosekundama;

  • read () - određuje trenutni položaj osovine;

  • u prilogu () - provjerava je li postavljen pin sa spojenim servo;

  • detach () - poništi naredbu pridruživanja.

Ova knjižnica omogućuje vam upravljanje 12 servo-uređaja sa UNO, Nano i sličnih ploča (mega368 i 168), dok mogućnost korištenja PWM-a na pin 9 i 10 nestaje. Ako imate MEGA, možete kontrolirati 48. poslužitelje, ali PWM na ivovima 11 i 12 će nestati, ako koristite do 12 servova, tada PWM ostaje potpuno funkcionalan u svim kontaktima.

Ako ste povezali ovu biblioteku, nećete moći raditi s 433 MHz prijemnicima / odašiljačima. Za to postoji Servo2 knjižnica, koja je inače identična.

Servo2 knjižnica

Evo primjera koda koji sam koristio za eksperimente sa servo pogonom, nalazi se u standardnom skupu primjera:

#include // povežite knjižnicu

Servo myservo; // deklarirano ime varijable za myservo servo

int potpin = 0; // pin za spajanje potenciometra za podešavanje

int val; // varijabla za spremanje rezultata očitanja signala s potenciometra

poništavanje postave () {

myservo.attach (9); // postavite 9 pina kao kontrolni izlaz za servo

}

void petlja () {

val = analogRead (potpin); // rezultati očitanja potenciometra spremljenog u trans. val, bit će u rasponu od 0 do 1023

val = karta (val, 0, 1023, 0, 180); // prevesti raspon mjerenja s analognog ulaza 0-1023

// u rasponu zadataka za servo 0-180 stupnjeva

myservo.write (val); // proći pretvorbu signal od pot-ra za kontrolu servo ulaz

kašnjenje (15); // kašnjenje je potrebno za stabilan rad sustava

 

Servo spajamo na Arduino

zaključak

Korištenje najjednostavnijih elektromotora uparenih s arduinom prilično je jednostavan zadatak, dok savladavanje ovog materijala proširuje vaše mogućnosti na području automatizacije i robotike. Najjednostavniji roboti ili radio-upravljani modeli automobila sastoje se od takvih motora, a servo se koriste za kontrolu rotacije kotača.

U primijenjenim primjerima potenciometar je korišten za postavljanje kuta rotacije ili brzine rotacije, umjesto toga može se upotrijebiti bilo koji drugi izvor signala, na primjer, rotacija ili promjena brzine mogu se dogoditi kao rezultat informacija dobivenih od senzora.

Primjer upotrebe servo-uređaja u alternativnoj energiji: praćenje kuta upada sunčeve svjetlosti i podešavanje položaja solarnih panela u elektranama.

Da biste implementirali takav algoritam, možete koristiti nekoliko photoresists ili druge optoelektronske uređaje za mjerenje količine upadne svjetlosti i, ovisno o njihovim očitanjima, postavljanje kuta rotacije solarne ploče.

Pogledajte također na elektrohomepro.com:

  • Kako je servo uređen i funkcionira
  • Arduino i stepper motor: osnove, sheme, povezanost i upravljanje
  • Značajke povezivanja uređaja s Arduinom
  • Kako razlikovati indukcijski motor od istosmjernog motora
  • Kako spojiti inkrementalni davač na Arduino

  •