Continuăm să înțelegem opțiunile de implementare a unui voltmetru - ampermetru bazat pe un microprocesor.
Nu uitați de arhiva cu fișierele, vom avea nevoie de ele astăzi.
Dacă doriți să instalați indicatoare mari, va trebui să rezolvați problema limitării consumului de curent prin porturile MK. În acest caz, este necesar să instalați tranzistori tampon pe fiecare cifră a indicatorului.
Indicatoare de dimensiuni mari
Deci, circuitul discutat anterior va lua forma prezentată în Fig. 2. Pentru fiecare cifră a indicatorului au fost adăugate trei tranzistoare VT1-VT3 ale etapei tampon. Etapa tampon instalată inversează semnalul de ieșire al MK. Prin urmare, tensiunea de intrare bazată pe VT2 este inversă față de colectorul tranzistorului specificat și, prin urmare, este adecvată pentru a furniza o ieșire care formează virgulă la ieșire. Acest lucru face posibilă îndepărtarea tranzistorului VT1, care a fost anterior în circuitul din Fig. 1, înlocuindu-l pe acesta din urmă cu rezistența de decuplare R12. Nu uitați că valorile rezistoarelor din circuitele de bază ale tranzistoarelor VT1-VT3 s-au schimbat și ele.
Dacă doriți să instalați indicatoare cu dimensiuni neconvențional de mari, va trebui să instalați rezistențe cu rezistență scăzută (1 - 10 Ohmi) în circuitul colector al tranzistoarelor indicate pentru a limita supratensiunile de curent atunci când sunt pornite.
Logica de funcționare a MK pentru această opțiune necesită doar o ușoară modificare a programului în ceea ce privește inversarea semnalului de ieșire pentru controlul biților, și anume porturile RA0, RA1, RA5.
Să luăm în considerare doar ceea ce se va schimba, și anume subrutina deja cunoscută de noi sub numele de cod „Funcția de generare a indicației dinamice” în Lista nr. 2(vezi folderul „tr_OE_30V” din arhivă sau prima parte a articolului):
16. Vod Indicator ()( 17. while (show_digit.)< 3) { 18. portc = 0b111111; // 1 ->C 19. if (show_digit == 2)( delay_ms(1); ) 20. porta = 0b100111; 21. arata_cifra = arata_cifra + 1; 22. comutator (afișare_cifră) ( 23. cazul 1: ( 24. dacă (cifră1 == 0) ( ) else ( 25. Cod_la_PORT(DIGIT1); 26. PORTA &= (~(1)<<0)); //0 ->A0 27. ) break;) 28. cazul 2: ( 29. Cod_to_PORT(DIGIT2); 30. PORTA &= (~(1)<<1)); //0 ->A1 31. break;) 32. cazul 3: ( 33. Cod_to_PORT(DIGIT3); 34. PORTA &= (~(1)<<5)); //0 ->A5 35. break;) ) 36. Delay_ms(6); 37. dacă (RA2_bit==0) (PORTA |= (1<<2);// 1 ->A2 38. Delay_ms(1);) 39. if ((show_digit >= 3)!= 0) break; 40. ) show_digit = 0;)
Compara ambele variante. Inversarea semnalului pe portul RA (linia 20 din Lista nr. 2) este ușor de citit, deoarece este scris în formă binară. Este suficient să combinați ieșirile MK și numărul binar. În rândurile 19 și 37, au apărut condiții ușor ciudate care nu au existat la început. În primul caz: „întârzierea semnalului zero logic la portul RA1 în timpul indicației celei de-a doua cifre”. În al doilea: „dacă există un zero logic pe portul RA2, inversare”. Când compilați versiunea finală a programului, le puteți elimina, dar pentru simulare în PROTEUS sunt necesare. Fără ele, virgula și segmentul „G” nu vor fi afișate în mod normal.
De ce? - întrebi, pentru că prima variantă a funcționat de minune.
În concluzie, amintiți-vă cuvintele fierarului din filmul „Formula iubirii”: „...dacă o persoană a construit-o, alta o poate demonta oricând!”
Noroc!
Votul cititorului
Articolul a fost aprobat de 27 de cititori.
Pentru a participa la vot, înregistrați-vă și conectați-vă la site cu numele de utilizator și parola.În acest dispozitiv, autorul a folosit o metodă originală de control a unui indicator LED cu patru cifre și șapte elemente, cu semnale de la doar patru pini ai microcontrolerului. Programul de microcontroler oferă un mod de calibrare automată pentru voltmetru.
Conexiunea acum tradițională a unui indicator digital LED la un microcontroler prin intermediul unui convertor de cod serial la paralel 74HC595 necesită utilizarea a trei pini ai microcontrolerului pentru a controla convertorul de cod și încă un pin pentru fiecare cifră a indicatorului. Prin urmare, un indicator cu patru cifre necesită șapte pini. Acest lucru nu face posibilă utilizarea unor astfel de indicatori cu microcontrolere cu pini mici, de exemplu, cu PIC12F675, care are doar șase pini (fără a număra pinii de alimentare).
În a doua etapă, muchia ascendentă de la pinul 12 al 74HC595 scrie conținutul zero al registrului de deplasare în registrul de menținere. Acest lucru oprește complet indicatorul.
La a treia etapă, informațiile sunt încărcate în registrul de deplasare al microcircuitului 74HC595 folosind un cod serial generat de microcontroler la pinul 14 al microcircuitului. Pinul său 11 primește impulsuri de ceas.
La a patra etapă, cu o diferență de nivel crescândă la pinul 12 al microcircuitului 74HC595, informațiile din registrul său de deplasare intră în registrul de stocare, iar din cauza nivelurilor ridicate de la catozi, biții indicatori rămân stinși.
La a cincea etapă, pe catodul comun al descărcării, pentru care este destinată ieșirea codului paralel către ieșirile microcircuitului 74HC595, programul setează nivelul scăzut, pornind elementele sale în conformitate cu acest cod. În acest moment, procesarea întreruperii se termină, iar starea setată a indicatorului rămâne neschimbată până la următoarea întrerupere.
Pentru a controla un indicator pe opt biți, sunt necesare opt ieșiri de microcontroler. În acest caz, semnalele de la cei patru pini suplimentari controlează pur și simplu nivelurile de la catozii descărcărilor. Este de remarcat faptul că în acest caz este posibil să se utilizeze indicatori atât cu catozi comuni, cât și cu anozi comuni, elemente de conectare sau, respectiv, descărcări la ieșirile convertorului de cod. Din motivele expuse mai jos, este de preferat să se organizeze afișajul dinamic element cu element în primul caz și bit cu bit în al doilea.
Acum să vorbim despre un voltmetru care utilizează principiul descris.
Principalele caracteristici tehnice
Tensiune măsurată, V............... 0...80
Rezoluție de măsurare, V......0.1
Precizie.............0,5% + unități. ml. rezoluţie
Tensiune de alimentare, V............7...15
Consum de curent, mA, nu mai mult..................................30
Circuitul voltmetrului este prezentat în Fig. 1. Utilizează afișarea dinamică element cu element. În fiecare moment, un nivel ridicat este stabilit pe anozii unui grup de elemente cu același nume din toate cifrele indicatorului HG1. La bornele catodice comune ale descărcărilor în care aceste elemente ar trebui să strălucească, este setat un nivel scăzut, altfel un nivel ridicat. Vă rugăm să rețineți că elementele cu același nume pot fi activate simultan în toate categoriile, dar un singur element este activat în fiecare categorie în momentul actual. De aceea am ales să conectăm anozii elementelor la ieșirile microcircuitului DD2, a cărui capacitate de încărcare este mai mare decât ieșirile microcontrolerului.
Orez. 1. Circuit voltmetru
Cu o perioadă de întrerupere de 2 ms, rata de reîmprospătare a imaginii de pe indicator este de 64 Hz, iar clipirea acestuia este invizibilă pentru ochi. Metoda aleasă de indicare dinamică a făcut posibilă și înjumătățirea numărului de rezistențe (R4-R7) limitând curentul prin LED-urile indicatoare.
Microcontrolerul PIC12F675-I/P (DD1) rămâne neocupat în indicația dinamică a liniilor I/O GP0 și GP3. Primul este folosit ca intrare ADC; tensiunea măsurată îi este furnizată printr-un divizor R1R2. Pe linia GP3, în absența jumperului S1, datorită rezistenței R3, este setat un nivel logic ridicat, care servește ca un semnal care comută voltmetrul în modul de calibrare. Dacă jumperul este instalat, nivelul de pe acest pin este scăzut și voltmetrul funcționează normal.
Când porniți pentru prima dată voltmetrul cu jumperul S1 lipsă, indicatorul HG1 va afișa intermitent semnul din dreapta. În această stare, la intrarea dispozitivului trebuie aplicată o tensiune cât mai apropiată de 80 V, monitorizându-l cu un voltmetru standard. Cu o conexiune de scurtă durată a plăcuțelor de contact destinate jumperului S1, dispozitivul va calcula și va aminti coeficientul de calibrare și îl va utiliza în viitor.
Cu toate acestea, 80 V este o tensiune destul de ridicată și sunt posibile dificultăți în obținerea acesteia. În acest caz, în timp ce se indică valoarea tensiunii de referință, dispozitivul trebuie oprit și pornit din nou. , va apărea pe indicator, iar la următoarea oprire și pornire - , , din nou și mai departe într-un cerc. Calibrarea trebuie efectuată la cea mai mare tensiune disponibilă. Cu cât tensiunea de referință este mai mare, cu atât calibrarea este mai precisă. Dacă în momentul calibrării tensiunea de intrare diferă prea mult de tensiunea de referință, coeficientul nu va fi calculat și afișat pe indicator
După calibrare, opriți voltmetrul și, în final, instalați jumperul S1, altfel data viitoare când îl porniți va trebui să repetați totul din nou. Voltmetrul poate funcționa fără calibrare dacă jumperul S1 este deja instalat la prima pornire. În acest caz, folosește coeficientul scris în program, dar eroarea poate depăși 10%. Un punct în cifra din extrema dreaptă a indicatorului vă va avertiza despre acest lucru.
Conversia analog-digitală se realizează în modul „sleep” al microcontrolerului pentru a reduce interferența de la componentele sale de funcționare. Iese automat din această stare la finalizarea transformării.
Aparatul este alimentat de o tensiune de 5 V, obtinuta cu ajutorul unui stabilizator de tensiune integrat DA1. Puteți utiliza stabilizatorul 78L05 în locul celui indicat în diagramă doar ca ultimă soluție, deoarece stabilitatea tensiunii sale de ieșire este cu un ordin de mărime mai proastă. Fără a degrada parametrii, puteți utiliza stabilizatorul LP2951. Dioda Zener VD1 pentru o tensiune de 5,6 V împreună cu dioda de protecție internă a microcontrolerului îl protejează pe acesta din urmă de deteriorare atunci când tensiunea măsurată depășește valoarea admisă. Fără un limitator, tensiunea de alimentare a microcontrolerului în această situație poate crește critic.
Dispozitivul este asamblat pe o placă de circuit imprimat care măsoară 40x36 mm dintr-un laminat de fibră de sticlă acoperit cu folie unilaterală cu o grosime de 1,5 mm, prezentată în Fig. 2. Majoritatea rezistențelor și condensatoarelor sunt montate pe suprafață cu dimensiunea 0805. Rezistorul R1 pentru funcționare fiabilă la tensiune crescută este utilizat cu o putere de ieșire de 0,5 W. Condensatorul C1 poate fi instalat fie ca condensator ceramic, fie ca condensator de oxid, pentru care pe placă este prevăzut un loc desemnat C1.” Indicatorul FYQ-3641AHR-11 poate fi înlocuit cu altul din seria 3641A sau cu trei cifre. Seria 3631A fără refacerea plăcii. O fotografie a plăcii dispozitivului asamblat este prezentată în Fig. 3.
Lucrez la electronica radio de câțiva ani, dar îmi este rușine să recunosc că încă nu am o sursă normală de alimentare. Alimentez dispozitivele asamblate cu orice îmi vine la îndemână. Din tot felul de baterii pe jumătate moarte și transformatoare cu o punte de diode fără nicio stabilizare a tensiunii sau limitare a curentului de ieșire. Astfel de perversiuni sunt destul de periculoase pentru structura asamblată. În cele din urmă, am decis să asambleze o sursă de alimentare normală. Și am început asamblarea cu un amperi-voltmetru. Desigur, a fost necesar să se înceapă de la alta, dar așa cum este deja. Deoarece am făcut puțină programare, am decis să dezvolt eu un contor de afișare. Ecranul este un display de la Nokia-1202. Probabil că i-am torturat deja pe toată lumea cu acest afișaj, dar este de 3 ori mai ieftin decât HD44780 2x16 (cel puțin pentru noi). Un conector destul de lipit și caracteristici în general bune. Pe scurt - o opțiune bună pentru un contor de tensiune și curent.
Circuitul electric al unui amper-voltmetru digital pentru alimentarea cu energie electrică
Desenul unei plăci digitale amper-voltmetru
Prima și a doua linie afișează valorile medii ale tensiunii și curentului de la 300 de măsurători ADC. Acest lucru se face pentru o mai mare precizie a măsurătorilor. A treia linie afișează rezistența de sarcină calculată folosind legea lui Ohm. Mai întâi am vrut să mă asigur că iese consumul de energie, dar am făcut o rezistență. Poate mai târziu o voi schimba la putere. A patra linie afișează temperatura măsurată de senzorul DS18B20. Este programat să măsoare temperaturi de la 0 la 99 de grade Celsius. Trebuie instalat pe radiatorul tranzistorului de ieșire sau pe alt element de circuit unde există o încălzire puternică.
De asemenea, puteți conecta un răcitor la microcontroler pentru a răci radiatorul tranzistorului. Își va schimba viteza atunci când temperatura măsurată de senzorul DS18B20 se schimbă. Există un semnal PWM pe pinul PB3. Răcitorul este conectat la această ieșire printr-un comutator de alimentare. Cel mai bine este să utilizați un tranzistor MOSFET ca întrerupător de alimentare. La o temperatura de 90 de grade ventilatorul va avea viteza maxima. Este posibil ca senzorul de temperatură să nu fie instalat. În acest caz, a patra linie va afișa pur și simplu OFF. Conectam direct coolerul. Ieșirea lui PB3 va fi 0.
Există două opțiuni de firmware în arhivă. Unul pentru curentul maxim măsurat de 5 amperi, iar al doilea până la 10 amperi. Tensiunea maximă măsurată este de 30 volți. Conform calculelor, factorul de câștig al amplificatorului operațional LM358 este ales să fie 10. Pentru firmware diferit, trebuie să selectați un șunt. Nu toată lumea are capacitatea de a măsura sutimi de ohm și rezistențe de precizie. Prin urmare, în circuit există două rezistențe de reglare. Ele pot corecta măsurătorile.
În arhivă există și o placă de circuit imprimat. Există mici diferențe în fotografie - a fost ușor ajustată acolo. Un jumper a fost scos și dimensiunea este cu 5 mm mai mică în înălțime. Stabilitatea citirilor ampere-voltmetru este mare. Uneori plutește doar cu sutimi. Deși l-am comparat doar cu testerul meu chinezesc. Acest lucru este destul pentru mine.
Vă mulțumesc tuturor pentru atenție.
ARHIVA:
Varianta modernizata
Am adăugat doar un afișaj de o zecime din putere.Aici l-am modificat pentru a măsura până la 50A. Shunt 0,01 ohmi. Câștigul amplificatorului operațional este de aproximativ 6 până la 7. Va fi necesar să se recalculeze rezistențele. Siguranțele sunt aceleași ca înainte.
Aș dori să vă prezint atenției o versiune îmbunătățită a contorului de afișaj pentru o sursă de alimentare de laborator. A fost adăugată capacitatea de a opri sarcina atunci când este depășit un anumit curent prestabilit. Firmware-ul voltametrului îmbunătățit poate fi descărcat mai jos. Schema de circuit a unui contor digital de curent și tensiune.
La diagramă au fost adăugate și câteva detalii. Din comenzi există un buton și un rezistor variabil cu o valoare de la 10 kilo-ohmi la 47 kilo-ohmi. Rezistența sa nu este critică pentru circuit și, după cum puteți vedea, poate varia într-o gamă destul de largă. Aspectul pe ecran s-a schimbat puțin și el. Adăugat afișaj al puterii și amperi-oră.
Variabila curentului de declanșare este stocată în EEPROM. Prin urmare, după oprire, nu va trebui să configurați totul din nou. Pentru a intra în meniul de setări curent, trebuie să apăsați butonul. Prin rotirea butonului de rezistență variabilă, trebuie să setați curentul la care releul se va opri. Este conectat printr-un comutator tranzistor la pinul PB5 al microcontrolerului Atmega8.
În momentul opririi, afișajul va indica faptul că curentul maxim setat a fost depășit. După apăsarea butonului vom reveni la meniul de setare maximă curentă. Trebuie să apăsați din nou butonul pentru a comuta în modul de măsurare. Log 1 va fi trimis la ieșirea PB5 a microcontrolerului și releul se va porni. Acest tip de monitorizare curentă are și dezavantajele sale. Protecția nu va funcționa instantaneu. Declanșarea poate dura câteva zeci de milisecunde. Pentru majoritatea dispozitivelor experimentale, acest dezavantaj nu este critic. Această întârziere nu este vizibilă pentru oameni. Totul se întâmplă deodată. Nu a fost dezvoltat niciun PCB nou. Oricine dorește să repete dispozitivul poate edita ușor placa de circuit imprimat din versiunea anterioară. Schimbările nu vor fi semnificative.
Dacă aveți întrebări, vă rugăm să contactați forumul. Vă mulțumim pentru atenție. Boozer a completat amperi-voltmetrul.
ARHIVA:
forum