Timp , ticks: 10 , [624119]
CUPRINS
Introducere ………………………….. ………………………….. ………………………….. ………………………….. …………………… 1
Capitolul 1. DESCRIEREA FUNCȚIONĂRII UNUI MOTOR FĂRĂ PERII ………………………….. ……. 3
1.1. Motorul cu comutație electronică. Generalități ………………………….. ………………………….. …………………. 3
1.2. Construcția motoarelor cu comutație electro nică ………………………….. ………………………….. …………….. 4
1.3. Structura un ui sistem de acționare cu motor fără perii ………………………….. ………………………….. …… 6
1.4. Avantaje și dezavantaje ale motoarelor fără perii ………………………….. ………………………….. …………….. 7
1.5. Funcționa rea unui motor fă ră perii utilizân d un model simplificat ………………………….. ………….. 9
1.6. Comutația electronică a fazelor motorului ………………………….. ………………………….. ………………………. 11
1.7. Comutația fără senzori ………………………….. ………………………….. ………………………….. ………………………….. … 14
1.8. Control PWM ………………………….. ………………………….. ………………………….. ………………………….. …………………. 14
1.9. Comutarea în șase pași trapezoidali a motorului ………………………….. ………………………….. …………… 16
1.10. M etode de măsurare a tensiunii contraelectromotoare ………………………….. …………………………. 18
1.11. Metode utilizate pentru detecția trecerii prin zero a tensiunii contraelectromotoare …. 20
1.12. Modelul matematic al motorului BLDC ………………………….. ………………………….. ………………………….. 22
1.13. Algoritmul de control PI D pentru un motor fără perii ………………………….. ………………………….. … 26
Capitolul 2. STRUCTURA HARDWARE ȘI SOFTWARE ………………………….. ………………………….. … 28
2.1. Structura mecanică ………………………….. ………………………….. ………………………….. ………………………….. ……… 28
2.2. Strct ura circuitului electronic ………………………….. ………………………….. ………………………….. ………………… 29
2.3. Motor ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. ….. 31
2.4. Unitate de control electronic a turației ………………………….. ………………………….. ………………………….. … 32
2.5.Encoder ………………………….. ………………………….. ………………………….. ………………………….. ………………………….. . 32
2.6. Arduino Mega ………………………….. ………………………….. ………………………….. ………………………….. ……………….. 34
2.7. Modul comunicație ethernet ………………………….. ………………………….. ………………………….. ………………….. 35
CAPITOLUL 3. CONTROLUL ȘI MONITORIZAREA UNUI MOTOR FĂRĂ PERII ………………… 37
3.1. Comanda în buclă deschisă ………………………….. ………………………….. ………………………….. …………………….. 37
3.2. Comanda în buclă închisă ………………………….. ………………………….. ………………………….. ……………………….. 42
Concluzii ………………………….. ………………………….. ………………………….. ………………………….. …………………….. 60
Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. ………………… 62
ANEXA 1 ………………………….. ………………………….. ………………………….. ………………………….. ……………………… 63
ANEXA 2 ………………………….. ………………………….. ………………………….. ………………………….. ……………………… 64
ANEXA 3 ………………………….. ………………………….. ………………………….. ………………………….. ……………………… 65
ANEXA 4 ………………………….. ………………………….. ………………………….. ………………………….. ……………………… 70
LISTA FIGURILOR
Figura 1. Statorul și secțiunea longitudinală a unui motor BLDC ………………………….. …………… 5
Figura 2. Analiza comparativă a construcției motorului de c.c. convențional și a
motorului cu comutație electronică ………………………….. ………………………….. ………………………….. …….. 5
Figura 3. Rotorul motoar elor cu comutație electronică ………………………….. ………………………….. .. 6
Figura 4. Elementele unui sistem de acționare pentru un motor fără perii ………………………. 7
Figura 5. Modelul simplificat al motorului sincron fără perii de curent continuu …………. 10
Figura 6. Forma de undă a t.c.e.m , corespunzătoare motoarelor BLDC ………………………….. . 11
Figura 7. Forma de undă a t.c.e.m , corespunzătoare motoarelor PMSM ………………………….. 11
Figura 8. Cele șase secvențe de comutare a înfășurărilor motorului ………………………….. ……. 12
Figura 9. Schema simplificată a unui invertor cu trei faze ………………………….. ……………………… 13
Figura 10. Semnalele de comandă a invertorului trifazic pentru o rotați e completă …….. 13
Figura 11. Componentele semnalului de tip PWM ………………………….. ………………………….. ………. 16
Figura 12. Succesiunea celor șase pași de comutație ………………………….. ………………………….. ….. 17
Figura 13. Comutația motorului prin metoda celor șase pași trapezoidali ……………………… 17
Figura 14. Detecția trecerilor prin zero a tensiunii contraelectromotoare ……………………… 19
Figura 15. Tensiun ea electromotoare comparată cu ½ din tensiunea de alimentare ….. 20
Figura 16. Compararea t.c.e.m cu punctul median reconstruit ………………………….. ……………… 21
Figura 17. Măsurarea tensiunii electromotoare utilizând un CAN ………………………….. ……….. 22
Figura 18. Schema bloc a sistemului de reglare a turaț iei unui motor fără perii ……………. 22
Figura 19. Circuitul echivalent al motorului BLDC și al comenzii acestuia ……………………… 23
Figura 20. Reglarea unui proces de ordinul II cu regulator PID cu timp continuu …………. 26
Figura 21. Sistemul de control ………………………….. ………………………….. ………………………….. ……………. 28
Figura 22. Stand didactic ………………………….. ………………………….. ………………………….. ……………………… 29
Figura 23. Schema bl oc a sistemului ………………………….. ………………………….. ………………………….. ….. 30
Figura 24. Motor fără perii MODELCRAFT HURRICANE 11T ………………………….. ………………… 31
Figura 25. Controler electronic de turație TURNIGY ………………………….. ………………………….. ….. 32
Figura 26. Encoder incre mental HEDR -5420 -ES214 ………………………….. ………………………….. ….. 33
Figura 27. Forme de undă rezultate ………………………….. ………………………….. ………………………….. ….. 33
Figura 28. Construcție internă encoder ………………………….. ………………………….. ………………………… 34
Figura 29. Placa de dezvoltare Arduino Mega 2560 ………………………….. ………………………….. ……. 34
Figura 30. Modul comunicație ethernet W5100 ………………………….. ………………………….. ………….. 36
Figura 31. Schema sistemului de reglare în buclă deschisă ………………………….. …………………… 37
Figura 32. Aplitudinea semnalului PWM ………………………….. ………………………….. ………………………. 38
Figura 33. Datele afișate pe monit orul serial pentru referință de 10 % ………………………….. .. 38
Figura 34. Perioada semnalului PWM pentru referința 10% ………………………….. ………………… 39
Figura 35. Datele afișate pe monitor ul serial pentru referință de 20% ………………………….. .. 39
Figura 36. Perioada semnalului PWM pentru referința 20% ………………………….. ………………… 40
Figura 37. Datele afișate pe monitorul serial pentru referință de 30% ………………………….. .. 40
Figura 38. Perioada semnalului PWM pentru referința 30% ………………………….. ………………… 41
Figura 39. Datele afișate pe monitorul s erial pentru referință de 40% ………………………….. .. 41
Figura 40. Perioada semnalului PWM pentru referința 40% ………………………….. ………………… 42
Figura 41. Schema sistemului de reglare în buclă închisă ………………………….. ……………………… 42
Figura 42. Tensiunea măsurată la bornele motorului ………………………….. ………………………….. … 43
Figura 43. Referință 30% ………………………….. ………………………….. ………………………….. …………………….. 44
Figura 44. Observarea răspunsului sistemului cu referință 30% ………………………….. …………. 44
Figura 45. Tensiunea măsurat ă la bornele motorului cu referință 30% ………………………….. 45
Figura 46. Valoarea tensiunii și a curentului cu referință 30% ………………………….. …………….. 45
Figura 47. Referință 35% ………………………….. ………………………….. ………………………….. …………………….. 46
Figura 48. Observarea răspunsului sistemului cu referință 35% ………………………….. …………. 46
Figura 49. Tensiunea măsurată la bornele motorului cu referință 35% ………………………….. 47
Figura 50 . Valoarea tensiunii și a curentului cu referință 35% ………………………….. …………….. 47
Figura 51. Referință 40% ………………………….. ………………………….. ………………………….. …………………….. 48
Figura 52. Observarea răspunsului sistemului cu r eferință 40% ………………………….. …………. 48
Figura 53. Tensiunea măsurată la bornele motorului cu referință 40% ………………………….. 49
Figura 54. Valoarea tensiunii și a curentului c u referință 40% ………………………….. …………….. 49
LISTA TABELELOR
Tabelul 1. Comparație între motoarele sincrone BLDC și cele convenționale cu perii …… 8
Tabelul 2. Comparație între motoarele sincrone BLDC și cele asincrone de inducție …….. 9
Tabelul 3. Succesiunea comenzilor pe fazele motorului pentru o rotație completă ………. 13
Tabelul 4. Secvențe de comutare ………………………….. ………………………….. ………………………….. ……….. 18
Tabelul 5. Structura regulatorului în buclă deschisă ………………………….. ………………………….. ….. 27
Tabelul 6. Structura regulatorului în buclă închisă ………………………….. ………………………….. …….. 27
Tabelul 7. Specificații tehnice ale motorului fără perii ………………………….. ………………………….. . 31
Tabelul 8. Specificații tehnice ale controlerului electronic de turație ………………………….. ….. 32
Tabelul 9. Specificații tehnice ale plăcii Arduino Mega 2560 ………………………….. ………………… 34
Tabel ul 10. Pinii folosiți și funcța lor ………………………….. ………………………….. ………………………….. …. 35
Tabelul 11. Specificații tehnice ale modulului de comunicație ethernet W5100 ……………. 36
LISTA ACRONIME LOR
BLDC – Brushless Direct Current
BACK EMF – Back Electromotive Force
PWM – Pulse Width Modulation
PMSM – Permanent Magnet Synchronous Motor
MOSFET – Metal Oxide Semiconductor Field Effect Transistor
ESC – Electronic Speed Controller
P – Proportional
PI – Proportional Integral
PID – Proportional Integral Derivative
Controlul unui motor fără perii în timp real – stand didactic
1 INTRODUCERE
În lucrarea de față este prezentat controlul unui motor fără perii utilizând un
controler electronic de turație și un encoder de tip incremental. Comanda și
monitorizarea turației motorului fără perii sunt implementate în timp real utilizând un
microcontro ler de tip Arduino Mega2560 împreuna cu un modul de comunica ție ethernet
W5100.
Toate motoarele electrice funcționează după același principiu și anume, energia
electrică este convertită în energie magnetică, iar în cele din urmă aceasta este
transformată în mișcare de rotație mecanică. Diferența între motoare constă în maniera
în car e câmpul magnetic este generat pentru a crea forța de rotație sau cuplu.
Motoarele asincrone cu rotor bobinat și motoarele de curent continuu au limitări
cum ar fi viteza nomi nală, probleme de interferențe electromagnetice, eficiență redusă,
cuplu redus l a pornire și uzarea ansamblului perii -colector. Acestea nu se recomandă a fi
utilizate pentru operații care necesită fiabilitate mare și perioadă mare de exploatare. Din
aceast ă cauză s -au dezvoltat motoarele sincrone fără perii și comutatoare mecanice.
Comutația înfășurărilor este realizată cu ajutorul invertorului de comandă, care
alimentează fazele motorului în funcție de poziția rotorului.
În continuare vom folosi prescurtar ea BLDC pentru a face referire la acest tip de
motoare.
În mod normal motoarele BLDC prezintă o comutație în șase pași și pentru a
determina poziția rotorului față de stator sunt utilizați în mod frecvent senzori cu efect
Hall, metoda fiind agreată datorit ă preciziei . Însă costul este ridicat atât la fabricare cât și
în timpul exploat ării, dar mai ales are restricții de funcționare în anumite condiții de
mediu (căldură și umiditate mărită). Din aceste considerente în lucrarea de față nu s -a
optat pentru com anda cu senzori de poziție.
O altă modalitate prin care poate fi determinată poz iția rotorului este cea în care
senzorii cu efect Hall sau cei optici nu sunt folosiți, în schimbul lor utilizând metoda
detecției trecerii prin zero a tensiunii contraelectrom otoare pe faza nealimentată.
Controlul fără senzori elimină problematica instală rii senzorilor și a mentenanței, însă
poziția rotorului va fi estimată, iar circuitul de comandă a l motorului va deveni mai
complex.
Motoarele BLDC sunt tot mai utilizate în a plicații precum servosisteme, acționări cu
viteză constantă, sisteme de centrifu gare și ventilatoare, pompe, procese industriale,
tracțiuni electrice – autovehicule și mai recent periferice de calculatoare. Interesul
deosebit pentru aceste tipuri de acțion ări se datorează performanțelor remarcabile care
caracterizează motoarele BLDC: turații superioare de ordinul zecilor de mii, raport
cuplu/gabarit mare, randament și fiabilitate mare, mentenanță redusă, eliminarea
scânteilor ionizate de la colector și redu cerea generală a interferențelor
electromagnetice.
Controlul unui motor fără perii în timp real – stand didactic
2 Aplicațiile acestora se po t clasifica astfel:
• Aplicații cu încărcare constantă. Aceste aplicații sunt utilizate atunci când viteza
variabilă este mult mai importantă decât menținerea vitezei la o val oare impusă. În plus
accelerarea și frânarea nu suferă modificări dinamice. Încărcarea este suportată de axul
motorului în cazul acestor aplicații. Pentru acestea sunt necesare cele mai simple
controlere, majoritatea funcționând în buclă închisă.
• Aplica ții de poziționare. În această categorie sunt utilizate metode dif erite de
transmitere a puterii. Foarte important este răspunsul dinamic al vitezei și cuplului. De
asemenea sunt folosite pentru schimbări repetate a direcției de rotație. Un ciclu complet
cuprinde o fază de accelerare, o fază pentru păstrarea vitezei con stante și o fază pentru
frânare și poziționare. Pentru măsurarea vitezei sunt folosite encodere optice sau
resolvere sincrone. În unele cazuri, aceeași senzori sunt utilizați pentru a obține
informații cu privire la poziția relativă. De obicei aceste siste me funcționeaza într -o bucla
închisă. Există posibilitatea existenței a trei bucle de control funcționând simultan care
să realizeze:
1. Controlul cuplului ;
2. Controlul vitezei ;
3. Contr olul poziției .
Prezenta lucrare propune o metodă directă de detectare a tensiunii
contraelectromotoare pentru comanda motoarelor BLDC. Pentru această metodă ,
punctul neutru nu este necesar măsur ării tensiunii contraelectromotoare. Tensiunea
contraelectrom otoare reală din înfășurarea nealimentată se poate detecta pe durata “0”
logic a semnalului PWM , deoarece tensiunile de fază ale motorului sunt direct
proporționale cu tensiunile contra electromotoare pe faze în acel interval. În același timp
tensiunea cont raelectromotoare este raportată la nul fără a fi influențată de perturbații,
eliminând necesitatea filtrării sau atenuării în detectarea acesteia. De remarcat este
faptul că această metodă de detectarea a tensiunii contraelectromotoare are performanțe
supe rioare față de metodele existente care se bazează pe informaț ia dată de potențialul
punctului neutru, furnizând game largi de viteză cu cost redus.
Controlul unui motor fără perii în timp real – stand didactic
3 CAPITOLUL 1. DESCRIEREA FUNCȚIONĂ RII UNUI MOTOR FĂRĂ PERII
1.1. Motorul cu comutație electronică. Gene ralități
Motoarele sincrone fără perii sunt mai fiabile spre deosebire de motorele de curent
continuu cu perii, datorită sistemului de comutație și a lipsei ansamblului perii -colector.
Un motor de curent continuu fără perii este, deci un motor electric sin cron alimentat în
curent continuu care are un sistem de comutație electronic în loc de un sis tem mecanic
cu perii. În astfel de motoare curentul , cuplu, tensiunea și turația sunt dependente liniar.
Motoarele fără perii pornesc la aplicarea unei tensiuni de alimentare la bornele
motorului, în schimb cele BLDC necesită electronică pentru realizarea comutației.
Fără bobine pe rotor acesta nu este supu s forțelor centrifugale, iar pentru că
magneții sunt atașați de stator aceștia se răcesc prin conducție nemaifi ind nevoie de
ventilator pentru răcire. Tensiunea maximă ce poate fi aplicată unui astfel de motor este
foarte mare, fiind limitată doar de căldu ra ce poate afecta magneții.
Principalul dezavantaj al motorului BLDC este costul mare care reiese din două
mot ive:
• Costul mare al controlerului electronic de turație ;
• Motoarele BLDC sunt bobinate manual ceea ce implică costuri suplimentare spre
deosebire de alte tipuri de motoare, cum ar fi motoarele de curent continuu cu perii care
sunt bobinate automat cu cost uri mici. Construcția unui motor BLDC este chiar mai
simplă decât cea a motoarelor de curent continuu convenționale sau a celor de inducț ie
de curent alternativ.
Există un tip revoluționar de motor fără perii cu magneți permanenți care prezintă
aceeași co nstrucție de principiu cu motorul BLDC. Însă, acestea sunt utilizate atunci când
sunt cerute r andamente mai mari decât la motorul de cure nt alternativ, care funcționează
la viteze mici. De asemenea, motorul PMSM produce un zgomot redus și dezvoltă un cuplu
lin, comparativ cu un motor BLDC.
Clasificarea motoarelor cu comutație electronică :
Motoarele cu comutație electronică cu magneți permanenți fără perii se împart în
două categorii:
1. Motoare sincrone cu înfășurări cu repartiție sinusoidală , ne referim la motoarele
PMSM , denumite și servomotoare fără perii de tip sincron;
2. Motoare de curent continuu fără perii cu înfășurări concentrate , ne referim la
motoarele BLDC , denumite și servomotoare fără perii de curent continuu.
Motoarele BLDC se împart în moto are monofazate, bifazate și trifazate. Dintre
acestea, motoarele trifazate sunt cele mai des întâlnite .
Controlul unui motor făr ă perii în timp real – stand didactic
4 1.2. Construcția motoarelor cu comutație electronică
Un motor convențional de curent continuu este format dintr -un rotor interior cu
bobine și un sta tor exterior cu magneți. Când bobina este parcursă de curent , în rotor se
creează un câmp magnetic care interacț ionează cu cel din stator. Acest fenomen provoacă
mișcarea de rotație a rotorului. Rotația impune o modificare a direcției curentului prin
bobin ă, care produce o rotație continuă. Transferul curentului către și de la rotor este
realizat de perii care sunt fixate pe stator și apasă pe rotor, acesta fiind punctul slab al
motoarelor de curent continuu. Datorită contactului fizic dintre componente, uz ura apare
mai repede, iar în consecință este afectată și eficiența motorului. [11]
Un motor de curent continuu fără perii este similar din punct de vedere constructiv
cu un motor de curent continuu convențional, având o construc ție inversată. Ceea ce
presupune că bobinele se re găsesc la exterior și magneții permanenți la interior. [11]
Ceea ce se urmărește este inexistența unui contact fizic între stator și rotor. Statorul
este format din mai multe bob ine parcurse de curent, care creează un câmp magnetic
învârtitor. Pentru a obține șase căi diferite de parcurgere a curentului prin bobine sunt
necesare trei faze. Microcontrolerul este responsabil de redirecționarea frecventă a
curentului pentru a schimba rapid câmpul magnetic. Microcontrolerul trebuie să aibă
informații cu privire la poziția rotorului, iar această informație îi este transmisă de
senzorii cu efect Hall, sau mai modern prin detectarea nivelului tensiunii electromotoa re
autoinduse în înfășur ările statorului de cătr e magneții permanenți. Evaluarea poziției și
redirecționarea curentului a fost o reală problemă pentru microcontrolere în trecut,
motiv pentru care motoarele fără perii nu s -au bucurat de o mai mare popularit ate. Un
BLDC poate fi al imentat atât de la curent continuu cât și de la curent alternativ dacă
dispozitivul electronic conține circuitul necesar conversiei din c.a. în c.c.
Statorul (figura 1) unui motor cu comutație electronică prezintă în construcția sa
tole stivuite din oțel î n care sunt plasate înfă șurările. Exisă două tipuri de înfășurări ,
trapezoidale și sinusoidale. Această diferență este dată de interconectarea bobinelor în
înfășurările statorice pentru a rezulta diferite tipuri de tensiune contrael ectromotoare. O
analiză comparativă edificatoare a modului de construcție a motoarelor clasice de curent
continuu și a celor cu comutație electronică (obținute prin inversarea constructivă a
motoarelor de curent continuu convenționale) este prezentată în f igura 2.
Controlul unui motor făr ă perii în timp real – stand didactic
5
Figura 1. Statorul și secțiunea longitudinală a unui motor BLDC [11]
În mod obișnuit, statorul seamănă cu cel al unui motor de inducție , totuși
înfășurările sunt distribuite într -o manieră diferită. Majoritatea acestor motoare au trei
înfășurări statorice c onec tate în stea (Y) sau triunghi ( Δ). Fiecare dintre înfășurări sunt
construite din mai multe bobine conectate pentru a forma o înfășurare. Una sau mai multe
bobine sunt așezate în crestături form ând o înfășurare. Fiecare bobină este distribuită la
periferia statorului pentru a forma un număr par de poli (rotorul poate avea de la 2 până
la 8 poli).
Figura 2. Analiza comparativă a construcției motorului de c.c. convenționa l și a motorului cu comutație
electro nică [11]
Motoarele asincrone cu înfășurare trapezoidală dezvoltă o formă dreptunghiulară
(trapezoidală) a tensiunii contraelectromotoare, în vreme ce mo toarele de curent
continuu fără perii cu înfășurare sinusoidală au o tensiune contraelectromotoare
sinusoidală.
Controlul unui motor făr ă perii în timp real – stand didactic
6 Pe lângă tensiunea contraelectromotoare, curentul de fază are și el variații
trapezoidale și sinusoidale la aceste tipuri de motoare. Aceasta face ca variația cuplul ui la
un motor sinusoidal să fi e mai lină decât la un motor trapezoidal. Totuși acest lucru se
realizează cu un cost suplimentar, deoarece motorul sinusoidal are mai multe
interconexiuni între înfășurări din cauza distribuție i bobinelor la periferia stator ului,
mărind astfel consumul de cupru.
Ținând seama de inducția din rotor, se alege un material magnetic potrivit pentru
construcția sa. Pe baza densității câmpului magnetic cerut în rotor , materialul magnetic
adecvat este ales pentru a realiza rotorul. Magneții pot fi construiți din ferite sau aliaje
magnetice din pământuri rare, prima variantă are o densitate de flux mai bună, însă
inducția este mică. În ziua de astăzi, magneții din aliaje cu pământuri rare sunt preferați
în schimbul celor fabricați din f erite. În figura 3 sunt prezentate câteva dintre formele
constructive ale rotorului motoarelor cu comutare electronică.
Figura 3. Rotorul motoarelor cu comutație electronică [11]
1.3. S tructura unui sistem de acționare cu motor fără perii
În figura 4 este prezentată diagrama bloc a unui sistem de control și comandă
pentru un motor fără perii cu trei faze conectate în stea. În diagramă, blocurile sunt notate
de la A la D și acestea reprez intă componența controlerului electronic de turație. În
practică din cauza noilor concepte de proiectare, linia de demarcație dintre anumite
blocuri poate să nu mai apară, funcțiile unui grup de circuite putând fi regăsite în celălalt
grup.
Controlul unui motor făr ă perii în timp real – stand didactic
7
Figur a 4. Elementele unui sistem de acționare pentru un motor fără perii
1.4. Avantaje și dezavantaje ale motoarelor fără perii
Realizând o comparație între motoarele cu curent continuu și motoarele asincrone,
motoarele fără perii sunt net superioare.
Acestea sunt mai potrivite controlului vitezei și reglării cuplului decât celălalt tip de
motor convențional, în sensul că viteza poate fi controlată direct prin rata de comutație
electrică, câtă vreme motorul este sincronizat cu aceasta, iar controlul cuplului se poate
realiza direct cu reglarea curentului prin înfășurări. Funcționarea fără senzori fizici a
unui motor sincron fără perii de curent continuu peste o turați e minimă este
asemănătoare funcționării aceluiași tip de motor , utiliz ând senzori cu efect Hall pentru
detectarea poziției rotorului.
Motoarele sincrone fără perii necesită o întreținere minimă, fapt ce se datorează
absenței periilor de carbon, care în mod obișnuit sunt schimbate după un anumit număr
de ore de funcționare.
Acest tip de motor disipă o cantitate mare de energie prin frecare și prin încălzire,
datorită scânteilor provenite de la perii se produce un factor de distorsiune a sistemului
de alimentare prin rejectarea de impulsuri parazite în sens invers, fiind unul dintre
motivele pentru care se defectează ansamblul perii -colector.
Motoarele BLDC produc mai multă putere la ieșire, proporțional cu dimensiunile
motorului, spre deosebire de motoarele de curent continuu cu perii și cele de inducție.
Deoarece pe rotor su nt distribuiți magneți permanenți, inerția rotorului este mai mică,
față de cea înâlnită la alte tipuri de motoare. Aceast lucru îmbunătățește accelerația și
caracteristicile de decelerare, fapt ce scurtează durata ciclurilor de operare.
Caracteristicile l or liniare, viteză / cuplu permit reglajul vitezei în mod previzibil.
Controlul unui motor făr ă perii în timp real – stand didactic
8 Controlul vitezei sau comanda la distanță a unui motor sincron fără perii de curent
continuu necesită mai multe componente hardware și software în mod similar comenzii
unui motor de cur ent continuu cu perii comutat mecanic.
Utlizarea motoarelor fără perii, nu mai pune problema schimbării periilor
colectoare, făcându -le ideale pentru zonele greu accesibile și pentru aplicațiile în care
mentenanța este dificilă.
Tabelul 1. Comparație între motoarele sincrone BLDC și cele convenționale cu perii
Caracteristică Motor de curent continuu fără perii Motor convențional de curent
continuu
Comutație Electronică Mecanică
Mentenanță Mai puțin necesară datori tă lipsei peri ilor. Este necesară întreținerea
periodică.
Durată de viață Mare Medie – Scurtă
Caracteristică
viteză/cuplu Plat – Funcționează la orice viteză cu
sarcină nominală. Aproape plată – La viteze mai
mari, crește gradul de frecare al
periilor și este redus cuplu util.
Eficiență Mare – nu există cădere de tensiune pe
perii. Medie
Raportul putere
gabarit Mare – dimensiune redusă datorită bunelor
caracteristici termice. Motorul are
înfășurările pe stator, disiparea căldurii
realizându -se eficient. Mediu/mic – căldura produsă de
armătură este disipata în aer,
crescând astfel temperatura
aerului și specificațiile fiind
limitate.
Inerția rotorului Mică – Deoarece pe rotor se află magneți
permanenți, fapt ce îmbunătățește
răspunsul dinamic al motorului. Mare – Inerția rotorului
limitează răspunsul dinamic al
motorului.
Rata de viteză Mare – Nu sunt impuse limitări mecanice de
către periile colectoare. Mică – Limitări impuse de către
periile colectoare.
Gener are zgomot
electric Mic Mare – Arcurile electrice dato rită
comutației mecanice generează
interferețe electromagnetice la
echipamentele din apropiere.
Costuri de fabricație Mare – Deoarece sunt utilizați magneți
permanenți fabricați din pământuri rare . Mic
Control Complex și scump Simplu și ieftin
Cerințe p entru
conducere/ control Pentru realizarea comutației necesare este
necesar un controler, chiar și în cazul
funcționării la viteză nominală. Tot acestui
controler îi poate fi adaugat și un regulator
pentru a varia viteza . Pentru realizarea comutației nu
este necesar un controler p entru
funcționare la viteză nominală.
Este necesar utilizarea unui
regulator pentru a regla viteza .
Controlul unui motor făr ă perii în timp real – stand didactic
9 Tabelul 2. Comparație între motoarele sincrone BLDC și cele asincrone de inducție [
Caracteristic i Motor de curent continuu fără
perii Moto r asincron de inducție
Caracteristică viteză/cuplu Plat – Funcționează la orice
viteză cu sarcină nominală. Neliniară – Cuplu mic la turații
scăzute.
Raport putere /gabarit Mare – Deoarece are magneți
permanenți pla sați pe rotor se
pot obține dimensiuni reduse
pentru aceeași putere. Mediu – Deoarece statorul și
rotorul prezintă înfășurări.
Inerția rotorului Mică – Caracteristici dinamice
bune. Mare – Caracteristici dinamice
scăzute.
Curent de pornire Limitat – Nu e ste necesar un
circuit de pornire special. Foarte mare – este necesar un
circuit de comutare triunghi –
stea.
Cerințe pentru conducere/
control Pentru realizarea comutației
necesare se folosește un
controler, chiar și în cazul
funcționării la viteză nominal ă.
Tot acestui controler îi poate fi
adaugat și un regulator pentru a
varia viteza. Nu este necesară folosirea un
controler decât în cazul în care se
dorește viteză variabilă.
Alunecare Nu există alunecare între
frecvența rotorului și cea a
statorului. Rotoru l funcționează la o
frecvență mică comparativ cu
frecvența de alunecare a
statorului, aceasta crește odată
cu sarcina motorului.
1.5. Funcționarea unui motor fără perii utilizând un model simplificat
Se consideră un motor cu trei înfășurări A, B și C, plasate la 120 ° una față de alta
după cum este ilustrat în figura 5. Rotorul este compus dintr -un magnet permanent din
pământuri rare ce are un flux magnetic mult mai mare față de alte materiale magnetice.
În figura 5, rotorul are ca reprezentare echiv alentă o bară magnetică a cărei axă de rotație
este intersecția celor t rei axe A, B și C, perpendiculară pe planul acestora. Folosind
secvența corespunzătoare pentru alimentarea înfășurărilor, este creat și men ținut un
câmp rotativ pe stator.
Atât orienta rea cât și poziția magnetului permanent poate fi controlată prin
combin area curenților de pe fazele A, B și C. Bara magnetică ajunge în poziția 1 , atunci
când este aplicat un curent de la terminalul C la B și ajunge în direcția opusă 4 , atunci
când se apli că un curent de la terminalul B la C. Pentru un motor sincron fără peri i de
curent continuu dispus cu senzori cu efect Hall se poate determina poziția curentă a
rotorului.
Controlul unui motor făr ă perii în timp real – stand didactic
10
Figura 5. Modelul simplificat al motorului sincron fără perii de curent continuu
Deplasarea rotorului induce tensiunea alternativă trapezoidală în înfășurările
fazelor numită în literatura de specialitate tensiune contraelectromotoare . Amplitudinea
tensiunii contraelectromotoare este proporțional ă cu tura ția rotor ului și dependentă de
poziția rotorului. Fiecare fază are asociată un senzor cu efect Hall, faza A cu H1, faza B cu
H2 și faza C cu H3. Ori de câte ori polii magnetici ai rotorului trec în apropierea senzorilor
Hall, ei trimit un semnal înalt sau scăzut, indicând dacă polul N s au S a trecut în apropierea
senzorilor.
Tensiunea contraelectromotoare poate fi modelată ca o sursă de tensiune conectată
în serie cu fiecare înfășurare ce are amplitudinea tensiunii proporțională cu viteza
rotorului. Tensiun ea contraelectromotoare variază cu unghiul format din axa înfășurării
și poziția rotorului.
Comparativ cu motoarele cu inducție, motoarele sincrone de curent continuu fără
perii, nu au probleme de tip „alunecări”.
Cel mai utilizat mod de funcționare este cel în 3 faze, deoarece oferă o eficiență mai
bună și un cuplu redus, deși implică creșterea costurilor și comutarea fazelor este una
complexă, precizia controlului este mare.
Forma de undă a tensiunii contraelectromotoare deosebește motoarele sincrone
fără perii de curent continuu de cele de curent alternativ, ambele având ca sursă de
excitație un magnet permanent montat pe rotor. La motoarelele de curent alternativ
forma de undă a tensiunii contraelectromotoare este sinusoidală (figura 6) în timp ce la
motoarele de curent continuu est e trapezoidală, după cum este ilustrat în figura 7.
Controlul unui motor făr ă perii în timp real – stand didactic
11
Figura 6. Forma de undă a t.c.e.m , corespunzătoare motoarelor BLDC
Figura 7. Forma de undă a t.c.e.m , corespunzăt oare motoarel or PMSM
1.6. Comutația electronică a fazelor motorului
Fiecare fază conține un terminal al motorului aflat în starea „high” un terminal al
motorului aflat în starea „low” și un terminal în starea „float” care definesc cele șase
poziții ale rot orului. Comutarea curențil or are loc astfel încât rotorul se deplasează la
următoarea poziție , ceea ce determină rotirea rotorului . Fiecare poziție a rotorului are
asociată o configurare a înfășurărilor. Prin schimbarea succesivă a configurării
înfășurăril or se pot obține rotații î nainte sau înapoi în funcție de ordinea succesiunii
fazelor. Comandarea curenților de pe înfășurări se face cu ajutorul unor tranzistoare de
comutație de putere, fiecare înfășurarea are propriul tranzitor. De regulă acestea sunt
MOSFET -uri comandate în imp ulsuri modulate în durată cu scopul de a ajusta tensiunea
pe înfășurări. Schema de comutare a fazelor motorului este prezentat în figura 8.
Controlul unui motor făr ă perii în timp real – stand didactic
12
Figura 8. Cele șase secvențe de comutare a înfășurărilor mot orului
Un aspect foarte important care trebuie reținut când vorbim de astfel de circuite
este acela că ambele stări „high” sau „low” ale aceluiași circuit de comutație nu trebuie
alimentate concomitent. Activarea în același timp a ambelor circuite poartă denumirea
de controlul timpului mort. Tranziția de la starea „high” la starea „low” este posibilă în
momentul în care starea „high” devine inactivă înainte de a activa starea „low”. Circuitele
de comuta ție necesită o durată mai mare de timp pentru a deve ni inactive, decât pentru
a se active, deoarece treb uie să ne asigurăm că nu sunt activate ambele circuite. Timpul
mort este inererent pentru motoarele cu comutație electronica trifazată, deci nu este
necesar un timp suplimentar pentru controlul timpului m ort.
Considerând primele 2 șabloane din figura 8 observăm că terminalul C respectiv
terminalul B sunt conectate la masă, terminalele B și C sunt alimentate , iar terminalele A
sunt neconectate.
Comutația electronică este o secvență repetitivă de 11N00N, în care cifra 0 ,
reprezintă conexiunea la masă, cifra 1 reprezintă conexiunea la tensiunea de alimentare,
iar N indică faptul că terminalul este neconectat. Aceeași secvență decalată cu doi pași
este aplica tă terminalului B, respectiv patru pași pentru termi nalul C față de acest
terminal.
Controlul unui motor făr ă perii în timp real – stand didactic
13
Figura 9. Schema simplificată a unui invertor cu trei faze
Pe baza schemei simplificată a unui invertor trifazic (figura 9 ) se poate determina
modul de comandă al tranzistoarelor utilizând microco ntrolerul. Pentru a realiza o
rotație completă în sens orar tre buie aplicată secvența 123456 a pașilor de comutație, iar
pentru o rotație în sens antiorar trebuie aplicată secvența 654321. În T abelul 3 sunt
prezentate comenzile ce trebuie aplicate pe fieca re fază în funcție de sensul de rotație
dorit .
Tabelul 3. Succesiunea comenzilor pe fazele motorului pentru o rotație completă
Sens Pași Faza A Faza B Faza C
Înainte 123456 N00N11 11N00N 0N11N0
Înapoi 654321 11N00N N00N11 0N11N 0
Figura 10. Semnalele de comandă a invertorului trifazic pentru o rotație completă
Controlul unui motor făr ă perii în timp real – stand didactic
14 Indiferent de tipul configurației motorului, punctul median neutru trebuie să fie
disponibil pentru a putea măsura tensiunea contraelectromotoa re. În unele situații
motorul BLDC este prevăzut cu un al patrulea terminal, iar în acest caz tensiunea
contraelectromotoare d e pe fiecare înfășurare poate fi măsurată direct . Potențialul de pe
terminalul median neutru este influențat de tensiunea de alim entare și totodată de
tehnica de modulație a impulsurilor în durată. În cazul în care acest terminal nu este
disponibil, se poa te reconstrui din punct de vedere electric prin aplic area tehnic ii
modulației simetrice a PWM -ului, tensiunea acestui punct se po ate calcula indirect .
1.7. Comutația fără senzori
Controlerele fără senzori se bazează pe estimarea software , care înlocui esc senzorii
hardware. Sarcina unui estimator este să furnizeze informații despre poziția rotorului ,
aceleași informații sunt transmis e și de senzorii harware. În zilele noastre se folosesc
multe tipuri de estimatoare: de la observere matemati ce simple p ână la algoritmi optimi
avansați cum ar fi filtrele Kalman.
Controlul precis al invertoarelor PWM și măsur area exact ă a curenților motor ului
sunt imperios necesare pentru ca aceste estimatoare să funcționeze în mod corect. În
acest caz înlăturar ea senzorilor harware conduce la creșterea numărului de calcule
pentru controler.
Utilizarea procesoarel or de semnal digital , permit atingerea de r andamente
superioare, fiabilitate mare și îmbunătățirea nivelului de zgomot. Viteza de calcul foarte
mare a a cestor dispozitive face ca cea mai mare parte a controlului motorului să poată fi
făcută de soft. Un număr mic de pini combină puterea de calcul a DSP -ului cu un convertor
analog -numeric integrat și un PWM trifazat pentru a realiza cea mai mare parte a
controlului fără senzori.
1.8. Control PWM
Metoda ce va fi utilizată pentru controlul tensiunii și implicit a turației, cea mai
folosită pentru motoar ele BLDC, este modulația în durată a impulsurilor . În continuare
este prezentată relația dintre tensiunea de alimentare a invertorului și tensiunea aplicată
în stat orul motorului fără perii :
Umed=d∙Udc (1)
d=Tpornit
Tpornit+Toprit=Tpornit
T (2)
d[%]=d∙100 (3)
în care:
Umed− tensiunea medie în înfășurările statorice;
d− factor de umplere;
Udc− tensiunea de alimentare a invertorulu i;
Tpornit− perioadă de conducție a unui tranzistor;
Toprit− perioada de blocare a unui tranzistor;
T− perioada unui ciclu PWM.
Controlul unui motor făr ă perii în timp real – stand didactic
15 Pentru c a motorul să atingă turația nominală este indicat ca tensiunea aplicată
invertorului să fie cu cel puțin 10% mai mare decât tensiunea nominală a motorului.
În funcție de modul cum este poziționată perioada de conducție pentru diferiți
factori de umplere, se mnalul PWM poate fi standard sau simetric.
Perioada semnalului de ieșire, adică a unui ciclu PWM este dependentă de numărul
de biți ai numărătorului care transmit semnalul rampă de referință și frecvența la care
operează acest numărător. Relația de mai jos exprimă dependența menționată anterior.
FPWM =fintrare
c∙(2b−n) (4)
în care :
b− număr de biți pe care se face contorizarea p erioadei PWM;
c− 1 pentru PWM standard și 2 pentru PWM simetric;
n− pentru n=0 se ob ține frecvența maximă a semnalului PWM;
fintrare− frecvența semnalului de ceas.
Modul de generare a semnalului PWM, cel mai des folosit pentru controlul
motoarelor BLDC este conform referințelor , fiind modul standard sau “edge -aligned”.
Când se face alegerea frecvenței semnalului PWM trebuie avute în vedere câteva aspecte.
Cu cât frecvența semnalului PWM este mai mare cu atât sunt mai mari și pierderile la
comutația tranzistorilor. Aplicarea unei frecvențe prea mici a semnalului PWM va avea
efect asupra curentului din înfășurările statorice a cărui profil va fi compus dintr -o serie
de impulsuri de v alori mari, urmate de intervale în care valoarea curentului este zero,
acesta putând realiza o rotație sacadată a motorului și de asemenea un cup lu intermitent.
Frecvența ideală este dependentă de caracteristicile motorului, în special de valoarea
inducției înfășurărilor statorice. O valoa re convenabilă a frecvenței semnalului PWM se
regăsește în intervalul 10 – 20 KHz. Aceasta adaptându -se și la v aloarea frecvenței de
intrare disponibil ă. [1]
Semnalul PWM poate fi generat utilizând microcontrolere de tip Arduino. Având în
vedere că Arduino scoate la porturile sale digitale, semnal digital (cu doar două nivele –
5V și 0V), semnalul PWM constituie o modalitate de a trasmite în exterior informație care
să varieze pe mai multe trepte. Astfel, dacă este modifica t raportul între cât timp semnalul
se află în 5V și cât timp acesta se află la 0V, rezultă un semnal a cărui putere se modifică
în trepte. Acest raport se numește “factor de umplere” al semnalului PWM.
Arduino Mega generează semnal PWM pe porturile digitate de la pinul 2 (inclusiv)
până l a pinul 13 și de la pinul 44 la pinul 46.
În figura 11 sunt prezentate componentele semnalului PWM.
Controlul unui motor făr ă perii în timp real – stand didactic
16
Figura 11. Componentele semnalului de tip PWM
Un semnal PWM este un semnal dreptunghiular caracterizat de :
➢ valoare minimă (0V);
➢ valoare maximă (5V);
➢ perioadă (durată);
➢ factor de umplere ( perioadă ).
Una dintre cele mai comune aplicații ale semnalului PWM este cea în care se
real izează controlul motoarelor de curent continuu. Un motor de curent continuu căruia
îi este aplicat un semnal PWM cu factor de umplere 100% va funcționa la viteză maximă.
Dacă factorul de umplere este redus la 50%, ș i viteza motorului va fi modificată în
consecință (având în vedere că jumătate de timp va fi practic acționat, în timp ce în
cealal tă jumătate de timp, acesta se va învârti din inerție).
1.9. Comutarea în șase pași trapezoidali a motorului
Metoda de alimen tare a înfășurărilor motorului în algoritmul fără senzori
presupune comutare trapezoidală în șase pași sau 120 ° electrice. Pentr u a porni motorul
BLDC, înfășurările statorului trebuie să fie alimentate într -o ordine corectă, secvențele
fiind determinate pe baza semnalelor de poziționare a rotorului. Pentru comanda
înfășurărilor motorului se utilizează metoda celor șase pași trapezo idali prezentată în
figura 12.
Controlul unui motor făr ă perii în timp real – stand didactic
17
Figura 12. Succesiunea celor șase pași de comutație
Săgețile din d iagramă indică direcția curentului prin înfășurările motorului pentru
fiecare din cei șase pași de comutație. Graficul de mai jos ilustrează tensiunea aplicată pe
fiecare din terminalele motorului pe perioada celor șase pași de comutație. Parcurgerea
acest or pașilor de comutație determină o rotație completă a rotorului
Figura 13. Comuta ția motorului prin metoda celor șase pași trapezoidali
Controlul unui motor făr ă perii în timp real – stand didactic
18 Tabelul 4. Secvențe de comutare
Interval de
comutare
Număr
secvenț ă
Faza A Faza B Faza C
𝟎°−𝟔𝟎° 0 + – Neconectată
𝟔𝟎°−𝟏𝟐𝟎° 1 + neconectată –
𝟏𝟐𝟎°−𝟏𝟖𝟎° 2 neconectată + –
𝟏𝟖𝟎°−𝟐𝟒𝟎° 3 – + Neconectată
𝟐𝟒𝟎°−𝟑𝟎𝟎° 4 – neconectată +
𝟑𝟎𝟎°−𝟑𝟔𝟎° 5 neconectată – +
O secvență de comutare este formată din cele trei înfășurări care are la bază
principiul prezentat anterior . Faptul că în fiecare secvență de comutare există o
înfășurare neconectată este o caracteristică importantă a controlului în șase pași care
permite utilizarea unui algoritm de control fără senzori.
1.10. Metode de măsurare a tensiunii contraelectromotoare
Atunci când motorul sincron pornește , pe fiecare înfășurare este generată o
tensiune contraelectromotoare conform legii l ui Lenz (relației 5) și se opune tensinii de
alimentare furnizată.
Bemf=N∙l∙r∙B∙ω (5)
în care:
Bemf− tensiunea contraelctromotoare [V];
N− numărul de înfășurări pe fază;
l− lungimea rotorului [m];
r− raza internă a rotorului [m];
B− densitatea fluxului magnetic [T];
ω− viteza unghiulară [rad/sec].
Polaritatea acestei tensiuni contraelectromotoare este în sens opus față de
tensiunea de alimentare a înfășurării. Tensiunea contraelectromotoare depinde în
principal de viteza unghiulară a rotorului, câmpul magnetic generat de magneții rotorului
și de num ărul de rotații în înfășurările statorului.
Forma de undă a tensiunii contraelectromo toare a motorului variază în funcție de
poziția rotorului, cât și de viteza sa. Detecția poziției folosind tensiunea
contraelectromotoare la viteze mici sau la oprirea r otorului este imposibilă. Cu toate
acestea există multe aplicații (ventilatoare, insta lații frigorifice, aspiratoare, pompe) , care
nu necesită controlul poziției sau control în buclă închisă la viteze reduse.
Controlul unui motor făr ă perii în timp real – stand didactic
19 Pentru aplicațiile enumerate, metoda detecției back EMF este agreată. Majoritatea
metodelor pot fi descrise după cum urmează:
1. Detecția trecerii prin zero a tensiunii de pe terminalele motorului fie prin
măsurarea directă, fie prin determinarea acesteia, fiind necesară cunoașterea secvențelor
de comutare și a tensiunii de alimentare.
2. Detecția trecerii prin zero a tensiunii de pe f azele motorului față de punctul de
mijloc, func ționând doar în cazul motoarelor a căror înfășurări sunt conectate în stea (Y)
sau triunghi ( ∆).
3. Detec ția gradientului a curentului de alimentare se bazează pe o formă
caracteristică a acestuia pe măsură ce rotorul întârzie sau avansează față de comutația
electronică.
Aplicația curentă se bazează pe reconstruirea tensiunii punctului median și
detectarea tr ecerii prin zero a fazei nealimentate. Prin urmare, metoda de detectare a
tensiunii contraelectromotoare poate fi implementată doar dacă este utilizată metoda de
comutație cu șase pa și trapezoidali. Tehnica trecerii prin zero a back EMF a fost aleasă
din u rmătoarele considerente:
• Este compatibilă cu o gamă largă de motoare ;
• Poate fi aplicată motoarelor co nectate în stea și triunghi;
• Nu necesită cunoașterea amănunțită a parametrilor motorului;
• Este insensibilă la variația parametrilor motorului;
• Funcționează împreună cu metoda controlului în curent, dar și în tensiune;
• Tehnica trecerii prin zero se potr ivește cu o gamă largă de aplicații unde controlul
în buclă închisă pentru viteze reduse nu este necesar.
Figura 14. Detecția trecerilor prin zero a tensiunii contraelectromotoare
Controlul unui motor făr ă perii în timp real – stand didactic
20 Fiecare pas corespunde uneia din cele șase porț iuni egale de 60 ° ce formează o
rotație electrică. De remarcat este faptul că numărarea pașilor de comutație este aleasă
arbitrar. Comutațiile se produc la capătul fiecărui pas. Prin urmare, este necesar să se facă
detecția acestora, însă există o deplasar e de 30° între mo mentul trecerii prin zero a
tensiunii contraelectromotoare (t.c.e.m.) și comutația necesară la următorul pas, care v or
trebui compensate pentru a asigura o funcționare eficientă și fără probleme a motorului.
În figura 14 pot fi observate f ormele de undă ideale ale tensiunii
contraelectromotoare. Presupunem că un motor de curent continuu fără perii are doar
trei terminale asociate celor trei faze. În acest caz, motorul are disponibile doar trei
terminale pentr u detecția t .c.e.m. iar potenți alul de pe punctul median al motorului
trebuie determinat, deoarece generarea tensiunii contraelectromotoare se face față de
punctul median.
1.11. Metode utilizate pentru detec ția trecerii prin zero a tensiunii
contraelectro motoare
În acest paragraf sunt descrise metodele de detecție a t.c.e.m. cele mai cunoscute:
Compararea tensiunii contraelectromotoare cu jumatatea tensiunii de alimentare
folosind comparatoare, Compararea tensiunii contraelectromotoare cu punctul median
reconstruit al motorului și utili zarea unui convertor analog -digital.
Prima metodă este descr isă în figura 15. Faza A este conectată la borna pozitivă a
sursei de alimentare, faza C este conectată la borna negativă a sursei de alimentare , iar
faza B este lăsată deschisă. În momentul în c are tensiunea contraelectromotoare este
detectată în fază B, aceasta crește și descrește în funcție de conectarea și deconectarea
sursei de alimentare la capetele infășurărilor în timpul secvenței de alimentare. Prin
comparația tensiunii electromotoare cu ½ din tensiunea de alimentare va rezulta
tensiunea punctului central din faza A și C.
Fiecare fază trebuie să aibă un astfel de circuit. Combinația acestor trei semnale este
folosită pentru a compune secvența de comutație.
Figura 15. Tensiunea electromotoare comparată cu ½ din tensiun ea de alimentare
Controlul unui motor făr ă perii în timp real – stand didactic
21 O a doua metodă constă în compararea tensiunii contraelectromotoare cu punctul
median reconstruit al motorului (figura 17) , creat cu ajutorul unei rețele de rezistențe
conectate în paralel cu înfășurările motorului. În momentul în ca re tensiunea
contraelectromotoare indusă în înfășurare trece prin zero spre partea pozitivă, ieșirea
comparatorului face o tranziție de la stare a „0” către starea „1”. În momentul în care
tensiunea e lectromotoare trece prin zero și coboară în partea nega tivă, ieșirea
comparatorului face o tranziție de la starea „0” către starea „1”. Combinarea acestor
semnale este utilizată pentru a forma secvența de comutație.
Figura 16. Compararea t.c.e.m cu punctul median reconstruit
O a treia metodă de detectare a trecerilor prin zero constă în utilizarea unui
convertor analog -digital (CAN) așa cum este prezentat în figura 17. Folosind un divizor
de tensiune , se coboară tensiunea contra electromotoare la un nivel care microco ntrolerul
îl poate măsura. Acest semnal este format de CAN și comparat mereu cu o valoare digitală
corespunzătoare punctului zero. Atunci când cele două valori se potrivesc , secvența de
comutație este refăcută.
Controlul unui motor făr ă perii în timp real – stand didactic
22
Figura 17. Măsurarea tensiunii electromotoare utilizând un CAN
1.12. Modelul matematic al motorului BLDC
Figura 18. Schema bloc a sistemului de reglare a turației unui motor fără perii
Elemente componente a le schemei de reglare:
• Element de comparație ;
• PI- regulator cu componentă proporțională și integra tivă;
• ESC- controler electronic de turație ;
• Motor de curent continu u trifazat .
Mărimi care intervin în schema de reglare :
• Ref− referință;
• ε− semnal de eroa re;
• u− mărime de intrare a sistemului (comandă);
• A,B,C− fazele motorului;
• ω− mărime de ieșire a sistemului (turație).
Controlul unui motor făr ă perii în timp real – stand didactic
23 Modelul matematic pentru lungimea armăturii :
Va=iaR+(L−M)dia
dt+ea (6)
Vb=ibR+(L−M)dib
dt+eb (7)
Vc=icR+(L−M)dic
dt+ec (8)
în care:
Va,Vb,Vc− tensiunile pe fiecare din cele trei faze statorice[V];
ia,ib,ic− curenții pe fiecare din cele trei faze statorice [A];
ea,eb,ec− tensiunile electromotoare corespunzăto are celor trei faze;
L− inductanța pe faza a,b și c;
M− inductanța mutuală;
L− inductanța proprie pe armătură [ H];
R− rezistența armăturii [ Ω].
Figura 19. Circuitul echivalent al motorului BLDC și al comenzii acestuia
Tensiunea contraelectromotoare este deplasată cu 120 ° electrice de la o fază la alta
și poate fi exprimată ca:
ea=kef(θe)ωm (9)
eb=kef(θe−2π
3)ωm (10)
ec=kef(θe+2π
3)ωm (11)
în care:
ωm− viteza unghiulară a rotorului [rad. s−1];
ke− constanta back EMF [V/rad. s−1];
f(θe)− funcția trapezoidală ;
θe− unghiul electric al rotorului .
Controlul unui motor făr ă perii în timp real – stand didactic
24 Ma=Ktiaf(θe) (12)
Mb=Ktibf(θe−2π
3) (13)
Mc=Kticf(θe+2π
3) (14)
Me=Ma=Mb=Mc (15)
Prin reducerea ecuațiilor ( 13)-(12) și ( 14)-(13) obținem :
Vab=R(ia−ib)+(L−M)d
dt(ia−ib)+Eab (16)
Vbc=R(ib−ic)+(L−M)d
dt(ia−ib)+Ebc (17)
Vca=R(ic−ia)+(L−M)d
dt(ic−ia)+Eca (18)
Curentul total pe faze conform Kirchoff este :
ia+ib+ic=0 (19)
Ecuația (19) poate fi scrisă ca:
𝑖𝑐=−(𝑖𝑎+𝑖𝑏) (20)
Conform ecuației (20) și înlocuindu -l pe 𝑖𝑐 în ecuația (19) obținem :
Vbc=R(ib+ia+ib)+(L−M)d
dt(ia+ib+ib)+Eab (21)
Prin restrângerea parantezelor, ecuația (21) rescrisă are forma :
Vbc=R(ia+2ib)+(L−M)d
dt(ia+2ib)+Eab (22)
Vca=R(−ia−ib−ia)+(L−M)d
dt(−ia−ib−ia)+Eca (23)
La rândul său, ecuația (23) rescrisă are forma :
Vca=−R(2ia+ib)+(L−M)d
dt(−2ia−ib)+Eca (24)
dia
dt=−R
Lia+2
3L(Vab−Eab)+1
3L(Vbc−Ebc) (25)
dib
dt=−R
Lib−1
3L(Vab−Eab)+1
3L(Vbc−Ebc) (26)
Cuplul electromagnetic produs de un motor BLDC poate fi exprimat ca :
M=eaia + ebib + ecic
ωm (27)
Cuplul electromagn etic generat de motor este de asemenea, proporțional cu
constanta de cuplu Kt și cu produsul de curent cu poziția rotorului.
M=Kt[f(θe)ia+f(θe−2π
3)ib+f(θe+2π
3)ic] (28)
Controlul unui motor făr ă perii în timp real – stand didactic
25 în care:
M− cuplu electromagnetic [Nm];
Kt− constanta de cuplu [Nm/A].
În condiții de funcționare normală, cuplul electromagnetic va fi contrabalansat de
cuplul de sarcină, cuplul de inerție și frecare. Prin urmare,
M=ML+Jdωm
dt+βωm (29)
în care:
ML− cuplu de sarcină [Nm];
J− momentul de inerție [kgm2];
β− factor de amortizare [Nm/rad. s−1].
Transformarea Laplace a ecuației ( 29)
M(s)=ML(s)+sJωm(s)+βωm(s) (30)
Ecuația (30) rescrisă este de forma:
ωm
𝑚𝑒−𝑚𝑟=1
sJ+β (31)
Raportul dintre viteza rotorului și poziția rotorului este dat de relația (32):
dθe
dt=p
2ωm (32)
în care:
p− numărul de poli ;
ωm− viteza rotorului [ rad−1];
θe− poziția rotorului electric [rad] .
Ecuațiile ( 12), (22) și (3 0) pot fi transformate în domeniul Laplace cu Teorema
diferențierii, care mai apoi poate fi exprimată sub formă de ecuații de stare care dau o
intrare -multiplă -ieșire -multiplă (MIMO), corelație care este foarte importantă în
simularea pe calculator. Ecuațiile de stare ale motorului DC fără perii sunt :
⌊iȧ
iḃ
ωṁ⌋=
⌊ −R
L00
0−R
L0
00−β
J⌋
⌊ia
ib
ωm⌋+
⌊ 2
3L1
3L0
−1
3L1
3L0
001
J⌋
⌊Vab−eab
Vbc−ebc
Te−TL⌋ (33)
⌊ia
ib
ωm⌋=⌊100
010
001⌋⌊ia
ib
ωm⌋ (34)
Controlul unui motor făr ă perii în timp real – stand didactic
26 1.13. Algoritmul de control PID pentru un motor fără perii
În acest capitol se va prezenta acordarea unui regulatoar PID cu timp continuu prin
metoda alocării polilor.
În fig ura 20 este prezentată schema de reglare a unui proces de oridul II, comandat
printr -un regulator PID cu timp continuu.
Figura 20. Reglarea unui proces de ordinul II cu regulator PID cu timp continuu
Un regulator PID calculează c ontinuu o valoare de eroare e(t) ca diferența între o
valoare de referință dorită și o variabilă de proces măsurată, iar apoi aplică o corecție
bazată pe valoarea instantanee a erorii, pe derivata și integrala acesteia.
Func ția generală de control poate fi exprimată prin următoarea relație :
u(t)=KP∙e(t)+KI∙∫e(t
0τ)dτ+KDdε(t)
dt (35)
Unde KP, KI, KD, sunt constante ce ponderează componenta proporțional ă, pe cea
integr ală și respectiv componenta derivativ ă. Proiectarea regulatorului constă în
identificarea valorilor corespunzătoare ale acestor constante.
Semnificația fizic ă a fiecărui termen:
• Termenul proporțional compensează valoarea curentă a erorii. Dacă de exemplu
eroarea este de valoare mai mare și pozitivă, atunci și termenul proporțional va avea
valo are mare și pozitivă.
• Termenul ce însoțește integrala, acționează în funcție de suma valorilor
precedente ale erorii. De exemplu, dacă ieșirea curentă nu este suficien t de puternică,
integrala erorii se va acumula în timp, iar controlerul va răspunde aplic ând o acțiune mai
puternică.
• Termenul derivativ compensează posibile tendințe viitoare ale erorii, pe baza
ratei actuale de variație. De exemplu, când termenul propor țional aduce eroarea spre o
valoare apropiată de zero, acesta duce eroarea către o valoare negativă, apărând oscilații
amortizate ce duc la un timp de stabilizare mai mare. Termenul derivativ atenuează
suprareglajul și asigură o convergență mai rapidă.
O altă formă de prezentare a interdependenț ei între ieșire a unui regulator PID
este: :
u(t)=KU(e(t)+1
𝑇𝐼 ∙∫e(t
0τ)dτ+TDdε(t)
dt) (36)
în care :
KU− amplificare a de comandă ;
TI− constanta de timp de integrare ;
TD− constanta de timp de derivare.
Controlul unui motor făr ă perii în timp real – stand didactic
27 Relația (35) este definită pentru a marca timpul în secunde , iar relația (36) pentru
a marcare timpul în minute. Interdependența celor două familii de parametrii este
imediată .
KP=KC
KI=KC/TI (37)
KD=KC∙TD
Stabilirea parametrilor regulatorului PID cu ajutorul criteriului Ziegler –Nichols este
deosebit de simplă și se bazează exclusiv pe limita de stabilitate a sistemu lui funcționând
în circuit închis în absența regulatorului. Este necesar să stabilim factorul de amplificare
limită, deci factorul de amplificare care asigură funcționarea auto -oscilantă a sistemului
funcționând în circuit închis. De asemenea este necesară stabilirea perioadei de oscilație
pentru un astfel de regim.
Dacă vom nota Klim valoarea amplificării care asigură funcționarea la limita de
stabilitate și Tlim, perioada de auto -oscilație a sistemului parametrii regulatorului se
determină pe baza relații lor prezentate în Tabelul 5.
Tabelul 5. Structura regulatorului în buclă deschisă
Regulator 𝐊𝐔 𝐓𝐈 𝐓𝐃
P 0.5∙Klim – –
PI 0.45∙Klim Tlim
1.2 –
PID 0.6∙Klim Tlim
2 Tlim
8
Valorile parametrilor din Tabelul 5 caracterizează structura regulatorului din relația
(36). Conversia valorilor parametrilor pentru relația (35) se regăsește în Tabelul 6.
Tabelul 6. Structura regulatorului în buclă închisă
Regulator 𝐊𝐔 𝐓𝐈 𝐓𝐃
P 0.5∙Klim – –
PI 0.45∙Klim 0.54Klim
Tlim –
PID 0.6∙Klim 1.2Klim
Tlim 0.0075∙Klim∙Tlim
În proiect area unui regulator nu este obligatorie folosirea tuturor termenilor. Se pot
realiza cu succes regulatoare de tip PI sau PD. Regulatoarele PI sunt preferate atunci când
mărimea eșantionată de bucl ă de reacție este foarte zgomotoasă, iar termenul derivativ
ar amplifica aceste perturbații.
Controlul unui motor făr ă perii în timp real – stand didactic
28 CAPITOLUL 2. STRUCTU RA HARDWARE ȘI SOFTW ARE
În acest capitol sunt descrise componentele hardware utilizate pentru crearea
standului didactic și soft-ul dezvoltat pentru a putea monitoriza răspunsul sistemului pe
baza ref erinței impuse , a parametrilor regulatorului și al encoderului .
2.1. Structura mecanică
Figura 21, ilustrează implementarea practică a standului . Toate componentele au
fost amplasate pe o placă realizată la o imprimanta 3D, care este prevăzută cu suporți
pentru ansamblu motoreductor și encoder.
Părțile componente ale structurii sunt:
• Placa suport ;
• Potențiometru ;
• Motor fără perii ;
• Reductor ;
• Cuplaj ;
• Encoder .
Un dezavantaj inevitabil este scăderea randamentului acestui ansamblu , care se
datorează frecări lor interne din lagărele reductorului , ce duc la imposibilitatea găsirii
unui model matematic exact ce caracterizează sistemul.
Figura 21. Sistemu l de control
Controlul unui motor făr ă perii în timp real – stand didactic
29 2.2. Strctura circuitului electronic
Principalele blocuri electronice sunt:
• Arduino Mega 2560 ;
• Modul de comunica ție ethernet ;
• Controler electronic de turație .
Figura 22. Stand didactic
La intrarea sistemului este introdusă o referință (viteză), iar Arduino calculează
valori le ce sunt transmi se ESC -ului. Regulatorul transmite comanda ESC -ului pentru a
comanda tensiunea aplicată la bornele motorului. Encoderul transmite feedback -ul către
Arduino. Date le preluate de la Arduino sunt stocate în MySQL, iar în final încărcate în
interfața web. Toate aceste explicații sunt asociate schemei bloc a sistemului prezentată
în figura 22.
Controlul unui motor făr ă perii în timp real – stand didactic
30
Figura 23. Schema bloc a sistemului MOTOR
BLDC MEGA 2560
ESC
ENCODER
BAZA DE DATE
INTERFAȚĂ
PHP
JS
AJAX
HTML
Controlul unui motor făr ă perii în timp real – stand didactic
31 2.3. Motor
Motorul folosit este un MODELCRAFT H URRICANE 11T, acesta este alimentat la o
tensiune de 12V și poate atinge până la 43.500 rpm. Din acest considerent s -a ales un
motor fără perii în loc de un motor clasic de curent continuu, fiindcă poate atinge viteze
de rotații foarte mari și oferă o seri e de avantaje prezentate în capitolele anterioare .
Figura 24. Motor fără perii MODELCRAFT HURRICANE 11T
Tabelul 7. Specificații tehnice ale motorului fără perii
SPECIFICAȚII TEHNICE
Alimentare acumula tori 6 până la 8 celule NiMH sau 2 -3 Li-Poly
Masă 97 g
Diametru ax rotor Φ1.8 mm
Curent 25 A/1 s sau 20 A/30 s
Viteză în gol 43.500 rpm la 7.2 V
Putere 140 W
Înfășurări 11
Viteză de ceas 8 KHz
Tura ție nominal ă 30000 RPM
Controlul unui motor făr ă perii în timp real – stand didactic
32 2.4. Unitate de contr ol electronic a turație i
Figura 25. Controler electronic de turație TURNIGY
Tabelul 8. Specificații tehnice ale controlerului electronic de turație
SPECIFICAȚII TEHNICE
Curent 20 A
Tensiune de intrar e 2-4 celule Li -Poly
Ieșire BEC 5 V/ 4A
PWM 8 KHz
Turație maximă 240.000 rpm pentru motoare fără perii cu
2 poli
Dimensiune PCB 40 mm x 25 mm
Microcontroler Atmel
Masă 30 g
2.5. Encoder
Encoderele incrementale sunt traductoare de poziție unghiulară folosite pe scară
largă în domeniul automatizărilor industriale. Acestea pot fi folosite ca elemente de
măsură pentru poziția și viteza axului motorului și transmit aceste informații
convertizoarelor de frecvență pentru comanda motoarelor. Prezența encode relor
incrementale în bucl ă de comandă permite o poziționare extrem de precisă a elementelor
de execuție acționate de motoare totodată și un control superior al dinamicii ac estor
elemente. [8]
Encoderele transmit la fiecare revoluție un număr de impulsuri p rin citirea cărora se
poate determina la un moment dat poziția unghiulară relativă cât și viteza și direcția de
rotație a axului. Acest lucru este permis datorită existenței mai multor canale de semnale
defazate corespunzător denumite, în literatura de spe cialitate, de cele mai multe
ori A, B, Z. Unele encodere transmit și negatele acestor semnale: A/, B/, Z/, iar altele pot
transmite semnale de o mai mare complexitate.
Controlul unui motor făr ă perii în timp real – stand didactic
33
Figura 26. Encoder incremental HEDR -5420 -ES214
Elementele pr incipale sunt un disc rotativ montat pe ax, un emițător de lumină și
un receptor optic. Discul este împărțit în mai multe zone opace în alternanță cu zone
transparente. Prin rotația discului în fața sursei de lumină zonele opace întrerup
fasciculul de lumi nă, iar detectorul va constata o succesiune de impulsuri luminoase ce
va fi convertită într -o succesiune de impulsuri electrice. Un encoder cu un singur ca nal
– A, denumit encoder tahometru, generează un tren de impulsuri a cărui frecvență indică
viteza de rotație. Un encoder cu două canale – A și B denumit encoder în cuadratură,
generează două trenuri de impulsuri defazate cu 90 grade electrice. Acest tip d e encoder
indică atât poziția cât și direcția de rotație. Poate exista și un al treilea canal numit
referință sau zero – Z, care la fiecare revoluție generează un impuls .[8]
Figura 27. Forme de undă rezultate
Controlul unui motor făr ă perii în timp real – stand didactic
34
Figura 28. Construcție internă encoder
2.6. Arduino Mega
Arduino Mega 2560 este o placă de dezvoltare bazat ă pe un microcontroler
ATmega2560. Aceasta dispune de 54 intrări / ieșiri digitale (dintre care 15 pot fi folosite
ca ieșiri PWM), 16 intrări analogice, 4 UART -uri (porturi seriale hardware), un oscilator
de cristal de 16 MHz, o conexiune USB, un conector de alimentare, un led asociat pinului
13 și un bu ton de resetare. Placa poate fi aliment ă direct din calculator prin cablu USB ,
adaptor AC -DC sau acumulator. Se programeaz ă prin cablu USB cu softwerul Arduino
IDE. Aceasta poate fi folosi tă la imprimante 3D, proiecte d in domeniul electronic ii/
automatiz ării: robo ți, sisteme de irigare, case inteligente , control iluminat, automatiz ări
pentru solarii, recondi ționare utilje industriale, control trafic, sisteme pentru acvarii
(control hr ănire, temperatur ă, ph, filtrare) . Utilizată împreună cu module de comun icație
ethernet, poate comunica prin gsm, rfid, radio, rs485, websokets, mqtt, comunicare
serial ă, bluetooth . [7]
Figura 29. Placa de dezvoltare Arduino Mega 2560
Controlul unui motor făr ă perii în timp real – stand didactic
35 Tabelul 9. Specificații tehnice ale plăcii Arduino Mega 2560
SPECIFICAȚII TEHNICE
Frecvență de funcționare 16MHz
EEPROM 4KB
SRAM 8KB
Memorie Flash 256 KB din care 8 KB sunt folosiți
de bootloader
Tensiune de funcționare 5V
Tensiune de intrare (recomandată) 7-12V
Tensiunea de intrare (limită) 6-20V
Curent Pini 20mA
Curent Pinul 3.3V 50mA
Pinii utilizați sunt evidențiați în Tabelul 10.
Tabelul 10. Pinii folosiți și funcța lor
Numelel pinului Fun cția
9 Ieșire PWM
3 Ieșire digitală
4 Ieșire digitală
A5 Intrare analogică
Pinul A5 este folosit pentru a transmite controlerului curentul cu care trebuie
comandat motorul. Acest lucru se face prin intermediul modificării factorului de umplere
al sem nalului PWM. Gama de valori pe care o poate lua acest curent de comandă este
limitată de rezoluția perifericului de PWM, adică 8 biți. Pinul 3 citește numărul de rotații
pe minut transmise de către encoder, p inul 4 indică direcția de rotație a motorului, i ar
pinul 9 activează sau dezactivează comanda motorului. Cât timp valoarea tensiunii pe
acest pin este 0, motorul nu se va mișca.
2.7. Modul comunicație ethernet
Modulul de comunicație ethernet a fost folosit pentru a permite plăcii Arduino Mega
2560 să se conecteze la internet. Chipul ofer ă o adresa IP de re țea pentru protocoalele
TCP și UDP în timp ce modulul suport ă până la patru conexiuni simultane. Pe aceea și
plac ă se regăsește un slot pentru microSD pentru stocarea fișierelor distr ibuite în rețea.
Placa este compatibil ă cu Arduino Uno și Arduino Mega iar pentru transmiterea datelor
preluate de la motor și encoder în baza de date MySQL s -a utilizat librăria Ethernet.
Controlul unui motor făr ă perii în timp real – stand didactic
36
Figura 30. Modul comunicație ethernet W5100
Tabelul 11. Specificații tehnice ale modulului de comunicație ethernet W5100
SPECIFICAȚII TEHNICE
Tensiune de alimentare 5V
Tensiunea de intrare (limită) 6-18V
Tensiunea de i eșire (limită) 36-57V
I/O digitale 14 (din care 4 asigură ieșirea PWM)
Memorie Flash 32KB din care 8 KB sunt folosiți de
bootloader
Rată de transmitere 10/100Mb
În partea de software s -a folosit cod PHP, JAVASCRIPT, SQL, HTML, AJAX și
Arduino. SQL s -a utilizat pentru generarea tabelei și stocarea datelor preluate d e la
Arduino , în baza de date. Tot pentru achiziția datelor s -a folosit și limbajul de programare
PHP, valori care au fost inserate în baza de date și apoi încărcate în grafic și ceasuri.
Graficul și ceasurile au fost creat cu ajutorul metodei AJAX, utili zată și pentru actualizarea
rezultatelor la fiecare secundă , interfața fiind una dinamică . Limbajul de editare HTML a
fost necesar pentru afișarea și încadrarea elementelor în pagina web . Prin implementarea
liniilor de cod în Arduino IDE s-a realizat comun icarea cu componentele hardaware și
preluare informațiilor de la acestea .
Controlul unui motor făr ă perii în timp real – stand didactic
37 CAPITOLUL 3. CONTROL UL ȘI MONITORIZAREA UNUI MOTOR FĂRĂ PERI I
3.1. Comanda în buclă deschisă
Figura 31. Schema sistemului de reglare în buclă deschisă
Comutația fără senzori fizici necesită o viteză minimă pentru ca motorul să
funcționeze . Acesta lucru este datorat faptului că aplitudinea tensiunii
contraelectromotoare este proporțională cu viteza unghiulară a rotorului. Sub limita de
viteză, raportul se mnal/zgomot al tensiunii contraelectromotoare peste care se
suprapune semnalul PWM este prea mic, deci nemulțumitor . Limita de viteză inferioară
este dependentă de lățim ea semnalului PWM, caracteristicile motorului și de tensiunea
de alimentare. De exemplu o tensiune contraelectromotoare care are o amplitudine de
ordinul sutelor de milivolți nu poate fi distinsă de zgomot , dator ită comutației PWM -ului
și a amplitudin ii de ordinul volților.
Pentru comutația fără senzori fizici, motorul BLDC trebuie să fie a ccelerat/turat
peste limit a de vitez ă inferioară. Atunci când motorul BLDC pornește, acesta la început
consumă un curent mare și accelerează rapid până când tensiunea co ntraelectromtoare
limitează superior viteza pentru tensiunea de alimentare setată. Limi tarea curentului
trebuie să aibă loc în timpul pornirii/accelerării în rampă. Acesta este un aspect extrem
de important al motoarelor de curent continuu fără perii, deoa rece acestea se comportă
ca un scurtcircuit atunci când rotorul nu se rotește.
Curentul poate fi limitat prin comanda în tensiune în buclă deschisă prin
compensarea tensiunii contraelectromotoare dependent ă de turație, sau prin controlul
în buclă închisă preluând semnalul de reacție de la encoder . Oricum ar fi , rampa de viteză
în buclă desch isă trebuie să se efectueze cu o accelerație constantă, fiindcă limita de
curent influențează cuplul disponibil după cu m legea lui Newton definește relația dintre
cuplu, moment de inerție și accelerație unghiulară.
În continuare sunt prezentate caracterist icile semnalului PWM și observarea
modificării factorului de umplere pe baza referin ței impus e. Factorul de umplere est e
exprimat în procente și reprezintă cât la sută din perioada semnalului, acesta va fi pe
nivelul 1 logic.
Semnalul PWM a fost achizițion at de la ieșirea portului digital 13 pe un osciloscop
model Fluke 190 -504 pentru următoarele valori de referință: 10% , 20% , 30% , 40% .
Controlul unui motor făr ă perii în timp real – stand didactic
38 Aplitudinea semnalului PWM este situată între +4.88 V și +4.64 V.
Figura 32. Aplitudin ea semnalului PWM
Figura 33. Datele afișate pe monitorul serial pentru referință de 10%
Controlul unui motor făr ă perii în timp real – stand didactic
39
Figura 34. Perioada semnalului PWM pentru referința 10%
Figura 35. Datele afișate p e monitorul serial pentru referință de 20%
Controlul unui motor făr ă perii în timp real – stand didactic
40
Figura 36. Perioada semnalului PWM pentru referi nța 20%
Figura 37. Datele afișate pe monitorul serial pentru referință de 30%
S-a constatat faptul că în urma modificării referinței, perioada pulsului se modifică.
Când referința este setată la 30% din puterea maximă a motorului , cuplu rezistiv al
montajului este învins, având loc pornirea motorului.
Controlul unui motor făr ă perii în timp real – stand didactic
41
Figura 38. Perioada semnalului PWM pentru referința 30%
Figura 39. Datele afișate pe monitorul serial pentru referință de 40%
Controlul unui motor făr ă perii în timp real – stand didactic
42
Figura 40. Perioada semnalului PWM pentru referința 40%
3.2. Comanda în buclă închisă
Figura 41. Schema sistemului de reglare în buclă închisă
Viteza în bucl ă închisă poate fi controlată prin măsurarea vitezei motorului. Un
controler PID poate fi utiliza t pentru amplificarea erorii de viteză și ajustarea dinamică a
perioadei semnalului PWM, însă acordarea regulatorului PID vizează identificarea
valorilor optime pentru coeficienții kP și kI, componenta kD, fiind setată la 0. În realitate
comportarea motorului fără perii poate fi foarte bine descrisă printr -un proces de ordinl
I, motiv pentru care s -a utilizat un regulator de tip PI, deoarece folosirea componentei
derivative ar conduce la o bținerea unui sistem oscilant, fiind afectate performanțele
sistemu lui.
Pentru măsurători de înaltă precizie s-a utilizat un encoder optic de tip incremental ,
care preia mișcarea de revoluție a motorului prin intermediul unui reductor cu raport de
1:100 , encoderul dând două semnale (A și B) cu o diferență de fază de 90°. Utilizând
aceste semnale, atât viteza cât și direcția de rotație pot fi dete rminate. De asemenea, acest
Controlul unui motor făr ă perii în timp real – stand didactic
43 encoder oferă și un al treilea semnal (Z) care reprezintă un puls pe o rotație. Acesta poate
fi folosit pentru aplicații de pozi ționare , ceea ce în cazul de față nu a fost necesar .
La intrarea sistemului este introdus ă o referi nță, regulatorul la intrare primește
semnalul de eroare, care reprezintă diferența dintre valoarea impusă și valoarea actuală.
Regulatorul transmite comanda controlerului electronic de turație, iar acesta la rândul
său comandă tensiunea aplicată l a bornele motorului. Feedback -ul preluat de la encoder
este comparat cu referința, iar bucla este reluată.
În figura 42 poate fi observată tensiunea pe alernanța pozitivă +3.28 V și pe
alternanța negativă -3.36 V măsurată la bornele motorului.
Figura 42. Tensiunea măsurată la bornele motorului
De această dată s -au ales trei valori de referință pentru a măsura tensiunea pe două
faze la bornele motorului . Testele s -au realizat pentru referință de 30%, 35% și 40%, s-
au ales aceste valori , deo arece motorul pornește începând cu 30%, cuplul rezistiv la axul
motorului fiind suficient de mare pentru ca motorul să pornescă sub acest prag.
Controlul unui motor făr ă perii în timp real – stand didactic
44
Figura 43. Referință 30%
Figura 44. Observarea răspunsul ui sistemului cu referință 30%
Controlul unui motor făr ă perii în timp real – stand didactic
45
Figura 45. Tensiunea măsurată la bornele motorului cu referință 30%
Figura 46. Valoarea tensiunii și a curentului cu referință 30%
În figura 46 poate fi observată tensiun ea nominală la care a fost reglată surs a, iar la
turația maximă a motorului se i nregistrează un curent de 1.98 A.
Controlul unui motor făr ă perii în timp real – stand didactic
46
Figura 47. Referință 35%
Figura 48. Observarea răspunsului sistemului cu referință 35%
Controlul unui motor făr ă perii în timp real – stand didactic
47
Figura 49. Tensiunea măsurată la bornele motorului cu referință 35%
Figura 50. Valoarea tensiunii și a curentului cu referință 35%
Controlul unui motor făr ă perii în timp real – stand didactic
48
Figura 51. Referință 40%
Figura 52. Observarea răspunsului sistemului cu referință 40%
Controlul unui motor făr ă perii în timp real – stand didactic
49
Figura 53. Tensiunea măsurată la bornele motorului cu referință 40%
Figura 54. Valoarea tensiunii și a curentului cu referință 4 0%
În urma testelor r ealizate s -a constatat faptul că din momentul pornirii, motorul
accelerează până când depășește referința impusă , regulatorul minimize ază eroarea și
transmite un semnal de comandă către ESC pentru a varia turația motorului. Feedback –
ul este transmis de encoder, iar partea de calcul este reluată. Zgomotul care se suprapun e
cu semnalul PWM este foarte mar e și produc e pierderi importante în sistem, ceea ce nu
se dorește a se întâmpla .
Controlul unui motor fără perii în timp real – stand didactic
50 Pasul 1. Instalarea și setarea pachetului XAMPP
Prim ul pas este instalarea XAMPP, acesta este un mediu de dezvoltare PHP, fiind o
distribuție Apache ce conține MSQL PHP și Perl. După instalarea și deschidere se pornesc
serviciile Apache și MySQL.
Pasul 2. Crearea bazei de date
Se deschide browserul utilizat și se tastează adresa URL
http:// localhost:8080/phpmyadmin/ în navigatorul web . Aceasta va solicita un nume de
utilizator și o parolă, la numele utilizatorului s -a introdus “claudia”, iar ca parol ă “12345”.
După ce s -a introdus numele utilizatorului și parola se va deschide phpMyAdmin.
Apoi se accesează fila “Baze de date” pentru a crea tabela cu numele “turatie”, du pă
cum se arată mai jos :
Se acceseaz ă fila “SQL” de lângă tab-ul “Baze de date” și se introduce codul de mai
jos. Acesta va crea tabela în care vor fi introduse datele senzorilor conectați la Arduino.
Controlul unui motor fără perii în timp real – stand didactic
51
Pasul 3. Crearea paginilor PHP
În această etapă se crează paginile php care vor ajuta la obținerea legăturii între
Arduino și baza de date.
Se introduce calea C: \xampp \htdocs și se crează un nou director numit “regulator”.
În acest director se crează un fișier text și se salvează cu numele “db.php”. Acest fi șier va
face conexiunea între Arduino și baza de date.
Apoi se cre ează un nou fișier text și se va salva cu numele “data.php”. Acest fi șier
php va înregistra datele în baza de date preluate de la Arduino.
Pentru a verifica dacă baza de date primește datele din aceste pagini, s -a recurs la
introducerea manuală a unor valori de tes t. Verificarea conexiunii s -a făcut prin scierea
liniei de mai jos în navigatorul web .
Controlul unui motor fără perii în timp real – stand didactic
52 În urma accesării bazei de date se poate observa că datele introduse au fost stocate.
Pasul 4. Transmiterea datelor de la Arduino la baza de date
În primă etapă se modifică adresa IP a laptop -ului acces ând Control Panel >
Network and Internet > Network and Sharing Center > Change adapter settings și click
dreapta pe rețeaua ,,Ethernet ”, properties. Din fila ,,Networking ” se deschide ,,Internet
Protocol Version 4 (TCP /Ipv4) ” unde este introdusă o adresă IP 1 97.168.1.100 și masca
de rețea 255.255.255.0.
Pasul 5. Crearea interfe ței web
Pentru a vizualiza datele, se va crea un alt fișier php care va citi datele din baza de
date și le va afișa pe pagina web.
Se crează un fișier php cu numele “index.php” în acela și director unde au fost create
și celelalte fișiere php (C: \xampp \htdocs \regulator \).
Codul HTML este :
1. Încarcare grafic din librăria Google
Pagina web își face refresh la 1 secundă, iar cea de -a doua linie es te utilizată pentru
a acționa funcția de desenare a graficului.
2. Inițializare grafic
3. Funcți e generală pentru afișarea datelor pe grafic
Controlul unui motor fără perii în timp real – stand didactic
53 4. Setare op țiuni grafic
5. Afișare grafic
6. Încarcare ceasuri din librăria Google
Cea de -a doua lini e acționează funcția de desenare a ceasurilor.
7. Definire funcție de desenare a ceasurilor
8. Creare ceasuri
9. Verific ă existenț a element ului ce urmează a fi desenat
10. Formatare date ce urmează a fi inserate în ceasuri
11. Setare op țiuni cea suri
12. Creare element HTML pentru ceasuri
13. Afișare ceasur i
Controlul unui motor fără perii în timp real – stand didactic
54 14. Javascript post pentru a introduce rezultate le live pe grafic preluate din baza
de date (1/secundă)
15. Repetare la o secundă (1000 milisecunde)
16. Setare opțiuni post
17. Setare tip conținut
18. Interceptare răspuns php
19. Formatare răspun s pentru a putea fi citit în javascript
20. Calcul encoder
21. Desenare elemente pe grafic
22. Desenare grafic
23. Dacă sunt depășite 10 intervale inserate în grafic, primul element va fi șters
pentru a optimiza pagina
24. Funcție pentru redesenare, adăugare sau ștergerea unui element
25. Ramură de tratarea a situației în care apar erori la conectare
Controlul unui motor fără perii în timp real – stand didactic
55 26. Trimite o cere cu argumentele preluate în PHP
Dup ă scrierea codului și salvarea fișierului se va introduce în navigatorul web
adresa și va fi afișata pagina web.
Codul Arduino este:
1. Includere lib rării
Scriptul începe cu i ntroducerea librăriilor pentru comunicarea cu dispozitive
master -slave (SPI), conexiunea la inter net (Ethernet), implementarea regulatorului
(PID_v1) și controlul servomotorului (Servo).
2. Num ăr de impulsuri encoder
3. Ieșire encoder
4. Obținere direc ție de rota ție a motorului
5. Generare semnal PWM
6. Declarare și inițializare variabile
7. Pin analogic pentru poten țiometru
8. Contor pentru num ărul de impulsuri al encoder -ului
9. Interval de o secund ă pentru m ăsurători
10. Variabile contor pentru milisecundele din interval
Controlul unui motor fără perii în timp real – stand didactic
56 11. Variabil ă pentru m ăsurarea rota țiilor pe minut
12. Variabil ă PWM pentru tura ția motorului
13. Declarare și inițializare variabile
14. Declarare și inițializare p arametrii regulator
15. Apel funcție regulator
16. Adresa Mac a modulului de internet
17. Adresa IP pentru placa Arduino
18. Inițializar e libr ărie internet client cu adresa ip și portul serverului
19. Setare pin de semnal pentru motor
20. Returnează valoarea ce asului intern al microprocesorului
21. Setare rat ă de transfer pentru transmisia datelor seriale
22. Setare encoder ca intr are cu pullup intern
Controlul unui motor fără perii în timp real – stand didactic
57 23. Setare conexiuni PWM și DIR ca ie șire
24. Apelare întrerupere
25. Configurare valori ini țiale pentru cronometru
26. Pornire conexiune internet -server
27. Verificare prezenț ă modul de internet
28. Testare conexiune ardu ino-server
29. Setare valoare minimă de la care începe referința
30. Setare valoare pentru regulatorul PID intre 0 si dimensiunea maxima a
ferestrei.
31. Setare regulator
32. Pornire server
33. Astea ptă un client să se conecteze
Controlul unui motor fără perii în timp real – stand didactic
58 34. Scalare valoare potențiometru
35. Referin ța preia valoarea de la poten țiometru
36. Valoarea ie șirii este transmis ă regulatorului
37. Controlul motorului cu potentiome țiometru
38. Scrie PWM -ul la controler
39. Actualizarea num ăr de rota ții la fiecare secu ndă
40. Cacul are num ăr de rota ții
41. Setare limite interval de măsurare pentru encoder
42. Apel funcție regulator cu propietatea de calcul ieșire
43. Scriere către motor a valorii variabilei “PID ”
44. Actualizare valori afi șate doar dac ă se face o citire
Controlul unui motor fără perii în timp real – stand didactic
59 45. Resetare variabil ă "encoderValoare"
46. Testare disponibilitate server
47. Realizare cerere către HTTP
48. Tratare excepție în cazul în care Arduino nu se poate conecta la server
49. Timp pentru browser pentru a trimite date
50. Incrementare valori pentru fiecare impuls primit de la encoder
Controlul unui motor fără perii în timp real – stand didactic
60 CONCLUZII
Motivul alegerii acestei teme ca proiect de diplomă s -a datorat desfășurării stagiului
de practică la finalul anului III univeristar în cadrul companiei Schaeffler România unde
am pus bazele necesare abordării temei . În plus, controlul sistemelor este un domeniu cu
aplicații nenumărate, de la sateliți sau rachete pană la automobile sau alte sisteme
mecanice. De altfel, principiile disc utate în această lucrare pot fi generalizate , acestea
fiind valabile nu doar pentru dispozitive mecanice, ci pentru orice alt tip de sistem ce se
bazează pe feedback.
Subiectul ales pentru această lucrare conține un regulator întâlnit la scară largă ,
cum ar fi aplicații casnice, industriale, mobile . În prezenta lucrare am încercat
implementarea ,dezvoltarea și îmbunătățirea funcționării regulatorului , utilizând un
microprocesor de tip Arduino care calculează eroarea și ajustează comanda motorului în
funcți e de mărimea de proces citită cu ajutorul en coderului.
Datorită caracteristici lor motorului, montajul poate fi utilizat în aplicații care
necesită turații înalte, cum ar fi drone, elicoptere, autovehicule, chiar și în domeniul
medical de exemplu, unde sunt necesare turații mari pentru centrifugare atunci când are
loc procesul de separare a sângelui de plasmă .
Lucrarea prezintă demersul normal pentru abordarea unei probleme de control și
modul în care această problemă este structurată pentru a fi rezolva tă.
Etapele urmate în această lucrare sunt:
• Proiectarea sistemului mecanic si asamblarea sa ;
• Dezvoltarea unei metode de achiziție și de transmitere a datelor, optându -se
pentru crearea unei baze de date ;
• Crearea interfeței web ;
• Implementarea algoritmului de control a motorului fără perii ;
• Identificar ea sistemului folosind date experimentale ;
• Observarea performanțelor .
Au existat și limitări în reglarea sistemului , cum ar fi calibrarea controlerului
electronic de turație, lipsa fișei tehnice a motorului pentru a putea realiza o determinare
precisă a p erformanțelor motorului și pierderile de puter e datorită frecărilor din
angrenajul reductorului cu trei trepte de transmisie .
Direcții de dezvoltare a le proiectului :
• Integrarea într -o aplicație de larg consum în care să se stabilească performanțele
sistem ului;
• Dezvoltarea unui regulator predictiv, astfel parametrii regulatorului nu vor mai fi
pure constante ;
• Utilizarea unui alt motor fără perii ;
• Înlăturarea r eductor ului și conceperea unui alt cuplaj mecanic ;
• Stabilirea unei legături prin intermediul intern etului și comanda sa la distanță ;
• Realizarea unui log cu date cu stocare locală prin intermediul shield -ului.
Controlul unui motor fără perii în timp real – stand didactic
61 Pe viitor ca îmbunătățire se mai poate implementa o funcție de citire automată și de
calcul a i parametrilor regulatorului și o funcție de calibra re a ESC -ului.
Controlul unui motor fără perii în timp real – stand didactic
62 BIBLIOGRAFIE
[1] Ing. Daniel Mic, „Contribuții la dezvoltarea unui mediu integrat hardware –
software pentru controlul motoarelor electrice cu circuite logice
programabile ”;
[2] Microchip Tehnology Inc. , Padm araja Yedamale, „Brushless DC (BLDC) Motor
Fundamentals ”, ISO 9001 ;
[3] Microchip Tehnology Inc. , Daniel Torres, „Sensorless BLDC Control with Back –
EMF Filtering Using A Majority Function ”, ISO/TS -16949:2002 ;
[4] Caroline Ann Sam, Tony Mathew , „Modeling and clo sed loop control of bldc
motor using a single current sensor ”;
[5] Chin -Long Cham, Zahurim Bin Samad , „Brushless DC Motor Electromagnetic
Torque Estimation with Single -Phase Current Sensing ”;
[6] https://biblioteca.regielive.ro/licente/electrotehnica/studiul -unui -motor –
bldc -272146.html , 07-07-2019;
[7] https://componente.eu/arduino -mega -2560 , 07-07-2019;
[8] http://electronica -azi.ro/2005/12/20/encodere -incrementale -tip-seletsen/ ,
07-07-2019;
[9] https://speed.pub.ro/speed3/wp -content/uploads/2017/07/2017 -Proiect –
Diploma -Niculescu -Vlad.pdf , 07-07-2019;
[10] http://www.aie.ugal.ro/isa/Laborator/Laborator %204.pdf , 11-07-2019 ;
[11] https://www.scribd.com/doc/29451 8239/L4 -Motor -Cu-Comutatie –
Electronica , 07-07-2019;
[12] https://www.shiva.pub.ro/PDF/TRA/Laborator6_TRA.pdf ,11-07-2019 .
Controlul unui motor fără perii în timp real – stand didactic
63 ANEXA 1
<?php
define ('DATABASE' , "licenta" );
$link = mysqli_connect ("127.0.0.1" , "claudia" , "12345" );
mysqli_query ($link, 'SET NAMES utf8' );
mysqli_select_db ($link, DA TABASE) or
die("Couldn't open DATABASE: " .mysqli_error());
if(isset ($_POST[ 'lastRow' ]))
{
header ('Content -Type: application/json' );
$result = mysqli_query ($link, "SELECT * FROM turatie
ORDER BY turatie.Time DESC LIMIT 1");
$row = mysqli_fetch_array ($result, MYSQLI_ASSOC);
echo json_encode ($row);
}
?>
Controlul unui motor fără perii în timp real – stand didactic
64 ANEXA 2
<?php
$dayz = time ();
$aa = null ;
$ab= null ;
$ac= null;
$ad= null ;
$ae= null ;
$af= null ;
$db= "licenta" ;
$link = mysqli_connect ("127.0.0.1" , "claudia" , "12345" );
if (! $link)
die(mysqli_error());
mysqli_select_db ($link,$db) or die("Couldn't open $db: ".mysqli_error());
$aa = (($_GET[ 'Referinta' ]));
$ab = (($_GET[ 'PID' ]));
$ac = (($_GET[ 'Encoder' ]));
$ad = (($_GET[ 'Kp' ]));
$ae = (($_GET[ 'Ki']));
$af = (($_GET[ 'Kd' ]));
$queryResult = mysqli_query ($link , "INSERT INTO turatie ( Time , Referinta, PID,
Encoder, Kp, Ki, Kd)
VALUES (' $dayz ', '$aa', '$ab', '$ac', '$ad', '$ae', '$af')");
Controlul unui motor fără perii în timp real – stand didactic
65 ANEXA 3
<?php require_once ('db.php' );?>
<!DOCTYPE html >
<html >
<head >
<script type ="text/javascript"
src="https://www.gstatic.com/charts/loader.js" ></script >
<script type ="text/javascript" >
google. load ("visualization" , "1", { packages: [ "corechart" ] });
google. setOnLoadCallback (drawGraphs);
var graph;
function drawGraphs ()
{
var date = new Date ();
graph = drawGraph ([date. getHours ()+":"+date. getMinutes ()+":"
+date. getSeconds (), 50, 55, 65]);
}
function drawGraph (row = null )
{
var data = new google .visualization .DataTable ();
data. addColumn ('string' , 'Time' );
data. addColumn ('number' , 'Referinta' );
data. addColumn ('number' , 'PID' );
data. addColumn ('number' , 'Encoder' );
data. addRows ([row]);
var options =
{
width: 1000, height: 300,
hAxis: { title: 'Timp' , ticks: 10 },
vAxis: { title: 'Turatie RPM' , maxValue: 100, minValue: 0 }
};
var chart = new google .visualization .LineChart (
document. getElementById ('chart_div' ));
chart. draw (data, options);
return {chart, options, data};
}
google.charts. load ('current' , {'packages' :['gauge' ]});
google.charts. setOnLoadCallback (drawCharts);
var referinta, pid, encoder;
function drawCharts ()
{
referinta = drawChart ('referinta_gauge' , 'Referinta' ,
10, { "min" :0,"max" :100});
pid = drawChart ('pid_gauge' , 'PID' , 10, { "min" :0,"max" :100});
encoder = drawChart ('encoder_gauge' ,
'Encoder' ,10,{ "min" :0,"max" :100});
}
Controlul unui motor fără perii în timp real – stand didactic
66 function drawChart (elem, label, value, minMax = { "min" :0,"max" :100})
{
if(!elem)
return false ;
var data = google.visualization. arrayToDataTable ([
['Label' , 'Value' ],[label, value],]);
var options = {
width: 200, height: 200,
minorTicks: 2,
min: minMax.min,
max: minMax.max
};
var doc = do cument. getElementById ('content' );
g = document. createElement ('div' );
doc. appendChild (g);
g.setAttribute ("id", elem);
g.setAttribute ("style" , 'display: inline -block' );
var chart = ne w google .visualization .Gauge (
document. getElementById (elem));
chart. draw (data, options);
return {chart,options};
}
var xhr = new XMLHttpRequest ();
setInterval (function ()
{
xhr.open ('POST' , 'db.php' );
xhr.setRequestHeader ('Content -Type' , 'application/x -www -form -urlencoded' );
xhr.onload = function ()
{
if (xhr.status === 200)
{
var data = JSON. parse (xhr.response);
var calcencoder = parseFloat (data.Encoder);
referinta.chart. draw (google.visualization. arrayToDataTable ([['Label' ,
'Value' ],['Referinta' , parseInt (data.Referinta)]]), referinta.options);
pid.chart. draw (google.visualization. arrayToDataTable ([['Label' ,
'Value' ],['PID' , parseInt (data.PID)]]), pid.options);
encoder.chart. draw (google.visualization. arrayToDataTable ([['Label' ,
'Value' ],['Encoder' , calcencoder]]), calcencoder.options);
var date = new Date (parseInt (data.Time)*1000);
graph.data. addRows ([[date. getHours ()+":"+date. getMinutes ()+":"
+date. getSeconds (),parseInt (data.Referinta), parseInt (data.PID), calcencoder]]);
if(graph.d ata.getNumberOfRows () >= 10)
{
graph.data. removeRow (0);
}
graph.chart. draw (graph.data, graph.options);
}
Controlul unui motor fără perii în timp real – stand didactic
67 else {
alert ('Request failed. Returned status of ' + xhr.status);
}
};
xhr.send (encodeURI ('lastRow=true' ));
}, 1000);
</script >
</head >
<body >
<div align ="center" >
<H1 align ="center" >Control motor fara perii</ H1>
<div align ="center" id="content" >
<table width ="900" border ="1">
<tr>
<td>
<div align ="center" >
<table width ="1000" border ="0">
<tr>
<td width ="141" > </ td>
<td width ="10" > </ td>
<td width ="432" ><div id="chart_div1" ></div></td>
<td width ="141" > </ td>
<td widt h="144" > </ td>
</tr>
<tr>
<td> </ td>
<td> </ td>
<td> </ td>
<td> </ td>
<td> </ td>
</tr>
<tr>
<td> </ td>
<td> </ td>
<td>
<div align ="center" >
<table width ="800" border ="0">
<tr>
<td width ="595" ><div
id="chart_div" ></div></td>
<td width ="195" ><div
id="chart_div" ></div></td>
</tr>
</table >
</div>
</td>
<td> </ td>
<td> </ td>
</tr>
Controlul unui motor fără perii în timp real – stand didactic
68 <tr>
<td> </ td>
<td> </ td>
<td> </ td>
<td> </ td>
<td> </ td>
</tr>
<tr>
<td> </ td>
<td> </td>
<td>
<div align ="center" >
<?php
$db= "licenta" ;
$link = mysqli_connect ("127.0.0.1" , "claudia" , "12345" );
mysqli_query ($link, 'SET NAMES utf8' );
mysqli_select_db ($link, $db) or die("Couldn't open $db: ".mysqli_er ror());
$result = mysqli_query ($link, "SELECT Time , Referinta, PID, Encoder, Kp, Ki,
Kd FROM turatie Order By Time desc limit 1");
if ($result !== false )
{
$num=mysqli_num_rows($result);
while ($r = mysqli_fetch_assoc ($result))
{
$time = $r[ 'Time' ];
$referinta = $r[ 'Referinta' ];
$pid = $r[ 'PID' ];
$enco der = $r[ 'Encoder' ];
$ki = $r[ 'Ki'];
$kp = $r[ 'Kp' ];
$kd = $r[ 'Kd' ];
}
echo "Kp = " ;
echo $kp;
echo " Ki = " ;
echo $ki;
echo " Kd = " ;
echo $kd;
}
?>
</div>
</td>
<td> </ td>
<td> </ td>
</tr>
</table >
</div>
</td>
Controlul unui motor fără perii în timp real – stand didactic
69 </tr>
</table >
</div>
</div>
</body >
</html >
Controlul unui motor fără perii în timp real – stand didactic
70 ANEXA 4
#include <SPI.h>
#include <Ethernet.h>
#include <PID_v1.h>
#include <Servo.h>
#include <Encoder. h>
#define pulsuriEncoder 200
#define EncoderpinA 3
#define DIR 4
#define PWM 8
double Referinta;
double Enc, Iesire;
Servo motor;
int controlViteza = 0;
volatile long encoderValoare = 0;
int interval = 1;
long valoareAnterioara = 0;
long valoareActuala = 0;
int rpm = 0;
int motorPwm = 0;
int potentiometru = A5;
int potValoare = 0;
int DimFereastra = 100;
unsigned long TimpPornireFereastra;
float Kp = 0.1;
float Ki = 0.00001;
Controlul unui motor fără perii în timp real – stand didactic
71 float Kd = 0;
PID regPID(&Enc, &Iesire, &Referinta, Kp, Ki, Kd, DIRECT);
byte mac[ ] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 177);
EthernetServer server(8080);
char addrcon[] = "192.168.1.100";
void setup()
{
motor.attach(8);
TimpPornireFereastra = millis();
Serial.begin(9600);
pinMode(EncoderpinA, INPUT_PULLUP);
pinMode(PWM, OUTPUT);
pinMode(DIR, OUTPUT);
attachInterrupt(digitalPinToInterrupt(EncoderpinA),
actualizareEncoder, FALLING);
valoareAnterioara = millis();
Serial.println("Pornire server web");
Ethernet.begin(mac, ip);
if (Ethernet.hardwareStatus() == EthernetNoHardware)
{
Serial.println("Ethernet shield -ul nu a fost detectat :(");
while (true)
{
delay(1);
}
}
Controlul unui motor fără perii în timp real – stand didactic
72 if (Ethernet.linkStatus() == LinkOFF)
{
Serial.println("Cablul d e internet nu este conectat.");
}
Referinta = 0;
regPID.SetOutputLimits(0, DimFereastra);
regPID.SetMode(AUTOMATIC);
server.begin();
Serial.print("Server -ul este la ");
Serial.println(Ethernet.localIP());
}
void loop()
{
EthernetCl ient client = server.available();
potValoare = analogRead(potentiometru) / 10.23;
Referinta = potValoare;
float pid = Iesire;
motorPwm = map(analogRead(controlViteza), 0, 1023, 0 , 100);
analogWrite(PWM, motorPwm);
valoareActuala = millis( );
rpm = (float)(encoderValoare * 60 / pulsuriEncoder);
Enc = map(rpm, 0, 5000, 0, 100);
regPID.Compute();
motor.write(pid);
if (valoareActuala – valoareAnterioara > interval)
{
valoareAnterioara = valoareActuala;
Controlul unui motor fără perii în timp real – stand didactic
73 if (motorPwm > 0 || rpm > 0)
{
Serial.print(Enc);
Serial.print(" ");
Serial.print(Iesire);
Serial.print(" ");
Serial.print(Referinta);
Serial.print(" ");
Serial.println(pid);
Serial.print(" ");
Serial.println(Iesire / DimFereastra * 100);
}
encoderValoare = 0;
}
if (client.connect(addrcon, 8080))
{
client.print("GET /db.php?getInfo=");
client.println(" HTTP/1.1");
client.println("Host: 192.168.1.100");
client.pr intln("Conexiune: inchis");
while (client.available())
{
String linie = client.readStringUntil(' \r');
}
client.println();
client.stop();
Controlul unui motor fără perii în timp real – stand didactic
74 Serial.println();
}
if (client.connect(addrcon, 8080))
{
Serial.printl n("Conectat");
client.print("GET /data.php?PID=");
client.print(pid);
client.print("&Referinta=");
client.print(Referinta);
client.print("&Encoder=");
client.print(Enc);
client.print("&Kp=");
client.print(Kp);
client.print("&Ki=");
client.print(Ki);
client.print("&Kd=");
client.print(Kd);
client.print(Iesire / DimFereastra * 100);
client.println(" HTTP/1.1");
client.println("Host: 192.168.1.100");
client.println("Conexiune: inch is");
client.println();
client.println( );
client.stop();
}
else {
Serial.println(" –> Conexiunea a esuat \n");
Controlul unui motor fără perii în timp real – stand didactic
75 }
Serial.println("Client deconectat");
delay(1000);
}
void actualizareEncoder()
{
encoderValoare++;
}
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Timp , ticks: 10 , [624119] (ID: 624119)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
