Aeronautica | Comunicatii | Constructii | Electronica | Navigatie | Pompieri | |
Tehnica mecanica |
PROIECTAREA HARDWARE A VARIATORULUI DE PUTERE PENTRU SURSE DE INCALZIRE
1. Analiza schemei bloc
In etapa de proictare a variatorului de putere s-a avut in vedere ca microsistemului sa corespunda urmatoarelor cerinte:
Microsistemul sa poata comanda un transformator care furnizeaza o tensiune de 3Vca si un curent de 100A;
Microsistemul sa permita comenzi atat de la tastatura microsistemului cat si de la o aplicatie construita pe un pc ;
Puterea de comanda sa fie in gama 400-1000W;
Sa fie asigurata izolare galvanica intre partea de comanda a transformatorului si logica de decizie si control;
Anumite date obtinute de la senzori sau elemente de control sa fie afisate pe un lcd ;
Posibilitatea ca microsistemul sa poata memora anumite organigrame de lucru chiar si dupa intreruperea tensiunii de alimentare ;
Modul de control al temperaturii sa fie unul continuu.
In schema bloc din figura 1.sunt prezentate blocurile functionale, impreuna cu functiile pe care le indeplinesc:
Fig. 1 Schema bloc a variatorului de putere pentru surse de incalzire
Tinceput semiperioada negativa = Tinceput semiperioada pozitiva + 10000μs (9Ch cu un factor de prescalare de 64 )
2. Proiectarea schemelor electronice - proiectare hardware
2.1. Proiectarea unitatii de comanda
Blocul de alimentare neizolata galvanic
Acest bloc are loc de a sigura tensiunea de 12Vcc necesara functionarii celor doua blocuri comanda transformator heater si sincronizare si este realizata cu ajutorul componentelor din figura2, unde R1 si C1 au rolul de a cobori tensiunea de la retea la o valoare apropriata de ce de alimentare a celor doua blocuri.
Fig.2 Circuit alimentare circuit de comanda triac si modul sincronizare cu reteaua
Pentru calculul acestor valori s-au folosit relatiile
Iar il alegem la o valoare medie data de necesitatile de curent pentru comanda triacului alimentarea comparatorului si comanda optocuplorului de aproximativ 40mAcurent efectiv obtinut prin relatiile de mai jos:
I comanda triac
;
Intr-o semiperioada de 10mS avem 4 impulsuri X 10μs , de aici rezulta ca
IC mediu = IC max X (40μs/10ms) = (40ms X 70mA)/10000μs = 2.8mA
Ialimentare max = 15mA+15mA+17mA+2.8mA = 40mA
Deci avem si alegem C1 = 220nF.De aici va rezulta ca
Partea de redresoare - stabilizare este realizata de diodele D1, D2, D3 care poate asigura montajului un curent de pana la 100mA.
Partea de filtrare este realizata de C2,C3 si C4, unde C2,C3 sunt alese mai mari deoarece ele trebuie sa asigure curentul necesar la comanda triacului, adica cele 4 X 30μs cu un curent de aproximativ 70mA la fiecare 10ms. Bobina L2 impreuna cu condesatoarele C5,C6 si C7 asigura netezirea tensiunii de alimentare in momentul consumurilor mari de curent pe durate scurte de timp.
Din datele de catalog ale comparatorului, curentul mediu de functionare este de circa 4.3mA si Ualim intre 4,4 si12V , iar pentru comanda circuitele de reactie din jurul acestuia un curent de 12mA cu tensiune de alimentare in aceeasi gama.
La alegerea condensatoarelor C5,C6 trebuie tinut cont si de frecventa de taiere pe care o dorim a filtrului : ft = 1/ 2*π*R*C rezultand C= 1/ 2*π*R*f = 175μF. Dar avand in vedere ca aceastja valoare este limita superioara si ca avem nevoie si de o depasire de energie pentru a sustine Ualim la variatii mici de cuent se alege C5,C6 = 100μF.
Proiectarea blocului sincronizare retea dupa cum am mai amintit pentru a face un reglaj continuu si precis avem nevoie de a sti momentele cand tensiunea de la retea atinge valoarea 0V pentru ca in functie de acest moment se da comanda de deschidere a triacului. In functie de heaterul folosit va trebui sa existe o corespondenta intre intarzierea cu care se da comanda de deschidere a triacului fata de trecerea prin zero a tensiunii si temperatura ce trebuie obtinuta sau mentinuta. Circuitul de sincronizare este prezentat in figura 3 si va fi prezentat in cele ce urmeaza.
Fig.3 Modul sincronizare cu reteaua
Deoarece tensiunea de la retea este alternativa o vom compara cu referinta. Pentru a face posibil acest lucru tensiunea de la retea trebuie coborata sub nivelul tensiunii de alimentare a comparatorului pentru a nu-l distruge . Astfel R12,R13,R14 au rolul de a limita curentul prin diodele D14 si D15 la o valoare de 20 mA in momentul cand tensiunea de la retea atinge valorile maxime pe ambele alternante U= Idmax: (R12+R13+R14) de unde rezulta valoarea Rserie de 700KΩ iar pe intrarea comparatorului vom avea indiferent de alternanta maxim 0.6V. diodele D14 si D15 au fost montate invers una fata de cealalta tocmai pentru ca tensiunea de intrare pe comparator sa nu depinda de alternanta retelei. Sau ales trei rezistori in serie pentru a evita strapungerea acestora datorata supratensiunii si de a evita incalzirea acestora. Rezultatul compararii este trimis prin intermediul Q3 optocuplorului U8 care va asigura izolarea galvanica intre blocul de sincronizare si microcontroler. Tranzistorul Q3 este un tranzistor de tip PNP si lucreaza in regimul blocat saturat si astfel cand alternanta este pozitiva si deci iesirea comparatorului este + 12V Q3 este blocat iar emitatorul de lumina din interiorul optocuplorului este oprit, iar cand avem alternanta negativa iesirea comparatorului va avea valoarea zero iar Q3 va fii saturat alimentand astfel dioda emitatoare din interiorul optocuplorului. Se observa astfel ca la schimbarea de alternante se schimba si starea diodei emitatoare din interiorul optocuplorului si deci starea fototranzistorului care va trece din blocat in saturat si invers, saturarea va determina blocarea si saturarea tranzistorului Q4 si astfel microcontrolerul va primi intreruperi ce vor semnaliza trecerile prin zero a retelei.
Blocul de comanda transformator incalzire heater si filtru EMI este realizat cu componentele din figura 4. Se observa cum prin intermediul Q2 microcontrolerul trimite comenzi catre ledul emitator al optocuplorului, care va asigura izolarea galvanica intre microcontroler si comanda efectiva a triacului, iar saturarea fototranzistorului va determina saturarea tranzistorului Q1 si deci deschiderea triacului X1.
Fig.4 Blocul de comanda transformator incalzire heater
Triacul odata deschis va ramane in aceasta stare pana la trecerea prin zero cand triacul se va bloca. Pentru deschiderea rapida a triacului s-a ales un curent mai mare de circa 100mA, iar pentru a nu afecta consumul energetic si a nu arde grila triacului, tensiunea de comanda vine in 4 impulsuri de cate 30μs, ,rezultand un consum mediu de 2,2mA.
VCC = VR3 + VG => VR3 = VCC - VG =>
VR3 = IG ∙ R3 =>
Fig.5 Blocul de comanda transformator incalzire heater
In figura 5 este prezentata si modul in care prin comanda de deschidere a triacului este comandat heaterul si totodata modul in care prin intermediul puntii redresoare realizate cu diodele D4,D5,D6,D7, filtrajul realizat cu ajutorul C8,C9 si circuitul de polarizare al ledului este evidentiat modul de incalzire al heaterului.
Proiectarea unitatii centrale
Dupa cum am mentionat si-n descrierea schemei bloc a microsistemului unitatea centrala este izolata galvanic fata de unitatea de comanda singurele elemente comune intre cele doua module fiind optocuploarele.
Sursa de alimentare este prezentata in figura 6 si este realizata cu ajutorul unui transformator incapsulat care are rolul de a realiza separare galvanica intre retea si alimentarea unitatii centrale si de a reduce tensiunea retelei la o valoare convenabila pentru obtinerea tensiunii de alimentare a unitatii centrale.
Fig.6 Blocul de alimentare unitate centrala
Partea de redresare este construita cu ajutorul a patru diode 1N4007 iar C11 si C12 filtreaza tensiunea obtinuta si anume 12Vcc cu posibilitatea de a furniza un curent de maxim 1A. Deoarece curentul maxim absorbit de unitatea centrala nu depaseste valoarea de 0,4A am optat pentru un stabilizator liniar serie de tipul LM78S05 ce poate furniza un curent maxim de 2A deci acoperitor pentru functionarea corecta a montajului iar puterea maxima disipata va fi 2,8W deci nu este nevoie de radiator sau daca il vom pune va fi unul cu o suprafata mica pana in 2cm patrati. Pentru filtrarea tensiunii obtinute de la stabilizatorul de 5Vcc s-au folosit C13,C14 si C15 iar functionarea corecta va fii semnalizata prin aprinderea ledului verde.
Senzorul de temperatura este realizat cu ajutorul circuitului specializat AD7414 si prezentat in figura 7 acest senzor pentru o functionare corecta are nevoie de o alimentare foarte bine filtrata acest lucru fiind realizat cu ajutorul C1 si C2. Cu ajutorul rezistorului R1 este stabilita adresa la care raspunde circuitul cand este adresat pentru a comunica cu microcontrolerul.
Fig.7 Blocul senzor de temperatura
Acest senzor are o rezolutie pentru conversia analog digitala a temperaturii de 10biti, o rezolutie de masurare a temperaturii de 0.25 grade, o durata de conversie de 29µs pentru fiecare masurare, o gama de masura intre -55si +125 grade celsius cu o tensiune de alimentare cu valori cuprinse intre 2.8-5.5Vcc si un curent absorbit de maxim 2mA.
Blocul de afisare si tastatura acest bloc are rolul de a afisa informatii furnizate de microcontrolerului si de a trimite comenzile primite de la tastatura cu 5 taste independente conectate ca-n figura 8. Afisajul are o configuratie de 2x16 caractere si pentru a putea comunica cu microcontrolerul are nevoie de 8 linii de date, 4 linii de comenzi si o comanda de
Fig.8 Blocul afisare si tastatura
iluminare fundal iluminare ce este realizata cu o matrice de leduri comandate prin intermediul lui Q5 tranzistor care amplifica in curent semnalul provenit de la microcontroler asigurand curentu necesar deschiderii ledurilor. Cele 5 taste sunt conectate la microcontroler prin intermediul a 5 linii de port paralel si polarizate cu ajutorul rezistorilor R3,R4,R5,R6 si care sunt cu celalalt capat la Vcc al modulului.
Memoria eeprom AT24C64 este o memorie cu scriere / stergere electrica, seriala, de 65536 biti. Acesta este organizata in 8192 cuvinte a cate 8 biti fiecare rezultand o capacitate de 8Kx8. Optiunea de cascadare permite conectarea a cel mult 8 circuite pe acelasi bus I2C. Dispozitivul este optimizat pentru foarte multe aplicatii industriale sau comerciale unde sunt esentiale lucrul la tensiuni joase, medii zgomotoase si un consum mic. Circuitul este organizat intr-o capsula cu 8pini de tip DIP, SO si SOT prezentati in figura9
Figura 9 Memoria de tip eeprom serial 24C64
Descrierea pinilor
Tactul Serial (SCL): Este utilizat astfel: pe frontul pozitiv se scriu date in memorie, iar pe frontul negativ se citesc datele din EEPROM.
Date seriale (SDA): Pinul SDA este bidirectional, fiind folosit atat pentru datele de intrare, cat si pentru cele de iesire. Este de tipul "open-drain".
Pinii de adresa (A2, A1, A0): Acesti pini sunt utilizati pentru a stabili adresa de baza a circuitului. Ei pot fi conectati sau lasati liber pentru compatibilitate cu circuitul AT24C16. Atunci cand sunt conectati se pot utiliza cel mult 8 circuite a cate 64K pe o singura magistrala. Daca sunt lasati liberi sunt interpretati ca 0 logic.
Protectia la scriere (WP): Daca pinul de intrare WP este legat la masa se permite citirea si scrierea normala a circuitului. Atunci cand WP este conectat la VCC este interzisa scriere in sfertul superior (16K). Lasat liber, acest pin este conectat intern la masa. Structura interna a memoriei este prezentata in figura10
Figura 10 Memoria de tip eeprom serial 24C64 Structura interna
Organizarea memoriei
AT24C64 este organizata intern in 256 de pagini a cate 32 de octeti fiecare. Cuvantul pentru accesul aleator necesita 12/13 biti de adresa.
Tranzitiile pe intrarile de ceas si date: Pinul SDA trebuie legat la VCC prin intermediul unei rezistor pentru a asigura starea inactiva de 1 logic pe durata neexistentei datelor pe magistrala. Datele de pe acest pin se pot modifica doar pe durata palierului de 0 al linie SCL. Schimbarea datelor pe palierul de 1 al ceasului sunt folosite drept conditii de start sau de stop.
Comunicatia seriala este realizata cu ajutorul circuitului specializat MAX232 si a circuitelor aferente lui a caror conectare este aratata in figura 11
Fig.11Schema electrica Comunicatie RS232
Acest circuit permite translatarea semnalelor digitale in semnale diferentiale pentru 2 canale de comunicatie seriala. Acest convertor serial prezinta, in interiorul lor, niste convertoare de tensiune +5V - +9V si +5V - - 9V pe baza unor oscilatoare interne si a energiei stocate in condensatoarele ce sa adauga in jurul circuitului integrat.
Comunicatia seriala I2C, SPI Intrucat s-a constatat ca in electronica tot mai multi senzori comunica cu unitatile de decizie si control prin comunicatii seriale rezistente la perturbatii electromagnetice de tipul I2C sau SPI. Am adoptat in acest proiect ambele tipuri de comunicatii, liniile respective avand circuite de protectie la aparitia semnalelor perturbatoare sau la descarcari electrostatice. Linia de comunicatie I2C, nefiind linie standard a microcontrolerului, a fost emulata prin constructia unui protocol software. Pentru comunicatia SPI s-a utilizat interfata SPI standard a microcontrolerului prezentata in figura 12
Fig.13 Blocul comunicatie I2C sau SPI
Semnalele provenite de la un dispozitiv cu comunicatie I2C sau SPI sunt aduse la unitatea centrala pe liniile de port PB0 . PB3 prin intermediul rezistentelor R39, R41, R43, R45 care au rolul de a proteja liniile de port ale unitatii centrale cat si liniile de comunicatie ale dispozitivului conectat la alimentarea acestora cu tensiuni diferite. Circuitul de tip DALC208SC6 impreuna cu condensatoarele C31 si C32 au rolul de a proteja aceste linii de comunicatie la aparitia unor semnale parazite sau descarcari electrostatice ce prezinta valori ale tensiunilor mult mai mari decat valorile maxime a tensiunilor suportate de cele doua dispozitive.
Rezistentele R38, R40, R42 si R44 au rolul de a mentine liniile de port ale microcontroler-ului mai sus mentionate intr-o stare de 1 logic atunci cand un dispozitiv nu este conectat pe magistrala sau in lipsa comunicatiei.
Unitatea centrala este realizata in jurul microcontrolerului din familia AVR si anume ATMEGA128 prezentat in figura 14 care are urmatoarele caracteristici:
- este un microcontroler pe 8 biti de inalta performanta, cu consum redus de energie;
- prezinta arhitectura avansata de tip RISC;
- proceseaza 133 instructiuni - pentru cel mult un singur ciclu masina;
- are ca informatii generale 256 de registri de lucru + registri periferici;
- executa operatii cu desavarsire statice;
- poate procesa mai mult de 16 MIPS, conectat direct la frecventa oscilatorului de 16 MHz ;
- detine un multiplicator implementat hardware, ce executa operatia de inmultire doi cicli masina;
- are o memorie Flash reprogramabila intern de 128 biti;
- contine o zona de memorie boot-abila ce se poate configura software;
- are o memorie EEPROM de 4 Kocteti;
- detine o memorie interna SRAM de 4 Kocteti;
- are un spatiu de memorie externa optionala mai mare de 64 Kocteti;
- prezinta o configurare software de protejare a soft-ului intern;
- are o interfata de programare SPI - in sistem programare;
- are o interfata JTAG;
- caracteristici ale perifericelor:
- contine 2 numaratoare / temporizatoare pe 8 biti cu prescalare separata si mod de comparare;
- contine 2 numaratoare / temporizatoare extinse pe 16 biti cu prescalare separata, prezinta mod de comparare si de captura;
- are un numarator in timp real cu oscilator separat;
- are 2 canale PWM pe 8 biti;
- are 6 canale PWM cu rezolutie programabila de la 2 la 16 biti;
- contine un modulator pentru semnalul de iesire al comparatorului;
- are un convertor analog digital ( ADC) pe 10 biti:
- cu 8 canale independente;
- cu 7 canale diferentiale;
- cu 2 canale diferentiale cu castig variabil la 1x 10x sau x200;
- are o interfata seriala pe doua fire de tip I2C;
- are 2 interfete seriale programabile USART;
- are o interfata seriala CAN;
- mai are o interfata seriala SPI master / slave;
- are inclus un circuit Watchdog cu oscilator intern;
- are un comparator analog intern;
- caracteristici mai semnificative ale microcontrolerului;
- pornire la reset si detectie a scaderii de nivel a tensiunii de alimentare;
- oscilator intern de tip RC;
- surse de intreruperi interne si externe.
Fig.14 Unitate centrala
- 6 moduri de consum redus: inactiv, reducere de zgomot a convertorului analog digital, economic, oprit, standby si standby extins;
- frecventa de ceas este selectabila prin intermediul software-ului;
- intrari / iesiri si capsula:
- are 53 de linii de intrare / iesire programabile;
- are o capsula de tip TQFP cu 64 de pini;
- tensiuni de operare;
- 4,5 - 5,5 V;
- viteza de lucru:
- 0 - 16 MHz;
ATmega128 este un microcontroler cu consum redus pe 8 biti realizat cu o arhitectura avansata de tip RISC. Are capacitatea de executare a mai multor instructiuni intr-un singur ciclu de ceas, ATmega 128 poate realiza cu aproximatie 1 MIPS / MHz, tinandu-se cont la proiectarea sistemului de optimizarea consumului energetic in raport cu viteza de procesare.
Nucleul microcontrolerului AVR il constituie un set bogat de instructiuni alaturi de cei 32 de registri de lucru cu scop general. Toti cei 32 de registri sunt conectati la Unitatea Aritmetica si Logica ( ALU), acest lucru permite accesarea a doi registri independenti intr-o singura instructiune executata intr-un ciclu masina. Arhitectura rezultata este mult mai eficient codata putand realiza viteze de zece ori mai mari decat un microcontroler conventional de tip CISC.
Atmega128 are urmatoarele caracteristici: 128 Kb in sistem de programare rapida alaturi de capacitatea de a citi si scrie simultan, 4 Kb de memorie SRAM, 53 de linii I/O cu scop general, 32 de registri de lucru cu scop general, un numarator in timp real (RTC), patru numaratoare/ temporizatoare cu mod de comparare si PWM, 2 USART-uri, o interfata seriala pe doua fire, 8 canale, un convertor analog-digital pe 10 biti cu intrari diferentiale si castig programabil, numaratorul pentru circuitul Watchdog programabil cu ajutorul oscilatorului intern, un port serial SPI, interfata de test JTAG compatibila cu standardul IEEE -1149.1, de asemenea poate accesa un sistem intern de depanare si programare si are sase moduri de consum redus selectabile prin software. In modul de asteptare este oprita unitatea de calcul, in tot acest timp memoria SRAM, circuitul numarator / temporizator, portul SPI si sistemul de intreruperi vor functiona incontinuu. In modul Power-down este salvat continutul registrului dar este oprit oscilatorul, blocand toate functiile circuitului pana la urmatoarea oprire sau resetare a sistemului. In modul Power-save, ceasul asincron continua sa incarce, permitand utilizatorului sa mentina baza de timp, celelalte dispozitive fiind blocate. In modul de reducere a zgomotului pentru convertorul analog - digital, este oprita unitatea de calcul si toate modulele de intrare-iesire, exceptand numaratorul asincron si convertorul analog-digital, micsorandu-se astfel zgomotul datorat comutarilor convertorului analog-digital. In modul standby este pornit oscilatorul cu cristal rezonator, iar restul componentelor sunt oprite. Toate acestea permit o pornire foarte rapida combinata cu un consum redus de energie.
In modul standby extins oscilatorul principal si numaratorul asincron continua sa functioneze.
La fabricarea microcontrolerului este folosita o tehnologie Atmel ce se bazeaza pe memorii nevolatile de inalta densitate. Componenta interna ISP Flash creeaza posibilitatea ca memoria program sa fie reprogramata direct din interiorul sistemului, prin intermediul interfetei seriale SPI. Aceasta componenta, memoria nevolatila reprogramabila si programul boot-abil intern devin operationale primind comenzi din interiorul microcontrolerului. Programul boot-abil poate folosi orice interfata pentru a descarca programul aplicatie in memoria Flash. Programul software al sectiunii Boot Flash va continua sa incarce atat timp cat sectiunea de aplicatie Flash este deschisa, facilitand operatiunea "citeste in timp ce scrie". Combinand o unitate centrala pe 8 biti de tip RISC cu o memorie Flash autoprogramabila intern intr-un circuit monolitic de tipul ATmega128, firma producatoare lanseaza pe piata un microcontroler complet care furnizeaza solutii eficiente si de inalta flexibilitate pentru multe aplicatii de control.
Atmega128 este compatibil cu o gama larga de programe si sisteme de instrumente complexe incluzand: compilatoare de tip C, macro asambloare, programe de depanare / simulare, emulatoare incluse si kit-uri de evaluare.
Atmega128 este un microcontroler de inalta complexitate, unde numarul locatiilor de intrare / iesire sunt inlocuite de 64 de locatii de intrare / iesire rezervate in setul acestuia de instructiuni.
Descrierea pinilor
- VCC - alimentarea cu energie
- GND - pinul de masa
- Port A (PA7. .PA0) - portul A este un port bidirectional de intrare / iesire pe 8 biti, cu rezistoare interne de polarizare (selectabile pentru fiecare bit in parte). Bufer-ul de iesire al portului A, are caracteristici de conducere pentru o inalta capacitate de generare si patrundere. In acelasi timp, pe pinii portului A exista un potential scazut provenit de la sursa de curent, daca rezistentele de polarizare sunt activate. Pinii portului A sunt de tip tri-state, atat timp cat conditiile de reset devin active, chiar daca ceasul intern este oprit.
- Port B (PB7. .PB0) - portul B este un port bidirectional de intrare / iesire pe 8 biti, cu rezistoare interne de polarizare (selectabile pentru fiecare bit in parte). Bufer-ul de iesire al portului B, are caracteristici de conducere pentru o inalta capacitate de generare si patrundere. In acelasi timp, pe pinii portului B exista un potential scazut provenit de la sursa de curent, daca rezistentele de polarizare sunt activate. Pinii portului B sunt de tip tri-state, atat timp cat conditiile de reset devin active, chiar daca ceasul intern este oprit.
- Port C (PC7. .PC0) - portul C este un port bidirectional de intrare / iesire pe 8 biti, cu rezistoare interne de polarizare (selectabile pentru fiecare bit in parte). Bufer-ul de iesire al portului C, are caracteristici de conducere pentru o inalta capacitate de generare si patrundere. In acelasi timp, pe pinii portului C exista un potential scazut provenit de la sursa de curent, daca rezistentele de polarizare sunt activate. Pinii portului C sunt de tip tri-state, atat timp cat conditiile de reset devin active, chiar daca ceasul intern este oprit.
- Port D (PD7. .PD0) - portul D este un port bidirectional de intrare / iesire pe 8 biti, cu rezistoare interne de polarizare (selectabile pentru fiecare bit in parte). Bufer-ul de iesire al portului D, are caracteristici de conducere pentru o inalta capacitate de generare si patrundere. In acelasi timp, pe pinii portului D exista un potential scazut provenit de la sursa de curent, daca rezistentele de polarizare sunt activate. Pinii portului D sunt de tip tri-state, atat timp cat conditiile de reset devin active, chiar daca ceasul intern este oprit.
- Port E (PE7. .PE0) - portul E este un port bidirectional de intrare / iesire pe 8 biti, cu rezistoare interne de polarizare (selectabile pentru fiecare bit in parte). Bufer-ul de iesire al portului E, are caracteristici de conducere pentru o inalta capacitate de generare si patrundere. In acelasi timp, pe pinii portului E exista un potential scazut provenit de la sursa de curent, daca rezistentele de polarizare sunt activate. Pinii portului E sunt de tip tri-state, atat timp cat conditiile de reset devin active, chiar daca ceasul intern este oprit.
- Port F (PF7. .PF0) - portul F este folosit pentru intrarile analogice ale convertorului analog / digital. Portul F este folosit de asemenea ca port de intrare-iesire, daca convertorul analog / digital nu este folosit. Pinii portului au rezistente interne de polarizare (selectabile pentru fiecare bit in parte). Bufer-ul de iesire al portului F, are caracteristici de conducere pentru o inalta capacitate de generare si patrundere. In acelasi timp, pe pinii portului F exista un potential scazut provenit de la sursa de curent, daca rezistentele de polarizare sunt activate. Pinii portului F sunt de tip tri-state, atat timp cat conditiile de reset devin active, chiar daca ceasul intern este oprit. Daca interfata JTAG este accesata, rezistentele de polarizare ale pinilor PF7 (TDI), PF5 (TMS) si PF4 (TCK), vor fi activate chiar daca se efectueaza reset-ul. Pinul TDO este de tip tri-state, numai daca TAP specifica daca datele de iesire sunt inscrise. Portul F poate servi de asemenea functiunilor interfetei JTAG.
- Port G (PG4. .PG0) - portul G este un port bidirectional de intrare / iesire pe 8 biti, cu rezistoare interne de polarizare (selectabile pentru fiecare bit in parte). Bufer-ul de iesire al portului G, are caracteristici de conducere pentru o inalta capacitate de generare si patrundere. In acelasi timp, pe pinii portului G exista un potential scazut provenit de la sursa de curent, daca rezistentele de polarizare sunt activate. Pinii portului G sunt de tip tri-state, atat timp cat conditiile de reset devin active, chiar daca ceasul intern este oprit. Portul G poate servi de asemenea functiunilor diferitelor caracteristici reprezentative.
- RESET - intrare de reset. Un nivel scazut al potentialului acestui pin, ceva mai mare decat nivelul impulsului minim, va genera un reset, chiar daca ceasul este oprit. Pentru impulsurile mai mici nu se garanteaza ca vor genera reset-ul.
- XTAL1 - intrare pentru oscilatorul amplificatorului inversor si intrare pentru circuitul de reglare a ceasului intern.
- XTAL2 - iesire pentru oscilatorul amplificatorului inversor.
- AVCC - este pinul de alimentare cu curent pentru portul F si convertorul analog-digital. El va fi conectat in exterior la Vcc, chiar daca convertorul analog-digital nu functioneaza. In cazul in care convertorul analog-digital functioneaza, el va fi conectat la Vcc prin intermediul unui filtru trece-jos.
- AREF - pinul semnalului analogic de referinta, pentru convertorul analog-digital.
- PEN - pin ce permite programarea in modul de programare seriala a SPI. Pentru a opri, pe acest pin, durata minima a reset-ului, mecanismul va intra in modul de programare seriala a SPI. Pinul PEN nu va functiona atat timp cat se executa operatii normale.
Descrierea unitatii centrale a microcontrolerului AVR. Functia principala a nucleului unitatii centrale, este acea de a asigura executia corecta a programului. Unitatea centrala trebuie sa fie capabila sa acceseze memoria, sa efectueze calcule, sa controleze perifericele si intreruperile.
Figura 15. Schema bloc a arhitecturii AVR
In aceeasi ordine, pentru a mari performanta si paralelismul, microcontrolerul AVR foloseste o arhitectura de tip Harvard - care separa memoriile si magistralele de programe si date. In memoria program, instructiunile sunt executate alaturi de un singur nivel de conductie. In timp ce o instructiune incepe sa fie rulata, memoria program prestabileste urmatoarea instructiune. Acest concept face ca instructiunile sa fie executate la orice ciclu al masinii. Memoria program este o memorie Flash reprogramabila intern.
Pentru a se asigura un acces rapid, fisierul registru contine 32 x 8 biti cu caracter general, pentru registrii de lucru, cu un timp de acces de un singur ciclu masina. Acest unic ciclu ii permite unitatii de logica aritmetica sa execute operatiile. Caracteristic unitatii de logica aritmetica, intr-un singur ciclu masina doi operanzi sunt scosi din fisierul registru, operatia este executata, iar rezultatul este memorat inapoi in fisierul registru.
Sase registri din cei 32 pot fi utilizati, in timp ce alti trei registri, pe 16 biti, sunt registri tampon de adresare indirecta, pentru spatiul de date adresabil - ceea ce permite o calculare eficienta a adreselor. Unul dintre acesti indicatori de adrese, poate de asemenea sa fie utilizat, in acelasi timp cu un alt indicator de adrese, pentru o cautare avansata in memoria programabila Flash. Pentru aceasta functie auxiliara, avem registrii pe 16 biti X, Y si Z, descrisi mai tarziu in acest capitol.
Unitatea de logica aritmetica, permite efectuarea operatiilor aritmetice si logice intre registri, sau intre o constanta si un registru. Operatiile pentru un singur registru, pot fi de asemenea efectuate in unitatea de logica aritmetica. Dupa o operatie aritmetica, registrul de stare este actualizat, pentru a reflecta informatia despre rezultatul operatiei.
Fluxul de programe este prevazut cu instructiuni de salt conditionat, cu instructiuni de salt neconditionat si cu instructiuni de apel, fiind capabil sa adreseze in mod direct intregul spatiu de adrese. Cele mai multe instructiuni ale AVR, au alocate pentru un singur cuvant pe 16 biti. Oricare adresa a memoriei program contine instructiuni pe 16 sau 32 biti.
Spatiul pentru memoria de program Flash este impartit in doua sectiuni, sectiunea de program boot-abila si sectiunea de aplicatie a programului. Ambele sectiuni au biti dedicati pentru blocarea scrierii si pentru protectie la citire / scriere. Pentru ca instructiunea SPM sa scrie in sectiunea de aplicatii a memoriei Flash, trebuie ca ea sa existe in sectiunea de program boot-abila.
In timpul intreruperilor si a subrutinelor de apel, adresa de intoarcere a programului de temporizare este memorata intr-o stiva. Stiva, este alocata efectiv in memoria SRAM si marimea logica a stivei este limitata numai de marimea totala a memoriei SRAM si de catre spatiul folosit al acesteia. Toate programele utilizate, trebuie sa initializeze indicatorul stivei intr-o rutina de reset (inainte ca subrutinele sau intreruperile sa fie executate). Indicatorul stivei, este accesibil pentru citire si scriere in spatiul de intrare / iesire. Memoria de date SRAM poate sa fie accesata usor, prin cinci moduri de adresare diferite, suportate de arhitectura interna a microcontrolerului AVR.
Spatiul de memorie, in arhitectura microcontrolerului AVR, contine toate hartile pentru memoria liniara si cea regulata.
Modulul flexibil al intreruperilor, detine, registrii de control in spatiul de intrare / iesire, alaturi de un bit suplimentar din registrul de stare, pentru activarea globala a intreruperilor. Toate intreruperile au un vector de intrerupere separat, in tabelul vectorilor de intrerupere. Intreruperile au prioritate, in concordanta cu pozitia vectorilor lor de intrerupere. Cea mai joasa este adresa vectorului de intrerupere, cea mai inalta este prioritatea.
Spatiul de memorie al intrarilor / iesirilor contine 64 de adrese, pe care le poate accesa direct, sau locatiile $20 - $5F din spatiul de date al fisierului registru. In completare, Atmega128 are extins spatiul in memoria SRAM de la $60 la $FF unde numai instructiunile ST / STS / STD si LD / LDS / LDD pot fi folosite.
Unitatea aritmetico-logica
Datorita inaltelor performante ale unitatii de logica aritmetica ale AVR-ului, aceasta actioneaza in directa legatura cu toti cei 32 de registrii de lucru cu scop general. Intr-un singur ciclu masina, operatiile aritmetice intre registrii cu scop general, sau intre un registru si altul sunt executate imediat. Operatiile executate de unitatea de logica aritmetica sunt impartite in trei categorii principale - aritmetice, logice si functii la nivel de bit. Unele implementari ale arhitecturii permit de asemenea o multiplicare puternica ce suporta ambele multiplicari semnate/nesemnate si formatul fractionar.
Registrul de stare
Registrul de stare contine informatii despre rezultatul celor mai recente instructiuni aritmetice executate. Aceasta informatie poate fi folosita pentru a schimba succesiunea fluxului de program ca sa execute conditional operatii. Notand aceasta, registrul de stare este actualizat dupa toate operatiile unitatii de logica aritmetica fiind specificat in setul instructiunilor de referinta. Acestea vor sa inlocuiasca in multe cazuri nevoia de a folosi instructiunile de comparare dedicate, rezultate intr-un cod compact si mai rapid.
Registrul de stare nu este memorat automat in timp ce soseste o rutina de intreruperi, el fiind refacut cand se intoarce dintr-o intrerupere. Acest lucru trebuie sa fie ales prin programare.
Registrul de stare al AVR - SREG este definit astfel:
Bit 7 6 5 4 3 2 1 0
I |
T |
H |
S |
V |
N |
Z |
C |
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Valoare initiala 0 0 0 0 0 0 0 0
- Bitul 7 - I: Activarea globala a intreruperilor
Bit pentru activarea intreruperii globale, el trebuie sa fie setat pentru a se activa intreruperile. Controlul unei intreruperi individuale active este apoi executat in registrii de control separati. Daca registrul de activare a intreruperilor globale este golit, nici una dintre intreruperi nu este activata independent de catre setarile unei intreruperi individuale active. Bitul I este sters prin hardware dupa ce o intrerupere a avut loc, si este setat prin instructiunea RETI pana la intreruperea urmatoare. Bitul I poate de asemenea sa fie setat si sters prin intermediul software-ului cu ajutorul instructiunilor SEI si CLI, ce sunt descrise in setul de instructiuni.
- Bitul 6 - T: Bit de copiere
Instructiunile bitului de copiere BLD (Bit LoaD) si BST (Bit STore) folosesc bitul T ca sursa sau destinatie pentru bitul de operare. Un bit dintr-un registru din fisierul registru poate fi copiat in bitul T prin intermediul instructiunii BST, iar un bit din T poate fi copiat intr-un registru din fisierul registru prin intermediul instructiunii BLD.
- Bitul 5 - H: Indicator de transport a jumatatii
Indicatorul de transport al jumatatii H indica transportul jumatatii la unele operatii aritmetice. Transportul jumatatii este necesar in aritmetica transformarii din binar in zecimal.
- Bitul 4 - S: Bit de semn, S = N + V
Bitul S este un sau exclusiv intre indicatorul de semn negativ N si indicatorul de umplere a ambilor biti V.
- Bitul 3 - V: Semnalizatorul pentru incarcarea ambilor biti
Bitul V ce indica incarcarea ambilor biti suporta ambele completari aritmetice.
- Bitul 2 - N: Indicatorul de semn negativ
Bitul semnalizator de semn negativ N indica rezultatul negativ al unor operatii aritmetice sau logice.
- Bitul 1 - Z: Semnalizatorul de zero
Semnalizatorul de zero indica rezultatul zero al unor operatii aritmetice si logice.
- Bitul 0 - C: Indicatorul de transport
Indicatorul de transport semnalizeaza transportul la unele operatii aritmetice si logice.
Registrul de fisiere cu scop general
Fisierul registru este optimizat cu ajutorul setului avansat de instructiuni pentru AVR de tip RISC. In ordine, pentru a realiza performanta si flexibilitatea ceruta, urmatoarele scheme pentru intrari / iesiri sunt suportate de catre fisierul registru:
- Un operand de iesire pe 8 biti si o intrare pe 8 biti;
- Doi operanzi de iesire pe 8 biti si o intrare pe 8 biti;
- Doi operanzi de iesire pe 8 biti si o iesire pe 16 biti;
- Un operand de iesire pe 16 biti si o intrare pe 16 biti;
In figura 15. este data structura celor 32 de registrii de lucru cu scop general ai unitatii centrale.
Fig.15 Registrii de lucru cu scop general ai unitatii centrale a AVR
0 Addr
R0 | ||
R1 | ||
R2 | ||
R13 |
$0D | |
R14 |
$0E | |
R15 |
$0F | |
R16 | ||
R17 | ||
R26 |
$1A |
X-register Low Byte |
R27 |
$1B |
X-register High Byte |
R28 |
$1C |
Y-register Low Byte |
R29 |
$1D |
Y-register High Byte |
R30 |
$1E |
Z-register Low Byte |
R31 |
$1F |
Z-register High Byte |
Cele mai multe instructiuni care opereaza in fisierul registru au acces direct la toate registrele iar multe dintre ele au instructiuni de un singur ciclu.
Dupa cum este aratat in Figura 2.4. fiecarui registru ii este atribuita de asemenea o adresa in memoria de date, aceste adrese fiind stocate direct in primele 32 de locatii din spatiul de date folosit. Cu toate ca nu este implementata fizic in locatiile memoriei SRAM, aceasta organizare a memoriei permite o mare flexibilitate a accesului la registri, in timp ce in registrii aratatori X, Y si Z poate sa fie setat indexul oricarui registru din fisier.
Registrii X, Y si Z:
Registrii de la R26 - R31 au unele functii suplimentare in cazul folosirii lor cu scop general. Acesti registri au adrese pe 16 biti pentru adresarea indirecta a spatiului de date. Cei trei registri de adresare indirecta sunt descrisi in Figura 16
Fig.16. Registrii X,Y si Z
Registrul X
15 HX XL 0
0 |
0 |
R27 ($1B) R26 ($1A)
Registrul Y
15 YH YL 0
0 |
0 |
R29 ($1D) R28 ($1C)
Registrul Z
15 ZH ZL 0
0 |
R31 ($1F) R30 ($1E)
In functie de diferitele moduri de adresare aceste adrese de registri au functiile de a fixa deplasarea, de incrementare automata si de decrementare automata (vezi setul instructiunilor de referinta pentru detalii).
Indicatorul varfului stivei
Stiva este utilizata in principal pentru a memora date temporare, pentru a memora variabile locale si pentru a memora adresele de intoarcere dupa intreruperi si apelarea subrutinelor. Registrul indicatorului varfului stivei puncteaza intotdeauna inceputul stivei. Notand aceasta stiva este implementata ea crescand de la locatii de memorie inalte la locatii de memorie joase. Implicand aceasta, comanda stivei PUSH va descreste indicatorul stivei.
Indicatorul varfului stivei va indica in spatiul stivei din memoria de date SRAM locul unde sunt localizate stivele pentru subrutine si intreruperi. Acest spatiu al stivei din memoria de date SRAM trebuie sa fie definit de program inainte ca orice apeluri de subrutine sa fie executate sau intreruperile sa fie permise. Indicatorul varfului stivei trebuie sa fie fixat pentru ca sa indice deasupra adresei $60. Indicatorul varfului stivei este decrementat cu unu atunci cand data este asezata in stiva cu ajutorul instructiunii PUSH, si acesta va fi decrementat cu doi atunci cand adresa de intoarcere este asezata in stiva cu ajutorul subrutinei de apel sau intrerupere. Indicatorul stivei este incrementat cu unu atunci cand data pop-ata de catre stiva cu ajutorul instructiunii POP si este incrementata cu doi atunci cand data este pop-ata de catre stiva cu intoarcere pentru subrutine RET, sau intoarcere pentru intrerupere RETI.
Indicatorul varfului stivei al AVR este implementat cu ajutorul a doi registri pe 8 biti in spatiul intrarilor / iesirilor. Numarul de biti folositi in prezent sunt implementati dependent. Notand aceasta spatiul de date in orice implementare a arhitecturii AVR este asa de mic incat numai registrul SPL este necesar. In acest caz, registrul SPH nu va fi prezent.
Bitul 15 14 13 12 11 10 9 8
SP15 |
SP14 |
SP13 |
SP12 |
SP11 |
SP10 |
SP9 |
SP8 |
SP7 |
SP6 |
SP5 |
SP4 |
SP3 |
SP2 |
SP1 |
SP0 |
7 6 5 4 3 2 1 0
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
R/W R/W R/W R/W R/W R/W R/W R/W
Valoare 0 0 0 0 0 0 0 0
Initiala 0 0 0 0 0 0 0 0
Bitul 7 6 5 4 3 2 1 0
RAMPZ0 |
Read/Write R R R R R R R R/W
Valoare 0 0 0 0 0 0 0 0
Initiala
-Bitii 7 ..2 -Res: biti rezervati
Acestia sunt biti rezervati si vor avea valoarea zero in timp ce vor fi cititi in totalitate. Cand se va scrie la aceasta locatie de adresa, acesti biti vor fi scrisi tot zero pentru a fi compatibili cu devizele viitoare.
-Bitul 1-RAMPZ0: Indicatorul Z pentru extinderea paginii RAM
Registrul RAMPZ este folosit in mod normal pentru a selecta 64 K de pagina RAM care este accesata de catre indicatorul Z. Deoarece ATmega128 nu poate suporta mai mult de 64K din memoria SRAM, acest registru este folosit numai pentru a selecta pagina care in memoria program este accesata atunci cand instructiunea ELPM/SPM este folosita. Diferitele setari ale bitului RAMPZ0 produce urmatoarele efecte:
RAMPZ0 = 0: Adresa memoriei program $0000 - $7FFF (cei mai scazuti biti din cei 64K ) este accesata de catre instructiunea ELPM / SPM
RAMPZ0 = 1: Adresa memoriei program $8000 - $FFFF (cei mai semnificativi biti din cei 64K ) este accesata de catre instructiunea ELPM / SPM
De retinut ca LPM nu este afectat de catre setarile RAMPZ.
Sincronizarea executarii instructiunilor
In aceasta parte a lucrarii este descris conceptul de sincronizare a accesului in general pentru executarea instructiunii. Unitatea centrala a AVR este condusa cu ajutorul ceasului intern, generat direct dupa selectarea sursei de ceas de catre cip. Nu sunt folosite divizari interne ale ceasului.
In figura 17 este aratat, in paralel, cum sunt validate instructiunile de start si de executie de catre arhitectura de tip Harvard si de catre conceptul de acces rapid al fisierului registru. Acesta este baza conceptului de transport a informatiilor pentru a obtine mai mult de 1 MIPS / MHz, alaturi de rezultatele similare unice ale functionarii raportate la cost, timpi de ceas si unitate de putere.
Fig. 17Compararea instructiunilor de start si de executare
In figura 18. este prezentat conceptul sincronizarii interne pentru fisierul registru. La un singur ciclu masina o operatiune a unitatii de logica aritmetica foloseste doi registri, operatiile sunt executate, iar rezultatul este stocat inapoi in registrul destinatie.
Fig.18. Operatii ale unitatii de logica aritmetica de un singur ciclu masina
Proiectarea cablajului electronic
Proiectarea schemei electronice a fost realizata cu ajutorul programului ORCAD 10.5 si a presupus parcurgerea mai multor etape:
Crearea de librarii in Schematic pentru componentele inexistente in librariile programului de proiectare asistata
Crearea de footprinturi pentru circuitele specializate in Layot library manager respectand specificatiile date de data sheet-uri
Realizarea schematicului prin plasarea componentelor intr-o ordine cat mai elocventa pentru a simboliza modul de functionare a microsistemului
Proiectarea efectiva a cablajului tinand cont de dimensiunile PCB-ului si plasarea footprinturilor intr-o maniera sugestiva pentru destinatia proiectului.
Tinand cont de cele enumerate mai sus au rezultat fisierele gerber dupa care am realizat cablajul ele fiind prezentate in figurile urmatoare. Cablajul care a reyultat este un cablaj de tip FR4 textolit cu grosimea stratului de cupru de 35µm cu dubla fata top si botom componentele fiind motate pe fata TOP.
Schema electrica modul comanda heater
Schema electrica modul unitate centrala
Schema electrica modul afisaj si tastatura
Schema electrica modul senzor temperatura
Cablaj electronic vedere TOP microsistem
Cablaj electronic vedere BOTOM in oglinda microsistem
Cablaj electronic plasare componente SST microsistem
Cablaj electronic valori componente AST microsistem
Cablaj electronic vedere TOP Afisaj si Tastatura
Cablaj electronic vedere BOTOM oglinda Afisaj si Tastatura
Cablaj electronic plasare componente SST Afisaj si Tastatura
Cablaj electronic valori componente AST Afisaj si Tastatura
Cablaj electronic vedere TOP Senzor temperatura
Cablaj electronic Plasare componente Senzor temperatura
Cablaj electronic Valori componente Senzor temperatura
Copyright © 2024 - Toate drepturile rezervate