lucrare de disertaŢie contor inteligent de energie...

40
Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor LUCRARE DE DISERTAŢIE Contor Inteligent de Energie Electrică Coordonator: Conf. Dr. Ing. Cătălin Petrescu Absolvent: Jitaru Bogdan-Nicolae Bucureşti, 2013

Upload: others

Post on 18-Sep-2019

10 views

Category:

Documents


0 download

TRANSCRIPT

Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare

Departamentul de Automatică şi Ingineria Sistemelor

LUCRARE DE DISERTAŢIE

Contor Inteligent de Energie Electrică

Coordonator: Conf. Dr. Ing. Cătălin Petrescu

Absolvent: Jitaru Bogdan-Nicolae

Bucureşti, 2013

2

Cuprins

Introducere ........................................................................................................................................ 3 Capitolul 1. CONSIDERAŢII TEORETICE[1][2] .......................................................................................... 4 Capitolul 2. REALIZAREA PRACTICĂ A MONTAJULUI...........................................................................15 Capitolul 3. IMPLEMENTARE SOFTWARE ...........................................................................................25 Concluzii ...........................................................................................................................................37 Anexe ...............................................................................................................................................38 Bibliografie .......................................................................................................................................40

3

Introducere

Lucrarea de faţă are ca scop principal descrierea unui sistem de achiziţie pentru

măsurarea energiei electrice consumate individual de către aparatele dintr-o locuinţă. Un astfel de dispozitiv se poate dovedi util atunci când se doreşte monitorizarea/

verificarea consumului unuia sau mai multor aparate în scopuri pur statistice sau de planificare. De asemenea, poate fi util în depistarea eventualelor defecţiuni apărute, cum ar fi scurtcircuitele. În acest caz, curentul consumat este foarte mare şi, implicit energia va avea valori mari.

Lucrarea este structurată în aşa fel încât să evidenţieze caracteristicile şi posibilităţile de

măsurare a energiei electrice consumate de către aparatul electric şi modalitatea de prelucrare, stocare şi accesare a datelor măsurate.

De asemenea, a fost creată şi o aplicaţie practică pentru ilustrarea funcţională a acestei

abordări. În ultimile dou[ capitole al acestei documentaţii este prezentată din punct de vedere hardware şi software această aplicaţie.

Dispozitivul a fost proiectat să fie usor de manipulat şi în condiţii de siguranţă. Nu este

nevoie de sursă de alimentare adiţională, montajul dispunând de sursă proprie de alimentare de 3.3V. Modul de utilizare este foarte simplu. Practic întreg ansamblul este intercalat între priză şi aparatul a cărui energie se doreşte a fi monitorizată. Atunci când utilizatorul doreşte să afle datele înregistrate nu trebuie decât să conecteze dispozitivul la PC prin intermediul unui cablu serial, iar datele din memoria EEPROM vor fi descărcate folosind Hyperterminalul din cadrul sistemului de operare Windows.

Pentru implementare a fost utilizat un microcontroller din familia PIC de la Microchip

care dispune de un convertor analog-digital pe 12 biţi, ceea ce conferă o precizie suficient de bună în determinarea valorilor curentului consumat şi a tensiunii de alimentare.

Prin intermediul prezentului document aş dori să-i adresez sincerele mele mulţumiri domnului Conf. Dr. Ing. Cătălin Petrescu, al cărui sprijin a fost esenţial în realizarea lucrării de faţă.

4

Capitolul 1. CONSIDERAŢII TEORETICE[1][2]

1.1 Senzori pentru curentul electric[1]

Măsurarea curentului electric este frecvent întâlnită în aparatura electronică din domeniul ştiinţific şi ingineresc, într-o mare varietate de aplicaţii, cum ar fi detectarea radiaţiei electromagnetice, încărcarea acumulatorilor, sau, în cazul de faţă, determinarea energiei electrice consumate de un aparat electrocasnic. Domeniul valorilor măsurate poate varia între picoamperi (10-12 A) şi mii de amperi. Pentru a folosi într-un mod adecvat şi eficient un senzor de curent, este nevoie de înţelegerea tehnologiei acestuia şi a aplicaţiei pentru care este folosit.

Mai jos vor fi prezentate 4 metode de măsurare a curentului electric, printre care se

numără şi sesizarea rezistivă a curentului, metoda folosită în aplicaţia de faţă. Cuerentul electric este o mişcare ordonată de sarcini electrice, de obicei electroni,

sarcini negative, dar şi sarcini pozitive, cum ar fi golurile în semiconductori şi ionii în substanţele electrolitice. Unitatea de măsură a curentului electric este amperul (A), ce reprezintă 6x1018 sarcini elementare (electroni ce au sarcina e = 1.6 x 10-19 C ) traversând o secţiune dată prin coductor într-o secundă.

Curentul se poate măsura în principiu prin intermediul a 2 efecte: căderea rezistivă de

tensiune, respectiv câmpul magnetic generat (Fig. 1.1) . Curentul care trece printr-un conductor generează un câmp magnetic în jurul

conductorului şi o diferenţă de potenţial între capetele lui.

Fig.1.1 – Câmpul magnetic generat şi căderea rezistivă de tensiune

Trecând curent printr-o substanţă, apare o diferenţă de potenţial care pentru majoritatea

materialelor este proporţională cu curentul (legea lui Ohm). Măsurând această tensiune se poate determina curentul. Acesta este principiul de sesizare rezistivă a curentului electric.

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

5

Mişcarea sarcinilor electrice generează un câmp magnetic orientat perpendicular pe direcţia mişcării. Curentul electric se poate determina măsurând câmpul magnetic. Avantajul acestei metode este izolarea galvanică.

Sesizarea rezistivă a curentului electric

Problema tehnică a realizării unor rezistori foarte stabili şi liniari este rezolvată de multă

vreme, iar sesizarea rezistivă a curentului este bine ştiută şi înţeleasă. Se pune rezistorul de sesizare în serie cu circuitul al cărui curent trebuie măsurat şi se măsoară căderea de tensiune de la capetele rezistorului. Curentul se determină din legea lui Ohm:

퐼 = ,

unde: I = curentul, [I]SI = A (Amper) U = tensiunea electrică, [U]SI = V (Volt) R = rezistenţa electrică, [R]SI = Ω (Ohm)

Deşi corectă din punct de vedere fundamental, motoda simplă expusă ignoră detalii necesare la aplicarea practică. Aplicaţiile concrete au diverse cerinţe privind preluarea şi afişarea rezultatului măsurării, iar comportamentul neideal al componentelor va complica proiectarea unui senzor rezistiv de curent bun. Măsurarea tensiunii se poate face flotant sau faţă de pământ (masă).

Pentru măsurarea flotantă (Fig.1.2a) se foloseşte un amplificator diferenţial ce va

măsura diferenţa de potenţial dintre capetele rezistorului şi va furniza la ieşire o tensiune faţă de masă proporţională cu intrarea. La măsurarea faţă de masă, un capăt al rezistorului de măsurare este legat direct la masă. Aici trebuie ţinut cont de faptul că pe conductoarele de masă pot apărea căderi de tensiuni importante la curenţi mari (Fig.1.2c).

Fig.1.2 – Sesizarea curentului în configuraţie flotantă (A); sesizarea curentului faţă de masă (B)

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

6

Ambele scheme de sesizare prezintă unele dificultăţi.

Căderea de tensiune pe rezistorul de sesizare influenţează funcţionarea circuitului în care este inserat. Din această cauză se face un compromis între tensiunea necesară pentru o măsurare precisă şi căderea de tensiune tolerată de aplicaţie.

Puterea disipată. Curentul ce trece prin rezistor va genera pe lângă căderea de tensiune

şi căldură în unitatea de timp (P = I2R). Dacă puterea ce trebuie disipată se apropie de puterea maximă recomandată pentru rezistor, este necesară montarea acestuia pe un radiator de căldură. Altfel, temperatura ridicată la care va lucra îi va scurta mult timpul de viaţă.

Rezistenţa parazită serie. Rezistenţa electrică a terminalelor rezistorului de valoare

mică (<1Ω) poate prezenta un procentaj bun (1% sau mai mult) din valoarea de bază a acestuia. Soluţia constă în folosirea a 4 terminale (Fig.1.3), 2 de curent şi 2 pentru măsurarea tensiunii. Metoda este cunoscută ca tehnica de măsurare cu 4 fire, sau tehnica Kelvin.

Fig.1.3 – Tehnica Kelvin de măsurare cu 4 fire

Rezistenţa parazită şunt (paralelă). Scurgerile de curent din jurul rezistorilor de valoare

mare (>1M Ω) au impact asupra preciziei dispozitivului. Acestea se pot datora reziduurilor de decapant, urmelor de degete sau altor contaminanţi care deşi nu sunt conductori, pot deveni astfel prin absorţie de umezeală. Problema se rezolvă menţinând circuitul şi componentele cât mai curate.

Efectele autoîncălzirii. Rezistenţa electrică depinde uşor de temperatură, schimbarea temperaturii mediului şi suplimentar încălzirea datorată trecerii curentului electric vor avea ca efect devierea de la legea lui Ohm, a dependenţei liniare a tensiunii de curent. Deoarece schimbările de temperatură nu sunt instantanee, neliniarizarea rezultată este dificil de compensat electronic. Este necesar un sistem de disipare termică eficient, care să limiteze variaţiile de temperatură ale rezistorului.

Efectele dinamice. Componentele parazite ale unui rezistor real sunt rezistive, capacitive

şi inductive. Inductanţa parazită apare în serie cu rezistenţa de bază, iar capacitatea parazită şuntează rezistorul (în paralel, Fig.1.4a). Ele pot fi neglijate în curent continuu sau la frecvenţe joase, dar afectează serios performaţa senzorului la frecvenţe mari. Rezistorii de valoare mică sunt dominaţi de efectul inductiv, iar cei de valoare mare de efectul capacitiv. Componentele parazite fac impedanţa rezistorului dependentă de frecvenţă, modificând

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

7

funcţia de transfer U-I a dipolului (Fig.1.4b). Anumite efecte parazite nu pot fi ocolite, minimizarea lor ţinând de subtilităţile constructive ale rezistorului. Rezistoarele bobinate şi cele din filme subţiri pot avea inductanţă apreciabilă dacă nu sunt corect proiectate. Sârma trebuie bobinată neinductiv, adică cu două fire în paralel, iar pentru rezistorii din filme subţiri este nevoie de două canale în paralel, săpate în corpul cilindric.

Fig.1.4 – Elementele parazite ale rezistorului;dependenţa valorii rezistorului de frecvenţă

Sesizarea magnetică a curentului electric

Curentul poate fi sesizat prin intermediul câmpului magnetic pe care îl generează. Avantajul principal al metodei constă în lipsa conexiunii electrice directe între circuitul de măsură şi circuitul măsurat. Această izolare este foarte importantă acolo unde siguranţa şi măsurile de protecţie a muncii sunt stringente, cum este cazul circuitelor de înaltă tensiune. Câmpul magnetic din jurul unui conductor liniar este:

퐵 = ,

unde: I = curentul (A); r = distanţa de la centrul conductorului (m); µo= permeabilitatea magnetică în aer; B = inducţia câmpului magnetic (Tesla).

Teoretic, plasând un senzor magnetic la o distanţă cunoscută de conductor, putem măsura curentul prin el. Precizia măsurătorii are o dependenţă foarte mare de distanţa senzor-conductor, iar câmpul magnetic generat de curenţii moderaţi este mic (1A generează la 1cm doar 0,4Gs, cam cât este câmpul magnetic terestru). Totuşi metoda este bună pentru cazul

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

8

particular al măsurării curentului prin traseele de pe cablajele imprimate (Fig.1.5) folosind senzori cu magnetorezistenţă gigant (GMR).

Fig.1.5 – Senzor GMR

Curentul prin traseul de cupru va genera un câmp magnetic paralel cu suprafaţa sa şi perpendicular pe direcţia de curgere. Senzorul GMR este foarte sensibil la câmpuri magnetice mici cu această orientare. Fiindcă distanţa dintre senzor şi conductor este mică (<1mm) şi precis constantă, această metodă simplă este eficientă.

Un bun senzor magnetic pentru curent se obţine concentrând câmpul magnetic în zona

traductorului (Fig.1.6) prin intermediul unui tor din material cu permeabilitate magnetică mare (mr >>1) folosit pentru concentrarea fluxului. Senzorul de câmp magnetic este de obicei un dispozitiv Hall plasat în întrefierul torului. Acest sistem se numeşte senzor în buclă deschisă.

Fig.1.6 – Senzor Hall plasat în intrefierul torului

Senzorul cu concentrator de flux are câteva avantaje faţă de cel fără. În primul rând, el

devine independent de poziţia conductorului din interiorul torului, iar în al doilea rând creşte câmpul din zona senzorului. Sensibilitatea depinde invers proporţional de mărimea întrefierului. Pentru un întrefier de 1,5mm sensibilitatea este de circa 6-8 Gauss/Amper, depinzând de materialul şi geometria torului.

Cu senzorul de curent toroidal se poate creşte sensibilitatea de atâtea ori câte spire sunt

(de câte ori conductorul trece prin tor). Bobinajul trebuie să fie uniform pentru a nu apărea efecte nedorite.

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

9

Problemele ce pot apărea la folosirea unui concentrator de flux sunt legate de comportamentul neideal al materialului cu permabilitate magnetică mare (Fig.1.7). Prima este cea a saturării magnetice. Crescând curentul prin conductor, se ajunge la un punct de la care creşterea câmpului magnetic nu mai este proportională cu cea a curentului. La majoritatea materialelor tranziţia de la proporţionalitate la saturaţie nu este bruscă, ci graduală. Pentru o precizie bună se limitează domeniul de lucru al câmpului din tor. Alt comportament neideal al concentratorului de flux este cel legat de histerezis, efectul de memorie. Când câmpul magnetic cu o anumită direcţie este adus la zero, materialul magnetic mai reţine o mică parte din câmp (numit flux remanent) pe direcţia iniţială a acestuia. La oţelurile dure acesta poate fi de sute de Gauss, iar la feritele moi doar de fracţiuni de Gauss. Efectul asupra senzorului de curent va fi cel de deplasare a punctului de curent zero. Soluţia este folosirea materialelor magnetice potrivite de genul feritelor moi cu histerezis mic.

Fig.1.7 – Efectele neliniare ale concentratorului de flux: histerezisul materialului magnetic

al torului şi saturarea

Senzori de curent în buclă închisă

O metodă de evitare a comportării neliniare a concentratorului de flux şi a senzorului magnetic este de a compensa curentul măsurat cu un curent cunoscut (Fig.1.8).

Un amplificator operaţional injectează curent prin bucla de reacţie (rezistorul şi bobina de compensare) pentru a aduce la zero tensiunea Hall şi implicit fluxul. Tensiunea de ieşire a operaţionalului este proporţională cu curentul măsurat. Folosind bobine de compensare cu multe spire devine posibilă compensarea efectului curentului mare de măsurat cu un curent de compensare mult mai mic. Rapoarte de peste 1000:1 între numărul spirelor din bobina compensatoare şi numărul spirelor din conductorul de măsurat fac posibilă măsurarea curenţilor de sute de amperi folosind curenţi de compensare de zeci de mA. Fiindcă fluxul magnetic prin tor este aproape zero, răspunsul senzorului de curent nu va fi afectat de saturaţia magnetică şi de materialul torului în general, ci doar de cât curent de compensare poate da circuitul de reacţie.

Datorită folosirii reacţiei în funcţionarea acestui senzor de curent, el este cunoscut ca senzor magnetic de curent în buclă închisă.

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

10

Fig.1.8 – Compensarea curentului de măsurat cu un curent cunoscut

Transformatorul de curent

Transformatorul de curent este o soluţie simplă de măsurare izolată galvanic în cazul particular, dar des întâlnit, al curentului alternativ pur sinusoidal. La fel ca senzorii de curent magnetici, acesta este construit de obicei pe un tor din material feromagnetic. Transformatorul de curent funcţionează ca orice transformator, curenţii din înfăşurările primar şi secundar fiind daţi de relaţia:

i S NS = i P NP ,

unde: iP = curentul din primar; iS = curentul din secundar; NP = numărul de spire din primar; NS = numărul de spire din secundar.

Curentul din primar induce în secundar un curent care este transformat de rezistenţa de sarcină RL într-o tensiune. În aplicaţiile tipice ale transformatorului de curent, secundarul are mai multe spire decât primarul, care de obicei are o singură spiră. Astfel curentul din secundar are valori substanţial mai mici şi mai usor de măsurat decât cele din primar.

Un transformator de curent ideal nu apare ca o sarcină inductivă, aşa cum apare senzorul de curent cu efect Hall, ci ca un rezistor în serie cu înfăşurarea primară. Valoarea acestui rezistor este dată de relaţia:

푅 = 푅 ( )

Rezistenţa parazită produce în circuitul primar o cădere de tensiune la fel ca o rezistenţă reală de aceaşi valoare, în serie cu primarul.

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

11

Comportarea neideală a transformatorului de curent necesită câteva precizări. În măsurătorile de curenţi la frecvenţe joase până la moderate (<10 kHz) contează cuplajul mutual şi reactanţa secundarului. Cuplajul mutual reprezintă gradul în care fluxul generat de primar trece prin secundar şi invers. Un transformator eficient are un cuplaj mutual mare. Miezurile toroidale şi cele tip E favorizează cuplajul mare.

Reactanţa secundarului este necesar să fie, la frecvenţele de interes, semnificativ mai mare decât rezistenţa sa totală (XLS > 10 RS) pentru a avea în secundar un curent care să reflecte cu precizie curentul primar. Reactanţa se poate calcula cu formula:

푍 = ,

unde: f = frecvenţa de lucru (Hz): N = numărul de spire; AL = inductanţa caracteristică (mH/1000 spire ) ZR = reactanţa inductivă (Ω).

1.2 Puteri electrice în regim sinusoidal[2]

Într-un circuit de curent continuu există un singur tip de putere, şi anume puterea cedată către consumator. Această putere se calculează cu ajutorul relaţiei: 푃 = 푈 ∙ 퐼 , iar unitatea de măsură este Watt-ul (W).

În ceea ce priveşte circuitele de curent alternativ, există mai multe tipuri de puteri.

Aceasta se datorează faptului că cele două mărimi care definesc valoarea puterii, tensiunea şi curentul, sunt variabile în timp şi în caz general sunt defazate.

Considerăm: 푖 = 퐼 ∙ sin(휔푡)

푢 = 푈 ∙ sin(휔푡 + 휑) Tipurile de puteri întâlnite în circuitele de curent alternativ sunt: -puterea activă; - puterea reactivă; - puterea aparentă.

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

12

Puterea activă Pentru a putea defini puterea activă, este necesar să trecem in revistă puterea

instantanee. Aceasta reprezintă produsul valorilor instantanee ale tensiunii generatorului (u) şi curentului absorbit de circuit (i): 푝 = 푢 ∙ 푖

Cum u şi i sunt mărimi variabile în timp, şi puterea instantanee va fi o putere variabilă

în timp. Această putere poate fi pozitivă sau negativă, după cum în momentul considerat u şi i au acelaşi semn sau semne diferite.

Dacă puterea instantanee este pozitivă inseamnă că generatorul debitează efectiv o

putere pe care o absoarbe circuitul alimentat. Deci, dacă p > 0, puterea este transferată consumatorului (sarcinii). Dacă p < 0, atunci puterea instantanee este transferată generatorului de către sarcină (consumator), adică sarcina restituie generatorului energie. Acest caz nu este întalnit în curent continuu deoarece nu conţine elemente capabile să înmagazineze energie electromagnetică.

În curent alternativ se întâlnesc circuite care conţin astfel de elemente, cum ar fi bobina

şi condensatorul. Bobina este un element de circuit care înmagazinează energie electromagnetică sub forma sa magnetică, iar condensatorul sub forma sa electrică. Există momente când puterea instantanee este pozitivă şi o parte din putere (energie în unitate de timp) se pierde pe rezistenţa rezistorului sub formă de căldură prin efect Joule. Restul se acumulează în câmpul magnetic al bobinei şi în câmpul electric al condensatorului.

În momentul când p < 0, energia înmagazinată în câmpul magnetic al bobinei şi în

câmpul electric al condensatorului este restituită generatorului. Puterea activă reprezintă valoarea medie a puterii instantanee pe o perioadă a curentului

alternativ: 푃 = ∫ 푝푑푡 = ∫ 2푈퐼푠푖푛(휔푡 + 훾) sin(휔푡 + 훾 − 휑)푑푡 = 푈퐼푐표푠휑 , unde 푐표푠휑

este factorul de putere. Unitatea de măsură este Watt-ul (W). Fizic, puterea activă (P) reprezintă puterea pe care generatorul o livrează efectiv

sarcinii pentru că este o valoare medie rezultată din puterea instantanee pozitivă şi cea negativă pe durata unei perioade.

Se observă că puterea activă nu depinde doar de de valorile efective ale tensiunii şi

intensităţii curentului electric, ci şi de defazajul dintre cele două mărimi. Dacă defazajul dintre cele două mărimi este nul, atunci puterea activă debitată de generator este maximă, caz ce corespunde circuitului de curent alternativ numai cu rezistori. Dacă între cele două mărimi există un defazaj de 90o, tensiunea şi intensitatea sunt în cuadratură, iar puterea activă este nulă, caz ce corespunde circuitului format numai din bobină şi condensator.

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

13

Puterea reactivă

Puterea reactivă se defineşte ca produsul dintre valoarile efective ale tensiunii, intensităţii şi sinusul unghiului de defazaj dintre valoarea tensiunii instantanee de la bornele circuitului şi valoarea instantanee a curentului din circuit. 푄 = 푈퐼푠푖푛휑, iar unitatea de măsură este VAR (Volt-Amper-Reactiv).

Puterea reactivă este o mărime legată de energia care se acumulează în elementele reactive ale circuitului: bobinele şi condensatorii. În bobina de inductanţă L se acumulează energia reactivă sub formă de energie a câmpului magnetic, iar în condensator sub formă de energie a câmpului electric.

Spre deosebire de puterea activă, care se pierde sub formă de căldură, puterea reactivă

se conservă sub formă de energie a câmpului magnetic sau electric, asociate bobinei de inductanţă L, respectiv condensatorului de capacitate C. Această putere reactivă poate fi cedată integral generatorului în alte momente de timp faţă de cele în care s-a acumulat.

În funcţie de unghiul de defazaj există următoarele situaţii:

φ = 0 : este cazul unui circuit format numai din rezistor sau la rezonanţă, iar Q = 0; puterea activă este maximă; φ = π/2 : circuitul este format numai din bobină ideală; puterea reactivă este maximă, înmagazinată în câmpul magnetic, iar puterea activă este nulă; φ = - π/2 : circuitul este format numai din condensator; puterea reactivă este maximă, înmagazinată în câmpul electric, iar puterea activă este nulă.

Jitaru Bogdan-Nicolae Cap.1: Consideraţii teoretice

14

Puterea aparentă Puterea aparentă, sau totală, reprezintă produsul dintre valoarea efectivă a tensiunii de

la bornele circuitului şi intensitatea efectivă a curentului stabilit în circuit.

푄 = 푈퐼, iar unitatea de măsură este VA (Volt-Amper). Puterile P, Q şi S nu sunt independente (Fig.1.9). În regim sinusoidal verifică relaţia:

푆 = 푃 + 푄

În regim sinusiodal, puterile activă şi reactivă pot fi scrise în funcţie de puterea

aparentă astfel:

푃 = 푆푐표푠휑;푄 = 푆푠푖푛휑 = 푃푡푔휑

Mărimea cosφ se numeşte factor de putere al circuitului sinusiodal şi este dat de relaţia:

푐표푠휑 =푃푆 =

푅푍

Fig.1.9 – Triunghiul puterilor

15

Capitolul 2. REALIZAREA PRACTICĂ A MONTAJULUI

Structura hardware a sistemului este prezentată în figura de mai jos. Aceasta constă dintr-un microcontroler, interfaţa de măsură (folosind amplificatoare operaţionale), un modul de stocare EEPROM, un modul de comunicaţie serială şi o sursă de alimentare.

Fig.2.1 – Structura hardware a contorului de energie

Jitaru Bogdan-Nicolae Cap.2: Realizarea practică a montajului

16

Pentru realizarea practică a contorului de energie electrică am folosit un microcontroler din familia Microchip, şi anume PIC24FV32KA302. Acesta este un microcontroler pe 16 biţi de înaltă performanţă si consum redus de energie.

Dispozitivele periferice cele mai importante sunt: ceas de timp real (RTCC), două module de comunicaţie I2C, două module de comunicaţie UART ce suportă comunicaţie pe interfeţe RS-485 şi RS-232, cinci timer-e pe 16 biţi şi, cel mai important pentru proiectul de faţă, un convertor analog-digital cu rezoluţia de 12 biţi. Acest aspect este foarte util pentru a putea măsura cât mai precis curentul şi tensiunea necesare calculării energiei consumate de aparatul electric.

Dispune de 28 de pini, dintre care 23 pot fi folosiţi ca pini de intrare/ieşire programabili, grupaţi în 2 porturi (RA şi RB) (Fig.2.1).

Fig.2.2 – Dispunerea pinilor unui microcontroler PIC24FV32KA302

(PIC24FV32KA302 Datasheet)

Jitaru Bogdan-Nicolae Cap.2: Realizarea practică a montajului

17

2.1 Sursa de alimentare a circuitului cu microcontroler[4]

Pentru alimentarea circuitului cu microcontroler am realizat o sursă de tensiune continuă, care generează la ieşire 3.3VDC (Fig.2.3).

Fig.2.3 – Schema sursei de tensiune pentru alimentarea circuitului cu microcontroler

Pentru realizarea sursei de tensiune am folosit un transformator de 9V, la 1.5VA. Cei 9V sunt redresaţi cu ajutorul unei punţi redresoare. Pentru a avea la ieşire 3.3V, am utilizat un stabilizator de tensiune LD1086V33.

Toate stabilizatoarele de tensiune (surse liniare de tensiune) necesită la intrare o tensiune mai mare decât cea pe care o generează la ieşire.

La intrarea acestuia a fost nevoie de un condensator electrolitic de 4400µF, necesar pentru a netezi tensiunea redresată.

De asemenea, la ieşire a fost montat un condensator electrolitic de 10 µF. Rolul acestui condensator este acela de a împiedica apariţia oscilaţiilor. Practic, acestea sunt scurcircuitate de către condensator.

Jitaru Bogdan-Nicolae Cap.2: Realizarea practică a montajului

18

2.2 Măsurarea tensiunii de alimentare şi a curentului Pentru a măsura tensiunea de alimentare şi curentul consumatorului, am folosit două

amplificatore operaţionale MCP6021 (Fig.2.4).

Fig.2.4 – Dispunerea pinilor unui amplificator operaţional MCP6021

(MCP6021 Datasheet) Un amplificator operaţional (Fig.2.5) are rolul de a amplifica puternic tensiuni aplicate

diferenţial la două intrări şi în mod normal are o singură ieşire. Valoarea tensiunii de ieşire este dată de următoarea formulă:

푉 = 푎 ∙ 푉 , unde: a = factorul de amplificare; VD = diferența dintre tensiunile de la intrare. Principalele caracteristici ale unui amplificator operațional sunt:

-impedanță de intrare infinită (între cele 2 intrări); -impedanță de ieșire nulă (între terminalul de ieșire și masă); -amplificare diferențială în buclă deschisă infinită.

Fig.2.5 – Simbolul electric al unui amplificator operaţional

V+ – intrare fără invertare V- – intrare cu invertare

Vout – ieşire VS+ – alimentare cu tensiune pozitivă VS- – alimentare cu tensiune negativă

Jitaru Bogdan-Nicolae Cap.2: Realizarea practică a montajului

19

2.2.1 Măsurarea tensiunii de alimentare[4]

Pentru a măsura tensiunea de alimentare cu ajutorul modulului de conversie

analog-digital, am folosit următoarea schemă cu amplificator operaţional:

Fig.2.6 – Schema cu AO pentru măsurarea tensiunii de alimentare

Aşa cum se observă, tensiunea de la ieşire va fi egală cu valoare tensiunii U- , deoarece

U- este legat direct la Uout. Astfel, valoarea tensiunii de la ieşire va fi dată de relaţia următoare, obţinută prin

aplicarea principiului superpoziţiei: 푈 = 푉 ∙ ∙

∙ ∙ ∙+ 푈 ∙ ∙

∙ ∙ ∙ (2.1)

unde VDD este egal cu 3.3V.

Dacă Uaef = 250 V, atunci valoarea la vârf a tensiunii este dată de relaţia: 푈푎 = √2푈푎 , deci Ua=353 V (aproximativ). Din motive de siguranţă alegem Ua=500V.

Dorim ca la ieşire să avem tensiune între valorile 0 ÷ 2.048푉 (pentru a fita plaja de

tensiune pentru intrarea analogică a microcontrolerului). (i) Dacă Ua < 0V , atunci Uout = 0V (ii) Dacă Ua = 0V , atunci Uou t= 1.024V (iii) Dorim o divizare a tensiunii de alimentare de ordinul 1:500

Jitaru Bogdan-Nicolae Cap.2: Realizarea practică a montajului

20

(i)+(ii) 푉 ∙ ∙∙ ∙ ∙

= 1.024 => ∙

∙ ∙ ∙= .

(2.2)

(iii) ∙

∙ ∙ ∙= (2.3)

Din relaţiile (2.2) şi (2.3) rezultă:

= . ∙.

=> 푅 ≅ 푅 ∙ 155.15

Aşadar:

∙∙ ∙ . ∙ ∙ .

=

∙ . ∙ .= (2.3)

Din relaţia (2.3) rezultă 푅 ≅ 2.216푅

Din motive constructive alegem: R1 = 10KΩ şi R2 = 22KΩ, iar R3=3400KΩ

Aşadar, cele 3 rezistenţe din schema de măsură a tensiunii de alimentare au următoarele valori:

푅 = 10퐾Ω푅 = 22퐾Ω

푅 = 3.4푀Ω(5 × 680퐾Ωî푛푠푒푟푖푒)

Jitaru Bogdan-Nicolae Cap.2: Realizarea practică a montajului

21

2.2.2 Măsurarea curentului consumat[4]

Pentru măsurarea curentului consumat de aparat am ales metoda sesizării rezistive a curentului. Pentru aceasta am înseriat o rezistenţă R0 în circuit (Fig.2.7), intre nul şi aparat.

La fel ca în cazul măsurării tensiunii de alimentare, pentru a determina căderea de tensiune pe R0, am folosit o schemă cu amplificator operaţional (Fig.2.7).

Fig.2.7 - Schema cu AO pentru măsurarea căderii de tensiune pe rezistenţa necesară sesizării rezistive a curentului consumat

Alegerea valorii rezistenţei R0 a constituit un aspect important şi pretenţios. Pentru a nu

influenţa în mod considerabil funcţionarea aparatului şi implicit consumul de energie, a trebuit aleasă o valoare foarte mică a acestei rezistenţe. De asemenea, a trebuit luat în calcul curentul maxim pentru care această aplicaţie poate funcţiona în parametri normali şi în condiţii de siguranţă, iar pe baza acestui curent a trebuit calculată puterea disipată pe R0.

Am ales R0 = 0.1Ω şi Ief = 5A.

Astfel: Uief = 0.5V , deci 푈푖 = √2푈푖 = 0.707푉

Puterea disipată pe R0: 푃 = = 2.5푊 . Cum R0 va fi realizată prin punerea în

paralel a 10 rezistenţe cu valoarea 1Ω, am ales ca aceste rezistenţe să fie rezistenţe de putere 0.5W. Astfel, nu va fi nevoie de folosirea unui radiator pentru disiparea căldurii.

Jitaru Bogdan-Nicolae Cap.2: Realizarea practică a montajului

22

Dorim ca valoarea amplificării să fie egală cu 1. Pentru aceasta, trebuie ca R1=R2. Am ales ca valoarea lui R1 şi a lui R2 să fie 10KΩ.

푈 = 푉푅

푅 + 푅

푈 = 푈푅

푅 + 푅 + 푈푅

푅 + 푅

Cum U+=U- => 푈 = 푉 ∙ ∙ − 푈 ∙ (2.4)

Dacă Ui = 0V , atunci Uout = 1.024V

Aşadar: 2 ∙푉퐷퐷 ∙푅3

푅3+푅4= 1.024 => 푅3

푅3+푅4≅ 0.1551 => 푅4 ≅ 5.47 ∙ 푅3

Alegând R3= 10 KΩ => R4 = 54.47 KΩ

Aşadar, în schema de măsură a căderii de tensiunie pe rezistenţa folosită pentru sesizarea rezistivă a curentului consumat, avem următoarele valori ale rezistenţelor:

⎩⎪⎨

⎪⎧

푅 = 0.1Ω(10 × 1Ωî푛푝푎푟푎푙푒푙)푅 = 10퐾Ω푅 = 10퐾Ω푅 = 10퐾Ω

푅 = 54.47퐾Ω(51퐾, 2퐾, 1퐾, 470Ωî푛푠푒푟푖푒)

Jitaru Bogdan-Nicolae Cap.2: Realizarea practică a montajului

23

2.3 Stocarea valorilor energiei electrice

Pentru stocarea valorilor energiei electrice măsurate cu ajutorul microcontrolerului, am folosit 2 unităţi de stocare EEPROM 24LC1026.

Acest tip de memorie EEPROM are o capacitate de stocare de 8x128K (1024Kbit). Este proiectat pentru aplicaţii cu consum redus de energie, cum ar fi comunicaţii personale sau achiziţii de date. Oferă atât posibilitatea citirii secvenţiale, cât şi citirii aleatorii.

Unitatea de memorie are următoarea dispunere a pinilor:

Fig.2.8 – Dispunerea pinilor pentru o unitate de stocare EEPROM 24LC1026 (EEPROM 24LC1026 Datasheet)

Rolul pinilor A1 şi A2 este acela de setare a numărului de ordine al unităţii în cazul

utilizării mai multor astfel de dispozitive. Aceşti 2 pini pot fi legaţi fie la „1” logic, fie la „0” logic. Astfel, există 4 combinaţii posibile pentru cei 2 pini:

- A1 = „0” logic şi A2 = „0” logic; - A1 = „1” logic şi A2 = „0” logic; - A1 = „0” logic şi A2 = „1” logic; - A1 = „1” logic şi A2 = „1” logic.

Aşadar, pot fi legate maxim 4 astfel de unităţi în paralel. Schema de legare în circuit folosind interfaţa I2C este prezentată mai jos:

Fig.2.9 – Schema de legare legare în circuit a unităţilor EEPROM folosind interfaţa I2C

Jitaru Bogdan-Nicolae Cap.2: Realizarea practică a montajului

24

2.4 Comunicaţia cu PC-ul Comunicaţia cu PC-ul permite descărcarea valorilor stocate în memoria EEPROM pe un

PC. Pentru aceasta, se verifică dacă modulul de recepţie UART a recepţionat caracterul „#” (comanda de descărcare), iar în caz afirmativ se începe transmiterea valorilor din EEPROM către PC. Comanda de descărcare se poate da folosind Hyperterminalul din cadrul sistemului de operare.

Datele sunt citite începând cu cea mai veche şi terminând cu cea mai nouă valoare

(regulă de tip FIFO). Comunicaţia cu PC-ul este realizată prin intermediul interfeţei de comunicaţie serială

RS-232. Pentru aceasta este nevoie de un cablu de date serial. Implicit, este nevoie ca PC-ul să dispună de port serial. De asemenea, între modulul UART al microcontrolerului şi PC este nevoie de un transceiver RS-232 (MAX3232), care are rolul de protecţie pentru dispozitivele logice şi de asemenea oferă un anumit grad de filtrare a zgomotelor.

Mai jos este prezentată schema de legare în circuit a transceiver-ului:

Fig.2.10 – Schema de legare în circuit a transceiver-ului MAX3232

25

Capitolul 3. IMPLEMENTARE SOFTWARE

Structura aplicaţiei software este prezentată în figura de mai jos. Aceasta conţine o procedură de achiziţie de date, declanşată de întreruperea de procesor generată de modulul ADC. Datele sunt stocate în buffer-ul intern al modulului ADC şi sunt apoi transmise modulului de prelucrare, care va converti aceste valori în valori reale ale curentului şi tensiunii şi pe baza lor va calcula energia electrică. Această valoare va fi scrisă apoi în memoria EEPROM, de unde datele vor putea fi accesate utilizând modulul de comunicaţie cu PC-ul.

De menţionat că timpul între scrierile în memoria EEPROM poate fi variabil, iar valoarea unui astfel de interval este folosită pentru a calcula valoarea energiei. Aceasta este media puterilor înmulţită cu perioada de timp în care acestea au fost înregistrate.

Fig.3.1 – Structura aplicaţiei software

Jitaru Bogdan-Nicolae Cap.3: Implementare software

26

3.1 Modulul de achiziţie date

Semnalul electric primit de la amplificatoarele operaţionale pentru determinarea tensiunii de alimentare şi a curentului consumat sunt de natură analogică. Astfel, pentru a putea măsura aceste valori cu ajutorul microcontrolerului a fost necesară utilizarea modulului de conversie analog-digital încorporat.

Cea mai importantă caracteristică a unui convertor analog-digital este rezoluţia. Aceasta ne spune acurateţea cu care convertorul măsoară semnalele analogice primite. Cele mai comune rezoluţii sunt cele de 8, 10 şi 12 biţi. Există şi convertoare pe 16 biţi, însă sunt foarte rar întâlnite. Trebuie ţinut cont de faptul că pentru a realiza conversia este nevoie de o compatibilitate între viteza de procesare a microcontrolerului şi viteza de variaţie a semnalului. Astfel, microcontrolerele care au încorporat un convertor cu rezoluţie de 16 biţi sunt foarte puţin performante.

Fig.3.2 – Schema principială a unui convertor analog-digital[4]

În schema de mai sus, valoarea convertită N este dată de următoarea formulă:

푁 = ∙ 2 ( 3.1 )

Jitaru Bogdan-Nicolae Cap.3: Implementare software

27

3.1.1 Configurarea modulului ADC[3]

Microcontrolerul PIC24FV32KA302 dispune de un modul de conversie analog-digital pe 12 biţi ce oferă mai multe opţiuni de scanare automată a întrărilor şi o integrare mai strictă cu celelalte module analogice, cum ar fi CTMU şi un buffer pentru rezultate configurabil. Schema bloc a modulului ADC este prezentată în Fig.3.3.

Fig.3.3 – Diagrama bloc a modulului de conversie analog-digital

pentru microcontrolerul PIC24FV32KA302 (PIC24FV32KA302 Datasheet)

Aşa cum se observă din diagramă, modulul ADC este conectat la pinii de intrare

analogică prin intermediul a două multiplexoare (MUXA, respectiv MUXB). Rolul multiplexoarelor este acela de a oferi posibilitatea conectării oricărui canal analogic la intrarea convertorului. Astfel, este posibilă scanarea mai multor semnale analogice cu acelaşi microcontroler.

Jitaru Bogdan-Nicolae Cap.3: Implementare software

28

În cazul aplicaţiei de faţă se doreşte utilizarea funcţiei de auto-scanare pentru a realiza conversii continue ale valorilor tensiunii de alimentare şi ale curentului consumat. Viteza de conversie este de 12800 conversii/secundă (conform cu specificaţiile tehnice ale convertorului), dintre care 6400 sunt conversii ale curentului, iar 6400 sunt conversii ale tensiunii de alimentare.

Modulul de conversie va fi configurat astfel încât să stocheze 8 rezultate în buffer-ul

intern înainte să genereze întrerupere. Astfel, procedura de achiziţie este apelată de 1600 de ori pe secundă.

Astfel, conţinutul buffer-ului la un moment dat va arăta ca în Fig.3.4:

Fig.3.4 – Conţinutul buffer-ului

În figura de mai sus, valoarea constantei T este de 1/12800 secunde, adică 78125

nanosecunde. Pentru a realiza conversia analog-digital, trebuie urmaţi paşii de mai jos:

A) Configurarea pinilor ca pini de intrare analogici;

B) Selectarea valorilor tensiunilor de referinţă pentru a fita plaja tensiunilor de intrare;

C) Selectarea timpului de conversie analogică astfel încât rata de achiziţie să

corespundă cu frecvenţa procesorului;

D) Selectarea modului de conversie corespunzător;

E) Selectarea formatului în care rezultatele conversiei sunt stocate în buffer;

F) Selectarea ratei de întrerupere;

G) Cofigurarea întreruperii ADC;

H) Selectarea canalelor ce vor fi scanate.

Jitaru Bogdan-Nicolae Cap.3: Implementare software

29

A) Registrul prin intermediul căruia pinii sunt configuraţi ca intrări analogice este registrul

special ANSELx (unde x poate fi „A” sau „B”). Pentru aplicaţia de faţă am utilizat intrările analogice AN0 şi AN1, care corespund portului A. Astfel, a trebuit setat registrul ANSELA:

Fig.3.5 – Registrul ANSELA

(PIC24FV32KA302 Datasheet)

Aşadar, în cadrul procedurii de iniţializare, am setat biţii l0 şi l1 din registrul ANSELA: ANSELA = 0b0000000000000011;

B) Selectarea valorilor tensiunilor de referinţă se face prin intermediul registrului special

AD1CON2, biţii 15-13:

Fig.3.6 – Registrul AD1CON2 (PIC24FV32KA302 Datasheet)

Jitaru Bogdan-Nicolae Cap.3: Implementare software

30

Cum la intrare plaja tensiunii este 0÷2.048 V, iar valoarea VBG este 1.024V, biţii 15-13 au următoarea configuraţie:

AD1CON2bits.PVCFG1 = 1; AD1CON2bits.PVCFG0 = 0; AD1CON2bits.NVCFG0 = 0;

C)

Selectarea valorii timpului de conversie analogică (TAD – timpul necesar generării unui bit de conversie) se face prin intermediul biţilor 7-0 din cadrul registrului special AD1CON3:

Fig.3.7 – Registrul AD1CON3; biţii 7-0

(PIC24FV32KA302 Datasheet) Din motive de siguranţă alegem valoarea TAD = 2TCY, unde TCY = 1/FOSC. Astfel, biţii 7-0 vor fi configuraţi în felul următor: AD1CON3bits.ADCS0 = 1; AD1CON3bits.ADCS1 = 0; AD1CON3bits.ADCS2 = 0; AD1CON3bits.ADCS3 = 0; AD1CON3bits.ADCS4 = 0; AD1CON3bits.ADCS5 = 0; AD1CON3bits.ADCS6 = 0; AD1CON3bits.ADCS7 = 0;

Tot în cadrul registrului AD1CON3 trebuie cofigurat bitul 15 pentru a selecta dacă să

fie folosit circuitul rezonator intern (RC clock) sau un circuit rezonator extern. În cazul de faţă se doreşte folosirea unui circuit rezonator cu cuarţ extern. Aşadar:

AD1CON3bits.ADRC = 0;

Jitaru Bogdan-Nicolae Cap.3: Implementare software

31

D) Pentru selectarea modului de conversie corespunzător este necesară configurarea biţilor

7-4 din registrul AD1CON1, respectiv biţii 12-8 din registrul AD1CON3:

Fig.3.8 – Registrul AD1CON1; biţii 7-4

(PIC24FV32KA302 Datasheet)

Vom folosi TIMER3 pentru a determina momentul trecerii celor 7812.5 nanosecunde necesare unei conversii. Astfel:

AD1CON1bits.SSRC0 = 0; AD1CON1bits.SSRC1 = 1; AD1CON1bits.SSRC2 = 0; AD1CON1bits.SSRC3 = 0;

Biţii 12-8 din AD1CON3 au următoarea semnificaţie:

Fig.3.9 – Biţii 12-8 din cadrul registrului AD1CON3

(PIC24FV32KA302 Datasheet)

Dorim conversii automate, fără perioadă de aşteptare între ele, aşadar biţii 12-8 din cadrul AD1CON3 vor avea toţi valoarea 0.

Jitaru Bogdan-Nicolae Cap.3: Implementare software

32

E) Selectarea formatului în care rezultatele conversiei sunt stocate în buffer se face prin

intermediul registrului AD1CON1, biţii 9-8:

Fig.3.10 – Semnificaţia biţilor 9-8 din cadrul AD1CON1

(PIC24FV32KA302 Datasheet)

Dorim ca formatul retultatelor să fie integer, fără semn şi aliniat la dreapta, aşadar, biţii 9-8 din registrul AD1CON1 vor avea valoarea 0.

Tot în cadrul AD1CON1 trebuie setat bitul 10 pentru a activa modul de operare pe 12

biţi al convertorului. Altfel, acesta va opera în modul 10 biţi. AD1CON1bits.MODE12 = 1;

F)

Aşa cum am spus mai sus, dorim ca odată la 8 conversii ADC-ul să genereze întrerupere. Acest lucru se poate seta utilizând registrul AD1CON2, biţii 6-2:

Fig.3.11 – Semnificaţia biţilor 6-2 din cadrul registrului AD1CON2

(PIC24FV32KA302 Datasheet) Astfel, biţii 6-2 din cadrul AD1CON2 vor avea următoarea configuraţie: 0 0 1 1 1 .

G)

Întreruperea ADC poate fi semnalată prin intermediul bitului AD1IF, din cadrul registrului IFS0.

Dacă acest bit are valoarea 1, atunci este semnalat faptul că a fost generată cerere de întrerepuere. Aşadar, la iniţializarea ADC, acest bit trebuie configurat cu valoarea 0.

Adiţional, pentru ca întreruperea ADC să poată fi activată, este necesar ca bitul AD1IE din cadrul registrului IEC0 să fie setat cu valoarea 1, ceea ce înseamnă că există posibilitatea cererii de întrerupere dinspre modulul ADC.

Jitaru Bogdan-Nicolae Cap.3: Implementare software

33

H)

Selectarea canalelor analogice ce vor fi scanate automat în scopul convertirii valorii tensiunii aplicate se face cu ajutorul registrului AD1CSSL:

Fig.3.12 – Registrul AD1CSSL (PIC24FV32KA302 Datasheet)

Cum canalele necesare aplicaţiei de faţă sunt AN0 şi AN1, acest registru va avea

următoarea valoare: AD1CSSL = 0b0000000000000011;

3.2 Prelucrarea valorilor convertite Programul aşteaptă ca ADC-ul să genereze întreruperea, ceea ce semnalizează că au fost

convertite 4 valori ale tensiunii şi 4 valori ale curentului, după care citeşte cele 8 valori din buffer în scopul prelucrării.

Prelucrarea constă în: -interpolarea celor 4 valori ale curentului, respectiv tensiunii de alimentare; -aflarea valorii tensiunii aplicate la intrarea analogică pe baza valorii interpolate; -determinarea valorii reale a tensiunii de alimentare şi a curentului consumat; -determinarea puterii instantanee şi scrierea ei într-un vector; -determinarea energiei electrice pe baza valorilor din vectorul de puteri.

Jitaru Bogdan-Nicolae Cap.3: Implementare software

34

Având în vedere că microcontrolerul dispune de un singur modul de conversie analog-digital, valorile curentului şi a tensiunii de alimentare nu vor putea fi convertite simultan, ci succesiv. Pentru a putea determina valoarea corectă a puterii instantanee este nevoie ca cele 2 valori ale curentului şi tensiunii să corespundă aceluiaşi moment de timp.

„Soluţia pentru această problemă constă în interpolarea celor 4 valori ale curentului,

respectiv tensiunii pentru determinarea unei valorilor care să corespundă aceluiaşi moment de timp. Deoarece cele 4 valori ce vor fi interpolate corespund unei porţiuni foarte mici a caracteristicii curent-tensiune, metoda interpolării liniare este suficient de bună (Fig.3.12).

Fig.3.13 – Interpolarea liniară a valorilor tensiunii şi a curentului[3]

Formulele pe baza cărora s-a făcut interpolarea sunt următoarele:

퐼 =740 퐼 +

940 퐼 +

1140 퐼 +

1330 퐼

푈 =1340푈 +

1140푈 +

940푈 +

730푈

” [3]

Jitaru Bogdan-Nicolae Cap.3: Implementare software

35

Notăm generic Iinterp și Uinterp cu VALinterp. Pentru aflarea tensiunii aplicate la intrarea analogică am folosit următoarea formulă:

푈 = ∙ 2.048 , dedusă din formula (3.1)

Pentru determinarea valorii reale a tensiunii de alimentare am folosit următoarea

formulă, determinată din (2.1):

푈 = 푈 ∙푅 ∙ 푅 + 푅 ∙ 푅 + 푅 ∙ 푅

푅 − 푉 ∙푅푅

Pentru determinarea valorii reale a căderii de tensiune pe R0 am folosit următoarea formulă, determinată din (2.4):

푈 = 푉 ∙푅

푅 + 푅∙푅 + 푅푅

− 푈 ∙푅푅

Curentul consumat va fi dat de relația: 퐼 =

Determinarea puterii instantanee se va face prin înmulțirea Ualim cu Icons , iar rezultatul

va fi memorat într-un vector. La fiecare scriere în vector se va incrementa un contor. Având în vedere că pentru a converti 8 valori ale curentului, respectiv tensiunii, ceea ce

corespunde cu determinarea unei valori a puterii instantanee, este nevoie de 8x78125 nanosecunde (0.000625 secunde), atunci pentru a calcula energia electrică consumată în 10 secunde va fi nevoie 16000 de valori scrise în vector. Astfel, atunci când contorul va ajunge la 15999 se va face media puterilor memorate în vector (primele 1600 de valori) și se va înmulți cu 10 scunde. Apoi contorul se va reinițializa cu 0 şi scrierea în vector va începe din nou de la indicele 0. 3.3 Scrierea în memoria EEPROM[3]

Memoria EEPROM a fost gândită să se comporte ca un buffer circular. Astfel, atunci

când toate locaţiile de memorie sunt scrise, se va începe scrierea de la prima locaţie. Astfel se asigură înregistrarea continuă a datelor.

Pentru realizarea acestui buffer de tip circular s-a procedat în felul următor: -se foloseşte bitul 15 din cadrul fiecărei locaţii pentru a marca până unde este umplut buffer-ul; -iniţial toţi aceşti biţi sunt 0; -de fiecare dată când o nouă valoare este scrisă într-o locaţie, bitul 15 corespunzător este complementat şi astfel se marchează ultima locaţie scrisă.

Jitaru Bogdan-Nicolae Cap.3: Implementare software

36

Pentru scrierea valorilor energiei consumate în memoria EEPROM am folosit

următoarele proceduri: -procedura de iniţializare EEPROM, care apelează şi procedura de iniţializare interfaţa I2C a microcontrolerului (apelată în bucla principală a programului); -procedura de scriere a valorii pe 15 biţi în buffer-ul circular (apelată de fiecare dată când se doreşte scrierea unei valori în EEPROM); -procedura de citire (apelată de procedura de comunicaţie, atunci când se descarcă datele). 3.4 Comunicaţia cu PC-ul[3]

Procedura de citire şi transmitere prin intermediul interfeţei seriale a datelor stocate în

memorie este apelată în bucla principală a programului. A fost proiectată în aşa fel încât să fie transmisă o singură valoare la o apelare, pentru a

nu împiedica celelalte module să funcţioneze.

37

Concluzii Acest document a prezentat o metodă de realizare practică şi abordarea principială

pentru proiectarea unui contor de energie electrică utilizat pentru măsurarea şi înregistrarea energiei electrice consumate individual de fiecare aparat electric dint-o locuinţă. Dacă se doreşte monitorizarea mai multor aparate va fi nevoie de realizarea mai multor astfel de montaje.

Datele stocate în memoria EEPROM vor folosi la crearea de grafice utilizând diverse

medii dedicate, cum ar Excel sau Matlab. De asemena se pot crea baze de date care să conţină înregistrările. Acestea pot fi folosite pentru realizarea de calcule statistice sau pot servi la monitorizarea/verificarea consumului de energie pentru un anumit aparat.

Sarcinile de viitor sunt variate. Acestui dispozitiv i s-ar putea adăuga anumite alarme,

care să înştiinţeze utilizatorul atunci când curentul consumat de apart depăşeşte un anumit prag. Într-un astfel de context este posibil fie ca însuşi dispozitivul să oprească alimentarea aparatului, fie ca utilizatorul să facă acest lucru manual. O altă îmbunătăţire posibilă ar fi adăugarea unei interfeţe constând dintr-un dispozitiv LCD şi anumite butoane cu ajutorul cărora utilizatorul să seteze diverşi parametri: frecvenţa de scriere în memorie, setarea alarmelor etc.

38

Anexe Codul sursă (achiziţia şi prelucrarea datelor):

#include <htc.h> #include <pic24fv32ka302.h> #include <stdlib.h> int indicePutere = 0; void InitADC() AD1CON1 = 0b0000010000100100; AD1CON2 = 0b1000010000011110; AD1CON3 = 0b0000000000000001; AD1CON5 = 0b0001000000000000; ANSELA = 0b0000000000000011; AD1CHS = 0b0000000000000000; AD1CSSL = 0b0000000000000011; AD1CSSH = 0b0000000000000000; IEC0bits.AD1IE = 1; IFS0bits.AD1IF = 0; PR3 = 143; T3CON = 0b1000000000000000; void StartADC( void ) AD1CON1bits.ADON = 1; // Porneste modulul A/D void CitesteADC ( float tensiuneC, float tensiuneP ) if ( AD1CON2bits.BUFS == 1 ) tensiuneC = (7/40)*ADC1BUF0 + (9/40)*ADC1BUF2 + (11/40)*ADC1BUF4 + (13/30)*ADC1BUF6; tensiuneP = (7/40)*ADC1BUF1 + (9/40)*ADC1BUF3 + (11/40)*ADC1BUF5 + (13/30)*ADC1BUF7; else tensiuneC = (7/40)*ADC1BUF8 + (9/40)*ADC1BUF10 + (11/40)*ADC1BUF12 + (13/30)*ADC1BUF14; tensiuneP = (7/40)*ADC1BUF9 + (9/40)*ADC1BUF11 + (11/40)*ADC1BUF13 + (13/30)*ADC1BUF15; tensiuneC = tensiuneC * (2.048/4095); tensiuneP = tensiuneP * (2.048/4095);

39

float ValoareRealaTensC( float tensiuneC ) float temp; temp = tensiuneC + 6.6 * (10000/64470); return temp; float ValoareRealaTensP(float tensiuneP ) float temp; temp = (109020*tensiuneP - 112200)/220; return temp; float DeterminaPutere( float tensiuneC, float tensiuneP ) float R0 = 0.1, curent; curent = tensiuneP/R0; indicePutere++; return tensiuneP*curent; void main() InitADC(); while(1) float tensiuneC, tensiuneP, tensCReal, tensPReal; float putere, medie, energie, suma = 0, timp = 10; float vector[16000]; int i = 0; StartADC(); while ( IFS0bits.AD1IF == 0 ) //asteapta ca ADC-ul sa genereze //intrerupere CitesteADC( tensiuneC, tensiuneP ); tensCReal = ValoareRealaTensC( tensiuneC ); tensPReal = ValoareRealaTensP( tensiuneP ); putere = DeterminaPutere( tensCReal, tensPReal ); if ( indicePutere < 16000 ) vector[indicePutere] = putere; else for ( i=0 ; i < indicePutere; i++ ) suma = suma + vector[i]; medie = suma/100; energie = medie * timp; indicePutere = 0;

40

Bibliografie

[1] Ed Ramsden, "5 Ways of Monitoring Electrical Current", Sensors Magazine, July 1999, www.sensorsmag.com [2] Mihai Iordache, Curs „Bazele Electrotehnicii” (ELTH)

http://www.circuite-electrice.accounting-business.eu/puterile-in-circuitul-de-curent- alternativ.html

[3] Cătălin Petrescu şi Ciprian Lupu, „Data Acquisition System for Solar Irradiance Recording”

[4] Conf. Cătălin Petrescu, Curs „Sisteme Informatice Integrate” (SII) [5] PIC24FV32KA302 Datasheet