Sistem de testare automată pentru acumulatori LiFePO4 [303951]

Universitatea “Politehnică” [anonimizat]4

[anonimizat]: Absolvent: [anonimizat]. Lucian-[anonimizat]

2019

Lista figurilor

Fig. 1.1 Circuit de management pentru 4 celule LiFePO4 15

Fig. 1.2 [anonimizat] 19

Fig. 1.3 EMUS BMS 20

Fig. 1.4 ISL94202 21

Fig. 2.1 Exemplu de Front Panel 25

Fig. 2.2 Paleta de controlere 26

Fig. 2.3 Controlere și indicatori numerici 27

Fig. 2.4 Controlere și indicatori booleeni 27

Fig. 2.5 Controlere și indicatori de tip șir de caracter 28

Fig. 2.6 Exemplu de diagramă bloc împreună cu panoul frontal corespunzător 28

Fig. 2.7 Aria unui triunghi Panoul frontal 29

Fig. 2.8 Diagrama bloc pentru calcului ariei unui triunghi 29

Fig. 2.9 Paleta de funcții 31

Fig. 2.10 Fir rupt 32

Fig. 2.11 Exemple de fire 32

Fig. 3.1 Schema bloc a sistemului de management al bateriilor 33

Fig. 3.2 Rezultatele simulării în TINA 34

Fig. 3.3 Bateria Pb acid vs bacteria LiFePO4 36

Fig. 3.4 Curba de descărcare pentru celula LiFePO4 37

Fig. 3.5 Profil de încărcare pentru celula LiFePO4 37

Fig. 3.6 Comparație între bateria LiFePO4 și bateria LA 38

Fig. 3.7 L7805CV și schema electronică de conectare 38

Fig. 3.8 Testarea regulatorului de tensiune 39

Fig. 3.9 [anonimizat]1584 39

Fig. 3.10 Amplificatorul diferențial utilizat pentru citirea tensiunilor 40

Fig. 3.11 Dispunerea celor 4 [anonimizat] 41

Fig. 3.12 Testarea amplificatoarelor diferențiale 41

Fig. 3.13 LM358 42

Fig. 3.14 Senzorul de temperatură LM35 42

Fig. 3.15 Configurație LM35 43

Fig. 3.16 Senzor de curent ACS712T20 43

Fig. 3.17 Integratul ACS712 44

Fig. 3.18 Arduino Uno 44

Fig. 3.19 Arduino Uno Pinout 45

Fig. 3.20 Conectare ecran LCD 47

Fig. 3.21 Măsurarea curentului și temperaturii prin rezistența de sarcină 47

Fig. 3.22 Releu 12V 30A 48

Fig. 3.23 Circuit de comandă pentru releu 49

Fig. 3.24 Circuitul de măsurare tensiuni și temperature 49

Fig. 3.25 Testarea pentru achiziția temperaturii și a tensiunii 50

Fig. 3.26 Testarea sistemului 50

Fig. 4.1 Organigramă program Arduino 52

Fig. 4.2 Panoul frontal al aplicației 59

Fig. 4.3 Diagrama bloc a aplicației 60

Fig. 4.4 Datele din fișierul text creat de aplcația Labview 61

Fig. 5.1 Testarea sistemului. Rezitențele conectate pe celula 2 63

Fig. 5.2 Valori parametri 63

Fig. 5.3 Testarea sistemului.Rezistențele conectate pe celula 4 64

Lista tabelelor

Tabelul 3.1. Specificații celule LiFePO4 36

Tabelul 3.2 Rezultate experimentale pentru regulatorul de tensiune 39

Tabelul 3.3 Măsurarea tensiunii de ieșire pentru diferite tensiuni de intrare pentru cele 4 amplificatoare 41

Tabelul 3.4 Parametrii Arduino Uno 45

Tabelul 3.5 Pini LCD 4X20 46

Lista acronimelor

ADC=Analog to Digital Convertor

BMS=Battery Management System

DC=Direct Current

I/O=Input/Output

LCD=Liquid Crystal Display

PCB=Printed Circuit Board

USB=Universal Serial Bus

EEPROM=[anonimizat]y Memory

IOS=Internetwork Operating System

UPS=Uninterruptible Power System

VI=Virtual Instrument

CAN=Controller Area Network

Pb=Plumb

SOC=State of Charge

SOH=State of Health

DB=Data Bus

AD=Analog Digital

ASCII=American Standard Code for Information Interchange

UART=Universal Asynchronous Receiver-Transmitter

CPU=Central Processing Unit

FET=Field Effect-Transistor

SPI=Serial Peripheral Interface

RMS=Root Mean Square

I2C=Inter-Integrated Circuit

MIPS=Millions of Instructions Per Second

Introducere

Bateria este unul din elementele cheie în cadrul unei aplicații, fiind un mediu de stocare a energiei.Încă de la inventarea acestora, de către fizicianul italian Alessandro Volta, bateriile au devenit o sursă de electricitate comună multor aplicații atât în domeniul casnic cât și în domeniul industrial.Tehnologia ne oferă o gamă variată de celule de stocare a energiei electrice.Bateriile pot căpăta mai multe forme, ele clasificându-se în două mari categorii:baterii primare, care sunt de unică folosință, și baterii secundare sau acumulatori, care sunt reîncărcabile.

Supravegherea parametrilor acestora din urmă devine astfel un lucru necesar.Managementul acumulatorilor se referă la monitorizarea parametrilor bateriei, și anume, tensiunea, curentul, temperatura.Valorile acestor parametri oferă informații despre starea de sănătate a acumulatorului.Un sistem care să realizeze acest lucru ușurează foarte mult munca pe care ar trebui să o depună operatorul uman pentru a prelua, la intervale de timp, acești parametri.

Obiectivul proiectului îl reprezintă proiectarea și implementarea unui sistem automat de monitorizare a 4 celule LiFePO4 de mare capacitate, înseriate. Sistemul este alcătuit din patru celule LiFePO4(CALB CA180AH, 3.2V,180Ah), diferite sarcini pasive, modul de monitorizare și control.Sistemul va monitoriza tensiunea la bornele fiecărei celule, curentul și temperatura sarcinii de descărcare și va permite stocarea datelor.

Datele achiziționate sunt transmise la un microcontroler, integrat pe placa de dezvoltare Arduino Uno, care prelucrează datele și le transmite pe un ecran LCD și pe un calculator.Cu ajutorul programului LabVIEW vom crea o interfață grafică pentru sistemul descris.

Motivația alegerii acestei teme este că electronica a devenit esențială în industrie, integrându-se cu pași repezi în mai toate domeniile, aceasta îmbunătățind siguranța și reducând timpul de achiziționare de informații, necesitând din ce în ce mai puțin prezența unui operator uman.Cu ajutorul unor senzori și traductoare se pot monitoriza în timp real parametrii unui sistem.Crearea de sisteme cât mai autonome sunt esențiale într-o lume în care tehnologia evoluează surprinzător în timp.

Cap.1 Sisteme de management de baterii

Generalități

Ca în orice aplicație care necesită prezența unui element de stocare a energiei, bateria determină cel mai mult succesul unui proiect.Bateria este una dintre cele mai scumpe componente, și de aceea supravegherea și întreținerea acestora trebuie să fie un aspect deloc de neglijat. Una dintre utilizările acumulatorilor este în autovehicule.Bateria într-un vehicul este, în general, încărcată cu ajutorul unui generator sau al unui alternator, care își obține puterea motrice de la motor.Așadar, energia este stocată pentru a fi utilizată mai târziu, pentru a acționa luminile, radioul și alte echipamente electrice.

Sistemele de testare automata de baterii sunt dispositive electronice care manageriază o baterie sau un sistem de baterii care se pot reîncărca.A manageria o baterie se referă la a monitoriza starea ei de încarcare, zona de operare în condiții de siguranță, raportarea datelor preluate.

Un sistem de management de baterii este capabil să măsoare tensiunea(totală sau

pe fiecare celulă în parte),temperatura, starea de încărcare, curentul prin baterie.Controlerul acestui sistem permite de asemenea comunicarea cu dispositive hardware cum ar fi laptopurile.

Fig.1.1 Circuit de management pentru 4 celule LiFePO4

[21]

Sistemele de testare automată de baterii sunt considerate a fi “creierul” din spatele unui pachet de acumulatori, un astfel de sistem controlând ieșirea, starea de încărcare și descărcare a bateriilor și totodată oferind notificări despre starea pachetului.Acumulatorii sunt constituiți, de obicei, din celule individuale care sunt conectate în diferite moduri(serie/paralel și combinații între aceste topologii), lucrând împreună pentru a deservi unor diverse aplicații.Un astfel de sistem este util pentru operațiuni de mentenanță predictivă, protejând astfel bateriile de deteriorare într-o gamă largă de condiții de funcționare, prelungindu-le durata de viață.În esență, aceste sisteme, realizează funcția principală de protecție a celulelor.

O a doua funcție efectuată este de gestionare a energiei.Un exemplu de gestionare a energiei este contorul de putere al bateriei laptopului.Laptopurile din ziua de astăzi nu numai ca ne arată cât de mult sau puțin este încărcată bateria, însă acestea pot spune și ce rată de consum au și cât timp mai poate fi utilizat dispozitivul până ce bateria va trebui fi reîncărcată.

Nevoia de monitorizare a stării de încărcare sau descărcare a acumulatorilor apare din cauza a două aspecte critice de proiectare:

1.dacă sunt supraîncărcate, acestea se pot supraîncălzi sau chiar exploda, celula fiind distrusă;

2.dacă sunt descărcate sub un anumit prag(aproximativ 5% din capacitatea totală), capacitatea lor poate fi redusă permanent;

Pentru a ne asigura ca starea de încărcare și descărcare a pachetului de baterii nu depășește limitele de bună funcționare, un astfel de sistem de monitorizare și testare este necesar.

Cele mai simple sisteme de management al bateriilor sunt utilizate în produsele electronice de larg consum, și au rolul de a măsura tensiunea de la bornele bateriei. Acestea au rolul de a opri încărcarea când a ajuns la final și de a anunța descărcarea bateriei. Un sistem BMS mai complex monitorizează mult mai mulți factori care afectează viața bateriilor și performanța, precum și asigurarea funcționării în siguranță și evitarea deteriorării acumulatorilor de energie. Aceste sisteme pot monitoriza o celulă sau sisteme alcătuite din mai multe baterii.

Sistemele BMS multi-celulare pot monitoriza și controla parametrii celulelor individuale. Sisteme de management al bateriilor de diferite tipuri sunt folosite în cele mai multe dispozitive ce utilizează baterii reîncărcabile. Ele sunt de asemenea comune în data centere, în cazul UPS-urilor (surse de curent continuu), autoturismele, în dispozitive portabile, cum ar fi playere MP3, smartphone-uri etc.

1.2 Testarea bateriilor-defecte și soluții

Un acumulator este alcătuitdin două materiale metalice diferite și dintr-un electrolit.Dacă punem o monedă de cupru și una de nichel într-o jumătate de grapefruit obținem un

acumulator.O baterie industrială este mult mai sofisticată decât una obținută dintr-un grapefruit.

Cu toate acestea, pentru ca un acumulator să funcționeze corect el trebuie întreținut.Un program bun de întreținere poate preveni sau cel puțin poate reduce costurile și deteriorările echipamentelor importante.

Chiar dacă exită mai multe aplicații pentru acumulatoare, în general cele de back-up sunt instalate din două motive:

Pentru a proteja și susține echipamentele importante în timpul penelor de rețea

Pentru a evita pierderea fluxurilor de încasări(venituri) ca urmare întreruperii furnizării unor servicii

Tipuri de defecte:

-pierdere treptată a capacității

-carbonatarea

-efecte ale încărcării de menținere

-cicluri de încărcare/descărcare

-scurtcircuite

-scurgerea bornelor

-coroziunea bornei pozitive

Filozofii de întreținere:

Există diferite metode și nivele de determinare pentru întreținerea și testarea acumulatoarelor.

-înlocuirea acumulatorului care se avariază sau se strică(întreținere și testare minimă sau deloc)

-înlocuirea după un anumit timp(întreținere și testare minimă sau deloc)

-o întreținere adecvată și un program de testare pentru a ne asigura că acumulatoarele sunt într-o stare bună prelungesc durata lor de viață și stabilesc momentul optim de înlocuire.Un program de întreținere incluzând inspecția, testarea capacității și impedanței, facilitează urmărirea stării de sănătate a acumulatorului.

Cum se face întreținerea?

Există un număr de standarde și de practici ale societățiilor pentru testarea acumulatoarelor.De obicei acestea includ inspecții (observații, acțiuni și măsurători efectuate în condiții normale de regim) și teste ale capacității. Cele mai cunoscute sunt standardele IEEE:

IEEE 450 pentru Pb-acid imersate

IEEE 1188 pentru Pb-acid VRLA etanșate

IEEE 1106 pentru Nichel-Cadmiu

1.3 Metode și aparate pentru testarea bateriilor

Adesea ne dorim să stabilim dacă o baterie este defectă sau dacă este capabilă să fie reîncărcată sau care este capacitatea de încarcare și care este starea actuală de încărcare.În funcție de acești factori se poate decide dacă bateria ar trebui înlocuită sau nu.De asemenea acești factori pot fi interpretați și pe baza rezultatelor se pot stabili parametrii optimi pentru încărcarea acelei baterii.În numeroase aplicații industriale este necesar ca bateriilor a căror sarcină a fost epuizată, să fie rapid reîncărcată pentru o reutilizare ulterioară.Aceste baterii prezintă capacități mari de încărcare, de ordinul sutelor de amperi și de obicei sunt baterii de tip acid, cum ar fi acumulatorul plumb-acid.

O metodă de încărcare, frecvent utilizată în comerț, este tehnica de alimentare a bateriei la tensiune constantă.Această metoda constă în aplicarea unei tensiuni constante la bornele bateriei într-un interval de timp prestabilit.Repetabilitatea acestei tehnici duce la modificarea capacității reale de încărcare a bateriei, pe măsură ce aceasta îmbătrânește.De un real ajutor ar fi un test care ar determina capacitatea reală a bateriei.

Apoi, acumulatorul este încărcat cu un curent aproximativ constant, stabilit de operator, în funcție de capacitatea nominală a bateriei.Fiindcă, într-o perioadă de timp, capacitatea reală a bateriei poate să difere semnificativ de capacitatea nominală, curentul de încărcare poate fi prea mare.O altă problemă ce ar putea apărea este ca durata de încărcare să fie insuficientă pentru a încărca bateria în mod satisfăcător.Acest lucru survine din faptul că bateria prezintă un nivel de încărcare relativ scăzut.O soluție ar fi determinarea stării de încărcare sau a nivelului de încărcare.

Pentru aceasta, se dorește obținerea caracteristicii dinamice curent-tensiune a bateriei, în funție de starea sa de încărcare.Dependența curent-tensiune este obținută prin alimentarea acumulatorului cu un curent variabil, de formă triunghiulară, și măsurarea tensiunii de ieșire.Cu un astfel de scenariu, un microprocesor este utilizat pentru a controla curentul de încărcare care este furnizat bateriei și pentru a obține caracteristica curent-tensiune.Discontinuitățile care apar la anumite nivele de tensiune pot indica o stare de defecțiune.Panta caracteristicii poate oferi o reprezentare a capacității de încărcare efectivă a bateriei.Ca un exemplu suplimentar, așa numita tensiune de circuit deschis, tensiunea obținută pe o caracteristică curent-tensiune atunci când curestul bateriei este substanțial egal cu zero, oferă o informație despre starea de încărcare a bateriei.

În mod obișnuit, o celulă LiFePo4 produce o tensiune de aproximativ 3.2V, însă tensiunea reală a acesteia este o funcție a stării sale de încărcare.Celulele conectate în serie reprezintă o problemă deoarece cea mai slabă celulă poate afecta performanța întregului banc.Defectarea uneia dintre ele va duce la defectarea întregului banc, întrucât acestea sunt legate în serie.

O metodă de protejare reprezintă egalizarea tensiunii acestora.Tensiunea fiecărei celule nu trebuie să depășească o anumită valoare de prag.Pentru aceasta trebuie redusă rata de încărcare sau chiar oprirea încărcării atunci când se apropie de valoarea maximă.

1.4 Funcțiile unui sistem de management al bateriilor

Funcțiil unui BMS conceput pentru un vehicul hibrid sau electric sunt următoarele:

• Monitorizarea condițiilor celulelor individuale ce alcătuiesc bateria

• Menținerea tuturor celulelor în limitele lor de funcționare

• Menținerea celulelor în parametrii optimi de funționare

• Furnizarea unui mecanism "Fail Safe" în caz de condiții necontrolate, pierderi de comunicări sau abuzuri

• Izolarea bateriei în caz de urgență

• Compensarea pentru eventualele dezechilibre ale parametrilor celulei din lanțul bateriilor

• Setarea punctului de funcționare al bateriei pentru a permite absorbția sarcinilor la frânare regenerativă fără supraîncărcarea bateriei.

• Furnizarea de informații privind starea de încărcare (SOC) a bateriei. Această funcție este adesea menționată ca "Indicatorul de combustibil"

• Furnizarea de informații privind starea de sănătate (SOH) a bateriei. Această valoare oferă o indicație a stării de sănătate a unei baterii folosite față de o baterie nouă.

• Furnizarea de informații pentru afișajele șoferului și pentru alarme

• Estimarea energiei ramase în baterii (Necesar doar vehiculelor complet electrice)

• Acceptarea și implementarea instrucțiunilor de control de la sistemele de vehicule aferente

• Furnizarea algoritmului optim de încărcare pentru încărcarea celulelor

• Furnizarea de pre-încărcare pentru a permite testarea impedanței de sarcină înainte de pornire și încărcarea în două trepte pentru a limita curenții de pornire

• Furnizarea de mijloace de acces pentru încărcarea celulelor individuale

• Răspunsul la modificările modului de funcționare al vehiculului

• Înregistrarea utilizării bateriei. (Frecvența, amploarea și durata condițiilor de funcționare)

• Asigurarea unei funcționări la parametrii minimi în cazul unui defect.

1.5 Implementări BMS

În practică există multe modalități de implementare a unui BMS.Vom prezenta în continuare două dintre modalitățile cele mai întâlnite.

MASTER-SLAVE

Această metodă organizează celulele în blocuri sau module, cu un singur dispozitiv slave care gestioneaă fiecare modul.Fiecare celulă are un senzor de temperatură și conexiuni pentru a măsura tensiunea, toate fiind conectate la echipamentul ce monitorizează starea celulei și implementează echilibrarea celulară.Mai multe stații slave pot fi conectate la master, care monitorizează curentul și îl integrează în timp pentru a calcula consumul de curent.Folosind datele de tensiune și de temperatură de la echipamentele de tip slave, va calcula nivelul de încărcare.Masterul controlează contactorul principal de izolare a bateriei care declanșează protecția bateriei ca răspuns la datele de la senzorul de curent principal sau la datele de tensiune și temperatură de la senzori.Tot modului msater se ocupă și de comunicația cu celelalte echipamente.

Această configurație are avantajul că nu are nevoie de plăci cu circuite imprimate conectate la celule individuale, iar bateriile de înaltă tensiune pot fi adaptate prin adăugarea mai multor module.

CONFIGURAȚIE BMS DE TIP ÎNLĂNȚUITĂ

Topologia înlănțuită utilizează o mică placă de circuite imprimate slave simplu conectată la fiecare celulă pentru a adapta senzorii de tensiune și temperatură cu un convertor de la analog la digital, precum și un comutator de by-pass de curent pentru a permite echilibrarea celulei prin manevrarea încărcăturii și o comunicație cu izolație capacitivă încorporată pentru recepționarea și transmiterea datelor în formă digitală. Sclavul își ia puterea din celula pe care o monitorizează și o singură magistrală de date cu trei fire RS 485 conectează nodurile de la toți sclavii la maestru, care efectuează sondaje pe fiecare nod la rândul său și solicită o actualizare a condițiilor celulare.

Echipamentele de tip slave nu efectuează nici o prelucrare a semnalelor, în afară de conversia A/ D, deoarece toate acestea sunt efectuate de către master, împreună cu toate funcțiile de monitorizare, protecție și comunicații.Principalele avantaje ale acestei topologii sunt designul și construcția mai simplă, precum și potențialul său pentru o mai mare fiabilitate într-un mediu auto.

Fig.1.2 Comparație configurație Master-Slave și BMS de tip înlănțuită

Sursa:[22]

1.6 Sisteme BMS existente pe piață

EMUS BMS Mini este un sistem independent de gestionare a bateriilor cu litiu pentru baterii compuse din până la 16 celule litiu. Are toate funcțiile BMS cheie integrate într-un singur dispozitiv:

Tensiunile și măsurătorile temperaturii

Măsurarea curentului bateriei

Echilibrarea celulelor

Contactor integrat pentru protecția bateriei

Circuit integrat de preîncărcare pentru a permite pornirea ușoară a controlorilor de motor

Conectivitate la diferite tipuri de încărcătoare

Conectivitate la intrările pentru a controla BMS și bateria

Conectivitate la ieșiri pentru a indica starea bateriei și comanda

Conectivitate pentru telefoane inteligente Android și iOS pentru control și configurare

Fig.1.3 EMUS BMS

Sursa:[23]

Aplicații:

Roboți

Scutere

Biciclete

motociclete

Vehicule ușoare

Depozite mobile

Modele grele RC

Specificații:

Numărul de celule: 6 … 16

O tensiune a celulei: 1.000 … 4.950 V

Tensiunea acumulatorului: DC 15.0 V … 67.2 V

Temperatura de funcționare: -40 ° C … + 80 ° C

Putere consumată (activă): 50 mW

Putere consumată (somn): 0,5mW

Curent de echilibrare: până la 200mA

Curentul maxim al contactorului interior: 75A

interfețe:

CAN v2.0 A / B

LIN

RS-232 pentru monitorizare de la distanță,

I / O digitale,

Interfață de conectivitate fără fir Smartphone

ISL94202 Series Charge/Discharge Path 3-to-8 Cell Li-ion Battery Pack Monitor este un circuit integrat ce permite realizarea unei monitoriări pentru acumulatori cu 3 până la 8 celule. Acesta monitorizează cu precizie, protejează și echilibrează celulele pentru a asigura o funcționare optimă și în siguranță. Acest model poate fi configurat ca unitate autonomă, dar poate fi și utilizat cu un microcontroler extern care comunică printr-o interfață I2C.

Caracteristici cheie:

• Opt monitoare de tensiune ce suportă celule de tipul Li-ion CoO2, Li-ion Mn2O4, și Li-ion FePO4

• Control individual al pachetelor – nu este nevoie de microcontroler

• Opțiuni de protecție multiple de tensiune (fiecare programabil la 4,8 V; valoare digitală pe 12 biți) și niveluri de protecție la supracurent selectabile

• Timp programabil de detecție / recuperare pentru supratensiune, subtensiune, supracurent și condiții de scurtcircuit

• Regiștrii de configurare / calibrare păstrați în EEPROM

• Detectarea conectării bateriei.

• Circuitele integrate de încărcare / descărcare FET

• Echilibrarea celulelor utilizează FET-uri externe cu stari interne sau microcontroler extern

• Intrare în stare de consum redus după perioade de inactivitate

• Citirea curentului de încărcare și descărcare.

Fig.1.4 ISL94202

Sursa:[24]

Cap. 2 Labview

2.1 Mediul de dezvoltare LabVIEW

LabVIEW(National Instruments, Austin, TX) este un mediu de programare și achiziție a datelor analogice și digitale, care permite achiziționarea și prelucrarea flexibilă a acestora. Lansat pentru Macintosh în 1986, LabVIEW este frecvent folosit pentru achiziții de date, automatizări industriale, instrument de control pentru o diversitate de platforme, inclusiv Microsoft Windows, diverse sisteme UNIX, Linux și Mac OS. LabVIEW este un acronim pentru Laboratory Virtual Instrumentation Engineering Workbench fiind un mediu de dezvoltare pentru limbaje grafice.Limbajelor grafice le este asignată denumirea de limbaje „G”.

A evoluat de la un program care putea trimite, primi și integra datele către și de la instrumentele de laborator echipate cu GPIB(magistrală cu scop general, conform cu standardul IEEE-488), într-un sistem care poate accepta date atât în format analogic cât și în format digital și putea efectua o analiză pe aceste seturi de date.A fost primul software care a inclus tehnici grafice, care fac programarea mai vizibilă pentru utilizator.Programare grafică înseamnă că instrucțiunile sunt reprezentate prin ferestre grafice pe ecran și nu prin linii de cod.Într-un program LabVIEW, execuția nu este controlată de ordinea în care instrucțiunile au fost scrise ci, mai degrabă, de datele generate.De exemplu, subrutinele care utilizează date provenite de la o placă de conveersie A/D ca intrări, nu sunt executate până la obținerea datelor.

Dezvoltatorii LabVIEW au utilizat mereu termenul de “Instrument Virtual”(VI), care este de fapt, imitarea instrumentelor de măsură din lumea reală.Fiecare VI are trei componente: o diagramă bloc, un panou frontal și un panou de conectori.Panoul de conectori este folosit pentru a reprezenta un VI în diagramele bloc ale altora, care apelează un VI.Panoul frontal este construin folosind comenzi și indicatoare.Controlerele sunt intrări și permit utilizatorului să furnizeze informații către VI.Indicatorii sunt ieșiri și indică sau afișează rezultatele bazate pe intrările VI-ului.Diagrama bloc conține codul sursă grafic.Toate obiectele plasate în panoul frontal vor apărea pe diagrama bloc ca terminale.Acest panou conține, de asemenea, structuri și funcții care efectuează operații asupra comenzilor și furnizează date către indicatori.Structurile și funcțiile se găsesc în paleta de funcții și pot fi plasate în diagrama bloc.Controlerele, indicatorii, structurile și funcțiile sunt denumite noduri.Nodurile sunt conectate între ele cu ajutorul firelor.Un VI poate fi rulat ca un program, cu panoul frontal care servește ca interfață utilizator.

Avantajul programării grafice este că codul este flexibil și reutilizabil.Subrutinele pot fi salvate într-o bibliotecă și reutilizabile,fără alte modificări.Acest lucru reduce timpul de dezvoltare de noi programe.Aceast program software necesită însă o cantitate mare de putere de procesare și memorie. Abordarea grafică permite nonprogramatorilor să creeze programe prin tragere și plasare a reprezentărilor grafice ale echipamentelor, cu care sunt deja familiar.Pentru algoritmi complecși sau coduri la scară largă, este important ca un programtor să posede o cunoștere extinsă a sintaxei LabVIEW.Este posibil să se creeze aplicații distribuite, care să comunice printr-un model client-server și astfel să fie mai ușor de implementat datorită naturii paralele a limbajului G.Cea mai nouă versiune este cea lansată în luna mai 2018.

Beneficii:

1.Interfațare cu alte dispozitive

LabVIEW include suport pentru interfața cu dispozitive și instrumente.Interfața utilizatorilor cu dispozitivul hardware se face prin scrierea directa pe magistrala de date(USB, GPIB,Serială) sau utilizând drivere de nivel înalt, specifice dispozitivului.

2.Compilarea codurilor

LabVIEW include un compilator care produce codul nativ pentru platforma procesorului.Acest lucru crește performanța.Codul grafic este tradus în codul mașină de un compilator.Sintaxa LabVIEW este strict aplicată în timpul procesului de editare și este compilată atunci când este cerută să se ruleze sau dupa salvare.În cel din urmă caz, executabilul și codul sursă sunt fuzionate într-un singur fișier.Executabilul rulează cu ajutorul programului, care conține un cod pre-compilat pentru a efectua sarcini comune care sunt definite de limbajul G. Mediul de rulare face ca acest cod să poată fi portabil între platforme.În general, codul LabVIEW poate fi mai lent decât codul C compilat echivalent, deși diferențele se găsesc adesea mai mult la optimizarea programelor decât la viteza de execuție inerentă.

3.Biblioteci numeroare

LabVIEW conține un număr mare de biblioteci care înglobează funcții pentru achiziția de date, generare de semnale, analiză, matematică, statistici, condiționarea semnalelor etc. care sunt asociate cu captarea datelor de la senzorii hardware.LabVIEW include, de asemenea, o componentă de programare bazată pe text, numită MathScript cu funcții suplimentare pentru prelucrarea semnalelor, analiză și matematică.MathScript poate fi integrat cu programarea grafică utilizând nodurile de script și o sintaxă compatibilă în general cu MATLAB.

4.Programare în paralel

Se pot programa foarte ușor mai multe sarcini care sunt efectuate în paralel prin intermediul multithreading-ului.Acesta este un avantaj deosebit pentru automatizarea sistemului de testare, unde este o practică obișnuită de a rula procese precum secvențierea testelor, înregistrarea datelor și interfața hardware în paralel.

5.Ecosistemul

Datorită longevității și popularității limbajului LabVIEW și abilității utiliatorilor de a-și extinde funcțiile, un larg ecosistem de add-on-uri de la terți s-a dezvoltat prin contribuțiile comunității.Acest ecosistem este disponibil în rețeaua de instrument LabVIEW, care este pe piață atât pentru add-on-urile gratuite, cât și pentru cele plătite.

2.2 Mediul de programare LabVIEW

Programele LabVIEW sunt numite instrumente virtuale deoarece au aspectul și funcționarea asemenea unor instrumente fizice.LabVIEW conține un set cuprinzător de elemente pentru achiziționarea, analizarea, afișarea și stocarea datelor, precum și instrumente care vă ajută să depanați codul pe care îl scrieți.

Când creăm un VI nou, vor apărea două ferestre, cea a panoului frontal și cea a diagramei bloc.

1)Panoul frontal

Când deschidem un VI existent sau când creăm unul nou, apare fereastra Front Panel.Aceasta este interfața VI-ului cu utilizatorul.În Fig2.1 putem vizualiza cum arată această fereastră.

(1)Front Panel (2)Bara de unelte (3)Paleta de controlere

Fig. 2.1 Exemplu de Front Panel

a)Paleta de controlere

Aceasta conține crontrolere și indicatorii folosiți pentru a crea Front Panel.Accesarea se face din fereastra Front Panel prin selectarea opțiunii Vizualizare->Palete de control.Paleta de controlere este împărțită în mai multe categorii, care pot fi expuse sau nu, în funcție de nevoile dvs.În Fig2.2 este prezentată paleta de controlere cu toate categoriile expuse.Pentru a vizualiza sau ascunde categoriile(subpalete), se face clic pe butonul Personalizare și se selectează Schimbați paletele vizile.

Fig. 2.2 Paleta de controlere

b)Controlere și indicatori

Fiecare VI are un panou frontal pe care îl puteți proiecta ca interfață de utiliztor.De asemenea acestea se pot utiliza ca o modalitate de a trece intrările și de a primi ieșiri atunci când apelati un VI dintr-o altă diagramă bloc.Creați interfața de utilizator a unui VI prin plasarea comenzilor și a indicatorilor pe panoul frontal al unui VI.Controlerele sunt de obicei butoane, cadrane, glisoare și șiruri de caractere.Ele simulează dispozitivele de intrare instrumentală și furnizează date în diagrama bloc a VI-ului.Indicatorii sunt de obicei grafice, diagrame, LED-uri și șiruri de stare.Indicatorii simulează dispozitivele de ieșire ale instrumentului și datele de afișare pe care le obține sau le generează schema bloc.

Fig 2.1 are două comenzi, numărul de măsurători și întârzierea.Are un indicator, un grafic XY numit Temperature Graph.Utilizatorul poate schimba valoarea de intrare pentru comenzile Număr de măsurători și Întârziere.Utilizatorul poate vedea valoarea generată de VI pe indicatrul Temperature Graph.VI generează valorile indicatorilor bazați pe codul creat, pe diagrama bloc.Fiecare controler și indicator are un tip de date asociat.De exemplu, dispozitivul Întârziere este de tip numeric.Cele mai utilizate tipuri de date sunt numeric, boolean și șir.

i)Controlere numerice și indicatoare

Tipul de datae numeric poate reprezenta numere de diferite tipuri, cum ar fi real sau întreg.Cele mai utilizate obicte numerice sunt controlerul numeric și indicatorul numeric.Obiectele precum contoarele, butoanele, reprezintă, de asemenea, date numerice.Pentru a introduce și a modifica valori într-un control numeric, se face clic pe increment sau decrement, sau se face dublu clic pe număr, se introduce un număr nou și se apasă tasta Enter.

(1)Buton incrementare/decrementare (2)Controler numeric (3)Indicator numeric

Fig. 2.3 Controlere și indicatori numerici

ii)Controlore și indicatoare booleene

Tipul de date boolean reprezintă date care au două stări posibile TRUE sau FALSE, ON sau OFF.Acestea sunt utilizate pentru a introduce și a afișa valori booleene.Obiectele booleene simulează comutatoare, butoane și LED-uri.

Fig. 2.4 Controlere și indicatori booleeni

iii)Controlere și indicatori de tip șir de caracter

Tipul de date Sir de caracter este o secvență de caractere ASCII.Acestea se utilizează pentru a primi comenzi de tip text, cum ar fi o parolă sau un nume de utilizator.Cele mai frecvente obiecte de tip șir de caracter sunt tabelele și casetele de introducere așa cum se arată în Fig2.5.

Fig. 2.5 Controlere și indicatori de tip șir de caracter

2)Diagrama bloc

Diagrama bloc include obiecte terminale, subVI, funcții, constante,structuri și fire, care transferă date între celelalte obiecte ale diagramei bloc.

(1)Indicatori (2)Fire (3)Noduri (4)Controler

Fig. 2.6 Exemplu de diagramă bloc împreună cu panoul frontal corespunzător

După ce se crează panoul frontal, se adaugă codul utilizând reprezentările grafice ale funcțiilor.Diagrama bloc conține codul sursă grafic.

a)Terminale

Obiectele din panoul frontal apar ca terminale în diagrama bloc.Terminalele sunt porturi de intrare și de ieșire care schimbă informații între panoul frontl și diagrama bloc.Ele sunt analoage parametrilor și constantelor din limbajele de programare bazate pe text.Tipurile de terminale includ terminale de control sau indicator și terminale de noduri.Terminalele de indicator și control aparțin comenzilor și indicatorilor panoului frontal.

b)Controlere, indicatori și constante

Acestea se comportă ca niște intrări și ieșiri ale algoritmului diagramei bloc.Să considerăm implementarea algoritmului pentru aria unui triunghi:

Aria=.5*baza*înălțimea

În acest algoritm, baza și înălțimea sunt intrări iar Aria este ieșirea.Utilizatorul nu poate schimba constanta 0.5, prin urmare aceasta nu apare in panoul frontal.

Fig. 2.7 Aria unui triunghi Panoul frontal

Fig2.8 arată posibilă implementare a algoritmului.Această schema are patru terminale diferite create de două controlere, o constantă și un indicator.

(1)Controler (2)Indicator (3)Constanta

Fig. 2.8 Diagrama bloc pentru calcului ariei unui triunghi

Observați că diafragmele Base și Height prezintă aspect diferit față de terminalul Area.Există două caracteristici distinctive între un control și un indicator pe diagrama bloc.Prima este o săgeată pe terminal care indică direcția fluxului de date.Controlerul are săgeți care arată că datele părăsesc terminalul, în timp ce indicatorul are o săgeată care arată că datele intră in terminal.A doua caracteristică distinctive este conturul terminalului.Controlerele au margine mai groasă, iar indicatorii au o margine mai subțire.

c)Nodurile diagramei bloc

Nodurile sunt obiecte din schema bloc care au intrări și/sau ieșiri și realizează operații atunci când se execute un VI.Ele sunt similar cu declarațiile, operatorii, funcțiile și subrutinele din limbajele de programare bazate pe text. Nodurile pot fi funcții, subVI, expresii VI sau structuri. Structurile sunt elemente de control al procesului, cum ar fi structurile case, for sau while.

i)Funcții

Funcțiile sunt elementele de operare fundamentale ale LabVIEW. Funcțiile Adunare și scădere din Fig2.6 sunt noduri de funcții. Funcțiile nu au panou frontal sau diagrame bloc, dar au panouri conector. Dând dublu-clic pe o funcție se selectează funcția. O funcție are un fundal galben pal pe pictograma sa.

ii)SubVI

După ce construiți un VI, îl puteți folosi într-un alt VI. Un VI numit din schema bloc a altui VI este numit subVI. Puteți reutiliza un subVI în alte VI-uri. Pentru a crea un subVI, trebuie să creați un panou de conectori și să creați o pictogramă. Un nod subVI corespunde unui apel de subrutină în limbaj de programare bazat pe text. Nodul nu este subVI-ul însuși, la fel ca o declarație de apel de subrutină într-un program. O diagramă bloc care conține mai multe noduri subVI identice apelează același subVI de mai multe ori.

Controalele și indicatorii subVI primesc date și trimit datele către schema bloc a apelantului VI. Când faceți dublu clic pe un subVI din diagrama bloc, apare fereastra panoului frontal. Panoul frontal include comenzi și indicatoare. Diagrama bloc include fire, ferestre, funcții, eventual subVI-uri și alte obiecte LabVIEW.

Fiecare VI afișează o pictogramă în colțul din dreapta sus al ferestrei panoului frontal și al fereastrei diagramă bloc. Un exemplu de pictogramă implicită este afișat aici. O pictogramă reprezintă o reprezentare grafică a unui VI. Pictograma poate conține atât text cât și imagini. Dacă utilizați un VI ca un subVI, pictograma identifică subVI pe diagrama bloc a VI. Pictograma implicită conține un număr care indică numărul de VI-uri noi pe care le-ați deschis după lansarea LabVIEW.

Pentru a utiliza un VI ca un subVI, trebuie să construiți un panou de conector așa cum este arătat mai sus. Panoul conector este un set de terminale pe pictograma care corespunde comenzilor și indicatorilor acelui VI, similar cu lista de parametri a unui apel pentru funcții în limbaje de programare bazate pe text. Accesați panoul conector făcând clic dreapta pe pictograma din colțul din dreapta sus al ferestrei panoului frontal. Nu puteți accesa panoul conector din pictograma din fereastra diagramei bloc. O pictogramă subVI are un fundal alb pe pictograma sa.

iii)Express VI

Express VI-urile sunt noduri care necesită cabluri minime deoarece le configurați cu casete de dialog. Utilizați expresii VI pentru activități comune de măsurare. Consultați subiectul Express VIs al Ajutorului LabVIEW pentru mai multe informații. Ele apar pe diagrama bloc ca noduri expandabile cu pictograme înconjurate de un câmp albastru.

iv)Paleta de funcții

Paleta de funcții conține VI-uri, funcțiile și constantele pe care le utilizați pentru a crea diagrama bloc. Accesați paleta Funcții din schema bloc prin selectarea funcției Vizualizare »Paletă de funcții. Paleta de funcții este împărțită în mai multe categorii; puteți afișa și ascunde categorile pentru a se potrivi nevoilor dvs. Figura 2.9 prezintă o paletă Funcții cu toate categoriile expuse și extinderea categoriei.

Fig. 2.9 Paleta de funcții

2.3 Programarea grafică

LabVIEW urmează un model de flux de date pentru executarea unui VI.Un nod în diagram se execută numai atunci când va primi toate intrările necesare.Atunci când un nod se execute, acesta produce la ieșire date, și transmite datele către nodul următor în calea fluxului de date.Deplasarea datelor prin noduri determină ordinea de execuție a VI-urilor și funcțiile pe diagram bloc.

Visual Basic,C++, Java și majoritatea limbajelor de programare bazate pe text urmează un flux de control al execuției programului.Ordinea secvențială a elementelor programului determină ordinea de execuție a unui program.

Firele

Datele între obiecte se transferă prin intermediul firelor.Fiecare fir are o singură sursă de date, dar poți lega la mai multe VI-uri și funcții pentru a citi acea data.Firele sunt de diferite culori, stiluri, grosimi, depinzând de tipul de date.

Un fir rupt apare ca o linie punctată neagra cu un X roșu la mijloc, ca în imaginea de mai jos.Firele rupte pot apărea din mai multe motive, cum ar fi atunci când încerci să conectezi două obiecte care au tipuri de date incompatibile.

Fig. 2.10 Fir rupt

Fig. 2.11 Exemple de fire

Trebuie să conectați firele la intrările și ieșirile care sunt compatibile cu datele transferate prin firul. De exemplu, nu puteți conecta o ieșire de la o matrice la o intrare numerică. În plus, direcția firelor trebuie să fie corectă. Trebuie să conectați firele la o singură intrare și la cel puțin o ieșire. De exemplu, nu puteți conecta împreună doi indicatori. Caracteristicile care determină compatibilitatea cablurilor includ tipul de date al comenzii și / sau indicatorului și tipul de date al terminalului. De exemplu, dacă un comutator are o margine verde, puteți trage un comutator la orice intrare cu o etichetă verde pe un Express VI. Dacă un buton are o margine portocalie, puteți conecta un buton la orice intrare cu o etichetă portocalie. Cu toate acestea, nu puteți conecta un buton portocaliu la o intrare cu o etichetă verde. Observați că firele au aceeași culoare ca terminalul.

Obiecte cu cablare automata

Pe măsură ce mutați un obiect selectat aproape de alte obiecte din diagrama bloc, LabVIEW desenează fire temporare pentru a vă arăta conexiuni valide. Când eliberați butonul mouse-ului pentru a plasa obiectul pe diagrama bloc, LabVIEW conectează automat firele. De asemenea, puteți conecta automat obiecte aflate deja pe diagrama bloc. LabVIEW conectează terminalele care se potrivesc cel mai bine și nu conectează terminalele care nu se potrivesc.

Implicit, cablarea automată este activată atunci când selectați un obiect din paleta Funcții sau când copiați un obiect aflat deja în diagramă bloc, apăsând tasta <Ctrl> și trăgând obiectul. Cablarea automată este dezactivată implicit când utilizați instrumentul de poziționare pentru a muta un obiect aflat deja în schema bloc.

Cap3.Descrierea hardware a sistemului

3.1 Schema bloc a sistemului

Fig. 3.1 Schema bloc a sistemului de management al bateriilor

Modulele din partea dreaptă a schemei bloc au rol în achiziționarea datelor necesare monitorizării curentului, tensiunilor și a temperaturilor.Monitorizarea curentului se face prin intermediul unui senzor de curent(ACS711), monitorizarea tensiunilor se va face prin intermediul a patru amplificatoare operaționale montate în configurație de amplificator operational diferențial(LM358).LM358 este o capsulă care conține 2 amplificatoare operaționale.În aplicația prezentată vom utiliza doar unul din amplificatoarele capsulei pentru a evita zgomotul ce ar rezulta în urma utilizării celor două amplificatoare din capsulă.Monitorizarea temperaturii se va face cu un senzor de temperatură(LM35).

Datele sunt preluate de către unitatea centrală(microcontrolerul) și prelucrate pentru a putea afișa parametrii monitorizați.Informațiile se transmit și la un PC, iar aici se va dezvolta o aplicație în Labview.Releul se va activa, prin comandă de la microcontroler, pentru a conecta sarcina, în vederea descărcării celulelor.

3.2 Simularea circuitului de măsurare

Pentru simularea circuitului de măsurare am ales ca program de simulare TINA.Tina este un software de proiectare a circuitelor electronice bazat pe modele SPICE.Se pot efectua simulări a circuitelor analogice, digitale și mixte precum și design PCB.

Fig. 3.2 Rezultatele simulării în TINA

Cele 4 baterii înseriate au fost reprezentate prin 4 surse de tensiune constantă, fiecare de valoare 3.2V.Cele 4 amplificatoare operaționale cu configurație de amplificator diferențial prezintă câte un filtru la ieșire.Senzorul de current a fost simulat prin intermediul unei rezistențe de șunt(de valoare foarte mica).Tensiunea de la bornele șuntului este amplificată de un alt amplificator diferențial.La ieșirea acestuia s-a făcut iar filtrare.Circuitul de descărcare este reprezentat de 4 sarcini egale, comandate individual de 4 relee.Rezultatele obținute în urma simulării sunt evidențiate în tabelul din partea dreaptă a schemei.

3.3 Celula LiFePO4

Bateria LiFePO4 sau LFP(ferofosforat de litiu), este un tip de baterie reîncărcabilă, care utilizează LiFePO4 ca material pentru catod și un electrod de carbon grafit cu colector de current ca anod.Toxicitate scăzută, performanțe bine definite, stabilitate pe termen lung sunt câteva dintre avantajele acestor celule.

LiFePO4 utilizează o chimie derivată din litiu-ion și împărtășește multe avantaje și dezavantaje ale acestora.Cu toate acestea , există diferențe semnificative.LFP oferă durată de viață mai lungă decat bateriile litiu-ion.Fosfatul de litiu este mai tolerant la condițiile de încărcare maximă și este mai puțin stresat decât sistemele bazate pe Li-ion atunci când este menținut la tensiuni ridicate pe o perioadă îndelungată.Tensiunea nominală a bateriei LiFePO4(3.2V) este mai mică decât cea a celulei Li-ion(3.2V).Ca la toate celulele, temperaturile scăzute scad performanțele, iar temperaturile ridicate scurtează durata de viață.

La fel ca bateriile reîncărcabile pe bază de nichel și spre deosebire de bateriile litiu-ion, celulele LiFePO4 au o tensiune de descărcare foarte constantă.Tensiunea rămâne aproape 3,2V în timpul descărcării până când celula este epuizată.Aceasta permite celulei sa furnizeze practice, putere până a descărcare, putând simplifica sau chiar elimina necesitatea circuitelor de reglare a tensiunii.

Datorită ratelor de descărcare diferite între celule, pot apărea problem de egalizare între celule, odată cu creșterea duratei de viață a acestora.Rezolvarea pentru această problema este utilizarea unor celule de bună calitate sau prin utilizarea unor sisteme de balansare.Acestea vin însă cu dezavantajul costului ridicat.

Valorile mai ridicate de descărcare necesare pentru accelerare, greutate redusă și durată de viață mai mare fac acest tip de baterie ideală pentru biciclete și mașini electrice.Celulele LFP sunt acum utilizate și pentru lămpile solare în detrimental celulelor NiCd.Tensiunea de lucru mai mare(3,2V) permite unei singure celule să comande un LE, fără a avea nevoie de un circuit de amplificare.Deoarece celulele LFP de dimensiuni AA au o capacitate de numai 600mAh, este de așteptat doar 10 ore de funcționare.Cu toate acestea, în cazul în care descărcarea este ocazională, astfel de sisteme funcționează bine și în cazul în care lumina solară este mai slabă, deoarece elementele electronice ale lămpii asigură curenți de sub 1mA.De asemenea aceste celule pot fi conectate la panourile fotovoltaice fără circuite complexe. Celulele LFP ameliorează problemele de coroziune, condensare și murdărie associate cu suportul bateriei și contactele celulă-celulă, corespunzătoare sistemelor exterioare.

Spre deosebire de bateriile plumb-acid, bateriil pe bază de LiFePO4 își mențin tensiunea la borne aproape constantă pe durata ciclului de descărcare, chiar și la curenți mari.

În figura următoare se pot observa aceste aspecte.

Fig. 3.3 Bateria Pb acid vs bacteria LiFePO4

Sursa:[24]

În cadrul prezentului proiect vom folosi celule CALB CA180AH, 3.2V,180Ah care au următoarele specificații.

Tabelul 3.1. Specificații celule LiFePO4

Sursa: [25]

Fig. 3.4 Curba de descărcare pentru celula LiFePO4

Sursa:[26]

Pentru reîncărcarea unei baterii, se va folosi inițial un curent de încărcare constant ceea ce determină o creștere a tensiunii bateriei, până la 80% din procesul de reîncărcare.Urmează apoi etapa de obsorbție, când tensiunea este constanta și curentul scade până când bateria este complet încărcată, ceea ce de obicei semnifică cei 20% rămași din procesul de reîncărcare.

Fig. 3.5 Profil de încărcare pentru celula LiFePO4

Sursa:[27]

Fig. 3.6 Comparație între bateria LiFePO4 și bateria LA

3.4 Modulele pentru alimentare

3.4.1 Regulatorul de tensiune

Utilizarea unui microcontroler și a altor circuite integrate implică necesitatea unei tensiuni de alimentare constante, de valoare mică, respectiv 5V.

Tensiunea minimă pe bancul de 4 celule este 10V(2.5Vx4) iar tensiunea maximă este de 14V(3.65Vx4).Pentru alimentarea celor 4 amplificatoare diferențiale am folosit un regulator de tensiune(L7805CV) deoarece acesta dă la ieșire o tensiune constantă, independentă de variațiile tensiunii de intrare, ale curentului de sarcină sau ale temperaturii, iar zgomotul este foarte mic spre deosebire de un convertor DC-DC care lucrează în regim de comutație, unde zgomotul este foarte mare, deci tensiunea de ieșire are variații ce pot fi supărătoare.

Fig. 3.7 L7805CV și schema electronică de conectare

Sursa:[28]

Regulatorul de tensiune este alimentat de la bancul de baterii cu 12V iar acesta oferă la ieșire tensiunea de 5V.Atât la intrare cât și la ieșire am conectat câte un condensator electrolitic și unul ceramic, în paralel.Am adăugat și un LED pentru a arăta prezența tensiunii de alimentare a regulatorului.Pentru curenții accidentali ce pot apărea am adăugat o diodă Zener între pinul de masă si planul de masă.

Fig. 3.8 Testarea regulatorului de tensiune

Tot în etapa de testare am efectuat și o serie de măsurători pentru diferite tensiuni de intrare, pentru a verifica stabilitatea tensiunii de ieșire.Rezultatele obținute sunt evidențiate în tabelul următor:

Tabelul 3.2 Rezultate experimentale pentru regulatorul de tensiune

În domeniul de interes pentru aplicația noastră, și anume [12-14](V), observăm că tensiunea este stabilizată la valoarea 8.46V cu oscilații de doar 1mV ceea ce nu afectează performanțele circuitul nostru.

3.4.2 Convertorul DC-DC

Pentru alimentarea senzorului de curent s-a utilizat un convertor de tensiune DC/DC ce coboară tensiunea de alimentare, și anume 12V, la o tensiune constantă de 5V.Această sarcină este realizată de sursa coborâtoare de tensiune MP1584EN.

Fig. 3.9 Modul DC-DC Step Down MP1584

Sursa: [29]

3.5 Monitorizarea tensiunilor

În cadrul acestui proiect sunt utilizare 4 celule LiFePO4 cu o tensiune nominală de 3.2V montate în serie.Astfel, tensiunea de la borna pozitivă a bancului de baterii este de 12.8V nominal.În cazul în care se utilizează mai multe celule, tensiunea bancului va fi egală cu numărul de celule înmulțit cu tensiunea unei celule.

Microcontrolerul ATmega328P suportă pe pinii de intrare analogică maxim 5V ceea ce înseamnă că acesta poate să citească tensiunea unei celule însă nu ar putea citi tensiunea pe întregul banc de celule.Pentru aceasta ar trebui montat un circuit intermediar care ar putea face conversia tensiunii de la bornele bancului de celule într-o tensiune ce poate fi citită de microcontroler.

Pentru măsurarea tensiunilor de pe fiecare celulă am folosit câte un amplificator operațional în configurație de amplificator diferențial.Factorul de amplificare a fiecărui amplificator este 1.Astfel tensiunea citită la intrare va fi redată și la ieșire.

Fig. 3.10 Amplificatorul diferențial utilizat pentru citirea tensiunilor

Notând tensiunea aplicată pe intrarea neinversoare în amplificator cu Vbat+ iar tensiunea aplicată pe intrarea inversoare cu Vbat- și ținând cont ca prin bornele amplificatorului operațional circulă un curent neglijabil, tensiunea de ieșire(Vout) va avea urmatoarea formulă:

Vout=Vout|Vbat-=0+Vout|Vbat+=0

Vout|Vbat-=0= Vbat+ (configurație neinversoare)

Vout|Vbat+=0=Vbat-(configurație inversoare)

Vout= Vbat+ Vbat-

Formula generală pentru tensiunea de ieșire a unui amplificator diferențial este:

Vout=A(Vbat+-Vbat-), unde A reprezintă factorul de amplificare.

Cum valorile rezistențelor sunt aceleași rezultă că factorul de amplificare este unitar.Astfel tensiunea de la ieșirea fiecărui amplificator va fi egală cu tensiunea aplicată la intrare, exact ceea ne și dorim, fiecare amplicator să citeasca tensiunea de pe fiecare celulă.

Pentru a avea curenți de pierdere mici, s-au ales rezistențe cu valori mari(220kOhm).În cazul acesta, curenții de pierderi sunt aproximativ 39mA.

Fig. 3.11 Dispunerea celor 4 amplificatoare operaționale-TOP și BOTTOM

După etapa de montare a amplificatoarelor diferențiale a urmat etapa de testare. Pentru anumite valori de intrare s-a măsurat valoarea tensiunii la ieșire.Valoarea tensiunii de intrare a fost modificată cu ajutorul potențiometrului din figură, alimentat la 5V.Cu ajutorul multimetrului s-a măsurat tensiunea de ieșire pentru fiecare din cele 4 amplificatoare.

Fig. 3.12 Testarea amplificatoarelor diferențiale

Rezultatele obținute în urma măsurătorilor efectuate sunt evidențiate în tabelul de mai jos.

Tabelul 3.3 Măsurarea tensiunii de ieșire pentru diferite tensiuni de intrare pentru cele 4 amplificatoare

Pentru acest proiect am ales amplificatorul operațional LM358, având 2 amplificatoare în aceeași capsulă.Acest amplificator operațional acceptă tensiuni de alimentare între 3V și 32V.Am ales să alimentez amplificatoarele operaționale la 8.4V, folosind un regulatorul de tensiune, L7805CV.

Fig. 3.13 LM358

Sursa:[30]

3.6 Monitorizarea temperaturii

Pentru monitorizarea temperaturii rezistențelor de sarcină s-a folosit senzorul de temperatură LM35.Informațiile despre temperatură pot ajuta la ajustarea curentului de încărcare sau descărcare sau se poate utiliza pentru un eventual sistem de climatizare.

Monitorizarea temperaturii se va face cu senzorul de temperatură LM35.Acesta este un senzor care poate fi montat direct pe suprafața de măsurat. În configurația realizată în acest proiect, senzorul poate măsura doar temperaturi pozitive, cuprinse între 0-150 °C, tensiunea de ieșire fiind proporțională cu temperatura în grade Celsius și variind cu pași de 10mV/°C. Pentru a-l face capabil să măsoare și temperaturi negative, fiind necesară montarea unei rezistențe la ieșire.

Fig.3.14 Senzorul de temperatură LM35

Sursa:[31]

LM35 nu are nevoie de calibrare externă pentru a obține o acuratețe de 0.5°C la temperatura ambiantă sau 0.75°C în domeniul [-55;150] °C.Dispozitivul poate fi folosit cu alimentare simplă sau cu alimentare duală.Acesta se încălzește foarte greu(0.08°C), întrucât are un consum de numai 60uA.

Fig. 3.15 Configurație LM35

Alimentarea senzorului se poate face la tensiuni cuprinse între 4V și 20V.În cadrul sistemului, senzorul va fi alimentat de la o sursă de tensiune de 5V.Sursa de tensiune este reprezentată de un modul DC-DC Step Down MP1584.

3.7 Monitorizarea curenților

Monitorizarea curentului se face utilizând senzorul cu efect Hall ACS712T20.Efectul Hall apare când un conductor traversat de un curent electric , este supus unui câmp magnetic perpendicular pe direcția curentului și se manifestă prin apariția unei tensiuni, denumită tensiune Hall.

Fig. 3.16 Senzor de curent ACS712T20

Sursa:[32]

Modulul are la baza circuitul integrat ACS712 având următoarele caracteristici de funcționare:

• Tensiune de alimentare: 5V;

• Curent consumat: 10mA;

• Tensiune maximă la intrare: 2,1 kV RMS;

• Curent maxim măsurat: 20A;

• Rezistența internă: 1,2 mili ohmi;

• Tensiunea de ieșire: 100mV / A.

Senzorul returnează o valoare de tensiune direct proporțională cu curentul citit, respectiv 100 mV pentru fiecare amper. Măsurarea curentului se face bidirecțional astfel că este necesar să se țină cont de un offset de 2,5V. Tensiunile ce depașesc 2,5V corespund unui curent pozitiv, iar tensiune sub această valoare corespund unui curent negativ.

Fig. 3.17 Integratul ACS712

Sursa:[33]

Acest sensor nu necesită folosirea de circuite suplimentare.Microcontrolerul poate recepționa direct valoare de tensiune corespunzătoare curentului prin intermediul intrării analogice.

3.8 Placa de dezvoltare

Placa de dezvoltare este echipată cu un set de pini analogici și digitali de intrare/ieșire care pot fi interfațați cu diferite plăci de expansiune sau alte circuite.Placa are 14 pini digitali, 6 pini analogici și poate fi programată cu Arduino IDE(Integrated Development Environment) , o aplicație cross-platform scrisă în Java, prin intermediul unui cablu USB de tip B.Poate fi alimentat de la un cablu USB sau de la o baterie externă de 9V, deși acceptă tensiuni între 7 și 20V.

Fig. 3.18 Arduino Uno

Sursa:[34]

Am ales acest microcontroler deoarece este foarte bine documentat atât de producător, cât și de alți utilizatori.Programele Arduino pot fi scrise în orice limbaj de programare cu un compilator capabil să producă un cod mașină binar.

Tabelul 3.4 Parametrii Arduino Uno

Sursa:[35]

Fig. 3.19 Arduino Uno Pinout

Sursa:[36]

3.9 Afișajul LCD

Pentru afișarea informațiilor către utilizator am ales un afișaj LCD cu 4 linii și 20 coloane. Ecranul cu matrice de cristale lichide conține un controler și un driver cu ajutorul cărora se pot reprezenta simboluri, semne alfanumerice, caractere japoneze și poate fi configurat să funcționeze împreună cu un microprocesor.

Pentru aplicația noastră vom avea nevoie de doar 4 pini de date(DB4-DB7, conectați la pinii digitali de I/O ai ATmega 328P.DB0-DB3 vor fi lăsați neconectați.VSS, fiind asociat cu o tensiune variabilă, va fi conectat la alimentare prin intermediul cursorului unui potențiometru de 10kOhm, folosit pentru reglarea contrastului ecranului.Schema de integrare a LCD-ului în proiect se găsește în figura 3.19.Pinul de enable va fi conectat la un pin digital de I/O, iar pinul R/W va fi conectat la masă deoarece LCD-ul primește comenzi de scriere de la microcontroler.

Tabelul 3.5 Pini LCD 4X20

Sursa:[37]

Fig. 3.20 Conectare ecran LCD

3.10 Rezistoarele de sarcină

Pentru descărcarea acumulatorului s-au folosit diferite sarcini pasive.Rezistoarele sunt confecționate din sârmă de nichelină.Lungimea firului fiecărui rezistor este de 2m și 2cm diametrul spirei.În urma testelor făcute, s-a observat că un rezistor de 0.6Ω, confecționat dintr-un metru de sârmă de nichelină, căruia i se aplică o tensiune de 3.2V va consuma 3.6A și va ajunge la o temperatură de 90°C.

Fig. 3.21 Măsurarea curentului și temperaturii prin rezistența de sarcină

Deși mărimea fizică a unei celule nu are nicio relevanță cu privire la valoarea tensiunii generate, are totuși importanță atunci când luam în considerare rezistența acesteia și prin urmare determină cantitatea maximă de curent ce o poate genera în circuit. Orice celulă voltaică posedă o anumită rezistență internă datorată electrozilor și soluției electrolitice. Cu cât pila este mai mare, cu atât este mai mare suprafața de contact a electrozilor cu electrolitul, ceea ce se traduce printr-o rezistență internă mai scazută. În mod normal bateriile sunt folosite în circuite în care rezistențele lor interne sunt neglijabile în comparație cu rezistențele sarcinilor (curentul de scurt-circuit este mult mai mare decât curentul normal prin sarcină), comportamentul lor în acest caz este foarte apropiat de cel al bateriilor reale.

Pentru determinarea rezistenței interne a bateriei am măsurat tensiunea la bornele bateriei în gol și tensiunea la bornele bateriei atunci când s-a conectat sarcina.Rezultatele sunt următoarele:

Vgol=3.328V

Vsarcină=3.288V

Pentru calcularea rezistenței interne a bateriei se va face diferența dintre cele 2 tensiuni și se va împărți rezultatul la curentul pe care îl consumă sarcina, și anume 3.6A.În urma calculelor rezulltă o rezistență internă a bateriei de 11mΩ.

3.11 Releul

Releul este o componentă electronică care produce anumite modificări, cum ar fi închiderea și deschiderea unui circuit, pe baza unui parametru(cum ar fi tensiunea electrică aplicată).Releu este un dispozitiv electronic constituit dintr-un întrerupător static și o bobină.În momentul în care la bornele bobinei se aplică un curent electric, aceasta generează un câmp magnetic care determină închiderea contactului.

Fig. 3.22 Releu 12V 30A

Pentru proiectul meu am folosit acest releu pentru comandarea descărcării sau opririi descărcării bancului de baterii.

Parametri:

Tensiunea nominală: 12V

Curentul maxim: 30A

Releul va primi comandă de la microcontroller pentru închidere sau deschidere.Circuitul de acționare a releului de către microcontroller este următorul:

Fig. 3.23 Circuit de comandă pentru releu

În urma măsurătorilor am obținut următoarele rezultate:

Curentul de collector: Ic=80mA

Curentul de bază: Ib=9mA

Tensiunea coletor-emitor: Uce=5.28V

Puterea consumată de tranzistor este P=Uce*Ic=5.28*80mA≈422mW

3.12 Realizarea circuitului

Exceptând modulele ce trebuie utilizate, este necesară proiectare și implementarea hardware a circuitului de măsură a tensiunilor de pe fiecare celulă.Acesta cuprinde un convertor de tensiune DC/DC necesar coborârii tensiunii de 12V la o tensiune constantă de 5V.Pe lângă acesta a mai fost mondat un regulator de tensiune folosit pentru alimentarea amplificatoarelor diferențiale, acesta coborând tensiunea de 12V la 8.4V.

Cele patru amplificatoare diferențiale au fost montate de asemenea pe această placă.Senzorul de temperatură este alimentat de la 5V, iar ieșirea acestuia este conectată la un pin analogic în Arduino.

Fig. 3.24 Circuitul de măsurare tensiuni și temperatura

Fig. 3.25 Testarea pentru achiziția temperaturii și a tensiunii

După amplasarea tuturor componentelor și după programarea microcontrolerului, macheta rezultată este prezentată în figura 3.26, unde se pot observa cele 4 celule înseriate conectate la circuitul de măsură.În conexiunea prezentată se face descărcarea primei celule(crocodilii cu fire galbene) pe cele două rezistoare de sarcină.

Fig. 3.26 Testarea sistemului

Cap.4 Descrierea software a sistemului

O parte din componenta software a acestui proiect este reprezentată de codul sursă ce este încărcat în memoria de program a microcontrolerului Atmega327P.

4.1 Programul pentru microcontroler

4.1.1 Mediul de dezvoltare Arduino IDE

Arduino vine cu un mediu de programare integrat(IDE).Programele Arduino pot fi scrise în orice limbaj de programare cu un compilator capabil să producă un cod mașină binar.Atmel oferă un mediu de dezvoltare pentru microcontrolerele sale, AVR Studio, și mai nou, Atmel Studio.

Este proiectat pentru a introduce programarea în lumea artiștilor și a celor nefamiliarizați cu dezvoltarea software. Include un editor de cod cu funcții ca evidențierea sintaxelor, potrivirea acoladelor și spațierea automată și oferă mecanisme simple cu un singur click, pentru a compila și a încărca programele în plăcuța Arduino. Un program scris în IDE pentru Arduino se numește sketch.

Arduino IDE suportă limbajele de programare C și C++ folosind reguli speciale de organizare a codului. Arduino IDE oferă o librărie software numită Wiring, din proiectul Wiring, care oferă multe proceduri comune de intrare și ieșire. Un sketch tipic Arduino scris în C/C++ este compus din două funcții care sunt compilate și legate cu un ciot de program main(), într-un program executabil cu o execuție ciclică:

setup(): o funcție care este rulată o singură dată la începutul programului, când se inițializează setările.

loop(): o funcție apelată în mod repetat până la oprirea alimentării cu energie a plăcuței.

După compilarea și legarea cu GNU toolchain inclus, de asemenea, în IDE, mediul de dezvoltare Arduino trimite comandă către programul avrdude pentru a converti codul executabil într-un fișier text codat hexazecimal, care poate fi încărcat în placa Arduino de un program de încărcare.

Multe plăcuțe Arduino conțin un LED, împreună cu un rezistor în serie, între pinul 13 și masă (GND), ceea ce este un amănunt util pentru multe teste.

4.1.2 Diagrama functională a programului

Fig.4.1 Organigramă program Arduino

4.1.3 Monitorizarea temperaturii

Pentru calcularea temperaturii rezistențelor de sarcină, s-a realizat citirea a 40 valori consecutive, la interval de 20ms și după, medierea acestora.Acest lucru s-a făcut pentru a returna o valoare cât mai exactă, astfel programul se asigură că valoare returnată este cât mai aproape de realitate, chiar dacă una din valorile citite este eronată.Ieșirea sezorului de temperatură este conectată la intrarea analogică A5 a plăcii Arduino Uno.Cu ajutorul funcției analogRead vom citi valoarea digitală, între 0 și 1023 dată de convertorul AD al plăcii Arduino.Valoarea colectată este transformată în V.Tensiunea este convertită în temperatură pe baza liniarității cu temperatura dată de sensor.Tensiunea de ieșire crește cu 10mV la creșterea cu 1 grad Celsius a temperaturii.

float CitireTemperatura()

{

int tmp=0;

int rept=0;

float temp;

while(rept<40)

{

tmp+=analogRead(A5);

rept++;

delay(20);

}

temp=tmp*0.048/4;

return temp;

}

Sursa[Anexa 1]

4.1.4 Funcția de monitorizarea tensiunii

Ieșirile celor 4 amplificatoare diferențiale, ce măsoară tensiunea pe fiecare celulă, sunt conectate la pinii analogici A0, A1, A2, A3 ai plăcii de dezvoltare.Se vor citi tensiunile digitale de pe fiecare celulă cu ajutorul funcției analogRead().Valorile citite sunt convertite în V.Totodată s-a făcut și calibrarea, înmulțind cu volori experimentale, obținute în urma testării, pentru redarea valorii cât mai exacte.Valoarea 5 reprezintă tesiunea de alimentare.Valorile 3.36, 3.33, 3.33, 3.33 reprezintă tensiunea pe cele 4 celule, în timp ce 3.1, 3.33, 3.2, 3.255 reprezintă valorile citite cu multimetrul la ieșirea amplificatoarelor de măsură.

void CitireTensiuni()

{

int volt1, volt2, volt3, volt4;

volt1 = analogRead(A3);

voltage1 = (volt1*5.0*3.36)/(1023.0*3.1);

volt2 = analogRead(A2);

voltage2 = (volt2*5.0*3.33)/(1023.0*3.33);

volt3 = analogRead(A1);

voltage3 = (volt3*5.0*3.33)/(1023.0*3.2);

volt4 = analogRead(A0);

voltage4 = (volt4*5.0*3.33)/(1023.0*3.255);

return 1;

}

Sursa:[Anexa 1]

4.1.5 Funcția de monitorizare a curentului

Pentru monitorizarea curentului am creat o funcție în interiorul căreia s-a făcut citirea valorii portului A4(pin pe care s-a legat ieșirea senzorului de curent).Senzorul de curent ACS712 returnează o tensiune ce corespunde curentului măsurat, fiecare 100mV corespunzând unui curent de 1 amper.

float CitireCurent()

{

int c;

int current1;

float current;

c=analogRead(A4);

current=((c-512)*50.0*4.0)/(1023.0*4.4);//512 offset

return current;

}

Sursa:[Anexa 1]

4.1.6 Funcția de transmisie a parametrilor către calculator

Pentru a transmite numerele utilizăm funcția Serial.print(), care pune la dispoziție datele pe portul serial ca un text ASCII.Această comandă poate lua mai multe forme.Numerele întregi sunt afișate folosind un caracter ASCII pentru fiecare cifră.La fel si numerele reale, alocându-se 2 spații pentru partea zecimală.Byții sunt trimiți ca un singur caracter.Șirurile de caractere sunt transmise ca atare.Transmisia serială este asincronă.

Serial.print(voltage1);

Serial.print(" ");

Serial.print(voltage2);

Serial.print(" ");

Serial.print(voltage3);

Serial.print(" ");

Serial.print(voltage4);

Serial.print(" ");

Serial.print(temp);

Serial.print(" ");

Serial.print(curent);

Serial.print(" ");

Serial.println(packvoltage);

Sursa:[Anexa 1]

4.2 Aplicația dezvoltată în Labview

4.2.1 Descrierea Toolbox-ul VISA Serial și al lucrului cu fișiere

Pentru dezvoltarea aplicației în mediul de programare Labview am utilizat următoarele funcții care se găsesc în paleta de funcții ale diagramei bloc.

– Functia VISA Configure Serial Port.vi initializeaza portul serial specificat prin câmpul VISAresource name cu setarile specificate.

Intrări:

Enable Termination Char dacă a apărut o eroare, statusul este TRUE, iar VI-ul nu mai este executat.

termination char folosit pentru terminarea operației de citire. Operația se termina atunci

când dispozitivul serial a citit caracterul de final.

timeout speficică timpul de citire și scriere a operațiilor, in milisecunde. De obicei este setat la 10000 ms.

VISA resource name specifica numele dispozitivului serial ce va fi utilizat.

baud rate spefică rata de transmisie. În mod implicit este setată la 9600.

data bits reprezintă numarul biților datei de intrare. Numarul biților este între 5 și 8. În mod implicit este setat la 8.

Parity specifică paritatea pachetelor de date primite/recepționate. Accepta doar urmatoarele valori : 0-nicio paritate (implicit), 1-paritate impară, 2-paritate pară, 3-paritate pentru bitul 1, 4-paritate pentru bitul 0.

error in descrie condițiile de eroare care apar înainte de execuția blocului.

stop bits specifică numarul de biți utilizat pentru a indica încheierea transmiterii unui pachet de date. Sunt acceptate doar urmatoarele valori: 10- 1 bit de stop, 15-1.5 biți de stop, 20-2 biți de stop.

flow control stabilește tipul de control utilizat de mecanismul de transfer a datelor.

Ieșiri:

VISA resource name out este o copie a numelui resurselor VISA pe care funcțiile le întorce.

error out conține informații referitoare la erorile care pot să apară.

– Functia VISA Write scrie date furnizate prin câmpul write buffer catre dispozitivul sau interfata specificata prin câmpul VISA resource name.

Intrări:

VISA resource name specifică numele dispozitivului ce va fi deschis.

write buffer specifică datele ce urmeaza a fi scrise in buffer.

error in descriere eventualele erori ce pot să apară înainte de execuția acestui nod.

Ieșiri:

VISA resource name este o copie a numelui resurselor VISA pe care funcțiile le întorce.

return count returnează numarul biților ce urmeaza a fi scriși.

error out conține informații referitoare la erorile care pot să apară.

– Functia VISA Close închide sesiunea de lucru cu dispozitivul sau interfata specificata de câmpul VISA resource name.

Intrări:

VISA resource name specifică numele dispozitivului ce va fi deschis.

error in descriere eventualele erori ce pot să apară înainte de execuția acestui nod.

Ieșiri:

error out conține informații referitoare la erorile care pot să apară.

Alte blocuri utilizate in cadrul aplicației software:

Build Array – Conectează mai multe matrice sau adaugă elemente la o matrice n-dimensională.

Fract/Exp String to Number-Convertește un șir de caractere într-un număr.

Comparatorul Greater/Less-Compară x cu y

Functiile care lucreaza cu fisiere permit efectuarea urmatoarelor operatii: deschidere\închidere fisier, scriere\citire în\din fisier, creare de directoare si de fisiere într-o anumita cale specificata de utilizator, obtinerea de informatii despre directoare precum si scrierea în fisiere a sirurilor de caractere, a numerelor, a tablourilor, s.a.m.d.

Aceste functii se gasesc în paleta de functii ale diagramei bloc.

– Functia Open/Create/Replace File.vi deschide un fisier existent, creaza unul nou sau înlocuieste un fisier în mod programabil sau interactiv utilizând o casuta de dialog.

– Functia Write File scrie date într-un fisier deschis specificat prin câmpul refnum.

– Functia Close File închide un fisier deschis specificat prin câmpul refnum si întoarce calea catre acest fisier.

4.2.2 Panoul frontal al aplicației

Fig. 4.2 Panoul frontal al aplicației

În partea stângă a ferestrei se realizează setările corespunzătoare pentru pornirea aplicației.Indicatorul “read buffer” ne permite vizualizarea valorilor transmise pe interfața serială.Partea din dreapta conține indicatori pentru afișarea valorilor instantanee precum și a variației în timp.Fiecare parametru monitorizat prezintă și o alarmă de minim și maxim, care se activează în momentul atingerii unor anumite valori.

4.2.3 Diagrama bloc a aplicației

În figura 4.3 este reprezentată diagrama bloc a aplicației.În partea din stânga se fac setările pentru interfața USB utilizată.În interiorul buclei loop avem funcții pentru calcularea și afișarea rezultatelor.Parametrii se vor transmite în mod continuu până la apasarea butonului stop.De asemenea, valorile înregistrare se vor scrie într-un fișier text, pentru utilizarea ulterioară a valorilor achiziționate.

Fig. 4.3 Diagrama bloc a aplicației

Inițial se va citi ce se află în buffer, adică valorile pentru cele 4 tensiuni(pe fiecare celulă), valoarea temperaturii, a curentului și tensiunea pachetului de baterii, toate aceste valori separate prin spațiu între ele.Următorul bloc de după VISA Read are rolul de a diviza șirul primit la intrare(read buffer) în 2 subșiruri, la întâlnirea caracterului spațiu.Conținutul primului subșir constituie temperatura, conținut care va intra într-o funcție de conversie a unui șir de caractere în număr, rezultatul obținut fiind afișat cu ajutorul indicatorului Tempertură.Se execute în continuare acești pași până la parcurgerea întreg read buffer.

Fig. 4.4 Datele din fișierul text creat de aplcația Labview

Cap. 5 Rezultate și concluzii

După realizarea întreg circuitului și asamblarea acestuia, am realizat testarea acestuia.Un ventilator a fost atașat pentru a scădea temperatura rezistențelor.Acesta dispune și de un senzor de temperatură.În funcție de temperatura citită de acesta, ventilatorul își mărește turația. Puterea totală disipată este de aproximativ 150W.

Fig. 5.1 Testarea sistemului. Rezitențele conectate pe celula 2

Fig. 5.2 Valori parametri

Fig. 5.3 Testarea sistemului.Rezistențele conectate pe celula 4

Concluzii

Realizarea acestui proiect m-a ajutat să înțeleg mai bine ce înseamnă să faci un proiect complet și m-a ajutat să-mi întăresc cunoștințele teoretice din domeniul electronicii și programării microcontrolerelor.Au existat mai multe versiuni ale proiectului, aceasta din urmă fiind superioară celor precedente.Forma finală a acestui proiect este și o optimizare a versiunilor initial gândite, atât partea hardware cât și partea software.

[1] Lucian-Andrei PERIȘOARĂ, Testarea Automata a Echipamentelor și Proceselor, note de curs

[2] L. A. Perișoară, I. C. Guran, D.C. Costache, “A passive battery management system for fast balancing of four LiFePO4 cells”, 24th International Symposium for Design and Technology in Electronic Packaging(SIITME), 25-28 Oct 2018, Iași, România

[3] https://patents.google.com/patent/US3873911A/en

[4] https://patents.google.com/patent/US4433294A/en

[5] CJ. Kalkman, LabVIEW a software system for data acquisition, data analysis, and instrument control, Journal of Clinical Monitoring Vol 11 No 1 January 1995

[6] National Instruments, LabVIEW Getting Started with LabVIEW, Part Number 323427A-01, 2003

[7] Lithium battery technologies, http://www.epectec.com/batteries/lithium-batterytechnologies.html

[8] CALB-40Ah-400Ah, https://www.ev-power.eu

[9]https://emusbms.com/?gclid=EAIaIQobChMIqcXiyKOM4wIVFOaaCh1XMAN4EAAYAiAAEgJU0_D_BwE

[10] İ. Aydın, Ö. Üstün, “A basic battery management system design with IoT feature for LiFePO4 batteries,” 10th International Conference on Electrical and Electronics Engineering (ELECO), Bursa, Turkey, 30 Nov.-2 Dec. 2017.

[11] H. R. Eichi, U. Ojha, F. Baronti, M. Y. Chow, “Battery management system – an overview of its application in the smart grid and electric vehicles,” IEEE Industrial Electronics Magazine, June 2013.

[12] LM35 Precision Centigrade Temperature Sensors, Texas Instruments

[13] The Battery Management System Design, http://bits2world.blogspot.com/

[14] National Instruments, LabVIEW User Manual, Part Number 320999E-01, 2003

[15] Davide Andrea, Battery management systems for large lithium-ion battery packs, editura Artech House, 2010

[16] Christopher D. Rahn, Chao-Yang Wang, Battery Systems Engineering, editura Wiley, 2012

[17] Isolated dc/dc converter, https://www.eeweb.com/profile/recom/articles/isolated-dcdcconverter

[18] Specification for LCD Module 2004A, Shenzhen Eone Electronics CO.,LTD

[19] Types of lithium ion, http://batteryuniversity.com/learn/article/types_of_lithium_ion

[20] https://epdf.pub/battery-management-systems-design-by-modelling.html

[21]https://en.wikipedia.org/wiki/Battery_management_system#/media/File:Akkuschutzschaltung_mit_Balancer_4S.jpg

[22] http://www.mpoweruk.com/images/bms_ring.gif

[23] https://emusbms.com/product-category/mini

[24] https://www.renesas.com/eu/en/

[25] https://files.ev-power.eu/inc/_doc/attach/StoItem/2946/190124_CALB_180AHA_2.pdf

[26] http://energetechsolar.com/180Ah-CALB-UL-Certified-Batteries

[27] https://www.powerstream.com/z/charge.jpg

[28] https://www.addicore.com/Addicore-L7805CV-5V-Voltage-Regulator-p/ad252.htm

[29] https://www.optimusdigital.ro/ro/surse-coboratoare-reglabile/166-modul-dc-dc-step-down-mp1584en.html?search_query=modul+dc+dc+step+down&results=28

[30] http://www.ti.com/lit/ds/symlink/lm358.pdf

[31] http://electrobist.com/product/lm35-temperature-sensor/

[32] https://www.optimusdigital.ro/en/hall-sensors/819-senzor-de-curent-hall-acs712-20-a.html

[33] https://www.allegromicro.com/en/Products/Current-Sensor-ICs/Zero-To-Fifty-Amp-Integrated-Conductor-Sensor-ICs/ACS712.aspx

[34] https://en.wikipedia.org/wiki/Arduino_Uno#/media/File:Arduino_Uno_-_R3.jpg

[35] https://www.farnell.com/datasheets/1682209.pdf

[36] https://components101.com/microcontrollers/arduino-uno

[37] https://www.openhacks.com/uploadsproductos/eone-1602a1.pdf

Anexa1

#include <LiquidCrystal.h>

LiquidCrystal lcd(2,3,4,5,6,7);

float packvoltage;

float voltage1,voltage2,voltage3,voltage4;

void setup()

{

pinMode(8,OUTPUT);

digitalWrite(8,LOW);

lcd.begin(20, 4);

lcd.setCursor(0,0);

lcd.print("V1= V V2= V");

lcd.setCursor(0,1);

lcd.print("V3= V V4= V");

lcd.setCursor(0,2);

lcd.print("T= C VP= V");

lcd.setCursor(6,2);

lcd.print((char)223);

lcd.setCursor(0,3);

lcd.print("I= A");

Serial.begin(9600);

}

void loop()

{

float tmp;

tmp=CitireTemperatura();

lcd.setCursor(2,2);

lcd.print(tmp,1);

float curent;

curent=CitireCurent();

lcd.setCursor(2,3);

lcd.print(curent,2);

CitireTensiuni();

lcd.setCursor(3,0);

lcd.print(voltage1,3);

lcd.setCursor(14,0);

lcd.print(voltage2,3);

lcd.setCursor(3,1);

lcd.print(voltage3,3);

lcd.setCursor(14,1);

lcd.print(voltage4,3);

packvoltage=voltage1+voltage2+voltage3+voltage4;

lcd.setCursor(14,2);

lcd.print(packvoltage,2);

// comanda releu protectie

if ((voltage1 > 3.0) && (voltage2 > 3.0) && (voltage3 > 3.0) && (voltage4 > 3.0))

digitalWrite(8,HIGH);

else

digitalWrite(8,LOW);

Serial.print(tmp);

Serial.print(" ");

Serial.print(voltage1);

Serial.print(" ");

Serial.print(voltage2);

Serial.print(" ");

Serial.print(voltage3);

Serial.print(" ");

Serial.print(voltage4);

Serial.print(" ");

Serial.println(curent);

}

float CitireTemperatura()

{

int tmp=0;

int rept=0;

float temp;

while(rept<40)

{

tmp+=analogRead(A5);

rept++;

delay(20);

}

temp=tmp*0.048/4;

return temp;

}

void CitireTensiuni()

{

int volt1, volt2, volt3, volt4;

volt1 = analogRead(A3);

voltage1 = (volt1*5.0*3.36)/(1023.0*3.1);

volt2 = analogRead(A2);

voltage2 = (volt2*5.0*3.33)/(1023.0*3.33);

volt3 = analogRead(A1);

voltage3 = (volt3*5.0*3.33)/(1023.0*3.2);

volt4 = analogRead(A0);

voltage4 = (volt4*5.0*3.33)/(1023.0*3.255);

return 1;

}

float CitireCurent()

{

int c;

int current1;

float current;

c=analogRead(A4);

current=((c-512)*50.0*4.0)/(1023.0*4.4);//512 offset

return current;

}

Similar Posts