Sir.drinkalots@gmail.com 256 Pdfonlinexx Text

2009 UNIVERSITATEA POLITEHNICA TIMISOARA FACULTAREA DE ELECTRONICA si TELECOMUNICATII DEPARTAMENTUL ELECTRONICA APLICATA Titlul temei : Sisteme de acționare electrica comandate cu PC prin interfața de comunicație (RS – 232) Enunțul proiectului : Sa se realizeze un sistem de cont rol al unui motor de curent continuu care sa permită comanda acestuia prin intermediul unui PC. Este necesar controlul direcției si turației motorului si o protecție a acestuia la supracurent. Comunicația se va realiza pe portul serial al unui calculator t ip IBM PC. Trebuie generate doua semnale PWM pentru comanda a doua tranzistoare de pe laturile unei punți H. Se va citi turația motorului folosind BEMF(Back Electromagnetic Force) si curentul absorbit de motor. 2009 CUPRINS 1. Introducere 2. Motorul de curent continuu 2.1 Generalitati 2.2 Motoare fara miez 2.3 Motoare universale 2.4 Motoare de curent alternativ 2.5 Motorul pas cu pas 2.6 Motorul de curent continuu 2.6.1 Elemente constructive ale motoarelor de curent continuu 2.6.2 Funcționarea motoarelor de curent continuu 2.6.3 Frânarea motoarelor de curent continuu 2.6.4 Frânarea in regim de generator 2.6.5 Frânarea dinamica 2.6.6 Frânarea in regim de contracurent 3. Teoria controlului de viteza la motoare de curent continuu 4. Microcontrolerul PIC16F684 4.1 Caracteristici ale microcontrolerului 4.1.1 Unitate centrală RISC performantă pe 8 biți 4.1.2 Periferice 4.1.3 Facilitați speciale 4.1.4 Tehnologie CMOS FLASH/EEPROM îmbunătățită 4.2 Arhitectura unității centrale a PIC16F684 4.2.1 Schema bloc 4.2.2 Descrierea pinilor microntrolerului PIC16F684 4.2.3 Organizarea memoriei 4.2.4 Memoria program 4.2.5 Memoria de date 5. Schema bloc a acționarii a. Blocuri componente b.Funcționarea Blocurilor 6. Schema electronica a acționari i 7. Cablajul montajului 8. Program PIC16F684 a. Calculul valorilor semnalelor generate b. Program 9. Concluzii Subsemnatul _____________________________ declar pe proprie răspundere că lucrarea de față este rezultatul muncii mele, pe baza cercetărilor mele și pe baza informațiilor obținute din surse care au fost citate și indicate, conform normelor etice, în note și în bibliografie. Declar că lucrarea nu a mai fost prezentată sub această formă la nici o instituție de învățământ superior în vederea obținerii unui grad sau titlu științific ori didactic. Semnătura autorului 1. Introducere Odată cu apariția si răspândirea la scara larga a microcontrolerelor si a microprocesoarelor a apărut a schimbare majora in concepția si implementarea circuitelor de conducerea a diferitelor procese. In timp domeniile de aplicație sau înmulțit fiind limitate doar de imaginația utilizatorilor. Evident ca in prima faza au fost dominante aplicațiile industriale. In primele aplicații numărul de procese supravegheate, conduse sau reglate era relative mic cu cele de azi când numărul lor a crescut la sute chiar mii de procese. Unul dintre domeniile care a beneficiat de pe urma integrării microprocesoarelor si a sistemelor cu microcontroler a fost cel al acționarilor electrice. In acest domeniu pana prin anii 80 comanda acționarilor se realiza cu circuite electronice tradiționale analogice si/sau numerice. Ulterior comanda acestora a început sa fie realizata folosind microprocesoare si microcontrolere care implementau funcțiile necesare conducerii acționarilor . Avantajele oferite de microsisteme (performante superioare, prețde cost scăzut ) in cadrul sistemelor de acționare electrica le justifica utilizarea . În procesele industriale se pune problema de a pune în mișcare sisteme mecanice. Se spune despre acestea că trebuie acționate. Principala componentă de sistem, care are rolul de a transforma o anumită formă de energie (electrică, hidraulică, pneumatică, termică) în energie mecanică de mișcare, este motorul. Denumirea unei acționări (electrică, hidraulică, pneumatică) provine de la tipul de motor folosit. În ultimii ani, 60-70 % din energia electri că disponibilă este consumată pentru acționări ce folosesc motorul electric. Acționările electrice sunt foarte larg răspândite în aplicații industriale și servicii. Motivele pentru care acționările electrice sunt atât de răspândite sunt: • disponibilitatea cvasigenerală a energiei electrice (mai ales în mediile industriale); • robustețea motoarelor electrice, în sensul că permit supraîncărcări în limite largi din partea sarcinii mecanice; • posibilitatea de racordare simplă la sursa de energie (la rețea); Exemplu: pentru un motor hidraulic este necesar un întreg agregat hidraulic care să pregătească uleiul – agent – și o întreagă rețea de tuburi și pompe adecvate. • performanțele dinamice foarte bune, adică se poate obține timp de răspuns scurt de la aplica rea până la execuția comenzii; • randament energetic ridicat (90 %); • fiabilitate ridicată; • preț de cost scăzut; • posibilitatea de interfațare directă între sistemul de comandă (electric) și echipamentul de execuție (electronic); Schema bloc a unui s istem de acționar e electric este cea din figura de mai jos 2. Motorul de curent continuu In acționările electrice sunt folosite 3 mari tipuri de motoare electrice Motorul de curent continuu Motorul pas cu pas Motorul de curent alternativ Motoarele de curent continuu sunt de mai multe tipuri cu perii, fara perii, fara miez si universale. Motorul de curent continuu cu perii generează un curent oscilant intr-un rotor bobinat prin intermediul unui comutator inelar aflat pe axul rotorului numit colector. Bobinajul rotorului consta dintr-un conductor infasurat in jurul unui miez magnetic aflat pe axul rotorului. O sursa de curent continuu este conectata la bobinajul rotorului prin intermediul colectorului si al periilor. Curentul care trece prin bobinaj produce in câmp electromagnetic. Colectorul generează comutarea curentului intre spirele bobinajului odată cu rotația produsa, împiedicând alinierea rotorului cu polii magnetici ai câmpului generat de stator. Majoritatea limitărilor motoarelor de curent continuu sunt date de necesitatea periilor care apăsa pe colector. Acest lucru produce frecare. La viteze mai mari periile produc probleme in contactul cu colectorul. Periile pot sari ușor de pe suprafața colectorului datorita imperfecțiunii suprafeței acestuia producând scântei. Scânteile sunt inevitabile si din cauza comutației secțiunilor de bobinaj când periile trec peste zonele izolatoare dintre lamele corespunzătoare unei secțiuni . In RăspunsuriSISSIT. IER. SUP.L.com T.VIT T.POZ MCONV. de ENERGIECIRCUIT de COMAN DĂ SIST.MEC L.sincSURSĂ de ENERGIE I(U)Mărimi de prescriere Comenzi funcție de proiectarea colectorului periile pot scurtcircuita secțiuni adiacente ale infasurarii. Deasemenea in ductanța rotorului produce o creștere a tensiunii când secțiunea este deconectata contribuind astfel la producerea de scântei pe perii. Acest lucru duce la limitarea vitezei maxime pentru ca producerea excesiva de scântei va supraîncălzi , eroda sau chiar topi colectorul. Densitatea de curent pe unitatea de suprafața a periilor in combinație cu rezistivitatea lor limitează puterea motorului. Comutarea intre înfășurări produce zgomot electric iar scânteile produc perturbații radio. Un alt dezavantaj este faptul ca datorita frecării periile si colectorul se uzează fiind necesara întreținerea lor la motoare mai mari sau schimbarea lor la cele mai mici. Colectorul la motoare mai mari este o piesa scumpa care are nevoie de precizie ridicata la fabricare. Periile de dimensiuni mari sunt de dorit pentru ca permit o putere mare a motorului dar cele mici sunt preferate pentru masa mai mica astfel încât sa permită viteze mari f ărăa produce scântei. Se pot folosi arcuri mai puternice pentru perii pentru a permite periilor de o anumita greutate sa lucreze la viteze mai mari dar cu prețul unei frecări mai mari ceea ce duce la reducere eficientei si la uzura rapida a periilor si colectorului. Astfel motorul de curent continuu cu perii este un compromis intre putere, viteza si eficienta/uzura. 2.1 Motorul de curent continuu fara perii: La acest tip de motor se elimina câteva din problemele motorului cu perii. La acest tip de motor comutatorul mecanic realizat de perii si colector este înlocuit cu electronica externa sincronizata cu poziția rotorului. Eficienta tipica a unui motor fara perii este de 85-90% sau mai mult ( cercetători de la Universitatea Tokai din Japonia au raportat in 2009 eficienta de 96,5%) pe când motoarele cu perii au o eficienta tipica de 75-80%. Motoarele fara perii sunt undeva intre cele cu perii si cele pas cu pas. Construcția este similara cu cele pas cu pas folosind un rotor extern din magnet permanent, trei bobine de comanda si unul sau mai mulți senzori Hall pentru a determina poziția rotorului si electronica de comanda aferenta. Bobinele sunt activate in secvența data de senzorii Hall sau de BEMF data de celelalte bobine. In principiu se comporta ca un motor sincron trifazat cu unitate proprie de comanda in frecventa variabila. Acest tip de motor este folosit in aplicații care necesita control precis al vitezei. Avantajele fata de alte tipuri de motoare sunt numeroase: -fata de MCA cu pol auxiliar sunt mai eficiente, au temperatura de funcționare mai mica ceea ce duce la o durata de viata mai buna a rulmențil or. -Fara colector care sa se uzeze durata de viata poate fi semnificativ mai mare, zgomotul electric si radio este mai mic si se pot folosi in echipamente mai sensibile cum ar fi aplicații audio sau PC-uri. -Senzorii Hall folosiți la comutație pot oferi si un tahometru pentru controlul vitezei. -Motorul poate fi sincronizat cu un ceas extern sau intern ducând la control precis al vitezei -Nu mai exista riscul scânteilor ceea ce permite folosirea lor in medii explozive. -Zgomotul produs in funcționare este mic. -Sunt folosit in echipamente mici la eliminarea căldurii (ventilatoare). Motoarele fara perii moderne au o plaja de putere cuprinsa intre cativa mW si sute de kW( mașini electrice). Deasemenea isi găsesc aplicații in aeromodelism. 2.2 Motoare fara miez: Este un motor specializat de curent continuu optimizat pentru accelerație rapida si au rotorul construit fara un miez de fier. Rotorul poate lua forma unui cilindru umplut cu bobinaj sau o structura formata doar din bobinaj si material de impregnare/rigidizare. Rotorul încape intre magneții statorului, un cilindru permeabil magnetic in rotor asigura o cale de întoarcere pentru fluxul magnetic al statorului. Un alt design are statorul la mijloc iar rotorul înconjoară statorul, rotorul este intr-un cilindru permeabil magnetic si asigura returul câmpului. Un al treilea design are rotorul sub forma de disc care trece printre magneți permanenți puternici cu fata la rotor dispuși circular. Datorita faptului ca rotorul este foarte ușor acesta poate accelera repede o bținând deseori o constanta mecanica sub 1ms, mai ales daca se folosește aluminiu pt. bobinaj care este mai ușor decât cuprul. Pe de alta parte lipsa unui miez metalic care sa se comporte ca un radiator produce necesitatea răcirii lor forțate cu aer chiar si la motoare mici pentru a evita supraîncălzirea . Un exemplu ar fi motoarele de poziționare a capului cititor la hard disk-uri care sunt o varianta cu cursa limitata. 2.3 Motoarele universale: Sunt o varianta a motorului de curent continuu cu stator bobinat. Numele deriva din faptul ca se poate folosi atât curent continuu cat si alternativ ca alimentare. Principiul este acela ca intr-un motor cu statorul bobinat câmpurile magnetice din rotor si stator vor varia in același timp si deci forța mecanica generata va fi in aceeași direcție . Avantajul folosirii lor este ca se pot folosi surse de curent alternativ pentru alimentarea unor motoare care au caracteristicile unui motor de curent continuu (cuplu mare la pornire, dimensiuni mici pentru viteze de lucru mari). In general aceste motoare lucrează la viteze mari făcându -le ideale pt. electrocasnice (blendere, aspiratoare, uscătoare de par etc.) in care sunt dorite viteze mari. Deasemenea sunt întâlnite in diverse scule de exemplu freze (30000 RPM) 2.4 Motoare de curent alternativ: Cel mai folosit in acționari electrice este motorul de curent alternativ (MCA) asincron. Acesta prezintă următoarele avantaje fata de MCC: -robustețe mai mare -prețde cost mai scăzut datorita tehnologiei de fabricație si a gabaritului mai mic necesar pentru aceeași putere dezvoltata -lipsa periilor pentru varianta cu rotor in scurtcircuit -fiabilitate mai mare -posibilitate de folosire in medii explozive (fara perii nu exista scântei) Dezavantajele MCA sunt următoarele : -modificarea dificila a turației (este necesara electronica relativ complicata si scumpa ). -nu pot funcționa la turații mai mici de 1/3 din turația nominala (din considerații termice) si se prefera MCC pentru turații joase. -controlul poziționării este dificil de realizat (se prefera servomotoare pt. poziționări exacte). Principial, există trei metode de modificare a turației motoarelor de curent alternativ: Metoda U / f = constant. Este considerată metoda clasică de reglare a vitezei de rotație a mașinii asincr one, prin care se realizează modificarea turației cu modificarea simultană a amplitudinii și frecvenței tensiunii de alimentare, astfel încât raportul dintre valoarea efectivă a tensiunii și frecvența acesteia să rămână constant. Micșorarea lui U și f asigură scăderea turației, iar creșterea lor determină creșterea turației. Metoda nu permite reglarea în limite largi deoarece o creștere mare a lui U periclitează izolația înfășurării, iar o scădere accentuată a lui f poate produce saturația miezului. Metoda de comandă cu orientare după câmp. Constă, în esență, din urmărirea fazorului fluxului magnetic rotitor din întrefierul mașinii și utilizarea direcției acestuia ca axă de referință pentru un calcul matematic. Calculul constă în transformarea ecuațiilor mașinii trifazate în ecuațiile aferente unei mașini bifazate cu înfășurări perpendiculare (ca și la MCC). Prin acest calcul mașina trifazată se transformă într -o mașină bifazată echivalentă. Se aplică apoi comenzile pentru mașina echivalentă și din aceste co menzi se calculează comenzile care trebuie aplicate (în realitate) mașinii trifazate. În ultimii ani au fost realizate microprocesoare și microcontrolere specializate care pot efectua extrem de rapid aceste calcule. Matematica necesară succesiunilor de transformări este cunoscută din teorie (de mult timp) iar aceste microprocesoare și microcontrolere, noi și dedicate, permit efectuarea în timp real a tuturor calculelor necesare. Metoda prin accelerarea câmpului (metoda Yammamura). Este cea mai modernă metodă de comandă a MCA și are la bază tot o transformare de la modelul trifazat la modelul bifazat, dar axele sunt alese într-un mod mai convenabil, astfel încât numărul de calcule să fie mai scăzut, iar reglarea mai eficientă. Progresele în domeniul electronicii de putere, a circuitelor inteligente de putere, a microprocesoarelor și microcontrolerelor (de uz general sau dedicate) permit implementarea suficient de facilă a operațiilor și calculelor pretinse de comanda MCA și, întrucât principiile teoretice au fost deja bine puse la punct, comanda relativ complicată a MCA nu mai reprezintă astăzi un impediment în competiția cu MCC. 2.5 Motorul pas cu pas: La apariția acestuia s -a crezut că MPP este cel mai potrivit motor pentru a fi comandat cu mijloace digita le, întrucât el a fost conceput ca și convertor biunivoc impuls electric -increment de deplasare. Cu timpul s- a dovedit că MPP are mai multe dezavantaje importante: -este „hot functioning” (tipic 100°C); -nu poate fi încărcat cu sarcina maximă pentru care a fost proiectat, deoarece la încărcări mari pierde pași; -schema electronică de comandă este sofisticată; -din secvența de impulsuri, cu care el ar trebui în principiu comandat, trebuie făcută o anume distribuție a acestor impulsuri la înfășurările motorului; -pentru creșterea cuplului dezvoltat, în schemele de comandă se adaugă din ce în ce mai multe elemente; -înfășurările se comandă în curent constant, deci se obține un randament energetic scăzut. În ultimii ani se observă o restrângere a domeniilor de aplic are a MPP , acesta fiind utilizat mai ales în aplicații de mică putere. 2.6 Motorul de curent continuu. Generalități. Mașina electrică la care schimbul principal de energie cu rețeaua de alimentare se face în c.c. se numește mașină de curen t continuu. La mașina de c.c., de regulă, inductorul este stator, iar indusul rotor. Circuitul magnetic al mașinii este format din jugul statoric masiv sau lamelat (din tole), polii principali lamelați pe care se găsesc bobinele înfășurării inductoare și miezul magnetic lamelat al rotorului în crestăturile căruia este dispusă înfășurarea indusă. Mașinile mai mari, pentru îmbunătățirea funcționării lor, sunt prevăzute și cu poli auxiliari, numiți și de comutație , care au o înfășurare proprie, iar alte mașini mai au și o înfășurare introdusă în crestăturile din tălpile polilor principali. În mașinile de curent continuu, câmpul inductor este produs de către înfășurarea de excitație, așezată pe polii principali, sau de magneți permanenți Înfășurarea indusă de pe rotor, de tip special, este conectată la colector. Rolul colectorului este de a redresa curentul alternativ din înfășurarea indusă pentru a da în circuitul exterior curent continuu. Înfășurarea de excitație a mașinilor de c.c. poate fi alimentată de la surse exterioare mașinii, când se spune că mașina are excitație separată , sau chiar de la mașină, când se spune că mașina este autoexcitată. Mașinile cu autoexcitație pot avea înfășurările de excitați conectate în derivație, în serie sau compound. Mai pot fi și mașini cu excitație mixtă . Schema de principiu pentru excitarea mașinilor de curent continuu: a) separată; b) în derivație; c) serie; d) compound; e) mixtă. Mașinile de curent continuu sunt utilizate în cele mai diferite domenii: în acționarea roboților industriali și a mașinilor cu comandă numerică; în aparatura profesională și de larg consum; în tracțiunea electrică, ca motoare de tracțiune; la mașinile de ridicat și la podurile rulante; în metalurgie, ca motoare pentru acționarea transportoarel or și a mecanismelor furnalelor, cilindrilor de laminor, cajelor de tragere etc. ca excitatoare a grupurilor electrogene de curent alternativ; ca generatoare, în grupurile Diesel-generator; ca generatoare de construcție specială pentru electroliză, pentru galvanoplastie și pentru sudură; ca motoare și generatoare pentru deservirea mecanismelor speciale; ca amplificatoare; ca și comutatoare etc.a .b .c. d .e.M MM M M 2.6.1 Elementele constructive ale motoarelor de curent continuu. Părțile pri ncipale: statorul (inductor), rotorul cu colector (indus), crucea portperii, scuturi, lagăre, cutia de borne. Secțiune printr-un motor de cc Statorul produce fluxul magnetic inductor și este format din: carcasă; poli; poli principali (numiți și poli de excitație); poli auxiliari (numiți și poli de comutație); bobinele polare; bobine de excitație (montate pe polii de excitație); bobinele polilor auxiliari, parcurse de curentul principal. În interiorul carcasei sunt fixați polii principali și polii auxiliari ai mașinii. Carcasa fixează mașina pe placa de fundație sau șasiu. Ax Scuturi Colector PortperieRulmențiRotorBobinaj PerieCarcasa Stator Partea carcasei care asigură conducerea fluxului magnetic, produs de polii principali și de polii auxiliari se numește jug. De o parte și de alta a carcasei sunt prinse două piese, numite scuturi. Până la diametre de 40cm, scuturile mașinii susțin lagărele și poartă numele de scuturi portlagăr. Dacă diametrul scutului depășește 1m se folosesc lagăre de susținere care se așează separat, pe placa de fundație. Bobinele polilor principali, care în ansamblul lor formează înfășurarea de excitație a mașinii (înfășurarea inductoare) sunt legate de regulă în serie. Polii servesc la îmbunătățirea comutației. Rotorul (indusul) este format din: -arbore, care transmite cuplul magnetic înt re pachetul de tole și capătul de arbore liber; -pachetul de tole ale rotorului, care are la exterior crestături deschise sau semiînchise în care se introduce bobinajul indus; -colectorul, format din lamele de cupru de secțiune trapezoidală; -bobinajul indus, format din bobine introduse în crestăturile pachetului de tole, capetele fiind lipite de colector; -suporți de bobinaj; -ventilator, prevăzut la unele mașini, pentru a realiza o circulație de aer necesară răcirii mașinii. ColectorArbore Bobinaj Tole Rotorul unui motor de curent continuu Rotorul constituie partea destinată procesului de transformare a energiei, din energie mecanică în energie electrică, dacă mașina este generator și invers, dacă mașina este motor. Miezul rotorului se execută din tole de oțel electrotehnic, izolate între ele p rintr- un strat subțire de lac, oxid sau foiță de hârtie, obținându -se astfel o reducere importantă a curenților Foucault induși în miez, care tind să se închidă paralel cu axa mașinii. Miezul se fixează pe arborele mașinii fie direct, fie prin intermediul unui butuc. Colectorul redresează forța electromotoare alternativă indusă în mașină și trebuie să prezinte o formă perfect cilindrică. Legătura circuitului indus al rotorului cu circuitul exterior se face cu ajutorul periilor plasate pe colector. O perie a coperă obișnuit, cel puțin două lamele de colector. Periile sunt susținute, ghidate și apăsate pe colector cu ajutorul unui dispozitiv numit port -perie. Întrefierul constituie porțiunea neferomagnetică a circuitului magnetic al mașinii. Întrefierul mașinilor de curent continuu de putere mică variază între 1 3mm și ajunge, la mașinile mari, la 1012mm. Crucea portperii. Pe colector freacă periile pentru a face legătura electrică între bobinajul indus și cutia de borne. Periile sunt montate în casete metalice , numite portperii, care sunt fixate de o piesă de fontă sau oțel, denumită colierul sau crucea portperii. Scuturile și lagărele au rolul de a permite montarea rotorului în interiorul statorului și rotirea lui. Cutia de borne este montată de regulă pe carcasă și are în interiorul ei placa de borne. La aceste borne se realizează legăturile electrice din interiorul mașinii și legăturile electrice la rețeaua electrică de alimentare. 2.6.2 Funcționarea motoarelor de curent continuu. Mașinile de curent continuu reprezintă, în esență, o mașină de curent alternativ înzestrată cu un organ special, colectorul, așezat între sistemul indus al mașinii și circuitul exterior, care redresează curentul alternativ. Atunci când o spiră se învârtește într -un câmp magnetic omogen, în jurul unui ax perpendicular pe direcția câmpului, cu o viteză unghiulară , spira este străbătută de un flux magnetic variabil: t SB    cos cos  flux care, la rândul lui induce în spiră o forță electromotoare altenativă sinusoidală: t Etdtdem sin sin  cu: B- inducția magnetică, S -suprafața spirei, =BS– amplitudinea fluxului ce străbate spira, Em==K enamplitudinea forței electromotoare induse. Tensiunea electromotoare indusă în înfășurarea indusului, la mașina de curent continuu (generator sau motor) este proporțională cu turația și cu fluxul magnetic. Capetele spirei sunt legate la inelele A și B și fixate pe axul de rotație, iar pe aceste inele freacă două perii care pot fi legate la un circuit exterior alimentat cu tensiunea elec tromotoare alternativă indusă, luând naștere un curent alternativ. Se obține astfel o mașină de curent alternativ, cum este cea reprezentată în figura: Schema de funcționare a mașinii de curent alternativ. O singură spiră are capetele legate la două inele pe care freacă periile a, b și care se rotește în câmpul magnetic uniform produs de polii N- S. Conductoarele AB și CD taie linii de câmp ale câmpului magnetic. În ele se va induce o tensiune electromotoare (t.e.m) al cărei sens se stabilește curegula mâinii drepte și care este proporțională cu B r–componenta inducției normală pe direcția deplasării. = 0; B r= 0 (cele două conductoare nu taie linii de forță); t.e.m. = 0. = /2 ab ajunge în axa polului N, B r= maxim, t.e.m. = maximă, cu sens ul de la B spre A. Peria a este pozitivă, iar b este negativă. În intervalul  ; 2 / , Brscade și t.e.m. scade. = ; Br=; t.e.m. = 0.2 0i -3/ N SAB C DBa AC D b R = 3/2; t.e.m. = maximă în sens invers decât la =/2. T.e.m. indusă în spiră, care se poate măsura la periile ab este alternativă sinusoidală. Se presupune în continuare că spira se găsește pe un cilindru de fier. Pentru a se realiza un întrefier cât mai redus, suprafețele polilor au o formă rotundă. Cilindrul situat între polii electromagnetului și într efierul mic determină micșorarea reluctanței circuitului magnetic, mărirea fluxului și implicit mărirea forței electromotoare induse E m. Cilindrul, împreună cu spira în care apare fenomenul inducției se numește indus și constituie, în cazul de față rotorul mașinii. Schema de funcționare a mașinii elementare de curent continuu. Conductoarele AB și CD care taie liniile de forță în deplasarea lor, se numesc conductoare active ale spirei. Electromagnetul care produce fluxul se numește inductor și constituie în cazul de față statorul mașinii. Cele două capete ale spirei se consideră legate la 2 segmente inelare din cupru, numite lamele , pe care freacă periile, fixe în spațiu, la care se leagă circuitul exterior. Periile trec de pe o lamelă pe alta în momentul în care forța electromotoare indusă în spiră trece prin zero, adică, când planul spirei este perpendicular pe axa polilor. Bobinele electromagnetului inductor, alimentate cu curent continuu, care poartă numele de curent de excitație, produc un câmp magnetic care trece din miezul polului N, străbătând primul întrefier, în miezul indusului, pentru ca apoi, după ce străbate al doilea întrefier, să treacă în miezul polului S. Câmpul magnetic se închide apoi prin miezul de fier care leagă cei doi poli și care se numește jugul mașinii. Din cauza refracției magnetice, liniile de forță din întrefier sunt perpendiculare pe suprafața indusului, constituind ceea ce se numește un câmp radial. De -a lungul întrefierului, acest câmp are R0/2 3/2 2i N SAB C Da b valoarea maximă în dreptul axei polilor; pe măsură ce crește distanța față de această axă, câmpul în întrefier scade, după o curbă oarecare, și devine zero în axa perpendiculară pe direcția N -S a axei polilor. Această din urmă axă se numește axă neutră geometrică . Porțiunea de circumferință a indusului, corespunzătoare unui pol, deci cuprinsă între două axe neutre consecutive, se numește pas polar și se notează cu . Redresarea curentului alternativ din spiră se realizează cu ajutorul colectorului. Forța electromotoare indusă în c onductoarele active este: lvxB ue unde veste viteza de deplasare a conductorului față de câmpul magnetic, l, lungimea părții active, B, inducția în întrefier. Forța electromotoare indusă în spiră: xBctlvxB us . 2 Din relația anterioară se poate deduce că, forța electromotoare indusă variază proporțional cu inducția în întrefier, frecvența forței electromotoare induse fiind: 601 np Tf (relație valabilă pentru mașina cu 2P poli), unde n este viteza mașinii în rot/min. Forța electromotoare dintre perii are mereu același sens (de la peria b către a), rezultând o variație a tensiunii ca aceea reprezentată în figura . Forma forței electromotoare redresate. În cazul colectorului cu 2 lamele, tensiunea variază de la u = 0 în axa neutră (la peria a) până la un maxim sub talpa polară u = E m. Inducția magnetică la periferia rotorului. = (0; ) t.e.m. în abeste de la bla a, peria A este pozitivă, = (; 2) peria A rămâne tot pozitivă.a c fb d’ dg hP0B t IB1B2B3B4B5B6B7BI a b cBm N S T.e.m. care se măsoară la periile a, b este o tensiune periodică, însă cu același sens, numită pulsatorie, obținută prin redresarea t.e.m. alternative, deci colectorul mașinii de curent continuu redresează curentul alternativ indus în bobinajul indusului (se poate spune deci că, colectorul este un redresor mecanic). 2.6.3 Frânarea motoarelor de curent continuu. La unele acționări electrice, în special la acelea în care ansamblul motor -mașină de lucru posedă mase mari de rotație, este necesară o oprire rapidă a motorului , pentru a reduce timpul de inactivitate al mașinii de lucru și a ridica astfel, productivitatea acesteia. Există 3 procedee importante de frânare și anume: frânarea în generator, cu recuperarea energiei; frânarea dinamică (în regim de generator debitând în rețea); frânarea în regim de contracurent (prin conectarea inversă). 2.6.4 Frânarea în regim de generator cu recuperarea energiei. Pentru ca motorul să devină generator trebuie ca E = K Ensă devină mai mare decât tensiunea rețelei U r. La i c= ct (= ct) n devine mai mare ca n 0. Curentul din indus: reg aE r reg ar aRrnK U RrE UI Pentru E Ur, curentul indus I aîși schimbă sensul, pentru = ct. cuplul M = K MI își schimbă sensul devenind cuplu rezistent (din cuplu motor). Pentru a mări viteza mașinii peste n 0, la arborele său trebuie să acționeze un cuplu motor din exterior Caracteristicile mecanice ale frânării cu recuperarea energiei, la motorul derivație .R1R2R3 n1n2n3 +M -M M 1 0nR3 R2 R 2.6.5 Frânarea dinamică. Motorul se va decupla de la rețea, conectându -se pe o re zistență exterioară, excitația rămânând în continuare la rețea. Cuplul de frânare M = K MIa= K M’Ia= K M’’ se micșorează pe măsură ce viteza n scade. I a se menține cât mai constant, micșorând rezistența R aregrezultând un cuplu constant pe toată perioa da frânării. 2.6.6 Frânarea în regim de contracurent. Se inversează sensul curentului în motorul care trebuie frânat, prin inversarea legăturii indusului cu barele de alimentare, legătura excitației rămânând neschimbată. Înainte de schimbare: U = U r; Ie= ct (= ct.); M = K MIacuplul motor este proporțional cu curentul: ar arE UI După inversare: U = – U rși curentul din indusul motorului va fi: reg ar reg ar aRrE U RrE UI Deci, acesta își schimbă sensul. a ar reg a a EIIU RrI 2 Termenul U rIareprezintă puterea furnizată motorului din rețea, iar EI aeste puterea furnizată de arborele motorului în contul energiei cinetice a maselor în rotație. Schimbarea sensului curentului în indus schimbă sensul cuplului electromagnetic M. La arb orele motorului apare un cuplu dinamic negativ M j= – M – (M0 + M 2), care produce o frânare a motorului, urmată de inversarea sensului de rotație.n1n2n3 +M -M M1 0R1R2R3nR3 R2 R Dacă nu se urmărește schimbarea sensului de rotație, ci numai frânarea în vederea opririi, motorul trebuie d econectat de la rețea în momentul când viteza sa ajunge aproape de zero, căci astfel motorul începe să se învârtească în sens invers. Sistemul de frânare în regim de contracurent se poate folosi și la limitarea vitezei. 3. Teoria controlului de viteza la motoarele de curent continuu: Viteza de funcționare a unui motor CC este direct proporționala cu tensiunea de alimentare, reducerea tensiunii de alimentare de la 12V la 6V de exemplu ar produce o funcționare la jumătate de turație . Se pune problema obține rii acestui lucru când tensiunea de alimentare este constanta la 12V.Controlul de tensiune funcționează prin modificarea tensiunii medii aplicate pe motor. Se poate realiza prin simpla ajustare a tensiunii furnizate motorului, dar acest lucru este ineficient. O metoda mai buna este comutarea rapida a tensiunii. Daca comutarea este suficient de rapida motorul nu simte acest lucru si va simți doar efectul mediu. Când comutatorul este închis motorul vede o tensiune de 12V iar când este deschis una de 0V. Daca perioada stării închis este egala cu cea deschis atunci motorul va vedea o tensiune medie de 6V si va avea o turație mai mica corespunzătoare acestei tensiuni. Odată cu creșterea duratei stării închis viteza motorului va creste. Comutarea este realizata cu tranzistoare MOSFET, IGBT sau tiristoare. Timpul necesar pentru creșterea sau scăderea turației in condiții de comutație depinde de inerția rotorului, frecarea si sarcina motorului. Graficul de mai jos ilustrează viteza unui motor care este comutat cu o viteza mica. Se observa ca viteza medie este in jur de 150rot/min deși variază substanțial . Daca tensiunea de alimentare este comutata cu o viteza suficient de repede turația nu va avea timp sa se modifice prea mult si viteza va fi relativ constanta. Acesta este principiul controlului de viteza, prin urmare viteza este stabilita PWM – pulse width modulation. Care este frecventa dorita? Nu este o întrebare simpla. In cele ce urmează sunt enunțate câteva avantaje si dezavantaje : -frecvente intre 20Hz si 16KHz produc sunete perceptibile -interferentele de radiofrecvența sunt mai mari odată cu creșterea frecventei PWM -fiecare comutație produce o putere disipata pe dispozitivul de comutație -cu cat este mai mare frecventa cu atât este mai stabila forma curentului prin motor. La frecvente mici forma curentului are multe spike-uri, dar la frecvente mari inductanța motorului va filtra acest curent la o valoare proporționala cu PWM-ul. Un curent cu multe spike-uri va produce pierderi pe cablurile de conexiune si pe infasurarea rotorica mult mai mari decât unul stabil. Acest ultim fapt se observa din graficul de mai jos : Ambele forme de unda au același curent mediu, dar când calculam puterea disipata in rezistentele din motor pentru cazul curentului continuu obțin em : RIP2 Iar pentru cazul in care curentul este comutat : 2)2 (2RIP= RI22 Deci prin comutație se pierde de doua ori mai multa energie. In practica forma de unda nu va fi drepunghiularã ca in exemplu dar pierderile vor fi considerabil mai mari decât la un curent constant. Alegerea frecventei: O metoda de alegere a frecventei este de exemplu alegerea unui procent de x% in care vrem sa fie stabila forma de unda a curentului. Apoi se poate calcula frecventa minima care sa asigure acest lucru. Figura următoare ilustrează circuitul echivalent al motorului si forma curentului cu comutarea PWM. Aceste este cazul ‘worst case’ la un PWM 50% iar curentul este prezentat pentru un motor staționar care la fel este ‘worst case’. T este perioada de comutație . eI eIi LtR t / /  este constanta de circuit egala cu L/R. Așadar curentul la t=T/2(i1) nu trebuie sa fie mai mic de x% decât de la t=0 (i0). Avem deci o condiție de limitare. i ix 0 11001 Deci: Având in vedere faptul ca f=1/T : Având aceste date putem determina frecventa de funcționare cunoscând parametrii motorului : R=0.04Ω, L=70µH si vom include si rezistenta in conducție a tranzistoarelor Ron=2x10mΩ (conduc 2 tranzistoare din puntea H). Cu aceste date obținem următorul tabel : P Frecventa 1 42kHz 5 8.2kHz 10 4kHz 20 1.9kHz 50 610Hz Se observa ca se poate obține un ripple rezonabil al curentului cu frecvente de peste 4kHz. 4. Microcontrolerul PIC16F684 : PIC16F6 84A este un microcontroler RISC pe 8 biți cu o arhitectură Harvard modernă. Unitatea centrală oferă o serie de facilități descrise în foaia de catalog și prezentate succint în continuare, dar hotărâtoare pentru alegerea acestui t ip de procesor au fost: prețul rezonabil al controlerului –de circa 4 USD la care se poate achizițio *na la noi în țară; mediu de dezvoltare integrat sub Windows format din asamblor, editor de legături, bibliotecar și simulator dezvoltat de firma Microchip – oferite gratuit; realizarea unui programator se poate face foarte simplu și costă între 3 și 15 USD; programatorul universal PIC Start Plus costă circa 200 USD; memoria FLASH simplifică dezvoltarea aplicațiilor, permițând reprogramarea de un număr extrem de mare de ori; capabilitate sporită de curent per pin I/O de 25 mA; set de instrucțiuni simplu și ușor de învățat. 4.1 Caracteristici ale microcontrolerului 4.1.1 Unitate centrală RISC performantă pe 8 biți 35 de instrucțiuni; toate instrucțiunile se execută într -un ciclu, cu excepția salturilor care necesită două cicluri; viteza CPU 5MIPS frecvența de operare -DC – 20 MHz; -200 ns (minim) – durata de execuție a unei instrucțiuni; 3.5KB memorie program ( Flash ); 128octeți RAM; 256octeți EEPROM; fiecar e instrucțiune este codificată pe 14 biți; magistrală de date pe 8 biți; stivă hardware pe 8 niveluri; temporizatoare 2 x 8biti, 1 x 16biti 15 registre cu funcții speciale hardware ( Special Function Hardware Registers ); moduri de adresare oferite: directă, indirectă și relativă; există 4 surse de întrerupere: -folosind pinul extern RB0/INT; -la depășirea TMR0 ( overflow ); -la schimbarea stării pinilor PORTB<4:7>; -la încheierea scrierii în EEPROM. 4.1.2. Periferice 12pini I/O cu setarea individuală a direcție i; Capabilitate sporită de curent pentru comanda directă al LED -urilor sau a unei alte sarcini: -25 mA în starea high; -25 mA în starea low; TMR0: timer / numărător pe 8 biți cu prescaler programabil pe 8 biți. Convertor AD pe 10 bițisi 8 canale 2 comparatoare analogice cu tensiune de referința programabila (% din Vdd) 4.1.3 Facilități speciale Sunt garantate 100.000 cicluri scriere- ștergere memorie FLASH ; 10.000.000 scrieri- ștergeri memorie EEPROM ; este garantată menținerea informației în memoria EEPROM p este 40 de ani; programarea „în montaj” prin intermediul a doi pini ( In-Circuit Serial Programming ™ – ICSP™); există un timer acționat la punerea sub tensiune ( Power-up Timer PWRT) și unul pentru pornirea în siguranță a oscilatorului cu cuarț ( Oscillator Start-up Timer OST); Watchdog Timer (WDT) cu propriul oscilator RC pentru funcționare sigură; Protecția programului din FLASH contra citirii neautorizate; Mod de operare SLEEP cu reducerea semnificativă a puterii consumate; Oscilator cu opțiuni programabile . 4.1.4 Tehnologie CMOS FLASH/EEPROM îmbunătățită Putere redusă și viteză de operare ridicată; Operare statică; Domeniu extins de tensiuni de alimentare: -Comercial: 2.0 V – 5.5 V; -Industrial: 2.0 V – 5.5 V. Putere redusă – curent de alimentare tipic: –< 2 mA la V DD= 5 V, 4 MHz; -15 µA (tipic) la V DD= 2 V, 32 kHz -< 0.5 mA la V DD= 2 V, în așteptare ( stand-by ) Temperatura de funcționare : -40 – 125 °C Microcontrolerul se găsește in capsule de tip PDIP, SOIC, TSSOP cu 14 pini. PIC16F684 pinout 4.2 Arhi tectura unității centrale a PIC16F684 PIC16F6 84A este un microcontroler RISC pe 8 biți cu o arhitectură Harvard modernă. Unitatea centrală oferă o serie de facilități descrise în foaia de catalog și prezentate succint în continuare, dar hotărâtoare pentr u alegerea acestui tip de procesor au fost: prețul rezonabil al controlerului –de circa 4 USD la care se poate achiziționa la noi în țară; mediu de dezvoltare integrat sub Windows format din asamblor, editor de legături, bibliotecar și simulator dezvoltat de firma Microchip – oferite gratuit ; realizarea unui programator se poate face foarte simplu și costă între 3 și 15 USD; programatorul universal PIC Start Plus costă circa 200 USD; memoria FLASH simplifică dezvoltarea aplicațiilor, permițând reprogramarea de un număr extrem de mare de ori; capabilitate sporită de curent per pin I/O de 25 mA; set de instrucțiuni simplu și ușor de învățat. 4.2.1 Schema bloc a microcontrolerului PIC16F684 conform foii de catalog 4.2.2 Descrierea pinilor microntrolerului PIC16F684 Nume Functie 4.2.3 Organizarea memoriei PIC16F84A este un procesor cu arhitectură Harvard care dispune de două zone distincte de memorie: memoria de program (cod); memoria de date. Fiecare bloc de memorie are propria magistrală , de aceea accesul la fiecare bloc poate avea loc în cadrul aceluiași ciclu. Memoria de date poate fi la rândul ei împărțită în memoria RAM de uz general și registrele cu funcții speciale ( Special Function Registers SFR). SFR controlează activitatea unității centrale și a perifericelor. Memoria EEPROM (se găsește la adresele 0H - 3FH) este de asemenea asociată blocului memoriei de date. Memoria EEPROM poate fi accesată doar indirect –un pointer indicând indirect adresa EEPROM ce urmează a fi citită sau scrisă. 4.2.4 Memoria program Familia de microcontrolere PIC16FXX are un indicator de adresă (PC Program Counter ) pe 13 biți prin care se pot adresa 8 k cuvinte de 14 biți. În cazul PIC16F684, numai primele 2 kilocuvinte sunt prezente fizic, respectiv la adresele 0000h- 07FFh. Accesarea unei locații care depășește 07FFh va genera o trunchiere ( wraparound ). Vectorul RESET se găsește la adresa 0000H, iar cel de întrerupere la adresa 0004H.Dacă întreruperile nu sunt utilizate, programul se poate organiza continuu de la adresa 0000H. 4.2.5 Memoria de date Memoria de date este împărțită în: Memoria de uz general ( General Purpose Registers GPR) Registrele cu funcții speciale ( Special Function Registers SFR) Anumite porțiuni din memoria de date sunt segmentate, aspect valabil atât pentru GPR cât și pentru SFR. GPR este segmentat pentru a permite adresarea a mai mult de 116 octeți de RAM. Segmentar ea SFR se referă la registrele care controlează perifericele. Segmentarea implică folosirea unui bit de control (RP0) aflat în registrul STATUS. Microchip denumește segmentele ca bancuri. Harta memoriei de date este redată în figura alaturata. Memoria de d ate poate fi accesată direct prin utilizarea adresei absolute a fiecărui registru sau indirect prin intermediul FSR (File Select Register). Adresarea indirectă presupune utilizarea valorii bitului RP0 din registrul STATUS pentru specificarea bancului curen t. Există două bancuri de memorie (0 și 1) a 128 octeți fiecare (adrese până la 7FH inclusiv). Primii 12 octeți din fiecare banc sunt rezervați pentru SFR, ceilalți sunt GPR și pot fi utilizați pentru program. Bancul 0 este selectat prin ștergerea bitului RP0 (STATUS<5>). Bancul 1 este selectat prin setarea bitului RP0. Instrucțiunile MOVWF și MOVF transferă informația din registrul W în orice registru F și viceversa. În exemplul următor prima directivă specifică tipul procesorului folosit (PIC16F84A), cea de-a doua incluzând fișierul header furnizat de firma producătoare , Microchip. Registrul W este încărcat cu valorile binare specificate în clar prin comentarii, este selectat bancul 1 (adrese RAM peste 80H) și apoi conținutul registrului W este mutat în registrul OPTION. Am demonstrat aici de fapt o porțiune din codul de inițializare care trebuie să existe la începutul fiecărui program –în exemplu furnizat se inițializează registrul de opțiuni OPTION_REGISTER. Prezența comentariilor in program este o necesitate, dar eficiența lor este dependentă de conținutul acestora. Comentar ea insuficientă este dăunătoare, după cum un comentariu de forma ; PORTB = PORTB + 1 la o instrucțiune incf PORTB, F este redundant și inutil. Un comentariu bine structurat va ajuta în primul rând autorul programului să se descurce în propriul soft peste luni de la crearea sa. Comentariile trebuie obligatoriu să explice ceea ce execută secvența respectivă și să ofere informații relative la setări –așa cum este de exemplu comentată setarea registrului de mai sus. Comentariile sunt vitale atunci când se luc rează în echipă și se dorește ca o altă persoană decât autorul codului sursă să -l poată modifica. Rândurile goale din program sunt utile pentru sporirea lizibilității codului PWM – Modulatorul în durată Modulatorul în durată (PWM, Pulse Width Modulation ) produce un tren de impulsuri cu durata programabilă a stării SUS și JOS, prin aceasta permițându -se modificarea factorului de umplere (duty cycle ). Semnalul PWM se poate utiliza direct de exemplu pentru comanda unei diafragme piezoelectrice sau intensit ății luminoase a unui LED sau bec, sau se poate filtra și amplifica și atunci poate comanda un motor de curent continuu, un difuzor sau o altă sarcină (figura 1.14). Modulatorul în durată și generarea unui semnal analogic. Chiar la microcontrolerele de 8 biți, factorul de ump lere poate avea o rezoluție bună – de exemplu de 10 biți la PIC18F452. Aceasta înseamnă că un PWM urmat de un filtru RC trece -jos se poate folosi ca o alternativă ieftină și destul de precisă pentru a înlocui un DAC. În cazul alimentării la +5V, un asemenea semnal PWM filtrat poate lua orice valoare între 0 și 5 V cu o rezoluție de 5/1024 = 4.88 mV! 5. Schema bloc a acționarii Sistemul este format din următoarele blocuri componente: – microcontrolerul PIC16F684 – modulul de comu nicație RS-232 – electronica de putere – blocul de măsura – motorul Modulul de comunicație RS-232 asigura comunicația sistemului cu un PC printr-un port serial RS-232. Acest modul este realizat cu un circuit integrat MAX232. Acest circuit realizează conversia semnalelor de la portul serial in semnale compatibile TTL. MAX232 este un driver/receptor dual si convertește tipic semnalele RX, TX, CTS si RTS. Driverele furnizează nivele de tensiune RS-232 (aproximativ ± 7.5 V) pornind de la o sursa de +5V folosind pompe de sarcina integrate si condensatoare externe. Receptoarele reduc tensiunile de intrare (care pot avea valori de ± 25 V) la nivele TTL (5V). PIC16F684MotorElectronica de putere Bloc de masura Modul comunicatie RS-232PC Receptoarele au un prag tipic de 1.3V si o histereza de 0.5V. Pentru comunicație microcontrolerul foloseș te portul RA5. Electronica de putere este formata in acest caz din drivere si tranzistoarele punții H care comanda motorul. Driverele sunt de tipul MAX4427 cu un curent maxim de ieșire de 1.5A si sunt potrivite pentru funcționare in medii industriale. Fiecare capsula conține 2 drivere. Punte H cu motorul rulând normal (înainte) Pentru o funcționare mai simpla s-a ales comanda unui singur tranzistor in timp ce al doilea este in conducție permanenta. S-a ales folosirea de tranzistoare MOSFET cu canal n datorita rezistentei in conducție mult mai mici fata de cele cu canal p si a comenzii mai ușoare pe partea de low side. Tranzistoarele sunt de tipul IRL1004 seria HEXFET Power MOSFET si au următoarele caracteristici: VDSS=40V, RDS(on)=6.5m Ω, Id=13A. Temperatura maxima de funcționare este de 175°C ceea de permite folosirea in medii industriale. Tranzistorul are capsula TO-220 si o putere disipata de 50W. Rezistenta termica mica si costul mic al capsulei contribuie la folosirea pe scara larga in industrie. Aceste tranzistoare au diodele de protectie integrate. Capsula TO-220 Punte H cu motorul rulând invers (înapoi) Blocul de măsura : măsurarea parametrilor se face fara senzori folosind doar mărimi prelevate din circuitul electric al motorului. Blocul este realizat cu circuitul integrat MCP6S26 care este un amplificator cu câștig programabil. Turația se măsoară folosind tensiunea electromotoare inversa ce apare la deconectarea unui tranzistor. Tensiunea ce apare pe motor este direct proporțional ã cu turația acestuia. Motorul de curent continuu poate fi modelat ca si o sarcina inductiva, tensiunea la bornele sale va fi egala cu produsul dintre inductanța sa si dI/dt.. Măsurarea BEMF După decuplarea tranzistorului dI/dt trebuie sa se stabilizeze înainte de a face măsurători . Tensiunea măsurata trebuie sa fie intre 0V si Vdd. Tensiunea rezultata de pe motor poate avea valori intre 0-12V astfel ea este trecuta printr-un divizor de tensiune înainte de a fi aplicata amplificatorului (pentru aceasta măsurătoare se folosește o amplificare de 1). Ulterior tensiunea amplificata se aplica convertorului A/D din microcontroler. Măsurarea curentului absorbit de motor se poate face foarte simplu citind tensiunea de pe un sunt aflat intre puntea H si masa. Valoarea șuntului se alege in funcție de curentul absorbit de motor si puterea disipata maxima. Pentru acest montaj s-a ales un sunt de 0.1 Ωsi o putere de 1W pentru un curent maxim absorbit de 3A. Când trec cei 3A prin sunt puterea disipata ideala pe sunt este de 0.9W si tensiunea citita de pe el este de 0.3V Măsurarea curentului Pentru a obține rezoluția maxima a convertorului A/D tensiunea trebuie amplificata cat mai mult pentru a ajunge la o valoare apropiata a Vdd. Folosirea unei amplificări de 16 va genera o tensiune de ieșire a amplificatorului de 4.8V conform ecuației : VGAINMAX =VNOMINALMAX x Au=0.3*16= 4.8V Ceea ce va rezulta intr-o rezoluție de 9.94 bițidin ecuația de mai jos in care X este nr. de biți: 1024 2 VV ddGainMaxX Curentul prin sunt va fi : Iar tensiunea efectiva citita de pe sunt rezulta din ecuația următoare : Deoarece se folosește un semnal PWM pentru a comanda motorul puntea H va consuma curent doar când PWM este 1, astfel pentru a putea măsura curentul absorbit de motor trebuie ca măsurar ea sa aibă loc in perioada in care PWM este pe 1. Comunicarea intre microcontroler si amplificator se realizează prin interfața SPI. Canalul 0 este folosit pentru măsurarea turației iar canalul 1 pentru măsurarea curentului. Pinul CS este conectat la pinul RA1, SCK la RA2 iar SI la RC0. Pinul RA0 este folosit ca intrare analog pentru măsurarea turației si curentului si este conectat la pinul Vout al amplificatorului. Vref este conectat la masa. 6. Schema electronica a montajului: Pentru realizarea schemei si a cablajului s-a folosit programul Protel 2004 7. Cablajul imprimat al montajului: 8. Program PIC16F684: 8.1 Calculul valorilor Pentru comanda motorului se folosește ECCP (Enhanced Capture Compare PWM). Când se lucrează in acest mod este necesara calcularea frecventei, factorului de umplere si a rezoluției . Calculul frecventei: Selectarea unei frecvente corecte va afecta sunetul funcționarii motorului si viteza de comutație a tranzistoarelor. Auzul uman acoperă o banda intre 20Hz si 20kHz. Alegerea unei frecvente de 4kHz de exemplu reduce zgomotul perceput deoarece urechea este mai puțin sensibila in aceasta zona. Frecventa se calculează după următoarele ecuații : f=1/T T=[(PR2+1)]*4*Tosc*TMR2Prescaler Rezoluția factorului de umplere a PWM determina gradul de precizie cu care se poate modifica acesta. De exemplu pt. 10 bițiavem 1024 de valori posibile in timp ce pentru 8 bițidoar 256. Frecventa PWM, frecventa oscilatorului si factorul de prescalare Timer2 afectea ză rezoluția . Rezoluția maxima este de 10 biți. Rezoluția factorului de umplere a PWM se calculează astfel: 2log2log  PRESCALER TMR FPWMFosc R Inițializarea ECCP se face prin inițializarea a patru registrii: -PR2: afectează frecventa PWM, valoarea lui se calculează cu formula: 12 42 PRESCALER TMR ToscTPR -CCPR1L:CCP1CON<5:4> : rezoluția PWM este de 10 bițidar registrii sunt doar de 8 biți astfel valoarea ei este impartita in doi registrii CCPR1L care tine cei 8 bițimai semnificativi si CCP1CON<5:4> cei 2 mai puțin semnificativi. Valoarea pe 10 bițise calculează astfel: PRESCALER TMR ToscDCCON CCPL CCPR24 : 5 1 :1 -CCP1CON se folosește (pe lângã stocarea celor doi biți) la setarea in mod PWM a ECCP folosind biți0..3 si se poate schimba sensul motorului cu biții6..7 („01” pt. înainte, „11” pt. înapoi) -T2CON: acest registru setează Timer2Prescaler si pornește Timer2. Timer2Prescaler este conținut in biții0..1 si determina frecventa PWM, factorul de umplere si rezoluția . Timer2 trebuie pornit înaintea începerii semnalului PWM prin setarea bitului 2. PR2 si factorul de prescalare se calculează după următoarea schema logica: Eșantionarea si medierea PWM-ului iar alături este schema logica a modulului principal: Bucla principala Calculul PR2 si a factorului de prescalare 8.2 Programul pentru microcontroler: Programul este format din 4 module: modul de comunicație RS-232, modul de comunicație SPI cu amplificatorul, modul generator de întârzieri si modulul principal care comanda motorul. /*modul principal ;**************************************************************************** */ #include „motor.h” //************************************************************************** //Main() – bucla principala // – receptie comenzi RS-232 // – procesare comenzi // – transmisie RS-232 //*************************************************************************** void main() { char i; Init(); while(1) { data[0] = Receive(); //comanda bit de start if (data[0] == ‘(‘) //daca este valid incepe { data[1] = Receive(); //bit de comanda for (i = 2; i < MAX && data[i-1] !=')'; i++) data[i] = Receive(); //biti de date switch (data[1]) //Interpretare biti de comanda { case 'a': //comanda PR2 CommandPR2(); break; case 'b': //Comanda CCPR1L CommandCCPR1L(); break; case 'c': //Comanda CCP1CON<5:4> CommandCCP1CON5_4(); break; case ‘d’: //comanda prescalare CommandPrescaler(); break; case ‘e’: //comanda fosc CommandFosc(); break; case ‘f’: //Firmware Version CommandFW(); break; case ‘g’: //Control motor CommandMotorControl(); break; case ‘h’: //masurare rot/min CommandRPM(); break; case ‘i’: //masurare curent CommandCurrent(); break; default: CommandUnknown(); break; } Transmit(data[0]); for (i = 1; i < MAX && data[i-1] !=']'; i++) Transmit(data[i]); } } } //*************************************************************************** //Init() - rutina initializare porturi, variabile etc // - initializare PORTC ca iesire // - initializare RA0 ca intrare analog pt conversia curentului // - initializare RA1 si RA2 ca iesiri digitale // - initializare ceas intern la 4MHz // - initializare PWM la 3.9 kHz si factor de umplere 0 // - initializare convertor A/D Fosc/16 //*************************************************************************** void Init() { T1CON = CLEAR; //Initializare Timer1 PORTC = CLEAR; //stergere PORTC PORTA = CLEAR; //stergere PORTA TRISC = CLEAR; //PORTC TRISA1 = CLEAR; //RA1 iesire TRISA2 = CLEAR; //RA2 iesire TRISA0 = SET; //RA0 intrare OSCCON = 0b01100000; //setare oscilator intern la 4MHz OSCTUNE = 4; ANSEL = 0b00000001; // AN0 - masurare rot/min si curent CMCON0 = 0x07; //oprire comparator CCP1CON = 0B01001100; //CCP initializare full bridge CCPR1L = CLEAR; //0 % factor de umplere PR2 = 0XFF; //3.91 kHz TMR2ON = SET; //Start PWM ADCON1 = 0B01010000; //Fosc/16 Conversion Clock ADCON0 = 0B10000001; //Right Justified, A/D Module On CS = SET; //SPI CS stare sus baudrate = ((FOUR_MHZ/BPS)/3) - 1; //Baudrate derivat din osc intern de 4MHz } //************************************************************************** //ConvertFromASCIIToHex(data) - conversie din ascii in hexa //*************************************************************************** unsigned char ConvertFromASCIIToHex(unsigned char data) { if (data > 0x39) //A – F data -= 0x37; else data -= 0x30; //0 – 9 return data; } //************************************************************************** //ConvertFromHexToASCII(data) – conversie hex in ascii //*************************************************************************** unsigned char ConvertFromHexToASCII(unsigned char data) { if (data > 0x9) //A – F data += 0x37; else data += 0x30; //0 – 9 return data; } //************************************************************************** //MeasureRPM() – masoara rot/min //*************************************************************************** void MeasureRPM() { unsigned int k; sample = 0; for(k=0; k < 5; k++) { while(RC2 == CLEAR) //cat timp pwm=0 {} while(RC2 == SET) {} //cat timp pwm=1 TMR2ON = CLEAR; //sincronizare pe pwm 0 stop pwm temp = DELAY; //intarziere pentru stabilizare efect di/dt #asm //si asteptare pentru conversie A/D decfsz _temp,f goto $-1 #endasm GODONE = SET; //Start conversie A/D while(GODONE == SET) //asteptare pt finalizarea conversiei A/D {} TMR2ON = SET; //Restart PWM sample += ( (ADRESH << 8) | ADRESL ); //Log Sample } sample /= k; //mediere esantioane } //************************************************************************** //MeasureCurrent() - masurare curent //*************************************************************************** void MeasureCurrent() { unsigned int k,count; sample = 0; MeasurePeriod(); for (k=0; k < period; k+= SAMPLE_INTERVAL) { temp = k; if (temp > 1) //caz general k > 1 { temp /= SAMPLE_INTERVAL; while(RC2 == SET) //cat timp PWM 1 {} while(RC2 == CLEAR) //cat timp PWM 0 {} #asm //sincronizare pe pwm 1, delay decfsz _temp,f //Loop Invariant = 3*temp – 1 goto $-1 #endasm } else //caz de baza k=0 { while(RC2 == SET) //cat timp PWM 1 {} while(RC2 == CLEAR) //cat timp PWM 0 {} } GODONE = SET; //start conversie A/D while(GODONE == SET) //asteptare finalizare conversie A/D {} sample += ( (ADRESH << 8) | ADRESL ) ; //Log sample } count = period / SAMPLE_INTERVAL; sample /= count; //mediere esantioane } //************************************************************************** //MeasurePeriod() - masoara perioada PWM //*************************************************************************** void MeasurePeriod() { TMR1L = CLEAR; TMR1H = CLEAR; while(RC2 == SET) // cat timp PWM 1 {} while(RC2 == CLEAR) //cat timp PWM 0 {} TMR1ON = SET; //sincronizare pe 1, start Timer while(RC2 == SET) //cat timp PWM 1 {} while(RC2 == CLEAR) //cat timp PWM 0 {} TMR1ON = CLEAR; //sincronizare pe 1, Stop Timer period = (TMR1H * 0XFF) + TMR1L; //Log Period } //************************************************************************** //CommandPR2() - incarcare registru PR2 //*************************************************************************** void CommandPR2() { data[2] = ConvertFromASCIIToHex(data[2]); data[3] = ConvertFromASCIIToHex(data[3]); PR2 = (data[2] << 4) | (data[3] & 0x0F); data[0] = '['; data[1] = 'A'; data[2] = ']'; } //************************************************************************** //CommandCCPR1L() - incarca registrul CCPR1L //*************************************************************************** void CommandCCPR1L() { data[2] = ConvertFromASCIIToHex(data[2]); data[3] = ConvertFromASCIIToHex(data[3]); CCPR1L = (data[2] << 4) | (data[3] & 0x0F); data[0] = '['; data[1] = 'B'; data[2] = ']'; } //************************************************************************** //CommandCCP1CON5_4() - incarca registrul CCP1CON<5:4> //*************************************************************************** void CommandCCP1CON5_4() { data[2] = ConvertFromASCIIToHex(data[2]); data[2] <<= 4; CCP1CON &= 0B11001111; CCP1CON |= data[2]; data[0] = '['; data[1] = 'C'; data[2] = ']'; } //************************************************************************** //CommandPrescaler() - incarca registrul T2CON<1:0> //*************************************************************************** void CommandPrescaler() { data[2] = ConvertFromASCIIToHex(data[2]); T2CON &= 0B11111100; T2CON |= data[2]; data[0] = ‘[‘; data[1] = ‘D’; data[2] = ‘]’; } //************************************************************************** //CommandFosc() – incarca registrul OSCCON<6:4> // – calculeaza baudrateul pt RS-232 //*************************************************************************** void CommandFosc() { data[2] = ConvertFromASCIIToHex(data[2]); OSCCON &= 0b10001111; OSCCON |= data[2] << 4; switch (data[2]) { case 6: //4MHz baudrate = baudrate = ((FOUR_MHZ/BPS)/3) - 1; break; case 7: //8MHz baudrate = ((EIGHT_MHZ/BPS)/3) - 1; break; default: break; } data[0] = '['; data[1] = 'E'; data[2] = ']'; } //************************************************************************** //CommandFW() - trimite versiunea FW //*************************************************************************** void CommandFW() { data[0] = '['; data[1] = 'F'; data[2] = VERSION_H + 0X30; data[3] = '.'; data[4] = VERSION_L + 0X30; data[5] = ']'; } //************************************************************************** //CommandMotorControl() - schimba directia de rotatie // - incarca CCP1CON<7:6> //*************************************************************************** void CommandMotorControl() { CCP1CON &= 0B11110000; //oprire motor PORTC &= 0B11000011; DelayMs(1); //intarziere 1 ms inainte de inversarea directiei data[2] = ConvertFromASCIIToHex(data[2]); CCP1CON &= 0b00111111; CCP1CON |= data[2] << 6; data[0] = '['; data[1] = 'G'; data[2] = ']'; } //************************************************************************** //CommandRPM() - trimite comenzi SPI la PGA(amplif) // - initializeaza masurarea de rot/min //*************************************************************************** void CommandRPM() { if (CCPR1L > 0 && P1M1 == 0 && P1M0 == 1 ) //daca fact umplere >0 si directia este inainte { SPISendData(WRITE_REG,CHANNEL_REG,CHANNEL_0); SPISendData(WRITE_REG,GAIN_REG,GAIN_1); MeasureRPM(); data[0] = ‘[‘; data[1] = ‘H’; data[2] = ConvertFromHexToASCII((sample >> 8) & 0X03); data[3] = ConvertFromHexToASCII((sample >> 4) & 0X0F); data[4] = ConvertFromHexToASCII(sample & 0X0F); data[5] = ‘]’; } else //trimite 0x3FF pt date => rot/min=0 { data[0] = ‘[‘; data[1] = ‘H’; data[2] = 0x33; // 0x03 data[3] = 0x46; // 0x0F data[4] = 0x46; // 0x0F data[5] = ‘]’; } } //************************************************************************** //CommandRPM() – trimite comenzi SPI la PGA(amplif // – initializeaza masurarea curentului //*************************************************************************** void CommandCurrent() { if (CCPR1L > 0 && T2CON < 6 && P1M1 == 0 && P1M0 == 1 ) // daca fact umpl>0 si factorul de prescalare este<16 si motorul merge inainte { SPISendData(WRITE_REG,CHANNEL_REG,CHANNEL_1); SPISendData(WRITE_REG,GAIN_REG,GAIN_16); MeasureCurrent(); data[0] = '['; data[1] = 'I'; data[2] = ConvertFromHexToASCII((sample >> 8) & 0X03); data[3] = ConvertFromHexToASCII((sample >> 4) & 0X0F); data[4] = ConvertFromHexToASCII(sample & 0X0F); data[5] = ‘]’; } else //trimite 0x000 pt date => curentul este nul { data[0] = ‘[‘; data[1] = ‘I’; data[2] = 0x30; //0 data[3] = 0x30; //0 data[4] = 0x30; //0 data[5] = ‘]’; } } //************************************************************************** //CommandUnknown() – trimite raspuns pt comanda necunoscuta la pc // //*************************************************************************** void CommandUnknown() { data[0] = ‘[‘; data[1] = ‘?’; data[2] = ‘]’; } /* ;modul de comunicatie rs-232 */ #include „rs232.h” //*************************************************************************** //Functions //*************************************************************************** void Transmit(unsigned char data) { TX = SET; TRIS_TX = CLEAR; //stare TX ca si iesire txreg = data; delayconstant = baudrate; bitcount = 9; #asm bcf TX_ASM decfsz _delayconstant,f goto $-1 movf _baudrate,w movwf _delayconstant decfsz _bitcount,f goto $+7 bsf TX_ASM movf _baudrate,w movwf _bitcount,f decfsz _delayconstant,f goto $-1 return rrf _txreg,f btfss _STATUS,0 goto $+3 bsf TX_ASM goto $-16 bcf TX_ASM goto $-18 #endasm } unsigned char Receive() { TRIS_RX = SET; delayconstant = baudrate; bitcount = 9; #asm btfsc RX_ASM goto $-1 decfsz _delayconstant,f goto $-1 movf _baudrate,w movwf _delayconstant decfsz _bitcount,f goto $+2 goto $+6 bcf _STATUS,0 btfsc RX_ASM bsf _STATUS,0 rrf _rxreg,f goto $-11 #endasm return rxreg; } Controlul din PC este realizat cu un program executat in LabView 8.2 care trimite pe portul serial turația ce trebuie atinsa si direcția de rotație si primește turația actuala si curentul prin motor. Deasemenea va afișa depășirea curentului maxim admis si va opri motorul pana la remedierea situației . 9.Concluzii Sistemul oferă o soluție simpla, ieftina si eficienta pentru controlul unei motor de curent continuu prin intermediul unui PC. Microcontrolerul PIC16F684 este ideal pentru control de motoare de curent continuu, oferind o soluție cu cost scăzut prin implementarea măsurării fara senzori speciali care ar ridica costul proiectului. Beneficiind de interfața de comunicație RS-232 poate fi ușor comandat cu un PC sau alt echipament care poate sa furnizeze semnalele necesare. Prin intermediul RS-232 sistemul poate fi conectat la module de comunicație industriala si integrat in diverse automatizări . Prin dimensionarea corespunzătoare a parții de putere si a driverelor aferente se pot comanda acționari industriale de puteri mai mari. Aria de aplicare a sistemului este destul de mare. Bibliografie: 1) Bogdanov Ivan, Conducerea cu calculatorul a actionarilor electrice – 2002 2) Andreiciuc Dan, Notite curs/laborator VGA, CCAE 3) Ted Van Sickle, Programming microcontrollers in C 4) The physics of the DC motor, IEEE Excerpt 5) www.microchip.com , PIC16F684, datasheet&application notes

Similar Posts