![]() |
![]() |
|
Sursa de alimentare definita software
O lista intreaga de dezavantaje, care au mers pana la eliminarea de fum magic dintr-unul dintre DMM-uri (reparat intre timp) m-au facut sa explorez posibilitatea de a utiliza altceva. Varianta unei surse de laborator cu interfatare deja depasea bugetul pe care sunt dispus sa il aloc asa ca sm facut o inspectie rapida in cutiile cu maimute si am decis ca am tot ce imi trebuie sa imi fac o sursa mai desteapta.
Cum, la moda sunt receptoarele definite prin software, de ce nu as incerca o sursa de alimentare definita prin software?
Asadar, mi-am propus urmatoarele obiective pentru aceasta sursa de alimentare de laborator:
Proiectul a fost realizat in jurul unei placi de dezvoltare Arduino Uno, care urma sa realizeze masurarea in timp real a tensiunii si a curentului.
Sursa de alimentare principala a fost modificata dintr-o sursa generica in comutatie, de 12V/8A pentru a furniza circa 18V.
Reglarea tensiunii intre 1.2 si 14.5V se realizeaza cu un modul DC/DC in comutatie bazat pe XL4016E, capabil sa suporte 8A in varf de sarcina. Desi modulul respectiv suporta curent reglabil, aceasta functionalitate nu am folosit-o.
Este o sursa de alimentare generica, deschisa. Nu intru in detaliile modificarii acestei surse; in esenta acestea constau in inlocuirea divizorului rezistiv care alimenteaza dioda LED din circuitul optocuplor PC817 utilizat in bucla negativa de control a tensiunii.
Bineinteles, se poate folosi orice alta sursa disponibila, cu conditia ca tensiunea acesteia sa fie mai mare cu circa 4 V decat tensiunea pe care dorim sa o obtinem la bornele sursei. O sursa de laptop este excelenta, cele mai multe astfel de surse au 19V/4A.
Acesta este un modul destul de ieftin, bazat pe circuitul XL4016 si suporta curenti de pana la 10A. Pe piata sunt disponibile doua variante; una care permite controlul tensiunii si al curentului si o varianta care permite doar controlul tensiunii.
Oricare dintre acestea sunt potrivite pentru proiect. In imaginea de mai sus este prezentat modulul cu ambele optiuni. Potentiometrul din partea dreapta sus este cel utilizat pentru controlul variatiei tensiunii, cel de dedesubt pentru stabilirea pragului de curent la care se introduce limitarea.
Intrucat programul care gestioneaza sursa poate fi scris intr-o multitudine de variante, o sa prezint in cele ce urmeaza aspectele principale avute in vedere, schema si o varianta de software cu functionalitatile de baza.
Pe una din ele este citita valoarea cursorului unui potentiometru care are functii diverse, in principal de stabilire a pragurilor de curent si de tensiune fata de care actioneaza protectiile, pe doua se citesc tensiunile din care calculam mai apoi curentul absorbit de sarcina iar pe alte doua, dupa cum scriam mai sus, avem conectat afisajul LCD. Mai ramane o intrare disponibila pentru dezvoltari ulterioare.
In ceea ce priveste ADC-ul ATMEGA328, acesta are o rezolutie de 10 biti, adica poate reprezenta valoarea unei tensiuni continue in 1024 pasi. Daca ne raportam la tensiuni cuprinse intre 0 si 5V, pentru fiecare dintre cei 1024 de pasi corespund 0,0049V, adica putem masura tensiunea cu o rezolutie de 4,9 mV.
Fara a intra in subtilitatile conversiei AD, trebuie retinut ca masurarea valorilor analogice se realizeaza prin raportarea circuitului de conversie la o tensiune foarte precisa si stabila numita “tensiune de referinta”. Precizia masuratorii este in directa legatura cu precizia tensiunii de referinta intrucat, orice variatie a acestei tensiuni va afecta masurarea tensiunii observate.
ATMEGA328 permite corelarea ADC cu 3 surse de referinta; tensiunea de 5V cu care alimentam circuitul (Avcc), o referinta interna de tip “bandgap” de circa 1,1 V (teoretic) si o referinta externa (AREF), obtinuta dintr-un circuit separat de referinta, cu valoare maxima de 5V.
Una din probleme este legata de valoarea maxima a tensiunii pe care o putem masura in mod direct cu placa Arduino; intrucat tensiunea maxima la intrarea ADC este de 5v va fi necesar un divizor de tensiune care sa permita masurarea tensiunii de 12V, de exemplu.
Ce se intampla insa cu precizia masuratorii in acest caz? Ei bine, ea scade cu acelasi raport dintre tensiunea maxima si cei 5V. Asadar, daca avem in vedere un divizor de tensiune cu 6:1, care sa permita deci masurarea tensiunii maxime de 30 V, atunci si rezolutia ADC va scadea, de la 4,9mV la 24,5mV
Aceasta valoare este calculata pentru o referinta de 5 V (5/1024).
Daca insa vom alege referinta interna de 1,1V, rezolutia ADC va fi de 1,1/1024, adica 0.001 V, adica de 1mV. Ati putea spune imediat ca este o rezolutie mult mai buna, permitand masurarea cu o precizie formidabila. Totusi, valoarea maxima a tensiunii pe care o masuram la intrarea ADC va fi de 1,1V ceea ce inseamna ca avem nevoie de un divizor de tensiune de 30:1 pentru a putea masura aceeasi tensiune maxima de 30V. Drept urmare, rezolutia ADC va scadea la 30mV. Adica o rezolutie inferioara celei obtinute cu o referinta de 5V.
Desigur, intre 24,5 si 30 mV diferenta nu este atat de mare insa poate genera abateri consistente in masuratori care implica divizarea tensiunii de masurat.
Din acest motiv, am ales sa utilizez o referinta de 5V obtinuta din doua referinte shunt, de mare precizie, LM4050 (2,5V, 0,1%) inseriate, alimentate la 9V dintr-un stabilizator LM7809 din care se alimenteaza si placa Arduino.
Pentru a respecta curentul maxim suportat de circuitul LM4050, limitam curentul la circa 5mA cu o rezistenta de 800 Ohm.
Tensiunea maxima pe care o putem masura este, astfel, de 5 * 5 = 25V. Depasirea acestei valori poate duce la distrugerea portului ADC al chip-ului ATMEGA 328, motiv pentru care vom monta o dioda Zener de 5V1 pentru protectie.
Evaluarea practica a dovedit insa ca precizia acestuia lasa mult de dorit si ca semnalul analogic rezultat din masuratoare are abateri si zgomot inacceptabile fiind, cel mult, o aproximare a curentului care traverseaza senzorul Hall.
Drept urmare, am abordat masurarea curentului furnizat sarcinii prin masurarea tensiunii pe o rezistenta de 2,2 Ohm/25W instalata pe circuitul de minus al sursei si transformarea aritmetica ulterioara.
Pentru intrarea ADC destinata masurarii tensiunii respective se poate folosi doar o rezistenta de 1kOhm in serie cu intrarea ADC care, si ea, este protejata de o dioda Zener de 5V1.
-Tensiunea la bornele sursei se determina prin diferenta intre tensiunea masurata pe borna + si caderea de tensiune pe rezistenta de masurare a curentului, de 2.2 Ohm/25W. Deoarece valoarea exacta difera, este necesara o calibrare realizata pe valoarea reala a acestei rezistente, calibrare disponibila in software.
Calcularea valorilor se face prin masurarea celor doua tensiuni Vin si Vshunt fata de GND.
Aritmetic, se determina astfel Vload = Vin – Vshunt si I = Vshunt / Rshunt. Dupa determinarea aritmetica, aceste valori sunt utilizate de software pentru diferite functii.
-Pentru reducerea zgomotului digital (ambiguitate), valoarea parametrilor analogici (tensiuni) este realizata prin medierea aritmetica a unui numar de masuratori (sample) efectuate la interval de timp reglabil, de ordinul microsecundelor.
-Deoarece valoarea tensiunii Vin este controlata digital, din software, se pot implementa foarte usor functii de control la atingerea unor praguri minime sau maxime de tensiune sau de curent livrat, astfel ca sursa poate fi utilizata pentru alimentarea montajelor sau pentru incarcarea acumulatorilor.
Soft-ul propus (Firmware) este realizat cu functii distincte apelabile din bucla principala, fara delay(). Se pot astfel implementa functii de control rapide care sa raspunda la modificarea parametrilor (protectii ultrarapide). In varianta hardware prezentata, sunt necesare artificii software pentru extinderea functiilor insa nimic nu impiedica extinderea cu alte butoane si cu inca un potentiometru pe intrarea analogica libera.
-Serial monitor, care afiseaza in format ASCII informatia transmisa de microcontroller si
-Serial plotter, care afiseaza valorile in format grafic.
Din software, la compilare, putem alege formatul in care datele sa fie transmise spre calculator: csv (comma separated values) sau valori destinate afisarii grafice (separate prin spatiu). Daca alegem prima varianta, avem optiunea de a transmite si marca temporala (secunda) la care s-a efectuat masuratoarea tensiunii si a curentului, astfel incat seria csv sa poata fi afisata intr-un program cum ar fi Excel.
73 de YO3HJV, Adrian Florescu, yo3hjv@gmail.com
Articol aparut la 22-2-2021 4244 Inapoi la inceputul articolului |
Comentariul trebuie sa se refere la continutul articolului. Mesajele anonime, cele scrise sub falsa identitate, precum si cele care contin (fara a se limita la) atac la persoana, injurii, jigniri, expresii obscene vor fi sterse iar dupa caz se va ridica dreptul de a posta comentarii.
|
Copyright © Radioamator.ro. Toate drepturile rezervate. All rights reserved
Articole | Concursuri | Mica Publicitate | Forum YO | Pagini YO | Call Book | Diverse | Regulamentul portalului | Contact |