Controlul Anclansarii, Declansarii Unui Intrerupator In Curent Alternativ cu Microcontroler

Cuprins

Introducere……………………………………………………………………….3

CAP. I. O introducere în filosofia microcontrolerelor și a microprocesoarelor….4

1.1. Istoria microprocesoarelor …………………………………………..4

1.2. Ce este un microcontroler? ………………………………………….6

1.3. Microcontrolere contra Microprocesoare…………………………….7

CAP II. Arhitectura sistemului cu microcontroler……………………………….8

2.1. Arhitectura unui microcontroler……………………………………..8

2.2. Schema bloc a unui microsistem. ……………………………………9

2.3. Structura……………………………………………………………….12

2.3.1. Unitatea de memorie………………………………………….12

2.3.2. Unitatea de procesare centrală…………………………….13

2.3.3. Bus-ul………………………………………………………13

2.3.4. Unitatea intrare-ieșire……………………………………..14

2.3.5. Comunicația serială……………………………………….15

2.3.6. Unitatea timer……………………………………………..16

2.3.7. Watchdog-ul………………………………………………….16

2.4. Moduri de lucru între microprocesor și interfețele I/O…………….17

2.3.1. Modul de lucru prin interogare (“Polling”)……………….17

2.3.2. Modul de lucru prin întreruperi hardware………………..18

CAP III. Descrierea componentelor folosite……………………………………………..21

3.1. MAX232………………………………………………………………………………21

3.2. Amplificatorul operațional TL071C……………………………….22

3.3. Stabilizatorul LM7805……………………………………………..23

3.4. Tranzistorul BD139……………………………………………….23

CAP. IV. Descrierea aplicației………………………………………………..25

4.1. Arcul electric………………………………………………………………………..25

4.2. Contacte electrice………………………………………………….27

4.3. Contactoare electromagnetice………………………………………………….28

4.4. Achiziția semnalelor………………………………………………………………29

4.5. C.A.N. …………………………………………………………….30

Cap. V. Etapele de realizare a proiectului……………………………………..31

5.1. Organizarea memoriei microcontrolerului PIC16F877……………….31

5.1.1. Memoria RAM…………………………………………32

5.1.2. Memoria EEPROM …………………………………….34

5.1.3. Memoria PROGRAM……………………………………35

5.2. Programarea microcontrolerului PIC 16F877………………….….37

5.3. Realizarea cablajului………………………………………………………………47

Cap. VI. Perspective de dezvoltare………………………………………………………….60

Bibliografie…………………………………………………………………………………………..62

Introducere

Prezenta lucrare reprezintă o variantă teoretică și practică a realizării unui dispozitiv cu ajutorul căruia se poate efectua anclanșarea, declanșarea unui contactor în curent alternativ, în condiții optime astfel încât durata acestuia de funcționare să fie maximă. Acest lucru este posibil în condițile în care deschiderea contactului se realizează la trecerea curentului sau tensiunii prin zero. Pentru aceasta vom folosi un microcontroler, care va monitoriza curentul, tensiunea și va acționa contactorul, în cazul nostru un releu.

Nu este o necesitate protejarea contactelor la tensiuni de 230V cum este în cazul lucrării de față, deoarece arcul electric este foarte redus, dar în schimb la tensiuni de mii de volți arcul electric capătă dimensiuni foarte mari, deloc de neglijat, iar acesta trebuie eliminat.

Microcontrolerul pe care îl vom folosi în acestă aplicație este un PIC 16F877A (litera A reprezintă prima versiunea a PIC 16F877), care a fost ales pe următoarele criterii.

-memoria program flash este formată din cuvinte de 8K x 14 bits;

-conține opt intrări cu convertoare analog numeric (CAN);

-conține cinci porturi de intrare/ieșire;

Cu toate că pentru această aplicație se putea folosi un alt microcontroler, mai puțin avansat, cu mai puține funcții și pini (cotele sale de gabarit ar fi fost mult reduse), s-a ales această variantă pe motiv că acest dispozitiv nu se va produce în cantități mari, iar pentru o singură aplicație se poate folosi un microcontroler mai performant.

Lucrarea este structurată pe cinci capitole, primele două capitole sunt dedicate studiului microcontrolerelor, respectiv primul capitol este un scurt istoric al microprocesoarelor și microcontrolerelor în care sunt definite noțiunile de bază, iar în al doilea capitol sunt prezentate arhitectura și structura microcontrolerelor. Capitolul trei este dedicat altor componente folosite în acest proiect, cum sunt circuitul integrat MAX232, amplificatorul operațional TL71C sau stabilizatorul LM7805. În capitolul patru este prezentată aplicația, capitolul cinci reprezentând modul practic și etapele parcurse pentru realizarea proiectului. Ultimul capitol reprezentând perspectivele de dezvoltare.

CAP. I. O introducere în filosofia microcontrolerelor și a microprocesoarelor

1.1. Istoria microprocesoarelor

Este anul 1969, și o echipă de ingineri japonezi de la compania BUSICOM sosesc în Statele Unite cu cererea ca unele circuite integrate pentru calculatoare să fie făcute folosind proiectele lor. Propunerea a fost făcută către INTEL, iar Marcian Hoff a fost desemnat responsabil cu acest proiect. Pentru că el era cel ce avea experiență în lucrul cu un calculator (PC) PDP8, i-a venit idea să sugereze o soluție diferită fundamental în locul construcției propuse. Această soluție presupunea că funcționarea circuitului integrat este determinată de un program memorat în el. Aceasta însemnând o configurația mult mai simplă, dar ar fi cerut  mult mai multă memorie decât ar fi cerut proiectul propus de inginerii japonezi. După un timp, cu toate că inginerii japonezi au încercat să caute o soluție mai simplă, ideea lui Marcian a câștigat, și a luat naștere primul microprocesor. În transformarea unei idei într-un produs finit, Frederico Faggin a fost de un ajutor major pentru INTEL. El s-a transferat la INTEL, și doar în 9 luni a reușit să scoată un produs din prima sa concepție. INTEL a obținut drepturile de a vinde acest bloc integral în 1971. În primul rând ei au cumpărat licența de la compania BUSICOM care nu au avut idee ce comoară avuseră. În timpul acelui an a apărut pe piață un microprocesor numit 4004. Acela a fost primul microprocesor de 4 biți cu viteză 6000 operații pe secundă. Nu mult după aceea, compania americană CTC a cerut de la INTEL și de la Texas Instruments să facă un microprocesor pe 8 biți pentru folosință în terminale. Cu toate că CTC a renunțat la această idee până la sfârșit, INTEL și Texas Instruments au continuat să lucreze la microprocesor și în aprilie 1972 a apărut pe piață primul microprocesor de 8 biți sub numele de 8008. Putea să adreseze 16Kb de memorie și avea 45 de instrucțiuni și viteza de 300.000 de operații pe secundă. Acesta a fost predecesorul tuturor microprocesoarelor de astăzi. INTEL au continuat dezvoltările lor până în aprilie 1974 și au lansat pe piață microprocesorul de 8 biți sub numele de 8080 ce putea adresa 64Kb de memorie și avea 75 de instrucțiuni, iar prețul începuse de la 360$. Într-o altă companie americană, Motorola, și-au dat seama repede ce se întâmpla, așa că au lansat pe piață un microprocesor de 8 biți 6800. Constructor șef era Chuck Peddle și pe lângă microprocesorul  propriu-zis, Motorola a fost prima companie care să facă alte periferice ca 6820 și 6850. La acel timp multe companii au recunoscut marea importanță a microprocesoarelor și au început propriile lor dezvoltări. Chuck Peddle părăsește Motorola pentru a se muta la MOS Technology și continuă să lucreze intensiv la dezvoltarea microprocesoarelor. La expoziția WESCON din Statele Unite din 1975 a avut loc un eveniment critic în istoria microprocesoarelor. MOS Technology a anunțat că produce microprocesoarele 6501 și 6502 la 25$ bucata pe care cumpărătorii le puteau cumpăra imediat. Aceasta a fost atât de senzațional încât au crezut că este un fel de înșelăciune, deoarece competitorii vindeau 8080 și 6800 la 179$. Ca un răspuns la competitorii lor atât INTEL cât și Motorola au scăzut prețurile lor în prima zi a expoziției până la 69.95$ pe microprocesor. Motorola intentează repede proces contra lui MOS Technology și contra lui Chuck Peddle pentru copierea protejatului 6800. MOS Technology încetează de a mai produce 6501 dar continuă să producă 6502. 6502 este un microcontroler pe 8 biți cu 56 de instrucțiuni și o capabilitate de adresare directă de 64Kb de memorie. Datorită costului scăzut, 6502 devine foarte popular, așa că este instalat în calculatoare ca: Apple I, Apple II, KIM-1, Atari, Comodore, Acorn, Oric, Galeb, Orao, Ultra și multe altele. Curând apar câțiva producători de 6502 (Rockwell, Sznertek, GTE, NCR, Ricoh și Comodore preiau MOS Technology) ce era în momentul prosperității sale vândut la o rată de 15 milioane de microprocesoare pe an!

Alții totuși nu au cedat. Federico Faggin părăsește INTEL, și își pornește propria sa companie Zilog Inc. În 1976 Zilog anunță Z80. În timpul creării acestui microprocesor, Faggin ia o decizie crucială. Știind că un mare număr de programe fuseseră dezvoltate pentru 8080, Faggin își dă seama că mulți vor rămâne fideli acelui microprocesor din cauza marii cheltuieli care ar rezulta în urma refacerii tuturor programelor. Astfel el decide că un nou microprocesor trebuie să fie compatibil cu 8080, sau că trebuie să fie capabil să execute toate programele care deja fusese scrise pentru 8080. În afară acestor caracteristici, multe altele noi au fost adăugate, așa că Z80 a fost un microprocesor foarte puternic la vremea lui. Putea adresa direct 64Kb de memorie, avea 176 instrucțiuni, un număr mare de registre, o opțiune incorporată pentru reîmprospătarea memoriei RAM dinamice, o singură sursă, viteză de lucru mult mai mare etc. Z80 a fost un succes mare și toată lumea a făcut conversia de 8080 la Z80. Se poate spune că Z80 comercial, a fost fără nici o îndoială, cel mai de succes micropocesor de 8 biți a acelui timp. În afară de Zilog, alți noi producători apar de asemenea ca: Mostek, NEC, SHARP și SGS. Z80 a fost inima a multor calculatoare ca: Spectrum, Partner, TRS703, Z-.3.

În 1976, INTEL iese pe piață cu o versiune îmbunătățită de microprocesor pe 8 biți numit 8085. Totuși, Z80 era cu mult mai bun încât INTEL curând a pierdut bătălia. Chiar dacă au apărut pe piață încă câteva microprocesoare (6809, 2650, SC/MP etc.), totul fusese de fapt deja hotărât. Nu mai erau de făcut îmbunătățiri importante ca să-i facă pe producători să se convertească spre ceva nou, așa că 6502 și Z80 împreună cu 6800 au rămas ca cei mai reprezentativi ai microprocesoarelor de 8 biți ai acelui timp.

1.2. Ce este un microcontroler?

Un microcontroler este un calculator realizat într-un singur cip (circuit integrat). Conține unitatea centrală de prelucrare (CPU, Central Processing Unit, numită uneori și core) și o serie de periferice. În aplicațiile simple, un echipament poate conține un singur circuit – chiar microcontrolerul. Microprocesorul este echivalentul unității centrale, toate celelalte periferice uzuale din componența unui microsistem – timere, A/D, WDT, DAC, PWM, DMA – fiind circuite externe. Cele mai multe microcontrolere pot funcționa cu un număr minim de componente externe (uneori fără nici una) între care aproape întotdeauna un cristal cu cuarț și una sau mai multe rezistențe. Un microcontroler modern conține majoritatea blocurilor prezentate în figura 1.1 (adesea chiar mai multe).

Fig. 1.1. Structura unui microcontroler modern

Privind evoluția istorică a operației de comandă a unui proces putem contura imaginea unui microcontroler. Un controler este un sistem folosit pentru a comanda și a prelua stări de la un proces sau un aspect al mediului înconjurător. La început un controler era un echipament de mari dimensiuni. După apariția microprocesoarelor dimensiunile controlerelor s-au redus. Procesul de miniaturizare a continuat, toate comonentele necesare unui controler au fost integrate pe același chip. S-a născut astfel calculatorul pe un singur chip sau microcontrolerul.

Circumstanțele în care ne găsim astăzi în domeniul microcontrolerelor și-au avut începuturile în dezvoltarea tehnologiei circuitelor integrate. Această dezvoltare a făcut posibilă înmagazinarea a sute de mii de tranzistoare într-un singur cip. Aceasta a fost o premiză pentru producția de microprocesoare, și primele calculatoare au fost făcute prin adăugarea perifericelor ca memorie, linii intrare-ieșire, timer-i și altele. Următoarea creștere a volumului capsulei a dus la crearea circuitelor integrate. Aceste circuite integrate conțin atât procesorul cât și perifericele. Așa s-a întâmplat cum primul cip conținând un microcalculator, sau ce va deveni cunoscut mai târziu ca microcontroler a luat ființă.

1.3. Microcontrolere contra Microprocesoare

Microcontrolerul diferă de un microprocesor în multe feluri. În primul rând și cel mai important este funcționalitatea sa. Pentru a fi folosit, unui microprocesor trebuie să i se adauge alte componente ca memorie, sau componente pentru primirea și trimiterea de date. Pe scurt, aceasta înseamnă că microprocesorul este inima calculatorului. Pe de altă parte, microcontrolerul este proiectat să fie toate acestea într-unul singur. Nu sunt necesare alte componente externe pentru aplicarea sa pentru că toate perifericele necesare sunt deja incluse în el. Astfel, economisim timpul și spațiul necesare pentru construirea de aparate.

Diversitatea microcontrolerelor și numărul lor este mult mai mare decât a microprocesoarelor. În prezent câteva miliarde de microcontrolere funcționează în cele mai diverse aplicații: autoturisme, multimedia, aplicații casnice, industriale. În contrast cu microprocesoarele moderne, a căror viață utilă până la perimarea morală este de 2-4 ani, nu sunt rare situațiile în care pentru un proiect actual sunt alese microcontrolere introduse acum 20 de ani. Cel mai uzual criteriu de clasificare al microcontrorelor este lățimea magistralei de date.

Microcontrolerele pe 4 biți sunt disponibile doar în cantități foarte mari (5.000 de bucăți sau mai mult) și se folosesc în aplicațiile casnice cu un necesar minim de putere de calcul.

Microcontrolerele pe 8 biți sunt oferite în capsule care pornesc de la 8 pini (și un preț la magazin de circa 1 dolar) până la modele extrem de puternice, cu peste 200 de pini, oferite la zeci de dolari. PIC16F84A de exemplu este disonibil în România (la bucată) la un preț de circa 4 dolari.

Microcontrolerele pe 16 și 32 de biți oferă o putere de calcul considerabilă – există în prezent controlere comparabile cu un microprecesor Pentium, consumând o putere disipată redusă și având un preț suficient de mic pentru a echipa console video sau jucării sofisticate.

Pentru programare este necesara tensiunea de +5V deoarece acest programator nu se alimentează de pe portul serial al calculatorului.

Prețul unui microcontroler este redus din cauza cantităților mari în care se fabrică. Prețul mic al microcontrolerului aduce cu sine și micșorarea prețului sistemelor de control (se micșorează inclusiv costul proiectării).

CAP II. Arhitectura sistemului cu microcontroler

2.1. Arhitectura unui microcontroler

Blocurile interne ale microcontrolerului sunt legate între ele printr-o magistrală (bus) de date și una de adrese. Mărimea acestor magistrale constituie una dintre caracteristicile cele mai importante ale unui microcontroler. Prin magistrala de adrese unitatea centrală selectează o locație de memorie sau un dispozitiv I/O, iar pe magistrala de date se face schimbul de informație între unitatea centrală și memorie sau dispozitivele I/O. Între unitatea centrală și memorie sunt transferate atât date cât și instrucțiuni. Acestea se pot transfera pe o singură magistrală de date sau pe magistrale de date diferite.

Arhitectura von neumann prevede existența unui bus unic folosit pentru circulația datelor și a instrucțiunilor. Când un controler cu o astfel de arhitectură adresează memoria, busul de date este folosit pentru a exprima întâi codul instrucțiunii, apoi pentru date, accesul fiind reașizat în doi pași, deci destul de lent.

Arhitectura Harvard prevede un bus separat pentru date și instrucțiuni. Cand codul instrucțiunii se află pe busul de instrucțiuni, pe busul de date se află datele instrucțiunii anterioare. Structura microcontrolerului este mai complexă, dar performanțele de viteză sunt mai bune.

Unitatea centrală conține un set de regiștrii interni, similari unor locații de memorie, folosite pentru memorarea unor date des apelate sau pentru programarea unor anumite funcții. Diferitele familii de microcontrolere folosesc seturi diferite de regiștrii. Există însă câțiva regiștrii comuni:

-A (Accumulator) registrul acumulator care este folosit deseori pentru a stoca un operand și rezultatul unei operații aritmetice.

-PC (Program Counter) este registrul care stochează adresa următoarei instrucțiuni de executat. După un „Reset” (inițializarea microcontrolerului), registrul PC se încarcă dintr-o locație de memorie numită vector de reset. PC este incrementat automat după execuția unei instrucțiuni.

-SP (Stack Pointer) conținutul acestui registru indică adresa curentă a stivei.

Un aspect important care determină arhitectura unui microcontroler este modul de programare.

Conceptul de CISC (Complex Instruction Set Computer) pe baza căruia sunt construite majoritatea microcontrolere, prevede existența unui număr mare de instrucțiuni (tipic >80), ceea ce face mai ușoară munca programatorului. Multe din instrucțiuni sunt specializate, adică se pot folosi doar în anumite moduri de adresare sau cu anumiți regiștrii.

Evoluția microcontrolerului este spre arhitectura RISC (Reduced Instruction Set Computer), în cadrul căreiaun microcontroler are un număr mic de instrucțiuni. Avantajele sunt un chip mai mic, cu un număr de pini mai mic, cu un consum mai redus și cu o viteză mai mare. Instrucțiunile sunt simetrice, adică pot fi folosite le fel în orice mod de adresare sau cu orice registru, nu au excepții sau restricții.

În prezent un microcontroler este cu mai mult decât arhitectura RISC, el este cu o arhitectură SISC (Specific Instruction Set Computer). Instrucțiunile sunt specifice pentru a lucra optim cu dispozitivele I/O, permit manipularea la nivel de bit și sunt mai puține instrucțiuni de uz general, așa cum se întălnește la microprocesoarele 8086, 68000 etc.

2.2. Schema bloc a unui microsistem.

Vom defini un microcontroler pornind de la o reprezentare simplificată a sa în interacțiune cu mediul (fig. 2.1.). Intrările pot fi digitale sau analogice. Ca intrări se folosesc de regulă semnale provenind de la comutatoarele individuale sau de la traductoare (de temperatură, de presiune, foto, traductoare specializate). Ieșirile se pot face cu diode LED, pot fi relee, motoare sau sonerii. Dacă se face o conversie D/A, ieșirea o poate constiutuii un difuzor.

Fig 2.1. Schema simplificată a unui microcontroler

Un microcontroler poate fi definit ca un sistem de calcul complet pe un singur chip. Acesta include o unitate centrală, memorie, oscilator pentru tact și dispozitivele I/O. Un microcontroler poate fi privit ca un microprocesor care pe același chip mai conține memorie și o serie de interfețe. Natura și complexitatea aplicației în care este folosit microcontrolerul determină performanțele unității centrale, capacitatea de memorie și tipul interfețelor ce compun structura internă a microcontrolerului.

O structură mai detaliată se poate vedea în figura 2.2 unde sunt reprezentate blocurile principale.

Fig. 2.2. Schema bloc a unui microcontroler

Un microcontroler este un circuit realizat pe un singur chip care conține:

-unitatea centrală CPU;

-generatorul de tact (la care trebuie adăugat din exterior un cristal de cuarț sau în aplicații mai puțin pretențioase, un circuit RC);

-memoria RAM;

-memoria ROM/PROM/EPROM/EEPROM;

-dispozitive I/O seriale și paralele;

-controler de întreruperi, controler DMA, numărătoare/temporizatoare (timers), convertoare A/D și D/A, etc.;

-periferice.

În general, orice microcontroler are o structură internă organizată în jurul unei magistrale (fig. 2.3).

Fig. 2.3. Schema bloc a unui microcontroler

Unitatea centrală execută instrucțiunile pe carele primește prin magistrala de date din memoria program. Structura Harvard este posibilă și răspândită la microcontrolere pentru că de regulă instrucțiunile sunt stocate în memoria ROM, iar datele în cea RAM. Magistrala de date și cea de adrese pot fi separate sau multiplexate. Magistralele pot să nu fie disponibile în exterior sau pot să fie disponibile în exterior direct sau multiplexate.

Fiecare microcontroler are un controler de întreruperi care admite atât intrări din exterior cât și de la modulele interne. Unele microcontrolere dispun de un controler DMA propriu.

Modulele I/O pot fi seriale sau paralele. Fiecare modul transferă date cu exteriorul prin intermediul registrului de date (RD). modulul este comandat (configurat) de unitatea centrală prin intermediul unui registru de comenzi (RC) și se poate citi starea modulului prin registrul de stare (RS). Prin RS se pot genera întreruperi. Registrele modulelor I/O pot fi văzute de unitatea centrală ca locații de memorie sau ca dispozitive de I/O într-un spațiu de adresare separat. De regulă, structura de bază a familiei conține anumite interfețe considerate foarte importante (timer) și linii I/O grupate în porturi paralele de uz general. Pe structura de bază se adaugă diferite interfețe care folosesc în comun linile I/O cu porturile paralele de uz general

2.3. Structura

2.3.1. Unitatea de memorie

Memoria este o parte a microcontrolerului a cărei funcție este de a înmagazina date.

Cel mai ușor mod de a explica este de a-l descrie ca un dulap mare cu multe sertare. Dacă presupunem că am marcat sertarele într-un asemenea fel încât să nu fie confundate, oricare din conținutul lor va fi atunci ușor accesibil. Este suficient să se știe desemnarea sertarului și astfel conținutul lui ne va fi cunoscut în mod sigur.

Fig. 2.4. Exemplul unui model siplificat de unitate de memorie

Componentele de memorie sunt exact așa. Pentru o anumită intrare obținem conținutul unei anumite locații de memorie adresate și aceasta este totul. Două noi concepte ne sunt aduse: adresarea și locația de memorie. Memoria constă din toate locațiile de memorie, și adresarea nu este altceva decât selectarea uneia din ele. Aceasta înseamnă că noi trebuie să selectăm locația de memorie la un capăt, și la celălalt capăt trebuie să așteptăm conținutul acelei locații. În afară de citirea dintr-o locație de memorie, memoria trebuie de asemenea să permită scrierea în ea. Aceasta se face prin asigurarea unei linii adiționale numită linie de control. Vom desemna această linie ca R/W (citește /scrie). Linia de control este folosită în următorul fel: dacă r/w=1, se face citirea, și dacă opusul este adevărat atunci se face scrierea în locația de memorie. Memoria este primul element, dar avem nevoie și de altele pentru ca microcontrolerul nostru să funcționeze.

2.3.2. Unitatea de procesare centrală

Să adăugăm alte 3 locații de memorie pentru un bloc specific ce va avea o capabilitate incorporată de înmulțire, împărțire, scădere și să-i mutăm conținutul dintr-o locație de memorie în alta. Partea pe care tocmai am adăugat-o este numită "unitatea de procesare centrală" (CPU). Locațiile ei de memorie sunt numite regiștri.

Fig. 2.5. Exemplul unui model siplificat de

unitate de procesare centrală cu trei regiștrii

Regiștrii sunt deci locații de memorie al căror rol este de a ajuta prin executarea a variate operații matematice sau a altor operații cu date oriunde se vor fi găsit datele. Să privim la situația curentă. Avem două entități independente (memoria și CPU) ce sunt interconectate, și astfel orice schimb de informații este ascuns, ca și funcționalitatea sa. Dacă, de exemplu, dorim să adăugăm conținutul a două locații de memorie și întoarcem rezultatul înapoi în memorie, vom avea nevoie de o conexiune între memorie și CPU. Mai simplu formulat, trebuie să avem o anumită "cale" prin care datele circulă de la un bloc la altul.

2.3.3. Bus-ul

Calea este numită "bus"- magistrală. Fizic, el reprezintă un grup de 8, 16, sau mai multe fire. Sunt două tipuri de bus-uri: bus de adresă și bus de date. Primul constă din atâtea linii cât este cantitatea de memorie ce dorim să o adresăm, iar celălalt este atât de lat cât sunt datele, în cazul nostru 8 biți sau linia de conectare. Primul servește la transmiterea adreselor de la CPU la memorie, iar cel de al doilea la conectarea tuturor blocurilor din interiorul microcontrolerului.

Fig. 2.6. Conectarea memoriei și a unității centrale folosind bus-urile

În ceea ce privește funcționalitatea, situația s-a îmbunătățit, dar o nouă problemă a apărut de asemenea: avem o unitate ce este capabilă să lucreze singură, dar ce nu are nici un contact cu lumea de afară, sau cu noi! Pentru a înlătura această deficiență, să adăugăm un bloc ce conține câteva locații de memorie al căror singur capăt este conectat la bus-ul de date, iar celălalt are conexiune cu liniile de ieșire la microcontroler ce pot fi văzute cu ochiul liber ca pini la componenta electronică.

2.3.4. Unitatea intrare-ieșire

Aceste locații ce tocmai le-am adăugat sunt numite "porturi". Sunt diferite tipuri de porturi: intrare, ieșire sau porturi pe două-căi. Când se lucrează cu porturi, mai întâi de toate este necesar să se aleagă cu ce port urmează să se lucreze, și apoi să se trimită date la, sau să se ia date de la port.

Fig. 2.7. Exemplul siplificat al ueni unități de intrare-ieșire

ce permite comunicarea cu lumea externă

Când se lucrează cu el portul se comportă ca o locație de memorie. Ceva este pur și simplu scris în sau citit din el, și este posibil de a remarca ușor aceasta la pinii microcontrolerului.

2.3.5. Comunicația serială

Cu aceasta am adăugat la unitatea deja existentă posibilitatea comunicării cu lumea de afară. Totuși, acest mod de comunicare are neajunsurile lui. Unul din neajunsurile de bază este numărul de linii ce trebuie să fie folosite pentru a transfera datele. Ce s-ar întâmpla dacă acestea ar trebui transferate la distanță de câțiva kilometri? Numărul de linii înmulțit cu numărul de kilometri nu promite costuri eficiente pentru proiect. Nu ne rămâne decât să reducem numărul de linii într-un așa fel încât să nu scădem funcționalitatea. Să presupunem că lucrăm doar cu 3 linii, și că o linie este folosită pentru trimiterea de date, alta pentru recepție și a treia este folosită ca o linie de referință atât pentru partea de intrare cât și pentru partea de ieșire. Pentru ca aceasta să funcționeze, trebuie să stabilim regulile de schimb ale datelor. Aceste reguli sunt numite protocol. Protocolul este de aceea definit în avans ca să nu fie nici o neînțelegere între părțile ce comunică una cu alta. De exemplu, dacă un om vorbește în franceză, și altul vorbește în engleză, este puțin probabil că ei se vor înțelege repede și eficient unul cu altul. Să presupunem că avem următorul protocol. Unitatea logică "1" este setată pe linia de transmisie până ce începe transferul. Odată ce începe transferul, coborâm linia de transmisie la "0" logic pentru o perioadă de timp (pe care o vom desemna ca T), așa că partea receptoare va ști că sunt date de primit, așa că va activa mecanismul ei de recepție. Să ne întoarcem acum la partea de transmisie și să începem să punem zero-uri și unu-uri pe linia de transmisie în ordinea de la un bit a celei mai de jos valori la un bit a celei mai de sus valori. Să lăsăm ca fiecare bit să rămână pe linie pentru o perioadă de timp egală cu T, și la sfârșit, sau după al 8-lea bit, să aducem unitatea logică  "1" înapoi pe linie ce va marca  sfârșitul transmisiei unei date. Protocolul ce tocmai l-am descris este numit în literatura profesională NRZ (Non-Return to Zero).

Pentru că avem linii separate de recepție și de transmitere, este posibil să recepționăm și să transmitem date (informații) în același timp. Blocul așa numit full-duplex mode ce permite acest mod de comunicare este numit blocul de comunicare serială. Spre deosebire de transmisia paralelă, datele sunt mutate aici bit cu bit, sau într-o serie de biți, de unde vine și numele de comunicație serială. După recepția de date trebuie să le citim din locația de transmisie și să le înmagazinăm în memorie în mod opus transmiterii unde procesul este invers. Datele circulă din memorie prin bus către locația de trimitere, și de acolo către unitatea de recepție conform protocolului.

Fig. 2.8. Unitatea serială folosită pentru a

trimite date, dar numai prin trei linii

2.3.6. Unitatea timer

Acum că avem comunicația serială, putem recepționa, trimite și procesa date.

Fig. 2.9. Unitatea “Timer” generează semnale

la intervale regulate de timp

Totuși, pentru noi ca să putem să îl folosim în industrie mai avem nevoie de câteva blocuri. Unul din acestea este blocul timer care este important pentru noi pentru că ne dă informația de timp, durată, protocol etc. Unitatea de bază a timer-ului este un contor liber (free-run) care este de fapt un registru a cărui valoare numerică crește cu unu la intervale egale, așa încât luându-i valoarea după intervalele T1 și T2 și pe baza diferenței lor să putem determina cât timp a trecut. Acesta este o parte foarte importantă a microcontrolerului al cărui control cere cea mai mare parte a timpului nostru.

2.3.7. Watchdog-ul

Încă un lucru ce necesită atenția noastră este funcționarea fără defecte a microcontrolerului în timpul funcționării. Să presupunem că urmare a unei anumite interferențe (ce adesea se întâmplă în industrie) microcontrolerul nostru se oprește din executarea programului, sau și mai rău, începe să funcționeze incorect.

Fig. 2.10. Watchdog-ul

Bineînțeles, când aceasta se întâmplă cu un calculator, îl resetăm pur și simplu și va continua să lucreze. Totuși, nu există buton de resetare pe care să-l apăsăm în cazul microcontrolerului care să rezolve astfel problema noastră. Pentru a depăși acest obstacol, avem nevoie de a introduce încă un bloc numit watchdog-câinele de pază. Acest bloc este de fapt un alt contor liber (free-run) unde programul nostru trebuie să scrie un zero ori de câte ori se execută corect. În caz că programul se "înțepenește", nu se va mai scrie zero, iar contorul se va reseta singur la atingerea valorii sale maxime. Aceasta va duce la rularea programului din nou, și corect de această dată pe toată durata. Acesta este un element important al fiecărui program ce trebuie să fie fiabil fără supravegherea omului.

2.4. Moduri de lucru între microprocesor și interfețele I/O

2.3.1. Modul de lucru prin interogare (“Polling”)

Se bazează pe testarea de către microcontroler a unui bit de stare asociat dispozitivului periferic. Microcontrolerul nu va inițializa transferul cu perifericul decât în momentul în care bitul de stare semnifică faptul că perifericul este pregătit pentru transfer (nu lucrează la un transfer inițiat anterior). Să considerăm de exemplu interfața cu un buton. Această interfață trebuie să conțină minimum registrul de stare.

Bitul Ready din registrul de stare este un bit de tip Read Only cu următoarea semnificație: dacă utilizatorul a apăsat butonul atunci Ready se pune automat pe “1” arătând microcontrolerului că poate să execute o comandă. Bitul Ready se va reseta automat odată cu executarea comenzii de către microcontroler.

Dezavantajul acestei metode constă în faptul că microcontrolerul asteaptă un timp T, neacceptabil de mare la nivelul vitezei sale, pentru a inspecta dacă perifericul este sau nu este pregătit. Considerând că utilizatorul apasă butonul la interval de 500 ms si că o instrucțiune a microcontrolerului durează cca. 250 ns rezultă că “pierde” 500 ms / 250 ns = 2 milioane instrucțiuni în bucla de asteptare în loc să execute instrucțiuni utile. Acest dezavantaj este eliminat de metoda următoare de comunicare microcontroler-interfață:

2.3.2. Modul de lucru prin întreruperi hardware

Se bazează pe generarea unui semnal de întrerupere INT de la interfață (port) spre microcontroler ori de câte ori acesta dorește un serviciu de la microcontroler. Ca urmare a recepționării semnalului INT microcontrolerul va abandona programul principal (PP) urmând să intre într-o așa numită rutina de tratare a întreruperii în care va satisface cererea interfeței. La finele rutinei de tratare a întreruperii printr-o instrucțiune de tip RETURN, microcontrolerul va reveni în PP, în general dar nu întotdeauna, pe instrucțiunea imediat următoare ultimei instrucțiuni din PP executate. În cazul exemplului cu butonul anterior considerat, interfața va genera întreruperea INT ori de câte ori utilizatorul a apăsat butonul.

Fig. 2.11. Modelul de lucru prin întreruperi

Asadar RTI după ce execută serviciul necesar perifericului revine în PP, pâna când perifericul cere un nou serviciu (de ex. se apasă din nou butonul), microcontrolerul va executa instrucțiuni utile din PP (ex. program utilizator etc.) și deci nu mai este necesar să mai astepte inutil ca în cazul 1.

Totalitatea acțiunilor executate de către microcontroler din momentul apariției semnalului de întrerupere INT până în momentul procesării primei instrucțiuni din RTI formează așa numitul protocol hardware de acceptare a întreruperii (sagețile 1 și 3 din figura 2.11). În principiu acest protocol se desfășoară în următoarele etape succesive:

1.) Odată sesizată întreruperea INT de către microcontroler acesta își va termina instrucțiunea în curs de execuție după care, dacă anumite condiții sunt îndeplinite (nu există activată o cerere de întrerupere sau de bus mai prioritare etc.), va trece la pasul 2. În general, microcontrolerele examinează activarea întreruperilor la finele ultimului ciclu aferent instrucțiunii în curs de execuție.

2.) Recunoașterea întreruperii: microcontrolerul va initializa așa numitul ciclu de achitare a întreruperii. Pe parcursul acestui ciclu extern va genera un semnal de răspuns (achitare) a întreruperii INTACK (interrupt acknowledge) spre toate interfețele de intrare – ieșire. Ca urmare a recepționării INTACK interfața care a întrerupt va furniza microcontrolerului prin intermediul bus-ului de date un așa numit octet vector de întrerupere (VI). Acest VI este diferit pentru fiecare periferic în parte, individualizându-l deci într-un mod unic. Pe baza acestui VI și conform unui algoritm care diferă de la microcontroler la microcontroler, acesta va determina adresa de început a RTI, adresa ce va urma să o introducă în PC. Firește, la VI diferiți vor corespunde adrese de început diferite.

3.) Microcontrolerul va salva într-o zona specială de program numită memorie stivă, PC-ul aferent instrucțiunii imediat următoare instrucțiunii executate de către microcontroler din PP (PCrev), pentru a putea ști la finele RTI unde să revină exact în PP. Memoria stivă este o zonă de memorie RAM caracterizată la un moment dat de așa numitul vârf al stivei adică de ultima locație ocupată din stivă.

Acest vârf al stivei este pointat (adresat) permanent de conținutul unui registru special dedicat, existent în orice microcontroler modern, numit SP (stack pointer).

În memoria stivă sunt posibile două tipuri de operații:

– operația PUSH Reg

– operatia POP Reg

Fig. 2.12. Modul de lucru al stivei

Stiva este o memorie de tip LIFO (last in first out) și care spre deosebire de PC în procesarea secventială, "crește" (PUSH) de obicei înspre adrese descrescătoare evitându-se astfel suprapunerea zonelor de program (cod) cu cele de stivă.

4.) Intrarea în RTI se face simplu prin introducerea adresei de început a RTI calculată in pasul 2, în registrul PC. Normal în continuare microcontrolerul va aduce și executa prima instrucțiune din RTI protocolul de tratare fiind în acest moment încheiat și controlul fiind preluat de RTI a perifericului care a fost întrerupt. Dupa cum s-a observat protocolul de tratare salvează în stivă doar

PC-ul de revenire (la anumite microcontrolere se mai salvează registrul de stări – flags). Acest fapt se poate dovedi insuficient având în vedere că în cadrul RTI pot fi alterați anumiți regiștri interni ai microcontrolerului. Această alterare a regiștrilor poate fi chiar catastrofală la revenirea în PP. Din acest motiv cade în sarcina celui care scrie RTI să salveze (instrucțiuni PUSH) respectiv să returneze corespunzător (instrucțiuni POP) acești regiștri.

Fig. 2.13. Efectul RTI asupra stivei

Acțiunea instrucțiunii RETURN este echivalentă cu o operație de tip POP PC.

Acum devine evident de ce instrucțiunea RETURN implementează revenirea în PP pe instrucțiunea imediat următoare celei întrerupte.

Prin mecanismul de stivă se pot gestiona perfect și întreruperile de tip imbricat (apariția unei întreruperi INT în chiar rutina de tratare a altei întreruperi, când este permis).

CAP III. Descrierea componentelor folosite

Rolul acestui capitol este acela de a defini pinii și rolul componentelor folosite, astfel încât schema circuitului să poată fi înțeleasă pe deplin.

3.1. MAX232

Această componentă este folosită pentru a furniza o tensiune de +/-10V, necesară amplificatoarelor operaționale. Între pinii 1, 3 și 4, 5 se leagă câte un condensator polarizat de valoare 1 μF. Pinii 2, respectiv 6 furnizează tensiunile de +/-10V. Pinii 7-14 sunt intrări, respectiv ieșiri. Pinul 15 este legat la masă, iar pinul 16 reprezintă alimentarea. În figura 3.1. sunt prezentați pinii și distribuția lor, iar în figura 3.2. este prezentat un exemplu de conectare a modulului.

Fig. 3.1. Distribuția pinilor pentru MAX232 Fig. 3.2. Modul de conectare a MAX232

3.2. Amplificatorul operațional TL071C

În acest proiect sunt folosite două amplificatoare operaționale TL071C cu ajutorul cărora se poate moitoriza curentul. Semnificația pinilor este următoarea(fig 3.4.):

-pinul 1 Offset zero 1;

-pinul 2 intrarea inversoare;

-pinul 3 intrarea neinversoare:

-pinul 4 tensiunea de alimentare de -10V;

-pinul 5 offset zero 2;

-pinul 6 ieșirea;

-pinul 7 tensiunea de alimentare de +10V;

-pinul 8 nu este conectat.

Fig. 3.3. Distribuția pinilor pentru A.O. TL071C

Fig. 3.4. Distribuția pinilor pe capsulă

În figura 3.4. este prezentat modul de recunoaștere a pinului 1. Acesta va fi în partea din stânga sus, capsula ținându-se cu muchia teșită în partea stânga.

3.3. Stabilizatorul LM7805

Stabilizatorul are rol de a furniza la ieșire o tensiune constantă de +5V. Pinul 1 reprezintă intrarea, pinul 2 este masa, iar pinul 3 reprezintă ieșirea din stabilizator (fig. 3.5)..

Fig. 3.5. Distribuția pinilor pentru LM7805

Fig. 3.6. Schema de circuit

În figura 3.6 este prezentat modul de folosire a stabilizatorului, la intrare și la ieșire legându-se două condensatoare de 0.33 respectiv 0.1 μF.

3.4. Tranzistorul BD139

Tranzistorul bipolar se poate defini ca fiind o structură monocristalină cu trei straturi („npn”, sau „pnp”) și două joncțiuni, în care stratul din mijloc este slab impurificat și foarte subțire (aproximativ 5 µ), mai subțire decât lungimea de difuzie a purtătorilor ce difuzează prin joncțiuni. Tranzistorul se numește bipolar, deoarece conducția electrică este asigurată atât de purtătorii majoritari cât și de cei minoritari.

Simbolul cu caracteristica tranzistorului npn este cel din figura 3.7, iar al celui pnp este cel din figura 3.8.

În lucrarea de față tranzistorul BD139 este folosit pentru a comanda releul, conectarea cu microcontrolerul realizându-se prin intermediul unei rezistențe de 3K3Ω. În figura 3.9 este prezentată schema tranzistorului și descrierea pinilor.

Fig. 3.7. Structura tranzistorului bipolar npn

Fig. 3.8. Structura tranzistorului bipolar pnp

Fig. 3.9. Distribuția pinilor pentru BD139 și schema internă

CAP. IV. Descrierea aplicației

În acest capitol este definit arcul electric, contactul electric și cum se pot achiziționa datele, în cazul acesta curentul și tensiunea. Cu ajutorul microcontrolerului acestea vor fi permanent monitorizate, iar când valoarea uneia este zero va comanda deschiderea contactului.

Aceasta este în teorie, practic lucrurile nu sunt atât de simple, deoarece există un anumit timp t de închidere a contactului, acesta închizându-se mecanic. Dacă microcontrolerul prelucrează o comandă într-un interval de câteva nanosecunde, timpul de răspuns al releului este de ordinul microsecundelor. Deci pentru a obține ceea ce ne dorim dispozitivul trebuie testat și programat astfel încât deschiderea contactului să fie defazat cu un anumit timp față de trecerea prin zero a tensiunii, respectiv curentului.

4.1. Arcul electric

La deconectarea circuitelor electrice parcurse de curenți, între elementele de contact ale aparatelor de comutație (întreruptoare, contactoare) apare un arc electric ai cărui parametri (tensiune, densitate, curent, durată) depind de condițiile locale din camera de stingere.

Existența arcului electric conduce la o solicitare suplimentară, sau de transferul de energie din coloana arcului către piesele componente conductoare sau izolante ale aparatului. Aceasta se manifestă prin supratemperaturi care pot solicita elementele de contact până la vaporizare.

Și la închiderea unor circuite poate să apară un arc electric între elementele de contact, dar dacă viteza de închidere este suficient de ridicată efectul termic al acestui proces este neînsemnat.

În scopul limitării efectelor produse de arcul electric în aparatele de comutație, este util a se prezenta unele aspecte din fizica arcului, aspecte teoretice ale tehnicii întreruperii, principiile folosite în scopul întreruperii arcului și aplicațiile acestor principii în construcția aparatelor de comutație.

Arcul electric în aparatele de comutație este o descărcare autonomă într-un gaz (aer, SF6, N2, ș.a.), caracterizată prin temperatura ridicată și densitate mare de curent la electrozi.

Arcul constă dintr-o coloana de plasma, două zone de cădere de tensiune, cu zonele lor de trecere. Coloana arcului este o plasma în echilibru termic, temperatura electronilor, a ionilor și a atomilor neutri având aproximativ aceeași valoare și se comportă ca un conductor foarte mobil, ușor deplasabil sub acțiunea curenților de fluid, a câmpului electric și magnetic și a cărui secțiune se ajustează spontan după valoarea curentului care îl parcurge.

În privința amorsării arcului electric se presupune existența apriori a unor surse de purtători de sarcină, în speță de electroni. Aceste surse provin din emisia termică ce este corelată cu efectul Schottky și din emisia datorată câmpului electric intens.

Ulterior apariției electronilor, apar în coloana arcului procese fizice suplimentare cum sunt: ionizarea prin șoc, termoionizarea, fotoionizarea, excitația atomului. Procesul de formare și menținere a arcului electric se datorează fenomenelor de ionizare ce au loc pe suprafața electrozilor și în coloana de arc. Simultan cu procesele de ionizare au loc și procese de deionizare datorită recombinării ionilor și a difuziei. Când procesele ionizante sunt mai intense decât cele deionizante, arcul se menține, în caz contrar se stinge. Stingerea arcului este cu atât mai eficientă cu cât procesele deionizante se desfășoară mai energic.

În aparatele de comutație (contactoare, întreruptoare) arcul electric apare la separarea pieselor de contact, în procesul de deconectare al aparatului și înainte de atingerea pieselor de contact, în procesul de conectare.

Procesul descris până la acest stadiu corespunde formării arcului electric scurt, mai ales în aparatele de comutație în vid. Dacă arcul se lungește prin îndepărtarea contactului mobil și piesele de contact nu sunt în vid, intervine ionizarea gazului din mediul ambiant ca suport pentru vehicularea purtătorilor de sarcină.

Formarea arcului electric la închiderea pieselor de contact, se explică prin străpungerea ce se produce între piesele de contact ce se apropie. Ea presupune o anumită valoare a tensiunii, iar inițierea descărcării apare ca urmare a emisiei de electroni prin efectul de câmp.

Din cele prezentate se poate trage concluzia că arcul electric se poate forma numai dacă există o anumită tensiune minimă între electrozi, respectiv un anumit curent minim.

Arcul electric de curent altemativ este un proces în regim variabil și se caracterizează prin stingeri și aprinderi periodice, la fiecare trecere a curentului prin zero. Studierea lui este de maximă importanță, deoarece în aparatele electrice de înaltă tensiune apar arcuri electrice de mare stabilitate, pentru stingerea cărora trebuiesc concepute camere de stingere speciale. Se știe că la o modificare rapidă a curentului, temperatura ca și diametrul coloanei și prin aceasta și conductivitatea sa nu se pot modifica rapid. Arcul are o inerție termică, ce are ca urmare o creștere mai mare a căderii de tensiune la creșterea curentului și o comportare inversă la micșorarea curentului. În același timp au loc și modificări rapide ale formei geometrice ale arcului.

Arcul de curent altemativ se caracterizează printr-un proces dinamic. Se constată că arcul se aprinde atunci când tensiunea o valoarea numita tensiune de aprindere (uap) și durează până când tensiunea scade la o valoare numită tensiune de stingere. În intervalul denumit pauza de curent (pauza de arc) prin circuit circulă un curent postarc de valoare mică. În acest timp spațiul de arc devine din ce în ce mai izolant, prin creșterea rigidității sale dielectrice pe masura răcirii arcului electric. Refacerea proprietăților dielectrice decide fie reaprinderea în semiperioada următoare, fie stingerea arcului electric. Tensiunea de aprindere este strâns legată de procesele ce au loc in timpul pauzei de curent, presiunea mediului care înconjoara arcul și temperatura și natura materialului contactelor. Tensiunea de stingere depinde de inerția de deionizare a gazului, conductivitatea acestuia modificându-se mai lent. Se constată că întotdeauna în curent altemativ arcul se stinge și se aprinde la fiecare trecere a curentului prin zero. De aceea pentru o stingere definitivă a arcului trebuie luate măsuri care să evite reaprinderea. Se știe că spațiul de arc nu se deionizează instantaneu și păstrează după stingerea arcului un anumit grad de conductivitate, ceea ce permite trecerea unui curent postarc. Curentul postarc produce o încălzire a spațiului arc, încălzire care împiedică deionizarea și favorizează reaprinderea arcului. În cazul circuitelor pur rezistive, curentul fiind în fază cu tensiunea, trece simultan prin zero odată cu acesta. Între momentul stingerii arcului și al reaprinderii următoare, curentul este practic nul, și apare pauza de curent. În acest interval de timp, spațiul de arc din starea precedentă cu atribute de conductor devine progresiv un mediu izolant a cărui grad de regenerare dielectriă decide în ultimă instanță stingerea definitivă sau reaprinderea arcului.

4.2. Contacte electrice

Contactul electric este locul de atingere a două sau mai multor elemente conductoare prin care are loc trecerea curentului electric. Elementele de contact sunt piesele prin care se realizează contactul. Contactele electrice sunt piesele cele mai solicitate ale aparatelor electrice de comutație deoarece ele trebuie să suporte încălzirea în timpul funcționării, uzura prin ciocniri și frecări, acțiunea arcului electric ce se stabilește, îndeosebi la deschiderea circuitului electric.

Comportarea contactelor în funcționarea aparatelor și echipamentelor electrice este hotărâtoare, în sensul că o construcție greșită sau o stare nesatisfăcătoare a lor, poate conduce la avarii grave. Deoarece condițiile de lucru ale contactelor electrice sunt diferite, fiind folosite atât în circuite de mică putere cât și în cele de mare putere, forma lor constructivă este foarte variată.

Din punct de vedere al formei geometrice al suprafețelor de contact se deosebesc contacte puntiforme, liniare și de suprafață, iar după cinematica elementelor sale, contactele se clasifică în:

-contacte fixe, ce realizează îmbinarea celor două elemente de contact, putând fii demontabile sau nedemontabile;

-contacte de întrerupere, la care cel puțin unu din elementele de contact este mobil, determinând închiderea sau deschiderea unui circuit;

-contacte alunecătoare sau glisante, la care deplasarea piesei mobile față de cea fixă se face fără întreruperea circuitului;

În timpul funcționării contactelor apare o uzură chimică, mecanică și electrică a acestora.

Uzura chimică sau coroziunea duce la formarea pe suprafețele de contact a unor straturi de oxizi și impurități. Aceste straturi fiind fragile, sub acțiunea șocurilor și a frecărilor între piesele de contact, putând să se detașeze, provocând uzura treptată a suprafețelor de contact.

Uzura mecanică se datorează lovituroilor și frecărilor ce apar între piesele de contact, depinzând de proprietățile materialului și de forma constructivă a contactelor.

Uzura electrică sau eroziunea contactelor este cauzată de arderea și migrația materialului pieselor de contact, constituind principala formă de uzură a contactelor.

Datorită uzurii contactelor se modifică forma și dimensiunile pieselor de contact, proprietățile fizice ale materialului și ca urmare se înrăutățește treptat funcționarea contactului. De aceea, admițându-se o anumită rezistență la uzură a contactelor, se determină durata lor medie de funcționare, respectiv numărul de cicluri de funcționare.

Din aceste motive, supravegherea și îngrijirea periodică a contactelor reprezintă o condiție strict necesară pentru asigurarea bunei funcționări a aparatelor electrice.

Pentru a verifica starea contactelor fără a demonta aparatul se poate utiliza un milivoltmetru de curent continuu. Se trece prin aparat un curent continuu egal cu curentul nominal și se citește căderea de tensiune pe contactul închis. Această cădere de tensiune pe contact trebuie să fie sub 50 mV. Valoarea indicată este informativă, dar constiutuie o indicație pentru starea contactelor.

4.3. Contactoare electromagnetice

Aparatele electrice de comutație servesc la închiderea și deschiderea circuitelor electrice, realizând sau suprimând legăturile electrice dintre bornele aparatelor, mașinilor sau echipamentelor electrice.

Aparatele de conectare se considera automate cand cel puțin una dintre acționări poate avea loc automat. De obicei deschiderea este automată (eventual comandată de către protecții) iar închiderea este fie automată fie comandată manual.

Din categoria aparatelor automate de conectare la joasa tensiune fac parte: contactoarele electromagnetice sau statice, întrerupătoarele automate și releele intermediare.

Contactorul electromagnetic este definit ca un aparat de comutație electro-mecanică, acționat altfel decât manual (de un electromagnet la joasă tensiune), cu o singură poziție de repaus, capabil să stabilească, să suporte și să întrerupă curenți nominali și curenți mai mari decât cei nominali, dar care apar în mod normal (nu curenți de scurtcircuit). Este destinat efectuării unui mare număr de comutații în sarcină (105 – 106) și unui număr și mai mare de comutații fără sarcină (107). Contactoarele sunt aparate de comuțatie care pot realiza operațiile de închidere, deschidere și comutare a unor circuite ca urmare a unei comenzi date de un releu, de un traductor sau de operatorul uman, la anumiți parametri electrici prestabiliți. Ele pot fi acționate de un operator, prin utilizarea unui buton de comandă montat în apropierea aparatului sau de la distanță.

Contactoarele se caracterizeaza prin faptul că ele conectează un circuit sub acțiunea comenzii și mențin închis circuitul atâta vreme cât durează această comandă (adică au contactele principale normal deschise – ND). Astfel de aparate au funcția de ruptor. Mai puțin utilizate sunt contactoarele cu funcție de conjunctor (care au contactele de forță normal închise -NI).

Contactoarele trebuie să poată suporta trecerea prin ele, un timp scurt, a curentului de scurtcircuit și să deconecteze supracurenții de ordinul 4-6 ori curentul nominal. Contactoarele și ruptoarele au capacitatea de rupere redusă însă au rezistența mecanică foarte bună, asigurând un numar mare de manevre cu frecvența de comutare ridicată. Aceste aparate pot fi de curent continuu, curent altemativ sau mixte. La aparatele în regim mixt, contactele principale funcționează în curent continuu, iar bobina de excitație în curent alternativ sau invers.

4.4. Achiziția semnalelor

Obiectivul lucrării este realizarea unui dispozitiv cu ajutorul căruia se poate efectua anclanșarea, declanșarea unui contactor în curent alternativ, în condiții optime astfel încât durata acestuia de funcționare să fie maximă. Acest lucru este posibil în condițile în care deschiderea contactului se realizează la trecerea curentului prin zero. Aceasta presupune achiziția unor semnale, respectiv a tensiunii și a curentului, și monitorizarea lor. Pentru aceasta vom folosi microcontrolerul PIC 16F877, care cu ajutorul convertorului analog-numeric va afișa pe LCD valoarea acestora, iar în condiții favorabile va comanda releul. Se poate crea o funcție suplimentară, și anume o protecție la supracurenți. Aceasta înseamnă deschiderea contactului (întreruperea circuitului) la o anumită valoare predefinită a curentului.

Achiziția semnalului de curent se realizează cu ajutorul a două amplificatoare operaționale și a unui șunt. Curentul de măsurat este convertit într-o tensiune, cu ajutorul șuntului (în cazul unui ampermetru electronic cu un amplificator operațional, relația de calcul este Ue=(1+R2/R1)∙Rș∙Ii, unde Ii este curentul de măsurat, Rș este rezistența șuntului). Diodele asigură protecția schemei împotriva unor tensiuni prea mari.

Fig. 4.1. Ampermetru electronic cu două A.O și șunt

Achiziția semnalului de tensiune se realizează cu ajutorul unui divizor de tensiune, care este compus din două rezistențe cu valori diferite dar bine definite astfel încât raportul rezistențelor R9/R8=1/3. Astfel în microcontroler va intra o tensiune de aproximativ 5V.

Fig. 4.2. Divizorul de tensiune

4.5. C.A.N.

Pentru că semnalele de la periferice sunt substanțial diferite de cele pe care le poate înțelege microcontrolerul (zero și unu), ele trebuie convertite într-un mod care să fie înțeles de microcontroler. Această sarcină este îndeplinită de un bloc pentru conversia analog-digitală sau de un convertor AD. Acest bloc este responsabil pentru convertirea unei informații despre o anumită valoare analogică într-un număr binar și pentru a o urmări pe tot parcursul la un bloc CPU așa ca blocul CPU să o poată procesa.

Cap. V. Etapele de realizare a proiectului

Cum se poate realiza proiectul? Trebuie un cablaj, câteva componente și un program.

Înainte de începerea proiectării propriu-zise proiectantul trebuie să își conceapă un plan, care să cuprindă piesele care vor fi folosite, (în primul rând dacă acele componente se găsesc în comerț), cum se poate ajunge la rezultatul dorit. Bine-nțeles fără erori nu se poate, acestea mai ales în faza de proiectare vor exista întotdeauna, contează detectarea lor cât mai din timp și înlăturarea sau corectarea lor.

5.1. Organizarea memoriei microcontrolerului PIC16F877

Microcontrolerele din familia PIC au o arhitectură Harward. În consecință vor avea separate zona de date și zona de program, fiecare din acestea fiind deservite de câte o magistrală de date. Pentru a prezenta concret elemente ale structurii, ne vom referi în continuare la microcontrolerul PIC 16F877.

Primul lucru pe care trebuie să-l remarcăm este prezența a 3 zone de memorie, toate aflate în interiorul chip-ului :

memoria RAM (RAM file register) organizată în cuvinte de cîte 8 biți;

memoria EEPROM (Data EEPROM) organizată în cuvinte de cîte 8 biți;

memoria PROGRAM (FLASH Program Memory) organizată în cuvinte de cîte 14 biți.

Mai trebuie să mai reținem și prezența mai multor "periferice" printre care:

5 porturi de intrare ieșire (I/O), conectate fizic la pinii capsulei microcontrolerului;

Convertor analog – numeric (A/D);

3 circuite de temporizare (Timer);

port de comunicație serială sincronă

port de comunicație serială asincronă

Toate perifericele au cîte o adresă fizică și pot fi accesate (citite sau scrise după caz) de către unitatea centrală, pe durata rulării programului înscris în FLASH Program Memory. Accesul la periferice se face prin aceiași magistrală de date de 8 biți, care accesează și memoria RAM. Majoritatea perifericelor sunt conectate la pinii microcontrolerului, pentru a intra în legătură cu lumea exterioară acestuia. Pentru a nu avea un număr prea mare de pini, același pin poate fi asignat prin program sa aparțină unuia sau altuia din perifericele menționate.

Fig. 4.1. Structura generală a microcontrolerului PIC16F877

5.1.1. Memoria RAM

Memoria RAM (RAM file register) este cea în care se află variabilele programului pe care-l vom scrie. Organizarea acestei zone de memorie (harta memoriei) este prezentată în figura 4.1. constatăm existența a două categorii:

– Zona Regiștrilor Speciali (Special Function Registers). Aceștia sunt folosiți de către unitatea centrală și de către periferice, pentru a controla activitatea microcontrolerului.

– Zona variabilelor alocate prin program. Variabilele de orice tip pe care le vom declara pe parcursul scrierii programului, vor fi plasate în zonele încercuite (General purpose registers) din memoria RAM a microcontrolerului. Nu există alte zone în care se pot afla variabile.

Fig. 4.2. Organizarea memoriei RAM, pentru PIC16F877

Din analiza informațiilor prezentate în figura 4.2., rezultă câteva concluzii legate de numărul și dimensiunea variabilelor pe care le vom declara:

– Spațiul total pe care-l putem aloca variabilelor este de 96+80+80+80 = 336 octeți. Altfel spus am putea crea un program în care să avem cel mult 336 variabile de tip char.

– Dacă avem variabile de tip tablou, dimensiunea maximă a acestora nu poate depășii dimensiunea permisă a bankului în care o declarăm. Spre exemplu am putea crea un program în care să avem patru variabile tablou, ale căror dimensiuni maxime vor pute fi:

unsigned char x[96];

unsigned bank1 char y[80];

unsigned bank1 char z[80];

unsigned bank1 char w[80];

– În fiecare din bankurile 2 și 3, mai există câte 16 octeți care însă nu pot fi accesați prin variabile declarate, ci numai prin pointeri. Cu toate acestea, în foile de catalog ale microcontrolerului și acești octeți sunt contabilizați ca făcând parte din memoria RAM, astfel că microcontrolerul PIC 16F877, dispune de 336+32=368 octeți de memorie RAM.

– Iată deci că atunci când creăm un program, trebuie să gestionăm cu mare atenție dimensiunea și locul în care plasăm variabilele.

– Pe parcursul scrierii programului, variabilele se apelează numai prin numele lor fără a mai preciza și bankul în care se află, ceea ce este un mare avantaj față de programele scrise in limbaj de asamblare unde trebuie să fim foarte atenți ca de fiecare dată când utilizăm o variabilă să precizăm în ce bank se găsește.

– Nu scăpăm însă de problema accesului la variabile din bankuri diferite atunci când acestea sunt apelate prin pointeri. Pentru a apela prin adresă o variabilă din bank0 sau bank1 avem nevoie de un singur octet, fiindcă așa cum se observă din figura 4.2., aceste două bank-uri ocupă zona de la 00h, până la FFh adică 256 locații. În schimb, pentru a apela prin adresă variabile din bank2 sau bank3, un singur octet nu ajunge. Probabil că soluția pe care o putem sugera imediat este aceea ca orice variabilă de tip pointer să aibe rezervați doi octeți. Nu este așa probabil din motive ce țin de istoria dezvoltării microcontrolerelor, la primele fiind cu siguranță suficient un octet, fiindcă nu aveau decât un singur bank de RAM.

– Pentru rezolvarea problemei există două soluții.

Folosirea pointerilor de tip "const". Aceștia au alocați doi octeți și pot accesa orice bank. Dezavantajul este că nu pot fi folosiți decât pentru a citi variabile aflate la adresele pe care le pointează.

Folosirea pointerilor de tip "far". Aceștia pot accesa adrese din orice bank, și pot fi folosiți atât pentru a citi cât și pentru a scrie la adresa respectivă.

– Dacă la compilarea programului apar mesaje de eroare sau de atenționare trebuie citită cu atenție documentația de programare a microcontrolerului cu care se lucrează.

5.1.2. Memoria EEPROM

Memoria EEPROM este cea în care se află toate constantele programului pe care-l vom scrie. Constantele de orice tip pe care le vom declara pe parcursul scrierii programului, se vor afla numai în EEPROM, neexistând alte zone în care acestea se pot afla. De aici câteva concluzii legate de numărul și dimensiunea constantelor pe care le vom declara.

– Memoria EEPROM a unui PIC 16F877 are dimensiunea de 256 octeți. În concluzie nu putem avea mai mult de 256 constante a câte un octet.

– Memoria EEPROM este nevolatilă. Valorile înscrise în ea nu se șterg la întreruperea tensiunii, sau la resetarea microcontrolerului.

– Tot într-o zonă de memorie EEPROM sunt înscrise și valori care nu pot fi modificate, precum: data fabricației, etc.

– Memoria de tip EEPROM se poate extinde "în afara chip-ului" cu așa numite "chip-uri de memorie". Aceastea au de regulă memorie nevolatilă de tip EEPROM, și se folosesc atunci cînd trebuie salvate un volum mare de date esențiale.

5.1.3. Memoria PROGRAM

Memoria PROGRAM este o memorie de tip ROM (Read Only Memory), în care se înscrie codul executabil, cel rezultat după compilare. Acest cod este de regulă un fișier cu extensia ".hex". Acesta se înscrie în microcontroler o singură dată la început, cu ajutorul unui programator. După ce acest cod executabil este înscris în memoria program, se zice că "microcontrolerul este programat". Termenul folosit pentru soft-ul aflat în memoria program a unui microcontroler este de firmware. Nici un bit din conținutul aceste memorii nu este modificat pe durata rulării aplicației. După ce microcontrolerul este programat și este montat în circuitul electonic dedicat aplicației, atunci când este rulată aplicația respectivă din memoria program sunt citite una după alta cuvintele care reprezintă pentru mircocontroler instrucțiuni ce urmează a fi efectuate. Memoria program nu este organizată "pe octeți", ci pe cuvinte a căror lungime depinde de tipul microcontrolerului. În funcție de acest criteriu, microcontrolerele din familia PIC se clasifică în:

– Baseline processor – au instrucțiunile pe 12 biți. Sunt microcontrolerele de tip PIC12.

– Midrange processor – au instrucțiunile pe 14 biți. Sunt microcontrolerele de tip PIC14. (Exemplu PIC16F877)

– High-end processor – au instrucțiunile pe 16 biți. Sunt microcontrolerele de tip PIC16.

Evident, cu cât este mai lung cuvântul (instrucțiunea) din memoria program, el poate gestiona activități mai complexe la nivelul unității centrale a microcontrolerului, și implicit la nivel hard. Consecința imediată este aceea că microcontrolerele având instrucțiuni lungi, au performanțe superioare.

Din punct de vedere al caracterului ROM al memoriei program, există două categorii de microcontrolere PIC:

– cu memorie de tip PROM. Acestea pot fi programate o singură dată, după care urmează să fie montate pe placa pe care vor rula aplicația pentru care au fost programate. Ele nu se mai pot "reprograma", în ipoteza că la un moment dat aplicația ar trebui modificată. Fiind microcontrolere ieftine, sunt indicate pentru realizarea de produse de serie mare. În această categorie sunt incluse microcontrolerele care conțin litera "C" în denumire, ca de exemplu: PIC16C84, etc.

– cu memorie de tip EEPROM. Acestea pot fi reprogramatede mai multe ori, fiind indicate pentru experimente sau dezvoltări de aplicații. În această categorie sunt incluse microcontrolerele care conțin litera "F" în denumire, ca de exemplu: PIC16F84, PIC16F877, etc. La acestea se folosește termenul de memorie FLASH pentru memoria program.

Alte observații utile legate de memoria program

– Dimensiunea memoriei FLASH la PIC 16F877 este de 8k (1FFF). Deci nu avem voie să scriem un fișier .c după a cărui compilare fișierul ".hex" rezultat, să fie mai mare de 8k! Este o limitare care nu trebuie să ne sperie, fiindcă chiar aplicațiilor "serioase", le sunt suficienți cei 8k de memorie FLASH. La alte tipuri de microcontrolere dimensiunea memoriei FASH este mult mai mare, ca de exemplu PIC 18Fxx, care are 256K de memorie program, care permite crearea de aplicații "foarte serioase". Oricum dimensiunea limitată a memoriei program, obligă programatorul să realizeze fișiere sursă optimizate din punct de vedere al dimensiunii. O altă măsură pentru generarea de fișiere .hex de lungime minimă este compilarea fișierelor c, cu opțiunea: "Global optimisation level=9".

– Așa cum se observă în figura 4.3., memoria program este organizată pe mai multe pagini, 4 în cazul lui PIC 16F877. Acest lucru este transparent pe durata scrierii programului. Doar în momentul compilării, trebuie psect

Fig. 4.3. Organizarea memoriei program (FLASH) la PIC 16F877

Merită să mai revenim puțin asupra modului în care se programează un microcontroler. Înscrierea fișierului ".hex" se face cu ajutorul unui programator. Acesta este un montaj electronic conectat pe USB sau pe interfața serială a calculatorului în care se află fișierului .hex.

– Programatoare care au un soclu "gol", în care se introduce microcontrolerul căruia urmează să-i fie înscris programul. După înscriere, microcontrolerul se scoate din soclu și se montează pe placa pentru care a fost proiectată aplicația înscrisă în el. Dezavantajul unui astfel de procedeu este acela că dacă se lucrează la dezvoltarea unui program cu un grad de complexitate mai mare, care trebuie modificat de multe ori, aceasta obligă la montarea/demontarea de multe ori a chipului în programator, operații prin care se pot distruge pinii acestuia.

– Programatoare "în circuit". Acestea sunt recomandate dezvoltării aplicațiilor care necesită multe modificări și încercări pe durata realizării lor. În acest caz, se realizează placa (circuitul) pe care microcontrolerul este montat definitiv prin lipire. Programatorul se conectează prin intermediul unui conector montat pe placă la doi pini (SDA și SCL) ai microcontrolerului, dedicați pentru comunicații seriale I2C și care pot fi folosiți pentru programare. Programarea "în circuit" se poate la rândul ei face pe una din următoarele două căi:

– Înscrierea serială directă conectând programatorul la pinii SDA (Serial DAta)și SCL (Serial CLock) ai microcontrolerului.

– Înscrierea serială folosind pinii Tx și Rx protocolului serial RS232. Pentru aceasta este însă nevoie de un program ajutător, numit bootloader. Acesta se încarcă inițial în microcontroler, folosind un programator clasic. După aceea microcontrolerul se montează definitiv prin lipire pe placă iar înscrierea în continuare a programului se face fără programator, folosind interfața serială a calculatorului, și un program de transmisie serială, precum utilitarul Hiperterminal. Deși se găsește în memoria program bootloader-ul nu influențează deloc aplicația, fiindcă el este încărcat la sfârșitul memoriei FLASH, iar dimensiunea sa este mică aproximativ 250 cuvinte.

5.2. Programarea microcontrolerului PIC 16F877

Programarea se realizează într-un program special, cum ar fi de exemplu MPLab, după care se implementează în microcontroler cu ajutorul unui modul IC2. Programul se poate scrie fie direct în Asambler sau în limbaj C, calculatorul convertind-ul la sfărșit în limbajul de asamblare.

Pentru început se va configura modul de lucru. Din meniul „Configure-> Select Device” se alege microcontrolerul cu care se lucrează. Din meniul „Programmer->Select Programmer->None”, deoarece deocamdată nu se implementează pe nici un microcontroler, se lucrează doar teoretic. Din meniul „Debugger->Select Tool->MPLab Sim” se selectează simulatorul intern, pantru a se verifica programul, dacă este funcțional. Pasul următor este selectarea din meniul „File->New”. Apare o ferestră goală în care se va scrie programul propus. Există câteva reguli simple ce trebuie să fie respectate pebtru ca programul să poată fi rulat. Se începe cu comanda „#include<pic.h>”, comandă ce definește folosirea microcontrolerului. Oricând se pot introduce diverse comentarii dar cu condiția folosiri „//” înaintea lor. Compilatorul va trece peste acestea. Comentariile sunt de mare ajutor în special în cazul depanării programului, deoarece rolul fiecarei funcție folosite este definită și în consecință programul poate fi citit și înteles în totalitate.

După ce programul a fost scris se va salva din meniul „File->Save As…”. I se va da un nume și se va salva într-un director, după care din meniul „Project ->New”, se începe un nou proiect, care trebuie sa fie definit (numele proiectului și locația unde va fi salvat). Din acest meniu mai trebuie setate „Project->Select Language Toolsuite…”, se selectează „PICC Compiler (picc.exe), iar din „Project -> Set Language Tool Locations…” se selectează „HI-TECH PICC Toolsuite->Executables->PICC Compiler (picc.exe)”, cu comentariul că acest C compiler trebuie să fie instalat. Mai trebuie doar adăugat fișierul scris și salvat. Aceasta se realizează din meniul „Project->Add Files To Project…” după care se poate compila.

Mai jos sunt date câteva exemple de programe (cu flow-chart-ul corespunzător). Programele sunt simple, ele constituind un început în învățarea atât a microcontrolerului cât și a programării. După ce sunt scrise, programele vor fi compilate din meniul „Project -> Build All” sau „Ctrl+F10”, posibilele erori vor fi afișate, iar în cazul în care programul poate rula va apare mesajul „Build succeded”. Programele au fost simulate cu ajutorul funcției „MPLab Sim”.

Primul program este cel mai simplu. Se folosește un microcontroler pentru aprinderea unui bec. Dacă se va apăsa un buton se aprinde un LED.

Programul este următorul:

I. Aprinderea unui LED la apăsarea unui buton

#include<pic.h>

void config(void);

void start_input(void);

void main(void)

{config();

do

{

start_input();

}while(1);

}

void config(void)

{

TRISA=0xDF;

TRISB=0x00;

PORTA=0x03;

PORTB=0x00;

}

void start_input(void)

{

while(RA2==1)

{

PORTB =0xFF;

}

while(RA2==0)

{

PORTB =0x00;

}

}

II. Alimentarea unui motor la apăsarea unui buton oprirea lui la apăsarea altui buton oprirea lui la o tensiune mai mare decât 3V măsurarea continuă a tensiunii

#include<pic.h>

void config(void);

void start_input(void);

void main(void) //funcția principală

{config(); //sare la funcția "config"

while(1){ //bucla infinită

start_input(); //sare la funcția "start_input"

}

}

void config(void) //funcția "config" care configurează microcontrolerul

{

TRISA=0x03; //pinii RA0,RA1,RA2 sunt setați ca intrări

TRISB=0x00; //pinii portului RB sunt setați ca ieșiri

PORTA=0x03;

PORTB=0x00;

ADCS1=1; //este folosit Fosc/32

CHS1=1; //este setat pinul AN2 (RA2) ca intrare analogica ce urmează să fie convertită

ADON=1; //este setat bitul "ADON" astfel convertorul este activ

}

void start_input(void) //funcția "start_input"

{

while(RA0==1) //bucla de testare a apăsării butonului de start

{

//TRISB=0x00; //dacă butonul a fost apăsat pinii portului RB sunt setați ca ieșiri

// PORTB=0x00; //și astfel motorul pornește

ADGO=1; //Începe conversia

while(ADGO=1)continue; //Daca ADGO=0 înseamnă că sa terminat conversia

if(ADRESH>3){ //rezultatul este pus în registrul "ADRESH", dacă această valoare este

TRISB=0xFF; //mai mare decât 3, pinii portului RB sunt setați ca intrari

PORTB=0xFF; //astfel motorul se oprește

start_input(); //sare la funcția "start_input"

}

while(RA1==1) //se testează dacă butonul de oprire a fost apăsat

{

TRISB=0xFF; //dacă a fost apăsat, pinii portului RB sunt setați ca intrări

PORTB=0xFF; //astfel motorul se oprește

start_input(); //sare la funcția "start_input"

}

}

}

III. Aprinderea/Stingerea unui LED prin întreruperi

#include<pic.h>

void config(void);

void start_input(void);

void main(void) //funcția principală

{config(); //sare la funcția "config"

while(1){} //bucla infinită

}

void config(void) //funcția "config", care configurează microcontrolerul

{

TRISA=0x00; //pinii sunt setați ca ieșiri

TRISB=0x01; //pinul RB0 este setat ca intrare

PORTA=0xFF;

PORTB=0x01;

GIE=1; //Global interrupt enable bit

INTE=1; //RB0/INT External interrupt enable bit

}

void start_input(void) //functia "start_input"

{

if(INTF=1){ //Dacă se apasă pe buton, INTF este 1

INTF=0; //setăm INTF=0

if(RA0=1){//dacă RA0 este 1 PORTA=0000 0000, adică ieșiri;

PORTA=0x00;

}

else //dacă nu PORTA=1111 1111, adică intrări;

PORTA=0xFF;

}

}

IV. Conversie + afișare prin întreruperi

#include<pic.h>

void config(void);

void interrupt isr(void) //funcția de întrerupere

{

if(T0IF) //testează dacă T0IF=1, dacă da înseamnă că TMR0 activat intreruperea

{TMR0=1000000; //TMR0 se încarcă cu 1 secundă pe întrerupere

T0IF=0; // T0IF se setează din soft pe zero a.î. să poată fi detectată o altă întrerupere

ADGO=1; //începe conversia

while(ADGO)continue; // se testează dacă s-a terminat conversia

}

if(ADIF) //testează dacă ADIF=1

{ADIF=0; // ADIF se setează din soft pe zero a.î. să poată fi detectată o altă întrerupere

PORTB=ADRESH; // Rezultatul conversiei care este în ADRESH

// este afișat prin pinii portului B sub formă binară

}

}

void main(void) //programul principal

{config(); // se apelează funcția config

while(1){} // bucla infinită

}

void config(void) // funcția config

{TRISA=0x03; //pinul RA2 este setat ca intrare

TRISB=0x00; // pinii sunt setați ca ieșiri

PORTA=0x03;

PORTB=0x00;

ADCS0=0; // ADCS0 și ADCS1 selectează Fosc/32

ADCS1=1;

CHS0=0; // CHS0, CHS1 și CHS2 setează pinul AN2 (RA2)

CHS1=1; // ca intrare analogică ce urmează să fie convertită

CHS2=0;

ADON=1; //este setat bitul "ADON" astfel convertorul este activ

GIE=1; //activează detectarea oricăror întreruperi din sistem

TMR0IE=1; // activează detectarea întreruperilor de la TMR0

T0CS=0; // este setat Timer Mode

ADIE=1; // activează detectatrea întreruperilor de la convertorul A/D

PEIE=1; //activează detectarea oricăror întreruperi de la periferice

}

V. Conversie + afișare prin întreruperi

#include<pic.h>

void config(void);

void interrupt isr(void) //funcția de întrerupere

{

if(T0IF) //testează dacă T0IF=1, dacă da inseamnă că TMR0 activat intreruperea

{TMR0 =1000000; //TMR0 se încarcă cu 1 secunda pe întrerupere

T0IF=0; // T0IF se setează din soft pe zero a.î. să poată fi detectată o altă întrerupere

ADGO=1; //începe conversia

while(ADGO)continue; // se testează dacă s-a terminat conversia

}

if(ADIF) //testează dacă ADIF=1

{ADIF=0; // ADIF se setează din soft pe zero a.î. să poată fi detectată o alta întrerupere

PORTB=ADRESH; // Rezultatul conversiei care este in ADRESH

// este afișat prin pinii portului B sub formă binară

}

}

void main(void) //programul principal

{config(); // se apelează funcția config

while(1){} // bucla infinită

}

void config(void) // funcția config

{TRISA=0x03; //pinul RA2 este setat ca intrare

TRISB=0x00; // pinii sunt setați ca ieșiri

PORTA=0x00;

PORTB=0xFF;

ADCS0=0; // ADCS0 și ADCS1 selectează Fosc/32

ADCS1=1;

CHS0=0; // CHS0, CHS1 și CHS2 setează pinul AN2 (RA2)

CHS1=1; // ca intrare analogică ce urmează să fie convertită

CHS2=0;

ADON=1; //este setat bitul "ADON" astfel convertorul este activ

GIE=1; //activează detectarea oricăror întreruperi din sistem

TMR0IE=1; // activează detectarea întreruperilor de la TMR0

T0CS=0; // este setat Timer Mode

ADIE=1; // activează detectatrea întreruperilor de la convertorul A/D

PEIE=1; //activează detectarea oricăror întreruperi de la periferice

T0SE= 0b01000;

TMR0=1000000;

}

5.3. Realizarea cablajului

Dispozitivul trebuie realizat și practic. Pentru acesta trebuie un program special, cum ar fi de exemplu „Capture CIS”, din familia Orcad. Cu ajutorul acestui program se proiectează circuitul, existând în biblioteca sa internă majoritatea din componentele folosite.

După proiectarea circuitului în Capture CIS, acesta se transferă în Layout, program aparținând aceleași familii, cu ajutorul acestuia se realizează cablajul. Pentru a se putea transfera în programul Capture CIS, din meniul principal se selectează „Tools -> Create Netlist”. Se alege coloana „Layout”, la obțiunea „PCB Footprint – Combined property string:” se selectează „PCB Footprint”, la secțiunea „Options”, se alege în „User properties are in inches”, și la „Netlist File:” se introduce directorul unde acesta va fi salvat sub extensia „.mnl”.

La deschiderea programului Layout, se selectează din meniul principal „File -> New”, după care în prima casuță se alege „Browse -> _default.tch”, iar în a doua se va introduce fișierul care a fost salvat din Capture CIS cu extensia “.mnl”.

În continuare sunt prezentate câteva scheme electrice, exacat cum au fost concepute și gândite, cu erori și îmbunătățiri, în final ajungâdu-se la realizarea practică a proiectului.

În figura 5.1. este o primă schemă electrică ce a fost axată pe achiziția semnalelor de curent și tensiune. Pentru aceasta s-a folosit un amplificator operațional, respectiv un divizor. Un releu comandat de microcontroler pentru închiderea circuitului. S-a lucrat în curent continuu. Amplificatorul operațional folosit nu putea face achiziția semnalului de curent, din acest motiv s-a folosit un ampermetru electronic de curent continuu (fig. 5.2). Curentul de măsurat este convertit într-o tensiune cu ajutorul șuntului R6 (de valaore cât mai mică), diodele D1 și D2 având rol de protecție la supratensiuni. O greșeală în acestă schema este amplasarea șuntului, locul acestuia fiind în serie cu motorul, așa cum se poate vedea din figura 5.3. Releul nu poate fii comandat de microcontroler decât prin intermediul unui tranzistor. Această schemă fiind prima în curent alternativ la o sursă de 12V. În figura 5.4 este prezentată circuitul electric alimentat de la o sursă de 230V cu un transformator de 230/12V, o punte redresoare și un condensator pentru obținerea un curent continuu, un circuit LM7805 pentru obținerea tensiunii de 5V necesară alimentării microcontrolerului. Cu linie îngroșată este reprezentat circuitul de forță.

În figurile 5.5, 5.6, 5.7, 5.8 este prezentată schema electrică pe bucăți, deoarece a fost inclus un LCD, și inițial proiectarea a fost gândită pe patru PCB-uri diferite, un circuit ce ar fi inclus microcontrolerul, circuitul LM7805, circuitul MAX232 și conectorii pentru programare, respectiv interfața cu calculatorul, un circuit ce includea partea de achiziție de semnale, partea de redresare a curentului și partea de comandă a releului cu circuitul de forță și sarcina, un circuit pentru LCD și un circuit de comandă cu push-butoane și LED-uri de semnalizare.

Având în plan reducerea cotelor de gabarit, prin eliminarea conectorilor și folosind pe cât posibil SMD-uri, s-a trecut la o variantă ce include toate componentele pe un singur PCB, dupa cum se vede în figura 5.9.

În figurile 5.10 și 5.11 sunt prezentate două moduri de realizare a cablajului în Layout, cablajul din figura 5.10 este unul de testare (de învățare a programului Layout), cotele componentelor nu corespound cu cele folosite.

În figura 5.11 componentele sunt definite, dar acest cablaj nu a fost adoptat din simplul motiv că s-a reușit reducerea cotelor de gabarit rezultând cablajul din figura 5.12, cablaj ce a fost realizat și practic.

Realizarea PCB-ului a necesitat mai multe etape. Prima a fost imprimarea cablajului pe foi de calc (din cauza transparenței), acestea fiind un șablon. Lipirea lor pe o placa dublu placată și acoperită cu fotorezist și expusă timp de aproximativ trei minute la ultraviolete pentru a reaționa lumina cu fotorezistul, după care trecere ei printr-o baie de sodă caustică 10% pentru îndepărtarea fotorezistului și spălarea cu apă. Urmează etapa de trecere printr-o baie de clorură ferică pentru îndepărtarea surplusukui de cupru spălarea cu spirt pentru îndepărtarea fotorezistorului ce a rămas pe traseele de circuit și vopsirea cu sacâz pentru a nu se oxida placa.

Fig. 5.1. Schema electrică I

Fig. 5.2. Schema electrică II

Fig. 5.3. Schema electrică III

Fig. 5.4. Schema electrică IV

Fig. 5.5. Schema electrică V a

Fig. 5.6. Schema electrică V b

Fig. 5.7. Schema electrică V c

Fig. 5.8. Schema electrică V d

Fig. 5.10. Realizarea cablajului în Layout

Fig. 5.11. Realizarea cablajului în Layout

Fig. 5.12. Cablajul proiectului

Fig. 5.13. Cablajul proiectului partea de sus

Fig. 5.14. Cablajul proiectului parte de jos

Cap. VI. Perspective de dezvoltare

Contactorii statici reprezintă ultima generație de contactori, care, spre deosebire de cei convenționali, nu au părți electromecanice, fiind integrali electronici. Avantajele sunt multiple – au o durată de viață aproape nelimitată, sunt preciși, silențioși, nu produc șocuri în rețea și se pretează utilizării în aplicațiile care necesită o frecvență ridicată de comutări (Ton/Toff <1ms – Ex.: bucle de reglare a temperaturii cu rezistență electrică). Domeniul de utilizare este extrem de larg, pornind de la automatizări industriale, instalații de încălzire, uscătoare, motoare monofazate sau trifazate – practic orice tip de instalație cu comandă electrică.

Caracteristicile și avantajele sunt următoarele:

-durată de viață prelungită: spre deosebire de contactorii mecanici, cei statici nu au uzură și asigură un ciclu de comutări aproape nelimitat;

-frecvență mare de comutare, sunt indicați în aplicațiile care solicită un număr ridicat de comutări. Exemple: cuptoare electrice, instalații de injecție mase plastice, etc.;

-funcționează fără zgomot: indicații în zone unde se dorește menținerea zgomotului la nivel redus;

-comutare precisă și rapidă: asigură timpi de comutație mult inferiori contactorilor clasici;

-funcționează în condiții umede datoriă construcției protejate la infiltrații;

-construcție compactă și ușurință la instalare;

Modul de alegere a contactorului este următorul:

1. Stabilirea curentulului maxim ce trece prin sarcină

În practică se alege un contactor al cărui curent maxim comutat specificat e de 1.25 – 1.5 ori mai mare decât cel de sarcină. Exemplu: dorim să comandăm o sarcină de 15A, conform calculației alegem un contactor care să suporte 1.5 x 15A = 22.5A, deci de 25A.

2. Stabilirea tensiunii de comandă

Pentru comanda la 24V vom alege un model cu tensiunea de comandă 8 – 40 Vcc/Vac.

3. Stabilirea tensiunii ce trebuie comutată

Pentru o tensiunea maximă comutată de 400 V, alegem un contactor care să suporte o tensiune maximă comutată de 1.5 ori mai mare, adica: 1.5 x 400 Vcc = 600 Vcc/Vac.

4. Comutare instantanee sau comutare la trecerea prin zero

În cazul unei sarcini rezistive, pentru înlăturarea șocurilor în rețea se alege un contactor cu comutare la trecerea prin zero iar pentru o sarcină cu caracter puternic inductiv se va alege un contactor cu comutare instantanee.

Bibliografie

Ioan P., Mihu. „Dispozitive și circuite electrice”. Ed. „Alma Mater”. Sibiu 2002

Ioan P., Mihu. „Procesarea numerică a semnalelor. Noțiuni esențiale”. Ed. „Alma Mater”. Sibiu 2005

Lizeta, Popescu. „Aparate electrice”, Vol I. Ed. „Alma Mater”. Sibiu 2003

Lizeta, Popescu. „Aparate electrice”, Vol II. Ed. „Alma Mater”. Sibiu 2005

Mihai, Bogdan. „Măsurări electrice II”. Ed. „ULBS”. Sibiu 2004

Vasile Mircea, Popa. „Electrotehnică”. Ed. „Alma Mater”. Sibiu 2001

http://www.microchip.com [noiembrie 2006]

http://www.mikroe.com/ro/product/books/PICbook/1_Poglavlje.htm [decembrie 2006]

http://www.unitbv.ro/faculties/biblio/interfete_specializate/pdf/cursuri-pdf/Tehnici%20de%20interfatare/CAP10.PDF [martie 2007]

http://webspace.ulbsibiu.ro/lucian.vintan/html/Organizarea.pdf [martie 2007]

http://www.mec.utt.ro/~dolga/L_2_ST.pdf [mai 2007]

http://www.proelectronica.ro/ [mai 2007]

http://www.upg-ploiesti.ro/sescom/pdf/s07/s07-l06-ci2.pdf [mai 2007]

http://www.nextmedia.com.ro/nsc/nsc.pdf [iunie 2007]

http://www.st.com/stonline/products/literature/ds/5238/bd139.pdf [iunie 2007]

http://www.fairchildsemi.com/ds/LM%2FLM7805.pdf [iunie 2007]

http://www.datasheetcatalog.net/de/datasheets_pdf/M/A/X/2/MAX232.shtml [iunie 2007]

http://www.datasheetcatalog.net/de/datasheets_pdf/T/L/0/7/TL071A.shtml [iunie 2007]

http://www.didactic.ro/files/13/de01_mcm4_b13_tranzistoarebipolare_p.pdf [iunie 2007]

Similar Posts