Sommario:

Caricabatterie intelligente basato su microcontrollore: 9 passaggi (con immagini)
Caricabatterie intelligente basato su microcontrollore: 9 passaggi (con immagini)

Video: Caricabatterie intelligente basato su microcontrollore: 9 passaggi (con immagini)

Video: Caricabatterie intelligente basato su microcontrollore: 9 passaggi (con immagini)
Video: Home Automation using ESP32 Blynk 2.0 with IR remote control relay temperature sensor | IoT 2021 2024, Dicembre
Anonim
Caricabatteria intelligente basato su microcontrollore
Caricabatteria intelligente basato su microcontrollore
Caricabatteria intelligente basato su microcontrollore
Caricabatteria intelligente basato su microcontrollore
Caricabatteria intelligente basato su microcontrollore
Caricabatteria intelligente basato su microcontrollore

Il circuito che stai per vedere è un caricabatterie intelligente basato su ATMEGA8A con spegnimento automatico. Diversi parametri vengono visualizzati tramite un display LCD durante i diversi stati di carica. Inoltre il circuito emetterà un suono tramite un cicalino al completamento della carica.

Ho costruito il caricabatterie fondamentalmente per caricare la mia batteria agli ioni di litio da 11,1 v/4400 mAh. Il firmware è fondamentalmente scritto per caricare questo particolare tipo di batteria.

Come sai, i caricabatterie intelligenti sono prontamente disponibili nei mercati. Ma essendo un appassionato di elettronica, è sempre preferibile per me costruirne uno mio piuttosto che acquistarne uno con funzioni statiche / immutabili. In questo modulo, ho intenzione di aggiornamento in futuro, quindi ho lasciato spazio a riguardo.

Quando ho acquistato per la prima volta la mia precedente batteria agli ioni di litio da 11,1 v/2200 mAh, ho cercato su Internet caricabatterie fai-da-te con controllo intelligente. Ma ho trovato risorse molto limitate. Quindi, per allora, ho realizzato un caricabatterie basato su LM317 e ha funzionato davvero bene per me. Ma poiché la mia batteria precedente si è esaurita nel tempo (senza motivo), ho acquistato un'altra batteria agli ioni di litio da 11,1 v/4400 mAh. Ma questa volta, la configurazione precedente era inadeguata per caricare la mia nuova batteria. Per soddisfare il mio requisito, ho studiato in rete e sono stato in grado di progettare il mio caricabatterie intelligente.

Condivido questo perché penso che ci siano molti hobbisti/appassionati là fuori che sono davvero appassionati di lavorare su elettronica di potenza e microcontrollori e hanno anche bisogno di costruire un proprio caricabatterie intelligente.

Diamo una rapida occhiata a come caricare una batteria agli ioni di litio.

Passaggio 1: protocollo di carica per una batteria agli ioni di litio

Per caricare la batteria agli ioni di litio, devono essere soddisfatte determinate condizioni. Se non vengono mantenute le condizioni, la batteria sarà sottocarica o verrà incendiata (se sovraccaricata) o verrà danneggiata in modo permanente.

C'è un ottimo sito Web per sapere tutto il necessario sui diversi tipi di batterie e ovviamente conosci il nome del sito Web se hai familiarità con il lavoro sulle batterie … Sì, sto parlando di batteryuniversity.com.

Ecco il link per conoscere i dettagli necessari per caricare una batteria agli ioni di litio.

Se sei abbastanza pigro da leggere tutte queste teorie, il succo è il seguente.

1. La carica completa di una batteria agli ioni di litio da 3,7 V è 4,2 V. Nel nostro caso, la batteria agli ioni di litio da 11,1 V significa una batteria da 3 x 3,7 V. Per una carica completa, la batteria deve raggiungere 12,6 V ma per motivi di sicurezza, noi lo caricherà fino a 12,5 v.

2. Quando la batteria sta per raggiungere la carica completa, la corrente assorbita dalla batteria dal caricabatterie scende fino al 3% della capacità nominale della batteria. Ad esempio, la capacità della batteria del mio pacco batterie è di 4400 mAh. Quindi, quando la batteria sarà completamente carica, la corrente assorbita dalla batteria sarà raggiunta come circa il 3%-5% di 4400 mA, ovvero tra 132 e 220 mA. Per interrompere in sicurezza la carica, la carica verrà interrotta quando la corrente assorbita scenderà al di sotto 190ma (quasi il 4% della capacità nominale).

3. Il processo di carica totale è diviso in due parti principali 1-Corrente costante (modalità CC), 2-Tensione costante (modalità CV). (Esiste anche la modalità di carica completa, ma non la implementeremo nel nostro caricabatterie come caricabatterie avviserà l'utente della carica completa con un allarme, quindi la batteria deve essere scollegata dal caricabatterie)

Modalità CC -

In modalità CC, il caricabatterie carica la batteria con una velocità di carica di 0,5 c o 1 c. Ora che diavolo è 0,5 c/1 c? Per essere semplici, se la capacità della batteria è ad esempio 4400 mAh, quindi in modalità CC, 0,5 c sarà 2200ma e 1c sarà 4400ma di corrente di carica. 'c' sta per velocità di carica/scarica. Alcune batterie supportano anche 2c, ad esempio in modalità CC, è possibile impostare la corrente di carica fino a 2xcapacità della batteria, ma è una follia!!!!!

Ma per sicurezza, sceglierò una corrente di carica di 1000 ma per una batteria da 4400 mAh, ovvero 0,22 c. In questa modalità, il caricabatterie monitorerà la corrente assorbita dalla batteria indipendentemente dalla tensione di carica. Ad esempio, il caricabatterie manterrà 1 A di corrente di carica aumentando /diminuendo la tensione di uscita fino a quando la carica della batteria raggiunge 12,4v.

Modalità CV -

Ora che la tensione della batteria raggiunge 12,4 V, il caricabatterie manterrà 12,6 volt (indipendentemente dalla corrente assorbita dalla batteria) alla sua uscita. Ora il caricabatterie interromperà il ciclo di carica a seconda di due cose. Se la tensione della batteria attraversa 12,5 V e anche se la corrente di carica scende al di sotto di 190 mA (4% della capacità nominale della batteria come spiegato in precedenza), il ciclo di carica verrà interrotto e verrà emesso un segnale acustico.

Passaggio 2: schema e spiegazione

Vediamo ora il funzionamento del circuito. Lo schema è allegato in formato pdf nel file BIN.pdf.

La tensione di ingresso del circuito può essere 19/20v. Ho usato un vecchio caricatore per laptop per ottenere 19v.

J1 è un connettore terminale per collegare il circuito alla sorgente di tensione in ingresso. Q1, D2, L1, C9 sta formando un convertitore buck. Ora che diavolo è? Questo è fondamentalmente un convertitore step-down da CC a CC. In questo tipo del convertitore, puoi ottenere la tensione di uscita desiderata variando il ciclo di lavoro. Se vuoi saperne di più sui convertitori buck, visita questa pagina. Ma ad essere sinceri, sono totalmente diversi dalla teoria. Per valutare i valori corretti di L1 e C9 per le mie esigenze, ci sono voluti 3 giorni di tentativi ed errori. Se si caricano batterie diverse, è possibile che questi valori cambino.

Q2 è il transistor driver per il mosfet di potenza Q1. R1 è un resistore di polarizzazione per Q1. Alimenteremo il segnale pwm nella base di Q2 per controllare la tensione di uscita. C13 è un cappuccio di disaccoppiamento.

Ora l'uscita viene quindi inviata a Q3. Una domanda può essere chiesta "Qual è l'uso di Q3 qui??". La risposta è piuttosto semplice, si comporta come un semplice interruttore. Ogni volta che misureremo la tensione della batteria, spegneremo Q3 per scollegare l'uscita della tensione di carica dal convertitore buck. Q4 è il driver per Q3 con un resistore di polarizzazione R3.

Nota che c'è un diodo D1 nel percorso. Cosa sta facendo il diodo qui nel percorso? Anche questa risposta è molto semplice. Ogni volta che il circuito verrà scollegato dall'alimentazione in ingresso mentre la batteria è collegata all'uscita, la corrente dalla batteria sarà flusso nel percorso inverso tramite i diodi del corpo del MOSFET Q3 e Q1 e quindi U1 e U2 riceveranno la tensione della batteria ai loro ingressi e alimenteranno il circuito dalla tensione della batteria. Per evitare ciò, viene utilizzato D1.

L'uscita del D1 viene quindi alimentata all'ingresso del sensore di corrente (IP+). Questo è un sensore di corrente di base ad effetto hall, ovvero la parte di rilevamento della corrente e la parte di uscita sono isolate. L'uscita del sensore di corrente (IP-) viene quindi alimentata al batteria. Qui R5, RV1, R6 stanno formando un circuito divisore di tensione per misurare la tensione della batteria/tensione di uscita.

L'ADC dell'atmega8 viene utilizzato qui per misurare la tensione e la corrente della batteria. L'ADC può misurare un massimo di 5 V. Ma misureremo un massimo di 20 V (con un po' di margine). Per ridurre la tensione all'intervallo ADC, un 4 Viene utilizzato un divisore di tensione:1. Il potenziometro (RV1) viene utilizzato per la regolazione/calibrazione.

L'uscita del sensore di corrente ACS714 è anche alimentata al pin ADC0 di atmega8. Tramite questo sensore ACS714, misureremo la corrente. Ho una scheda breakout da pololu della versione 5A e funziona davvero alla grande. Ne parlerò nella prossima fase su come misurare la corrente

L'LCD è un normale lcd 16x2. L'LCD utilizzato qui è configurato in modalità a 4 bit poiché il numero di pin di atmega8 è limitato. RV2 è il potenziometro di regolazione della luminosità per l'LCD.

L'atmega8 ha un clock a 16 mhz con un cristallo esterno X1 con due cappucci di disaccoppiamento C10/11. L'unità ADC dell'atmega8 viene alimentata tramite il pin Avcc attraverso un induttore da 10 uH. C7, C8 sono cappucci di disaccoppiamento collegati ad Agnd. Posizionali come il più vicino possibile all'Avcc e all'Aref durante la realizzazione del PCB. Notare che il pin Agnd non è mostrato nel circuito. Il pin Agnd sarà collegato a massa.

Ho configurato l'ADC dell'atmega8 per utilizzare Vref esterno, ovvero forniremo la tensione di riferimento tramite il pin Aref. Il motivo principale per ottenere la massima precisione di lettura possibile. Ecco perché l'ho configurato esternamente. Ora ecco una cosa da notare. Il 7805 (U2) fornisce solo il sensore ACS714 e il pin Aref di atmega8. Questo serve a mantenere una precisione ottimale. L'ACS714 fornisce una tensione di uscita stabile di 2,5 V quando non c'è flusso di corrente attraverso di esso. Ma per esempio, se la tensione di alimentazione dell'ACS714 verrà abbassata (diciamo 4,7 V), anche la tensione di uscita in corrente (2,5 V) si abbasserà e creerà una lettura di corrente inappropriata / errata. Inoltre, poiché stiamo misurando la tensione rispetto a Vref, la tensione di riferimento su Aref deve essere priva di errori e stabile. Ecco perché abbiamo bisogno di un 5v stabile.

Se potessimo alimentare l'ACS714 e l'Aref dall'U1 che fornisce l'atmega8 e l'LCD, allora ci sarebbe una caduta di tensione notevole all'uscita di U1 e la lettura di ampere e tensione sarebbe errata. Ecco perché U2 viene utilizzato qui per eliminare l'errore fornendo un 5v stabile solo ad Aref e ACS714.

S1 viene premuto per calibrare la lettura della tensione. S2 è riservato per un uso futuro. È possibile aggiungere/non aggiungere questo pulsante in base alla propria scelta.

Passaggio 3: funzionamento…

Funzionamento…
Funzionamento…
Funzionamento…
Funzionamento…
Funzionamento…
Funzionamento…

All'accensione, l'atmega8 accenderà il convertitore buck fornendo un'uscita pwm del 25% alla base del Q2. A sua volta, Q2 guiderà Q1 e il convertitore buck verrà avviato. Q3 verrà spento per scollegare l'uscita del convertitore buck e la batteria. L'atmega8 legge quindi la tensione della batteria tramite il divisore della resistenza. Se non è collegata alcuna batteria, l'atmega8 mostra un messaggio "Inserire batteria" tramite lcd 16x2 e attende la batteria. Se viene quindi collegata una batteria, il atmega8 controllerà la tensione. Se la tensione è inferiore a 9v, l'atmega8 mostrerà "Batteria difettosa" sull'LCD 16x2.

Se viene trovata una batteria con più di 9 V, il caricabatterie entrerà prima in modalità CC e accenderà il mosfet di uscita Q3. La modalità caricabatterie (CC) verrà aggiornata per essere visualizzata immediatamente. Se la tensione della batteria viene rilevata superiore a 12,4 V, allora il mega8 lascerà immediatamente la modalità CC ed entrerà in modalità CV. Se la tensione della batteria è inferiore a 12,4 V, il mega8 manterrà una corrente di carica di 1 A aumentando/diminuendo la tensione di uscita del convertitore buck variando il ciclo di lavoro del pwm. La corrente di carica verrà letta dal sensore di corrente ACS714. La tensione di uscita buck, la corrente di carica, il ciclo di lavoro PWM verranno periodicamente aggiornati nell'LCD.

. La tensione della batteria verrà verificata spegnendo Q3 dopo ogni intervallo di 500ms. La tensione della batteria verrà immediatamente aggiornata al display lcd.

Se la tensione della batteria supera i 12,4 volt durante la carica, il mega8 lascerà la modalità CC ed entrerà in modalità CV. Lo stato della modalità verrà immediatamente aggiornato sull'LCD.

Quindi il mega8 manterrà la tensione di uscita di 12,6 volt variando il ciclo di lavoro del buck. Qui la tensione della batteria verrà controllata dopo ogni intervallo di 1 s. Non appena la tensione della batteria sarà maggiore di 12,5 V, verrà controllata se la corrente assorbita è inferiore a 190ma. Se entrambe le condizioni sono soddisfatte, il ciclo di carica verrà interrotto spegnendo permanentemente Q3 e verrà emesso un segnale acustico accendendo Q5. Anche mega8 mostrerà "Carica completata" tramite l'LCD.

Passaggio 4: parti necessarie

Parti richieste
Parti richieste

Di seguito sono elencate le parti necessarie per completare il progetto. Fare riferimento alle schede tecniche per il pinout. Viene fornito solo il collegamento alla scheda tecnica delle parti cruciali

1) ATMEGA8A x 1.(scheda tecnica)

2) Sensore di corrente ACS714 5A di Pololu x 1 (consiglio vivamente di utilizzare il sensore di Pololu in quanto sono i più precisi tra tutti gli altri sensori che ho usato. Lo trovate qui). Il pinout è descritto nell'immagine.

3) IRF9540 x 2. (scheda tecnica)

4) 7805 x 2 (consigliato da ricambi originali Toshiba in quanto forniscono l'uscita 5v più stabile). (scheda tecnica)

5) 2n3904 x 3.(scheda tecnica)

6) 1n5820 schottky x 2. (scheda tecnica)

7) LCD 16x2 x 1. (scheda tecnica)

8) Induttore di potenza 330uH/2A x 1 (consigliato da coilmaster)

9) Induttore 10uH x 1 (piccolo)

10) Resistori -(Tutti i resistori sono di tipo 1% MFR)

150R x 3

680R x 2

1k x 1

2k2 x 1

10k x 2

22k x 1

Pot da 5k x 2 (tipo di montaggio su pcb)

11) Condensatori

Nota: non ho usato C4. Non è necessario utilizzarlo se si utilizza l'alimentatore per laptop/alimentatore regolato come fonte di alimentazione a 19 V

100uF/25v x 3

470uF/25v x 1

1000uF/25v x 1

100n x 8

22p x 2

12) Interruttore momentaneo per montaggio su PCB x 2

13) Cicalino 20v x 1

14) Connettore morsettiera a 2 pin x 2

15) Cabinet (ho usato un cabinet come questo). Puoi usare quello che vuoi.

16) Alimentatore per laptop 19v (ho modificato un alimentatore per laptop HP, puoi utilizzare qualsiasi tipo di alimentatore come desideri. Se vuoi costruirne uno, visita le mie istruzioni.)

17) Dissipatore di calore di medie dimensioni per U1 e Q1. Puoi usare questo tipo. Oppure puoi fare riferimento alle mie immagini del circuito. Ma assicurati di usare il dissipatore di calore per entrambi.

18) Connettore a banana - Femmina (nero e rosso) x 1 + maschio (nero e rosso) (a seconda della necessità di connettori)

Passaggio 5: tempo per calcolare……

Calcolo della misurazione della tensione:

La tensione massima che misureremo utilizzando l'adc di atmega8 è 20v. Ma l'adc di atmega8 può misurare un massimo di 5v. Quindi, per ottenere 20v entro l'intervallo di 5v, qui viene utilizzato un divisore di tensione 4: 1 (come 20v/4=5v). Quindi potremmo implementarlo semplicemente usando due resistori, ma nel nostro caso ho aggiunto un potenziometro tra due resistori fissi in modo da poter regolare manualmente la precisione ruotando il potenziometro. La risoluzione dell'ADC è di 10 bit, ovvero l'adc rappresenterà da 0v a 5v come numeri decimali da 0 a 1023 o da 00h a 3FFh. ('h' sta per numeri esadecimali). Il riferimento è impostato a 5v esternamente tramite il pin Aref.

Quindi la tensione misurata = (lettura adc) x (Vref=5v) x (fattore divisore resistore, ovvero 4 in questo caso) / (lettura max adc, ovvero 1023 per 10 bit adc).

Supponiamo di ottenere una lettura adc di 512. Quindi la tensione misurata sarà -

(512 x 5 x 4) / 1023 = 10v

Calcolo della misurazione della corrente:

L'ACS714 fornirà un'uscita stabile di 2,5 V al pin di uscita quando nessuna corrente scorrerà da IP+ verso IP-. Darà 185 mv/A oltre 2,5 V, ad esempio, se la corrente di 3 A scorre attraverso il circuito, l'ACS714 darà 2.5v+(0.185 x 3)v = 3.055v al suo pin out.

Quindi la formula di misurazione corrente è la seguente:

Corrente misurata=(((lettura adc)*(Vref=5v)/1023)-2.5)/0.185.

per esempio, la lettura adc è 700, quindi la corrente misurata sarà - (((700 x 5)/1023) - 2,5)/0,185 = 4,98 A.

Passaggio 6: il software

Il software è codificato in Winavr utilizzando GCC. Ho modularizzato il codice, ovvero ho creato diverse librerie come libreria adc, libreria lcd ecc. La libreria adc contiene i comandi necessari per impostare e interagire con adc. La libreria lcd contiene tutti i funzioni per pilotare l'lcd 16x2. È inoltre possibile utilizzare lcd_updated _library.c poiché la sequenza di avvio dell'lcd viene modificata in questa libreria. Se si desidera utilizzare la libreria aggiornata, rinominarla con lcd.c

Il file main.c contiene le funzioni principali. Il protocollo di ricarica per gli ioni di litio è scritto qui. Definisci il ref_volt nel main.c misurando l'uscita di U2 (7805) con un multimetro preciso per ottenere letture accurate come i calcoli si basano su di esso.

Puoi semplicemente masterizzare il file.hex direttamente nel tuo mega8 per bypassare l'headche.

Per coloro che vogliono scrivere un altro protocollo di carica, ho inserito abbastanza commenti in base ai quali anche un bambino può capire cosa sta succedendo per ogni esecuzione di riga. Devi solo scrivere il tuo protocollo per diversi tipi di batteria. Se stai usando Li- ioni di tensione diversa, devi solo modificare i parametri. (Anche se questo non è testato per altri tipi di batterie agli ioni di litio/altro. Devi risolverlo da solo).

Consiglio vivamente di non costruire questo circuito, se questo è il tuo primo progetto o se sei nuovo nei microcontrollori/elettronica di potenza.

Ho caricato ogni singolo file nel formato originale tranne il Makefile in quanto crea problemi da aprire. L'ho caricato in formato.txt. Basta copiare il contenuto e incollarlo in un nuovo Makefile e creare l'intero progetto. Voila….sei pronto per masterizzare il file esadecimale.

Passaggio 7: basta con la teoria…..facciamo il build

Basta con la teoria…..facciamolo
Basta con la teoria…..facciamolo
Basta con la teoria…..facciamolo
Basta con la teoria…..facciamolo
Basta con la teoria…..facciamolo
Basta con la teoria…..facciamolo
Basta con la teoria…..facciamolo
Basta con la teoria…..facciamolo

Ecco le foto del mio prototipo da breadboard a finalizzato in pcb. Si prega di leggere le note delle foto per saperne di più. Le foto sono disposte in serie dall'inizio alla fine.

Passaggio 8: prima del primo ciclo di carica……. Calibra!!

Prima di caricare una batteria utilizzando il caricabatterie, è necessario prima calibrarla. Altrimenti non sarà in grado di caricare la batteria/sovraccaricarla.

Esistono due tipi di calibrazione 1) Calibrazione della tensione. 2) Calibrazione corrente. I passaggi per calibrare sono i seguenti.

All'inizio, misurare la tensione di uscita dell'U2. Quindi definirla in main.c come ref_volt. Il mio era 5.01. Cambialo secondo la tua misurazione. Questo è il passaggio principale necessario per la calibrazione di tensione e corrente. Per la calibrazione corrente, niente altro è necessario. Tutto sarà curato dal software stesso

Ora che hai masterizzato il file esadecimale dopo aver definito il volt di riferimento in main.c, spegni l'alimentazione dell'unità.

. Ora misurare la tensione della batteria che verrà caricata utilizzando un multimetro e collegare la batteria all'unità.

Ora premere il pulsante S1 e tenerlo premuto e alimentare il circuito mentre viene premuto il pulsante. Dopo un breve ritardo di circa 1 secondo, rilasciare il pulsante S1. Notare che l'unità non entrerà in modalità di calibrazione se si alimenta prima il circuito, quindi premere S1.

Ora puoi vedere nel display che il circuito è entrato in modalità calibrazione. Una "modalità cal" verrà visualizzata nell'LCD insieme alla tensione della batteria. Ora abbina la tensione della batteria mostrata sull'LCD con la lettura del multimetro ruotando il potenziometro. Al termine, premere nuovamente l'interruttore S1, tenerlo premuto per circa un secondo e rilasciarlo. Uscirà dalla modalità di calibrazione. Reimpostare nuovamente il caricabatterie spegnendolo e riaccendendolo.

Il processo di cui sopra può essere eseguito anche senza una batteria collegata. È necessario collegare una fonte di alimentazione esterna al terminale di uscita (J2). Dopo essere entrati in modalità di calibrazione, calibrare usando il potenziometro. Ma questa volta prima scollegare la fonte di alimentazione esterna, quindi premere S1 per uscire dalla modalità di calibrazione. Ciò è necessario scollegare prima la fonte di alimentazione esterna per evitare qualsiasi tipo di malfunzionamento di eventuali unità.

Passaggio 9: accensione dopo la calibrazione… ora sei pronto per il rock

Accensione dopo la calibrazione… ora sei pronto per il rock
Accensione dopo la calibrazione… ora sei pronto per il rock
Accensione dopo la calibrazione… ora sei pronto per il rock
Accensione dopo la calibrazione… ora sei pronto per il rock
Accensione dopo la calibrazione… ora sei pronto per il rock
Accensione dopo la calibrazione… ora sei pronto per il rock

Ora che la calibrazione è completa, è possibile avviare il processo di carica. Collegare prima la batteria, quindi accendere l'unità. Il caricabatterie si occuperà del resto.

Il mio circuito è funzionante e testato al 100%. Ma se noti qualcosa, faccelo sapere. Inoltre, non esitare a contattarci per qualsiasi domanda.

Costruzione felice.

Rgds//Sharanya

Consigliato: