Dispozitiv automat de stocare a bateriilor auto pe PIC. Încărcător universal pentru microcontroler Încărcător ATmega8

Care a fost asamblat pentru testare într-o carcasă de pe o unitate cd. S-a dovedit că dispozitivul face o treabă excelentă cu funcțiile sale, încarcă și descarcă aproape orice baterie, în timp ce calculează capacitatea. Alternând ciclurile de încărcare și descărcare, bateriile pot fi recuperate. Într-o competiție recentă de idei, s-a sugerat să se facă o versiune mai umană.

Noul încărcător universal este alimentat prin USB de la un încărcător pentru smartphone sau tabletă. De asemenea, poate fi alimentat de la un port USB al computerului. Placa are micro-usb instalat, dar poate fi instalată orice altă opțiune. Există, de asemenea, o mufă pentru o mufă DC standard; atunci când alimentarea este furnizată prin el cu o tensiune mai mare de 5 volți, jumperul este scos de pe placă și partea logică începe să fie alimentată prin stabilizatorul LDO. Când este alimentat de la 5 volți, jumperul trebuie instalat (pur și simplu scurtcircuitează intrarea și ieșirea stabilizatorului de +5 volți).

Dispozitivul este așezat pe o placă de 10 * 12 cm. Indicatorul LCD 16 * 2 cu convertizor i2c este fixat pe stâlpii de montaj. Placa are terminale cu șuruburi pentru conectarea unei baterii reîncărcabile și o sarcină pentru descărcare, care poate fi un bec sau un rezistor puternic de ciment de 5W cu o rezistență de, de exemplu, 4,7 ohmi. Rezistența acestui rezistor este calculată prin formula R = U / I, unde U este tensiunea bateriei și I este curentul inițial de descărcare dorit. Dacă descărcarea nu este planificată, atunci sarcina poate fi lăsată neconectată. Managementul se realizează cu ajutorul a trei butoane. Informațiile sunt afișate pe afișaj, în plus, se folosește un semnal sonor mic fără generator încorporat și un LED. Cu cât LED-ul este mai luminos, cu atât lățimea impulsului este mai mare în modul de încărcare.

Circuitul încărcătorului este același ca în versiunea de testare originală, cu modificări minore. Tranzistoarele cu efect de câmp trebuie să fie cu un nivel logic, le puteți găsi pe plăcile computerelor. Tranzistoarele driverului de câmp cu canal p trebuie să fie curente, de exemplu - SS8050 și SS8550. Inductorul convertorului trebuie să poată rezista la curentul corespunzător.


click pentru a mari
Moduri de funcționare a încărcătorului universal inteligent:

  • Meniu principal. selectează parametrii de încărcare, descărcare, calibrare a voltmetrului
  • încărca. parametrii de încărcare actuali și setați sunt afișați pe ecran, este posibil să se schimbe parametrii direct în timpul procesului de încărcare. există o limitare a tensiunii și curentului la valorile specificate folosind PWM. sarcina este finalizată când se atinge tensiunea specificată și curentul de încărcare scade sub cel specificat.
  • deversare. controlul este similar cu încărcarea. descărcarea se termină când tensiunea sau curentul scade sub cele specificate.
În acest proces, miliamperi-ore sunt numărate, sunt afișate și la sfârșit. Pe baza valorilor calculate, puteți determina gradul de pierdere a capacității bateriei, adică. cat de uzat este. Dacă o baterie cu o capacitate de 1A/h preia 500mA/h sau preia 1A/h și dă 500mA/h, atunci resursa sa a fost deja epuizată semnificativ.

Calibrarea măsurării curentului în timpul încărcării și descărcării se realizează folosind rezistențe de reglare conform indicațiilor unui ampermetru exemplificator. Calibrarea voltmetrului se efectuează în același mod. Un conector ISP este furnizat pe placă pentru flash-ul microcontrolerului.

Această versiune a dispozitivului este destul de potrivită pentru utilizare, dar multe pot fi îmbunătățite. Placa poate fi făcută mai compactă prin plasarea suporturilor bateriei direct pe ea. Poate că va exista o altă versiune a dispozitivului, dacă există interes pentru el. Îți poți exprima tocmai acest interes punând un like pe orice rețea de socializare făcând clic pe butonul de sub articol. Cu cât este mai mult interes, cu atât va fi mai mult stimulent pentru a lucra la acest proiect, informațiile vor fi completate.

Cu urări, completări și precizări - sunteți bineveniți în comentarii.

PCB: În curând
firmware: în curând

Opțiunea „poporului” de încărcare aproape universală pe Aliexpress: Lii-100.

O ușoară modificare a încărcătorului universal, care vă permite să setați curentul de descărcare. Inițial, a fost determinată numai de rezistența rezistenței de sarcină. Cu această modificare, curentul poate fi ajustat în cadrul acestei valori, adică. curentul maxim este determinat de rezistența de sarcină, dar se poate seta una mai mică.

Rafinarea se poate face prin montare la suprafață sau pe o placă mică. Odată cu el, unele semnale se schimbă. Deci, semnalul de încărcare PWM (frecvență în jur de 66 kHz) este acum preluat de la OC1A, descărcarea PWM - de la OC1B, sunet - de la OC2. Pentru a face acest lucru, pe placă, va trebui să aruncați două rezistențe (mergând la OC1A și OC2) și să faceți o pauză de la PB0 nefolosit. Modificările din diagramă sunt afișate cu galben.

Amplificatorul operațional poate fi aplicat în același mod ca și pentru măsurarea curentului în partea principală a circuitului. Nu am găsit MCP6002, TLC2272 a fost instalat în schimb. Reglarea curentului de descărcare funcționează la fel ca în IMAX original. În acest caz, nu numai rezistența de sarcină se va încălzi, ci și controlerul de câmp Q1.

Deoarece pe toată durata utilizării dispozitivului l-am alimentat exclusiv de la USB, firmware-ul este optimizat pentru o tensiune de ieșire de cel mult 5 volți, pentru aproape toate bateriile „rotunde” acest lucru este suficient: puteți încărca și descărca cutii de litiu individuale. sau două baterii de nichel conectate în serie, curentul maxim - 2 amperi.

Frecvențămetru pe AT90S2313

Un contor de frecvență virtual este un „set” al unui program pentru computer și un simplu dispozitiv de măsurare, care este conectat la portul COM al computerului.Instrumentul virtual vă permite să măsurați frecvența, perioada, intervalele de timp și să numărați impulsurile.

Detalii:http://home.skif.net/~yukol/FMrus.htm

Recomand asamblarea unui design simplu care nu necesita configurare si, cel mai important, functioneaza! Microcontroler programatprogramator PonyProg - un programator excelent, simplu, gamă largă de microcontrolere programabile,funcționează sub Windows, interfața este rusă.


Revista radio N1 2002 Pentru baterii Ni-Cd. Vă permite să încărcați 4 baterii.



Contor de frecvență pe Pic 16F84A

Specificații frecvențămetru:

Frecvența maximă măsurată ............. 30 MHz;

Rezoluția maximă a frecvenței măsurate .. .10 Hz.

Sensibilitate de intrare .................. 250 mV;

Tensiune de alimentare ......................... 8 ... 12 V:

Consum de curent ............................ 35 mA


Detalii, firmware:http://cadcamlab.ru


Statie de lipit pe Atmega 8


Comutarea fierului de lipit și a uscătorului de păr se realizează prin comutatoarele PC. Uscătorul de păr este controlat de un tiristor, deoarece Uscător de păr de 110 V în loc de catod cu diodă R1 la V. 6.


Detalii, firmware: http://radiokot.ru/forum


Contor digital de capacitate fără lipire din circuit

Descrierea este dată în revista „Radio” nr. 6 2009. Structura este asamblată pe AT90S2313, fără modificări în firmware-ul utilizat Tiny2313. În Pon'ka am pus casetele de selectare pentru SUT1, CKSEL1, CKSEL0, restul sunt goale. Nu am instalat MAX631, e scump pentru noi, am decis sa-l alimentez de la sursa prin stabilizatorul 7805, R29, R32, R33 pus pe sursa plus. Pe lângă contorul de capacitate, în carcasă este montată o sondă pentru testarea tranzistoarelor fără lipire și un generator de semnal LF RF.



Contor de semiconductor bazat pe ATmega8

Dispozitivul poate:

Determinați conductorii semiconductorilor;
- determina tipul si structura;
- măsurarea parametrilor statici.
Măsoară diode, tranzistoare bipolare, tranzistoare cu efect de câmp JFET și MOS, rezistențe, condensatoare.


Contorul este realizat în același caz ca și contorul FCL, indicatorul este comutat între instrumente prin comutatorul PC.

Contor de frecvență, contor de capacitate și inductanță - contor FCL

Dispozitivul descris mai jos face posibilă măsurarea frecvențelor oscilațiilor electrice, precum și a capacității și inductanței componentelor electronice, cu o precizie ridicată pe o gamă largă. Designul are dimensiuni, greutate și consum minim de energie.

Specificații:

Tensiune de alimentare, V: 6 ... 15

Curent de consum, mA: 14 ... 17

Limite de măsurare:

F1, MHz 0,01 ... 65 **

F2, MHz 10 ... 950

De la 0,01 pF ... 0,5 μF

L 0,001 μH ... 5 H


Diagrama capului de la distanță


Mai multe detalii: http://ru3ga.qrz.ru/PRIB/fcl.shtml


Voltmetru miniatural bazat pe microcontroler ATmega8L


Aici luăm în considerare designul unui voltmetru pe un singur microcontroler ATmega8L și un indicator de la un termometru medical electronic. Gama de tensiuni DC măsurate este de ± 50 V. Ca o funcție suplimentară, este implementat un mod de sondă de sunet pentru a verifica integritatea firelor, a lămpilor incandescente. Dispozitivul intră automat în modul standby atunci când nu există măsurători. Microcontrolerul este alimentat de două celule alcaline miniaturale (baterii pentru un ceas de mână), am setat 1 celulă la 3v. Nu va fi nevoie să schimbați frecvent bateriile: consumul de curent în modul activ este de doar 330 μA, în modul de așteptare - mai puțin de 300 nA. Datorită designului și capabilităților sale în miniatură, dispozitivul este util și practic. Placa nu intră în carcasa termometrului și am făcut-o în carcasă de la flamaster. Și-a făcut propria placă, rezistențe R5-R7 instalate vetikal pe autobuze. VADZZ a ajutat la realizarea firmware-ului de la sursă datorită lui. Știfturi indicatoare de la stânga la dreapta, știfturi în partea de jos și cu fața către tine.

Schemă (pentru o diagramă la dimensiune completă, salvați imaginea pe computer).

Pentru mai multe detalii vezi: http://www.rlocman.ru/shem/schematics.html?di=63917

Memorie cu funcție de măsurare a capacității

Am vrut să măsor capacitatea bateriilor, contoarele importate sunt destul de scumpe, am găsit un circuit interesant și l-am asamblat. Funcționează bine, încarcă, măsoară, dar cu ce precizie nu pot spune - nu există un standard. Am măsurat acumulatori de companii destul de decente 2700 ma/h - am vrut 2000. Baterii pentru jucării 700 ma/h -350;mult mai profitabile decât bateriile.


Dispozitivul este conceput pentru a încărca bateriile NiMH și a controla capacitatea acestora. Comutarea între modurile de încărcare/descărcare se realizează cu butonul SA1. Modul de funcționare este indicat de LED-uri și puncte zecimale ale primelor două cifre ale afișajului cu șapte segmente.
Imediat după pornirea alimentării, dispozitivul intră în modul de încărcare. Indicatorul arată timpul de încărcare. După expirarea perioadei de timp programate, încărcarea se oprește. Sfârșitul încărcării (și descărcarea este aceeași) este evidențiat de punctul aprins al celei de-a patra descărcări. Curentul de încărcare este definit ca C / 10 unde C este capacitatea bateriei, setată de trimmerul R14.
Principiul de funcționare al contorului se bazează pe calcularea timpului în care tensiunea bateriei va scădea la 1,1 V. Curentul de descărcare trebuie să fie egal cu 450 ma, setat la R16. Pentru a măsura capacitatea, trebuie să introduceți bateria în compartimentul de descărcare și să începeți procesul apăsând un buton! Dispozitivul poate descărca doar o baterie.

Mai multe detalii:http://cxem.net

Sobă universală Radio Ham

O sobă pentru lipirea pieselor SMD are 4 moduri programabile.

Diagrama bloc de control (pentru o diagramă în format complet, salvați imaginea pe computer).


Alimentare și control al încălzitorului


Am asamblat această structură pentru a controla o stație de lipit IR. Poate cândva voi gestiona aragazul. A apărut o problemă la pornirea generatorului, a pus condensatorii de 22 pF de la pinii 7, 8 la masă și au început să pornească normal. Toate modurile funcționează normal, încărcate 250 W cu un încălzitor ceramic.

Mai multe detalii: http://radiokot.ru/lab/hardwork/11/

Deși nu există sobă, am făcut această încălzire de jos, pentru scânduri mici:

Incalzitor 250 W, diametru 12 cm, trimis din Anglia, cumparat de pe EBAY.


Stație digitală de lipit bazată pe PIC16F88x / PIC16F87x (a)

Stație de lipit cu două fier de lipit care funcționează simultan și uscător de păr. Puteți utiliza diferite MCU (PIC16F886 / PIC16F887, PIC16F876 / PIC16F877, PIC16F876a / PIC16F877a). Ecranul este de la Nokia 1100 (1110). Viteza turbinei uscătorului de păr este controlată electronic și este implicat și comutatorul cu lame încorporat în uscător de păr. În varianta autorului s-a folosit o sursă de alimentare cu impulsuri, eu am folosit o sursă de alimentare cu transformator. Mie tuturor imi place aceasta statie, dar cu fierul meu de lipit: 60W, 24V, cu incalzitor din ceramica, accelerare mare si fluctuatii de temperatura. În același timp, fiarele de lipit de putere mai mică, cu un încălzitor nicrom, au fluctuații mai puține. În același timp, fierul meu de lipit, cu stația de lipit descrisă mai sus de la Mikhi-Pskov, cu firmware de la Volu, menține temperatura cu o precizie de până la un grad. Deci este nevoie de un algoritm bun de încălzire și menținere a temperaturii. Ca experiment, am făcut un regulator PWM pe un cronometru, am furnizat tensiunea de control de la ieșirea amplificatorului termocuplu, deconectat, pornit de la microcontroler, fluctuația temperaturii a scăzut imediat la câteva grade, aceasta confirmă că un algoritm de control corect este Necesar. PWM extern este desigur pornografie în prezența unui microcontroler, dar încă nu a fost scris un firmware bun. Am comandat un alt fier de lipit dacă nu există o stabilizare bună cu el, îmi voi continua experimentele cu control extern PWM, sau poate apare un firmware bun. Stația a fost asamblată pe 4 plăci, conectate între ele pe conectori.

Diagrama părții digitale a dispozitivului este prezentată în figură; pentru claritate, sunt afișate două MC: IC1 - PIC16F887, IC1 (*) - PIC16F876. Alte MCU-uri sunt conectate în același mod, la porturile corespunzătoare.

Pentru a schimba contrastul, trebuie să găsiți 67 de octeți, valoarea acestuia este „0x80”, pentru început puteți pune „0x90”. Valorile trebuie să fie de la „0x80” la „0x9F”.

Referitor la display-ul 1110i (textul este afișat în oglindă), dacă nu China, ci originalul, EEPROM deschis, căutați 75 de octeți, schimbați-l din A0 în A1.

Pe Internet există un număr mare de circuite de încărcare (încărcătoare) pentru bateriile auto. De la cel mai simplu la cel mai complex. În cazul nostru, vom vorbi despre o memorie realizată pe un microcontroler Atmega8 (MK). Utilizarea MK, spre deosebire de circuitul pe tranzistori, vă permite să implementați o funcționalitate foarte bogată pentru memorie. De exemplu, în acest încărcător, am decis să implementez următoarele funcții.

1. Ușor de operat. Un codificator este suficient. Rotit în sensul acelor de ceasornic - încărcarea a fost pornită. Rotirea în sensul acelor de ceasornic sau în sens invers acelor de ceasornic selectează curentul de încărcare. Codificatorul a decis să aleagă cu o bătaie. Făcând clic pe el, puteți intra în meniul cu setări pentru funcții suplimentare.

2. Curentul de încărcare va fi de până la 5A. Deși am o baterie de 85A/h în mașină, 5A îmi este suficient pentru a încărca, doar că durează puțin mai mult pentru a încărca. Cu toate acestea, dacă este necesar, va fi posibilă creșterea curentului de încărcare la 10A fără modificări globale și re-aprinderea MK.

3. Va fi posibilă modificarea curentului de încărcare în trepte de până la 0,1A. Curentul minim poate fi selectat până la 0,1 A. Aceasta înseamnă că puteți încărca și baterii mici. Mai mult, dacă encoderul este rotit puțin mai repede, pasul de creștere/scădere a curentului de încărcare va funcționa în intervalul de 0,5 A.

4. Bateria se va încărca la 14,4 volți.

5. Pe display-ul va afișa informații despre curentul de încărcare curent și tensiunea bateriei, va funcționa și indicatorul de încărcare a bateriei, la fel ca într-un telefon mobil. Mi s-a părut că asta va fi mai vizual.

6. Trebuie să existe protecție împotriva scurtcircuitului la bornele încărcătorului. De exemplu, dacă scurtcircuitați bornele împreună și, în același timp, porniți încărcătorul, atunci desigur că acest lucru nu ar trebui să-i facă rău. Și, în general, până când bateria este conectată, nu va exista tensiune la bornele. De asemenea, dacă bateria a fost conectată din greșeală cu polaritatea greșită, va fi imposibil să porniți încărcarea. Toată această protecție va fi implementată în software și hardware.

7. Încărcarea bateriei ar trebui să fie complet automatizată. Acest lucru este foarte posibil, deoarece va fi folosit MK. Automatizarea procesului de încărcare ar trebui să excludă implicarea umană. Asta înseamnă că am conectat bateria, am ales curentul de încărcare și gata. Încărcătorul ar trebui să facă restul. Și anume, menținerea curentului de încărcare selectat în timpul procesului de încărcare. Dacă bateria este defectă și încărcarea nu mai este posibilă, bateria ar trebui să fie deconectată automat, altfel va fierbe la nesfârșit și nu avem nevoie de ea.

8. Funcția „stocare baterie iarna” părea a fi convenabilă. Orice s-ar putea spune, absolut orice baterie din natură are propria sa auto-descărcare internă. Aceasta înseamnă că, dacă lăsați bateria nesupravegheată pentru o anumită perioadă, atunci din cauza curentului de autodescărcare, aceasta se va descărca, ceea ce va duce în cele din urmă la sulfatarea plăcilor. Și pentru baterie, aceasta este moartea. Mai mult, timpul de autodescărcare și sulfatare nu este atât de lung. Uneori, câteva luni sunt suficiente. Pentru a preveni acest lucru, funcția va fi implementată„depozitarea bateriei iarna”. Funcționează simplu, conectăm încărcătorul la baterie, iar bateria nu trebuie scoasă din mașină. În plus, încărcătorul va urmări tensiunea bateriei la fiecare jumătate de oră. Dacă tensiunea scade sub normă, încărcarea automată se va porni, după sfârșitul ciclului de încărcare, încărcătorul va comuta din nou în modul de control al tensiunii bateriei. Mai mult decât atât, pragul de răspuns este stabilit de utilizator însuși în meniu și puterea curentă poate fi, de asemenea, selectată în meniu. Personal, mi-am stabilit un prag de 12,5 volți și un curent de încărcare de 0,5A. Încărcarea cu curenți mici este mai eficientă decât curenții mari.

9. Poate că funcția „continuați încărcarea după o întrerupere de curent” va fi utilă. Deși o astfel de coincidență poate apărea o dată la 150 de ani, totuși, această funcție există. Încărcătorul își „amintește” întotdeauna că procesul de încărcare este pornit și dacă electricitatea este oprită/pornită, încărcarea va continua pur și simplu. În orice caz, toate funcțiile pot fi dezactivate sau activate la alegere din meniu. Dacă dezactivați toate funcțiile, atunci încărcătorul va deveni pur și simplu un „încărcător obișnuit” care va încărca bateria și se va opri.

10. Și în sfârșit, cronometrul programului va funcționa în memorie. Cronometrul va bifa constant înainte 0..1.2 și așa mai departe. Dacă bateria se încarcă, acest lucru se va vedea prin modul în care tensiunea de pe ea crește treptat la 14,4 volți. Deci, de îndată ce tensiunea bateriei a crescut ușor, cronometrul se va reseta imediat la 0 și va continua să numere din nou 0 ... 1,2 ... Dar dacă bateria este defectă sau veche sau densitatea electrolitului nu este destul de corect, apoi la un anumit prag, taxa este în continuare imposibilă. Și acest prag poate fi sub 14,4 volți. Cum să fii? În acest caz, cronometrul se va opri din resetare. Și după ce a ajuns la un anumit punct, pur și simplu va opri încărcarea cu un mesaj pe afișaj. Nu are rost să mai fierbi bateria. Cronometrul poate fi dezactivat din meniu sau pornit prin setarea intervalului de bifare de la 30 de minute la 3 ore. Afișajul va arăta cum se va bifa și se va reseta cronometrul din când în când dacă încărcarea se scurge în modul normal.

Acum să trecem la discutarea circuitului încărcătorului.

Alimentare electrică.
În acest caz, vom folosi orice sursă de alimentare comutată (UPS). Tensiune de ieșire de la 16 la 20 volți. Deoarece curentul de încărcare va fi de până la 5A, curentul de ieșire al UPS-ului ar trebui să fie cu o marjă undeva de până la 6A. Am folosit IPBBINE ÎNCHISRS-75-15 care are o tensiune de ieșire de 15 volți, dar există un trimmer în unitate cu care poți ridica tensiunea la 16,5 volți. Avantajul UPS-ului este că este ușor, compact și are protecție încorporată împotriva curenților mari, scurtcircuitelor etc. Prin urmare, nu mai trebuie să vă faceți griji pentru asta. Principiul este potrivit pentru orice alt IPI. Cel puțin de pe un laptop. Dacă UPS-ul dumneavoastră are un curent mai mic de 5A, îl puteți folosi și el, trebuie doar să vă asigurați că nu setați curentul de încărcare mai mult decât poate da UPS-ul. O unitate de alimentare cu transformator nu este potrivită în cazul nostru. Un încărcător pe un transformator este un subiect separat și un articol separat. Deci circuitul de alimentare va arăta cam așa.

Un condensator de 1000uF, în principiu, nu poate fi instalat, deoarece este deja instalat în sursa de comutare la ieșire, dar dacă îl instalați, nu va fi mai rău. Condensatorul C2 este mai bun daca exista electrolit, dar am pus un smd ceramic. Stabilizatorul 7805 este necesar pentru a alimenta MK, afișajul LCD și alte curele.

Acum să conectăm bateria și tranzistorul cu efect de câmp.



După cum puteți vedea, totul este simplu. Tranzistorul va regla curentul prin baterie. Releul K1 va prelua rolul de protectie, se va porni doar atunci cand bateria este conectata si conectata corect. Rezistorul de ciment R18 acționează ca un șunt. La un curent de 5A, va avea o tensiune de 0,5 volți. Vom crește această tensiune și o vom furniza ADC-ului MK, astfel încât MK-ul va ști ce curent este în circuitul de încărcare și această valoare poate fi afișată. Acum este timpul să conectați MK-ul la circuit.

După cum puteți vedea, schema a devenit puțin mai complicată. Dar nu mult. Conectăm un releu la terminalul PB0, orice releu pentru 12V, ale cărui contacte trebuie să reziste la un curent de 5A. Un rezistor de amortizare de aproximativ 200 ohmi trebuie conectat în serie cu releul, deoarece releul va fi alimentat de la o tensiune de 16-20 volți. O diodă de protecție trebuie instalată în paralel cu bobina releului (orice, puneLL4148), fără o diodă, tranzistorul VT4 poate sparge. VT4 poate fi orice tip npn, folosit MMBT4401LT1.

Un encoder este conectat la pinii PD7, PC1, PC0. L-am folosit pe acesta sau pe acesta. La ieșirile la care este conectat encoderul, este necesar să conectați condensatori de 0,1 uF și rezistențe pull-up de 10k. Acest lucru va reduce contactele.

Afișajul a fost folosit pe două rânduri de 16 caractere. Ecranul are și un font rusesc încorporat. Dacă conectați un afișaj fără caractere rusești, ecranul va fi spart. Deoarece Atmega8 MK nu are multe picioare, afișajul a fost conectat printr-o magistrală pe 4 biți. Pinii de afișare DB3-DB0 nu sunt utilizați.

La pinul MK PB2 sunt conectate o diodă Schottky BAT54S, doi condensatori de 0,1 uF și un rezistor de 100 ohmi. De ce este nevoie de asta? Faptul este că circuitul folosește un amplificator operațional LM358 care nu este „rail to rail”. În astfel de amplificatoare operaționale fără tensiune de alimentare negativă la borna de putere negativă, ieșirea amplificatorului operațional nu va avea niciodată 0 volți. Prin urmare, acest lanț de elemente conectat la pinul PB2 creează o tensiune negativă de aproximativ -4V pentru a alimenta amplificatorul operațional. Pentru ca lanțul de la pinul PB2 să funcționeze și să genereze -4V, trebuie să i se aplice un semnal PWM cu un ciclu de lucru de 50%. Astfel, la pinul PB2 există întotdeauna un PWM cu o frecvență de 62,5 kHz.

PWM este întotdeauna prezent la pinul PB3, dar ciclul de lucru al semnalului în acest caz de la 0 la 100% este deja reglat de rotația encoderului. Rezistorul R18 și condensatorul C11 constituie un circuit integrator care netezește PWM-ul într-o tensiune constantă. Rezistoarele R19 și trimmerul R20 sunt divizor de tensiune. Cum configurez R20? Conectăm multimetrul la pinul PB3 și rotim encoderul până când dispozitivul arată 2,5 volți. Apoi, rotim rezistența de tuns R20 astfel încât să existe o tensiune de 0,25 volți la ieșirea neinversabilă a amplificatorului operațional. Aceasta completează configurarea R20.

Cum funcționează reglarea și controlul tranzistorului? Să presupunem că ieșirea neinversabilă a amplificatorului operațional (+) este de 0,5 volți. Una dintre proprietățile unui amplificator operațional este că se străduiește să egaleze diferența de potențial dintre cele două intrări ale sale. El face acest lucru folosind ieșirea sa, ridicând sau scăzând tensiunea pe ea. Deci pe pinul (+) este 0,5 volți, iar pe pinul (-) este 0 volți. Ce urmeaza? Amplificatorul operațional va începe imediat să crească tensiunea la ieșire, care este conectată la poarta tranzistorului IRF540. Tranzistorul începe să se deschidă. Curentul începe să curgă prin baterie, tranzistor și șunt. Curentul de curent provoacă o cădere de tensiune pe șuntul R18. Op-amp-ul va porni tranzistorul până când există o tensiune de 0,5 volți pe șunt. Tensiunea de la șunt este aplicată prin R13 la borna (-). De îndată ce există 0,5 volți pe pinul (-) (la fel ca pe pinul (+), amplificatorul operațional nu va mai porni tranzistorul. În acest caz, curentul de încărcare va fi de 5A.

Dacă encoderul reduce tensiunea la borna (+) la 0,25 volți, amplificatorul operațional va reduce tensiunea la poarta tranzistorului la o astfel de valoare încât la borna (-) să devină și 0,25 volți, această valoare. corespunde unui curent de încărcare de 2,5A. Se pare că reglarea curentului de încărcare se realizează în hardware folosind un amplificator operațional. Și acest lucru este foarte bun, deoarece amplificatorul operațional nu va îngheța niciodată, iar viteza de greblare este instantanee. Acest circuit de control este o sursă de curent liniară convențională. Comoditatea acestui circuit este că este simplu, dar dezavantajul este că întreaga diferență de tensiune dintre sursa de comutare și tensiunea de pe baterie este eliberată sub formă de căldură pe tranzistor.

De exemplu, UPS-ul emite 20 de volți, tensiunea bateriei la începutul încărcării sale este de 12 volți, iar curentul de încărcare este de 5 A. Câtă putere este alocată tranzistorului? (20-12) * 5 = 40 W. 40W este mult!!! Ai nevoie de un radiator puternic și cinci ventilatoare. Atât de bun de nimic. Deși tranzistorul IRF540 va rezista la 150 de wați, nu are rost să încălziți încărcătorul cu tranzistorul. Cum se reduce generarea de căldură? Puteți reduce tensiunea UPS-ului, de exemplu, la 16 volți. Apoi (16-12) * 5 = 20 W de două ori mai puțin este deja mai bine. Dar încălzirea se poate face chiar și mai puțin până la 5 wați sau mai puțin. Cum?

În IPB de tip similar caBINE ÎNCHISRS-75-15 există întotdeauna un rezistor de tăiere care poate regla tensiunea de ieșire cu 10%. Aceasta înseamnă de la 13,5 la 16,5, în cazul meu a ieșit de la 13 la 17 volți. Puteți lipi trimmer-ul de la ISB și, în schimb, lipiți ieșirea MK, astfel încât să putem folosi MK pentru a regla tensiunea la ieșirea ISB, acest lucru va reduce generarea de căldură pe tranzistor la minimum. De exemplu, dacă bateria are 12 volți, coborâm tensiunea la 13 volți și obținem (13-12) * 5 = 5 W de căldură pe tranzistor, mai bine decât 40. Așa că modernizăm circuitul


Conectați optocuplerul PC123 sau similar la pinul PB1. La pinul PB1, un semnal pwm este întotdeauna de serviciu, care este integrat printr-un lanț de R22 și C13. Lipim rezistența trimmer-ului în UPS și lipim în schimb rezistența obișnuită de 1,2 kOhm. Acum MK poate controla tensiunea la ieșirea UPS-ului printr-un optocupler. Când optocuplerul este oprit, tensiunea la ieșirea UPS-ului este minimă, când este pornit, rezistența R23 este derivată la masă, tensiunea crește. Închiderea/deschiderea fără probleme a optocuplerului folosind un semnal PWM la pinul PB1, reglând fără probleme tensiunea la ieșirea UPS.

Pentru a ști când și cât de mult să reglați tensiunea la ieșirea UPS-ului, trebuie să știți câți volți sunt în general pe tranzistorul de putere. Apoi trebuie să reducem tensiunea la ieșirea UPS-ului, astfel încât diferența dintre tensiunea de pe baterie și tensiunea de la ieșirea UPS-ului să fie cât mai mică posibil. Pentru a face acest lucru, măsurăm tensiunea la drenul tranzistorului cu ieșirea PC2 folosind ADC-ul MK. Acest lucru se face folosind un divizor pentru R9 și R10. Acum, cunoscând parametrii necesari, programul din MC va controla însuși ciclul de lucru PWM la pinul PB1.

Acum a mai rămas foarte puțin. Aceasta este pentru a măsura curentul din circuitul de încărcare și pentru a-l afișa pe afișaj. Și rămâne să măsurați tensiunea de pe baterie și să o afișați și pe afișaj.

Tensiunea bateriei este măsurată în mod diferențial. Scoatem valoarea din pinul PC5. Rezistoarele R5 și R6 ar trebui să fie de exact 3 kOhm fiecare, iar rezistențele R2 și R4 ar trebui să fie de 1 kOhm fiecare, de preferință o precizie de cel puțin 1%, așa că nu am avut astfel de R4 ca trimmer. Concluzia este că, cu astfel de evaluări ale rezistenței, raportul de tensiune la intrările amplificatorului operațional și la ieșirea acestuia este 3: 1. Când tensiunea se schimbă de la 0 la 15 volți pe baterie, tensiunea de la ieșirea amplificatorului operațional se va schimba de la 0 la 5 volți. Pentru a configura acest lanț, trebuie să conectați 14,4 volți în loc de baterie, de exemplu, de la o sursă de alimentare de laborator. Apoi rotim trimmer-ul R4 astfel încât afișajul LCD să aibă și 14,4 volți. Configurarea circuitului de măsurare a tensiunii este acum finalizată.

Curentul este măsurat prin căderea de tensiune pe șunt, care este jucată de un rezistor de ciment convențional. Curentul nostru este de la 0 la 5A. Tensiunea pe șunt variază de la 0 la 0,5 volți, respectiv. Valorile rezistențelor R16 și R17 sunt selectate astfel încât tensiunea la ieșirea amplificatorului operațional să fie de la 0 la 5 volți. Am configurat afișarea curentului de încărcare conform următorului lanț. Conectam bateria si facem un curent de 2,5 A. In paralel cu baterie conectam un bec de 12 volti. Deconectam bateria și lăsăm becul. Ne asigurăm că curentul este de 2,5 amperi. Dacă tensiunea pe șunt este de 0,25 volți, atunci curentul este de 2,5 A. dacă nu, rotiți codificatorul până când șuntul este de 0,25 volți. Acum rotim trimmer-ul R17 astfel încât afișajul să arate un curent de 2,5A. Configurarea afișajului curent este acum finalizată.

Ce ar putea fi simplificat? De exemplu, dacă nu există dorința de a se încurca cu divizorul de tensiune din UPS, atunci tot ceea ce este lipit la piciorul MK PB1 poate fi aruncat din circuit. Dar totul ar trebui să fie la locul lor. Dar, în acest caz, întreaga diferență de tensiune dintre baterie și la ieșirea UPS-ului va ateriza sub formă de căldură pe tranzistorul de putere. În acest caz, nu regretăm că am luat mai mult din calorifer.

Dacă aveți nevoie de un curent de încărcare de până la 10A, paralel cu șuntul, lipim același șunt cu o valoare de 0,1 Ohm. Luam releul cu contacte rezistente pana la 10A si in paralel cu tranzistorul IRF540 lipim altul din acelasi. Înșurubam tranzistoarele pe un radiator puternic și mergem mai departe, facem testul. Singurul lucru este că valoarea curentului de pe display trebuie înmulțită în minte cu 2. Dacă afișajul arată 5A, de fapt va fi deja 10A. Personal, nu am făcut asta eu, dar teoretic ar trebui să funcționeze.

La final, diagrama rezultată va arăta astfel:


Nu văd nimic de acord, așa că descărcați schema de aici .

Câteva fragmente de firmware.

#include "define.h" #include "init_mcu.h" #include "lcd.h" #include "text.h" #include "bits_macros.h" #include "fun.h" #include "encoder.h" # include „servise.h” #include „main.h” #include #include #include #include #include #include #include #define RELAY PB0 uint8_t lcd_time, lcd_track, lcd_count, enc_interval, enc_speed, off_charge; uint8_t U_bat_tim, I_bat_tim = 255, stok_reg, energy_flag, count; uint16_t I_reg, enc_block, bat_count, bat_save, bat_off; EEMEM uint8_t energie_off; struct flag (_Bool lcd_clr_txt0: 1; _Bool lcd_clr_txt1: 1; _Bool count_timer0: 1; // pentru manipulatorul de întreruperi _Bool start_charging: 1; // opriți releul dacă electricitatea este oprită când bat-ul se încarcă: 1_a) steaguri; ISR (TIMER0_OVF_vect) // Timer 0 overflow întrerupt la fiecare 1 ms. (TCNT0 = 0x6; flags.count_timer0 = 1;) void reg_I (uint16_t reg_val) // scade curentul de încărcare când se atinge 14,4 volți (dacă (I_reg> reg_val) (I_reg = 0; off_charge = 1; dacă (OCR2! = 0) (OCR2--; enc_data = OCR2;))) void charg_off (void) (dacă (BitIsSet (PORTB, RELAY)) (eeprom_update_byte (& energy_off, 0);) ClearBit (PORTB, RELAY); ClearBit (TCCR2, COM21); // a dezactivat ieșirea hardware pwm pe pinul PB3 OCR1A = 0; // a scăzut sursa de alimentare a generatorului de impulsuri la 12,5 volți.off_charge = 0; flags.start_charging = 0; flags.ocr1a_block = 0; enc_data = 0; I_bat_tim = 255; număr = 0; OCR2 = 0;) int main (void) (#if 1 // inițializare MCU_init_ports (); MCU_init_adc (); MCU_init_an_comp (); MCU_init_timer0 (); MCU_init_timer0 (); MCU_init_timer1 (_timer2) (); ; LCD_init_flash , 0); LCD_string_of_flashXY (text_2,3,1); _delay_ms (1500); LCD_string_of_flashXY (text_3,3,0); LCD_string_of_flashXY (text_4,2,1); _delay_ms (150); _delay_ms (150); (PIND , PUSH)) (servise ();) // intră în meniul de service dacă (eeprom_read_byte (& energy_off) && u_batt ()> 20) (enc_data = eeprom_read_byte (& i_pusk); ) else (eeprom_update_byte (& energy_off, 0);) MCU_init_wdt (); sei (); #endif while (1) (wdt_reset (); uint8_t u_bat = u_batt (); uint8_t i_bat = i_batt (); #if 1 / * determinați dacă bateria este conectată * / dacă (u_bat> 30) // 30 * 0,0585 = 1,7 volți pe baterie, conectat (dacă (flags.lcd_clr_txt0 == 0) (flags.lcd_clr_txt0 = 1; LCD_clear ();) dacă (lcd_time> 200) (lcd_time = 0; LCD_string_of_flashXY, (LCD_string_of_flashXY, (0_f_7,0flashXY); XY (text 7,0); LCD_string_of_flashXY (text_11,13,0); buffer de caractere; uint16_t U = (u_bat * 59) / 100; utoa ((uint8_t) U, buffer, 10); // afișează tensiunea dacă (( uint8_t ) U> = 100) (LCD_dataXY (tampon, 2,0); LCD_data (tampon); LCD_data ("."); LCD_data (tampon); LCD_string_of_flashXY (text_10,6,0);) else if ((uint8_t) U > = 10 && (uint8_t) U<=99) { LCD_dataXY(buffer,2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } else { LCD_dataXY("0",2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } uint16_t I=(i_bat*20)/100; utoa((uint8_t)I, buffer, 10);//выводим ток на дисплей c шунта if ((uint8_t)I>9) (LCD_dataXY (tampon, 10,0); LCD_data ("."); LCD_data (tampon);) else (LCD_dataXY ("0", 10,0); LCD_data ("."); LCD_data (tampon); ))) else // nu este conectat (LCD_string_of_flashXY (text_5,0,0); LCD_string_of_flashXY (text_6,0,1); flags.lcd_clr_txt0 = 0; eeprom_update_byte (& energy_off, *;;) / endif #if 1 steag de întrerupere a procesului timer0 * / if (flags.count_timer0 == 1) (flags.count_timer0 = 0; lcd_time ++; enc_interval ++; I_reg ++; lcd_track ++; if (enc_speed! = 100) // determina codificatorul viteza de rotație. (enc_block ++;) if (enc_block > = 1) (enc_block ++; if (enc_block> = 500) (enc_block = 0;)) if (BitIsSet (PORTB, RELAY)) (bat_count ++;) else (bat_count = 0; bat_off = 0; bat_save ++;) stok_reg ++; if (flags.start_charging && count! = 255) (count ++;)) #endif #if 1 / * Primirea datelor de la codificator * / if (enc_interval> = 5) (enc_interval = 0; OCR2 = encoder (); // citește codificatorul valorii. #if 0 // temporar pentru testul tampon de caractere; utoa (OCR2, bu ffer, 10); if (OCR2> = 100) (LCD_dataXY (tampon, 0,1); LCD_data (tampon); LCD_data (tampon);) else if (OCR2> = 10 && OCR2<=99) { LCD_dataXY("0",0,1); LCD_data(buffer); LCD_data(buffer); } else { LCD_dataXY("0",0,1); LCD_data("0"); LCD_data(buffer); } #endif if (OCR2==0)//отключаем все. { charg_off(); } else//начали заряд { if (flags.ocr1a_block==0) { flags.ocr1a_block=1; OCR1A=255;//подняли питание импульсника до 17 вольт. } SetBit(TCCR2,COM21); SetBit(PORTB,RELAY); } } #endif #if 1 /*уменьшение тока заряда при достижении 14.4вольта*/ if (u_bat==246 && OCR2>0) (reg_I (3000); // o dată la 3 secunde) altfel dacă (u_bat == 255 && OCR2> 0) (reg_I (100); // o dată la 100 ms) altfel dacă (u_bat> 246 && OCR2> 0 ) (reg_I (500); // o dată la 500 ms) #endif #if 1 / * Opriți încărcarea când curentul de încărcare atinge 0,1 A * / dacă (off_charge == 1 && enc_block == 0) (dacă (i_bat)<=5)//5*0.02=0.1 А ток в батарее. { charg_off(); flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_13,0,1);//"БАТАРЕЯ ЗАРЯЖЕНА" } } //отключение реле если при заряде бат откл. электричество. if (OCR2>0 && i_bat> 4) // 4 * 0,02 = 0,08A (flags.start_charging = 1;) if (flags.start_charging == 1 && i_bat<2 && count==255)//2*0.02=0.04 А ток в батарее. { ClearBit(PORTB,RELAY); } #endif #if 1 /*Бегущий индикатор на дисплее*/ if (OCR2>0) (dacă (flags.lcd_clr_txt1 == 1) (flags.lcd_clr_txt1 = 0; LCD_string_of_flashXY (text_8,0,1);) dacă (lcd_track> = 200) (lcd_track = 0;++; switch) (lcd_track = 0;++;lcd) cazul 0: LCD_date_of_flashXY (text_15,8,1); pauză; caz 1: LCD_data_of_flashXY (text_16,8,1); pauză; caz 2: LCD_data_of_flashXY (text_17,8,1); pauză; caz 3: LCD_data_of_flashXY (text_18,8) ,1 ); pauză; cazul 4: LCD_data_of_flashXY (text_19,8,1); pauză; caz 5: LCD_data_of_flashXY (text_20,8,1); pauză; cazul 6: LCD_data_of_flashXY (text_21,8,1); pauză; cazul 7 : LCD_data_of_flashXY (text_22,8,1); break; cazul 8: #if 1 if (off_charge == 1) (lcd_count = 5; break;) if (u_bat<232)// 13.57V/0.0585=230 на АЦП. { lcd_count=255; LCD_string_of_flashXY(text_12,8,1); } else if (u_bat<=234) { lcd_count=0; } else if (u_bat<=236) { lcd_count=1; } else if (u_bat<=238) { lcd_count=2; } else if (u_bat<=240) { lcd_count=3; } else if (u_bat<=242) { lcd_count=4; } else if (u_bat<=244) { lcd_count=5; } else { lcd_count=5; } break; #endif default:lcd_count=5; break; } } } else { lcd_count=255; if (flags.lcd_clr_txt1==0) { flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_8,0,1); } } #endif #if 1 /*Аварийный таймер отключения*/ if (bat_count>= 60000 && eeprom_read_byte (& timer_time)) // msec 60000 (bat_count = 0; bat_off ++; #if 1 // pentru depanare LCD_string_of_flashXY (text_37,0,1); char buffer; utoa (bat_off, buffer, 10); if (bat_off > = 100) (LCD_dataXY (tampon, 2,1); LCD_data (tampon); LCD_data (tampon); LCD_string_of_flashXY (text_38,5,1);) else if (bat_off> = 10 && bat_off<=99) { LCD_dataXY(buffer,2,1); LCD_data(buffer); LCD_string_of_flashXY(text_38,4,1); } else { LCD_dataXY(buffer,2,1); LCD_data(" "); LCD_string_of_flashXY(text_38,4,1); LCD_dataXY(" ",7,1); } #endif } if (u_bat>U_bat_tim && off_charge == 0) // resetează cronometrul alarmei de tensiune (bat_off = 0; U_bat_tim = u_bat;) dacă (i_bat; = eeprom_read_word (& tim_dlitl)) // 180 de minute implicit (charg_off (); LCD_string_of_flashXY (text_14,0,1); bat_off = 0; flags.lcd_clr_txt1 = 1;) #endif #if 1 / * Reglarea tensiunii la ieșire a sursei de alimentare * / dacă (stok_reg> = 100) (stok_reg = 0; uint8_t u_stok = u_stokk (); dacă (u_stok> 62) // 0,0195 * 51 * 2 = 2 volți la chiuvetă. (dacă (OCR1A! = 0) (OCR1A--;)) altfel dacă (u_stok<60) { if (OCR1A!=255) { OCR1A++; } } #if 0//временно для теста char buff; utoa(u_stok, buff, 10); if (u_stok>= 100) (LCD_dataXY (buff, 3,1); LCD_data (buff); LCD_data (buff);) else if (u_stok> = 10 && u_stok<=99) { LCD_dataXY("0",3,1); LCD_data(buff); LCD_data(buff); } else { LCD_dataXY("0",3,1); LCD_data("0"); LCD_data(buff); } #endif } #endif #if 1 /*Режим хранения батареи*/ if (bat_save>= 60000 && eeprom_read_byte (& save_on)! = 0) (bat_save = 0; dacă (u_bat)<=eeprom_read_byte(&u_start))//12.5V / 0.0585=213,6 на АЦП { enc_data=eeprom_read_byte(&i_pusk); } } #endif #if 1 /*Режим отключения питания*/ if (enc_data && eeprom_read_byte(&power_off) && energy_flag==0) { energy_flag=1; eeprom_update_byte(&energy_off,1); } #endif } } #if 1 //тексты на дисплей const uint8_t PROGMEM text_1="Зарядное"; const uint8_t PROGMEM text_2="устройcтво"; const uint8_t PROGMEM text_3="SIRIUS 5А "; const uint8_t PROGMEM text_4="Для АКБ 12В"; const uint8_t PROGMEM text_5="Подключи батарею"; const uint8_t PROGMEM text_6="УЧТИ полярность."; const uint8_t PROGMEM text_7="U="; const uint8_t PROGMEM text_8=" "; const uint8_t PROGMEM text_9=" I="; const uint8_t PROGMEM text_10="В "; const uint8_t PROGMEM text_11="А "; const uint8_t PROGMEM text_12=" "; const uint8_t PROGMEM text_13="БАТАРЕЯ ЗАРЯЖЕНА"; const uint8_t PROGMEM text_14="ЗАРЯД ОТКЛЮЧЕН! "; // const uint8_t PROGMEM text_15={0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 1 const uint8_t PROGMEM text_16={0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 12 const uint8_t PROGMEM text_17={0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0}; // 123 const uint8_t PROGMEM text_18={0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0}; // 1234 const uint8_t PROGMEM text_19={0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0}; // 12345 const uint8_t PROGMEM text_20={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0}; // 123456 const uint8_t PROGMEM text_21={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0}; // 1234567 const uint8_t PROGMEM text_22={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0}; // 12345678 const uint8_t PROGMEM text_23 ="Режим сохр. "; const uint8_t PROGMEM text_24 ="ВКЛ "; const uint8_t PROGMEM text_25 ="ВЫКЛ"; const uint8_t PROGMEM text_26 ="U запуска <"; const uint8_t PROGMEM text_27 =" СЕРВИСНОЕ МЕНЮ "; const uint8_t PROGMEM text_28 =" ВЫХОД ИЗ МЕНЮ "; const uint8_t PROGMEM text_29 ="I запуска "; const uint8_t PROGMEM text_30 ="Режим отключения"; const uint8_t PROGMEM text_31 ="питания "; const uint8_t PROGMEM text_32 ="Аварийный Таймер"; const uint8_t PROGMEM text_33 =" ВКЛ "; const uint8_t PROGMEM text_34 =" ВЫКЛ "; const uint8_t PROGMEM text_35 ="задержка "; const uint8_t PROGMEM text_36 =" мин"; const uint8_t PROGMEM text_37 ="T="; const uint8_t PROGMEM text_38 ="min"; #endif

Punem întrebări aici [email protected] com
Dacă cineva are nevoie de un microcontroler flash, atunci acesta poate fi comandat de aici... În mod natural, colectăm totul și le facem singuri.

Acum sunt câteva videoclipuri și fotografii. Așa arăta primul prototip.

Așa arăta prima placă.

Ulterior, s-a făcut o plată mai civilizată.

Apoi corpul a fost inventat.

Apoi toate acestea au fost adunate.

Până la urmă, asta s-a întâmplat.

Puteți descărca diagrama încărcătorului.
Puteți comanda un microcontroler flash.
Informații suplimentare., Placă de circuit imprimat.
Întrebări și dorințe [email protected]

Acest dispozitiv este destinat pentru măsurarea capacității bateriilor Li-ion și Ni-Mh, precum și pentru încărcarea bateriilor Li-ion cu o alegere a curentului de încărcare inițial.

Control

Conectăm dispozitivul la o sursă de alimentare stabilizată de 5V și un curent de 1A (de exemplu, de la un telefon mobil). Indicatorul timp de 2 secunde afișează rezultatul măsurării anterioare a capacității „xxxxmA / s” iar pe a doua linie valoarea registrului OCR1A „S.xxx”. Introducem bateria. Dacă trebuie să încărcați bateria, apoi apăsați scurt butonul CHARGE, dacă trebuie să măsurați capacitatea, apoi apăsați scurt butonul TEST. Dacă trebuie să modificați curentul de încărcare (valoarea registrului OCR1A), atunci apăsați timp îndelungat (2 secunde) butonul CHARGE. Intrăm în fereastra de ajustare a registrului. Dă drumul butonului. Prin apăsarea scurtă a butonului ÎNCĂRCARE, schimbăm valorile (50-75-100-125-150-175-200-225) ale registrului într-un cerc, prima linie arată curentul de încărcare a bateriei goale la valoarea selectată (cu condiția să aveți un rezistor 0 în circuit), 22 Ohm). Apăsați scurt butonul TEST, valoarea registrului OCR1A este stocată în memoria nevolatilă.
Dacă ați făcut diverse manipulări cu dispozitivul și trebuie să resetați ceasul, capacitatea măsurată, apoi apăsați butonul TEST pentru o lungă perioadă de timp (valoarea registrului OCR1A nu este resetată). Imediat ce încărcarea este terminată, iluminarea de fundal a afișajului se stinge, pentru a porni lumina de fundal, apăsați scurt butonul TEST sau ÎNCĂRCARE.

Logica dispozitivului este următoarea:

Când este aplicată alimentarea, indicatorul afișează rezultatul măsurării anterioare a capacității bateriei și valoarea registrului OCR1A stocat în memoria nevolatilă. După 2 secunde, dispozitivul trece la modul de determinare a tipului bateriei după tensiunea la bornele.

Dacă tensiunea este mai mare de 2V, atunci aceasta este o baterie Li-ion și tensiunea de descărcare completă va fi de 2,9V, altfel este o baterie Ni-MH și tensiunea de descărcare completă va fi de 1V. Abia după conectarea bateriei sunt disponibile butoanele de control. Apoi dispozitivul așteaptă apăsarea butoanelor Test sau Încărcare. Afișajul arată „_STOP”. Când apăsați scurt butonul Test, sarcina este conectată prin MOSFET.

Mărimea curentului de descărcare este determinată de tensiunea pe rezistorul de 5,1 ohmi și, în fiecare minut, este însumată cu valoarea anterioară. Dispozitivul folosește cuarț de 32768 Hz pentru a opera ceasul.

Afișajul arată valoarea curentă a capacității bateriei „xxxxmA/s” și torul de descărcare „A.xxx”, precum și timpul „xx: xx: xx” din momentul în care a fost apăsat butonul. Este afișată și o pictogramă animată pentru baterie descărcată. La sfârșitul testului pentru bateria Ni-MH, apare inscripția „_STOP”, rezultatul măsurării este afișat pe afișaj „xxxxmA/s” și este stocat.

Dacă bateria este Li-ion, atunci rezultatul măsurării este afișat și pe afișajul „xxxxmA / s” și este reținut, dar modul de încărcare este pornit imediat. Afișajul arată conținutul registrului OCR1A „S.xxx”. Este afișată și o pictogramă animată de încărcare a bateriei.

Curentul de încărcare este controlat de PWM și este limitat de un rezistor de 0,22 Ohm. În hardware, curentul de încărcare poate fi redus prin creșterea rezistenței de la 0,22 Ohm la 0,5-1 Ohm. La începutul încărcării, curentul crește treptat până la valoarea registrului OCR1A sau până când tensiunea la bornele bateriei ajunge la 4,22V (dacă bateria a fost încărcată).

Valoarea curentului de încărcare depinde de valoarea registrului OCR1A - cu cât valoarea este mai mare, cu atât este mai mare curentul de încărcare. Când tensiunea la bornele bateriei este de 4,22 V, valoarea registrului OCR1A scade. Procesul de reîncărcare continuă până când valoarea registrului OCR1A este egală cu 33, ceea ce corespunde unui curent de aproximativ 40 mA. Aceasta pune capăt taxei. Lumina de fundal a afișajului se stinge.

Personalizare

1. Conectați sursa de alimentare.
2. Conectați bateria.
3. Conectam voltmetrul la baterie.
4. Prin butoanele temporare + și - (PB4 și PB5) obținem coincidența dintre citirile voltmetrului de pe afișaj și de pe voltmetrul de referință.
5. Apăsați butonul TEST timp îndelungat (2 sec), are loc memorarea.
6. Scoatem bateria.
7. Conectăm voltmetrul la rezistența de 5,1 Ohm (conform diagramei de lângă tranzistorul 09N03LA).
8. Conectați unitatea de alimentare reglată la bornele bateriei, setați-o la unitatea de alimentare de 4V.
9. Apăsaţi scurt butonul TEST.
10. Măsurăm tensiunea pe rezistorul de 5,1 ohmi - U.
11. Calculați curentul de descărcare I = U / 5.1
12. Folosind butoanele temporare + și - (PB4 și PB5), setați curentul de descărcare calculat I pe indicatorul „A.xxx”.
13. Apăsați butonul TEST timp îndelungat (2 sec), are loc memorarea.

Aparatul este alimentat de la o sursă stabilizată cu o tensiune de 5 volți și un curent de 1A. Quartz la 32768 Hz este proiectat pentru sincronizare precisă. ATmega8 este tactat de un oscilator intern de 8 MHz, iar protecția EEPROM trebuie setată cu biții de configurare corespunzători. La scrierea programului de control au fost folosite articole tutoriale de pe acest site.

Valorile curente ale coeficienților de tensiune și curent (Ukof. Ikof) pot fi văzute dacă conectați un afișaj 16x4 (16x4 este de preferat pentru depanare) pe a treia linie. Sau în Ponyprog dacă deschideți fișierul firmware EEPROM (citit de la controlerul EEPROM).
1 octet - OCR1A, 2 octeți - I_kof, 3 octeți - U_kof, 4 și 5 octeți sunt rezultatul măsurării anterioare a capacității.

Videoclipul dispozitivului:

Uneori treci pe lângă mașini parcate și, cu coada ochiului, observi că cineva, judecând după strălucirea slabă a lămpilor, a uitat mult să stingă lumina. Cineva însuși a obținut asta. Este bine când există un indicator obișnuit că lumina nu este stinsă, iar când nu există așa ceva va ajuta: un lucru de neuitat poate scârțâi când lumina nu este stinsă și știe cum să pună o treaptă de marșarier.

Circuitul indicator al nivelului de combustibil digital are un grad ridicat de repetabilitate, chiar dacă experiența cu microcontrolere este neglijabilă, astfel încât înțelegerea complexității procesului de asamblare și reglare nu cauzează probleme. Programatorul lui Gromov este cel mai simplu programator necesar pentru programarea unui microcontroler avr. Programatorul lui Goromov este potrivit atât pentru programarea în circuit, cât și pentru programarea standard. Mai jos este o diagramă a controlului indicatorului de combustibil.

Aprindeți și opriți LED-urile în orice mod (ușa este deschisă și lampa este aprinsă). De asemenea, oprire automată după cinci minute. Și consum minim de curent în standby.

Opțiunea 1 - Comutarea în minus. (folosind tranzistori cu canal N) 1) „comutare minus”, adică o opțiune în care un fir de alimentare al lămpii este conectat la + 12V al bateriei (sursa de alimentare), iar al doilea fir comută curentul prin lampă , pornindu-l astfel. În această variantă se va furniza minus. Pentru astfel de circuite, este necesar să se utilizeze tranzistori cu efect de câmp cu canal N ca comutatoare de ieșire.

Modemul în sine este mic, ieftin, funcționează fără probleme, clar și rapid și, în general, nu există plângeri despre acesta. Singurul negativ pentru mine a fost nevoia de a-l porni și opri cu un buton. Dacă nu îl opriți, modemul era alimentat de o baterie încorporată, care în cele din urmă s-a așezat și modemul a trebuit să fie pornit din nou.

Principiul de funcționare este simplu: rotind butonul, volumul este reglat, atunci când este apăsat, sunetul este oprit și pornit. Trebuie să scrieți pe Windows sau Android

Inițial, în Lifan Smily (și nu numai), modul ștergător spate este singurul și se numește „always swing”. Un astfel de regim este perceput mai ales negativ la începutul sezonului ploios, când picăturile se adună pe luneta din spate, dar într-o cantitate insuficientă pentru o trecere a ștergătorului. Deci, trebuie fie să ascultați scârțâitul cauciucului de pe sticlă, fie să portretizați un robot și să porniți/opriți periodic ștergătorul.

Am modificat ușor circuitul releului de întârziere pentru aprinderea luminii interioare pentru o mașină Ford (circuitul a fost dezvoltat pentru o mașină foarte specifică, ca înlocuitor pentru releul standard Ford 85GG-13C718-AA, dar a fost instalat cu succes în „clasicii” domestici).

Nu este prima dată când astfel de meșteșuguri se strecoară. Dar din anumite motive, oamenii se agață de firmware. Deși în cea mai mare parte se bazează pe proiectul elmchan „Simple SD Audio Player with an 8-pin IC”. Fișierul sursă nu este deschis argumentând că proiectul trebuia corectat, că calitatea mea este mai bună... și așa mai departe. Pe scurt, au luat un proiect open source, l-au asamblat și l-au dat drept al lor.

Asa de. Microcontrolerul Attiny 13 este inima acestui dispozitiv, ca să spunem așa. Am patit mult timp cu firmware-ul lui, nu l-am putut flash in niciun fel.Nici 5 fire prin LPT, nici progromatorul lui Gromov. Computerul pur și simplu nu vede controlerul și atât.

În legătură cu inovațiile în regulile de circulație, oamenii au început să se gândească la implementarea luminilor de zi. Una dintre modalitățile posibile este să aprinzi faza lungă pentru o parte din putere, despre asta este vorba în acest articol.

Acest dispozitiv va permite faza scurtă să se aprindă automat când începeți să conduceți și reglează tensiunea la lămpi, faza scurtă, în funcție de viteza cu care conduceți. De asemenea, va face conducerea mai sigură și va prelungi durata de viață a lămpilor.