Sommario:

Controllo batteria con selezione della temperatura e della batteria: 23 passaggi (con immagini)
Controllo batteria con selezione della temperatura e della batteria: 23 passaggi (con immagini)

Video: Controllo batteria con selezione della temperatura e della batteria: 23 passaggi (con immagini)

Video: Controllo batteria con selezione della temperatura e della batteria: 23 passaggi (con immagini)
Video: Ingoiare il latte del trallalero fa bene? #shorts 2024, Luglio
Anonim
Image
Image
Cambia dal progetto di base
Cambia dal progetto di base

Tester di capacità della batteria.

Con questo dispositivo puoi controllare la capacità della batteria 18650, acido e altro (la batteria più grande che ho testato è la batteria 6v Acid 4, 2A). Il risultato del test è in milliampere/ora.

Creo questo dispositivo perché ne ho bisogno per controllare la capacità della batteria fake china.

Per sicurezza ho aggiunto, utilizzando un termistore, la temperatura della resistenza di alimentazione e della batteria per evitare che si surriscaldasse, con questo accorgimento posso controllare la batteria ad acido 6v senza accendere la scheda (nel ciclo di scarica un po' di tempo vado a resistenza di potenza calda e il dispositivo attende 20 secondi per ridurre la temperatura).

Seleziono piccolo micro controller atmega328 compatibile nano (eBay).

Tutto il codice è qui.

Passaggio 1: modifica dal progetto di base

Ho rubato l'idea al progetto di OpenGreenEnergy, e ho rifatto il tabellone per aggiungere funzionalità, così ora divento più generale.

v0.1

  • Il VCC di Arduino viene ora calcolato automaticamente;
  • Aggiunta variabile per modificare l'impostazione in modo più comodo.
  • Aggiunta percentuale di scarico
  • Aggiunta temperatura della batteria e resistenza di alimentazione

v0.2

  • Aggiunta possibilità di selezione della batteria
  • Ho creato una scheda prototipo (guarda lo schema), con lo schermo, il pulsante e l'altoparlante all'esterno della scheda perché in futuro mi piacerebbe creare un pacchetto.
  • Aggiunta la gestione del limite di temperatura alla resistenza di potenza in modo da poter bloccare il processo quando la temperatura sale oltre i 70° (oltre questa temperatura declassamento della resistenza di potenza).

v0.3

Prossimamente una scheda da questo servizio

Passaggio 2: V0.2 della scheda

V0.2 del Consiglio
V0.2 del Consiglio

Nella v0.2 per supportare vari tipi di batterie, ho creato una struttura che deve essere riempita con il nome della batteria, la tensione minima e la tensione massima (ho bisogno di aiuto per riempirla:P).

// Struttura della batteria typestruct BatteryType { char name[10]; galleggiante maxVolt; galleggiante minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType batteryTypes[BATTERY_TYPE_NUMBER] = { { "18650", 4.3, 2.9 }, { "17550", 4.3, 2.9 }, { "14500", 4.3, 2.75 }, { "6v Acid", 6.50, 5.91 } };

Ora uso un set di resistori da 10k per il partitore di tensione per leggere la doppia temperatura dell'ingresso analogico. Se vuoi cambiare il supporto di tensione, devi cambiare questo valore (spiega meglio dopo):

// Resistenza alla tensione della batteria

#define BAT_RES_VALUE_GND 10.0 #define BAT_RES_VALUE_VCC 10.0 // Resistenza di tensione del resistore di potenza #define RES_RES_VALUE_GND 10.0 #define RES_RES_VALUE_VCC 10.0

Se non usi il termistore, imposta questo su false:

#define USING_BATTERY_TERMISTOR vero

#define USING_RESISTO_TERMISTOR vero

Se utilizzi un display i2c diverso, devi riscrivere questo metodo:

pareggio vuoto (vuoto)

Nel progetto, puoi trovare schemi, foto e altro.

Passaggio 3: breadboard: controller di visualizzazione dei caratteri I2c espanso

Breadboard: controller di visualizzazione dei caratteri I2c espanso
Breadboard: controller di visualizzazione dei caratteri I2c espanso

Ho usato un display di caratteri generico e ho costruito il controller i2c e l'ho usato con la mia libreria personalizzata.

Ma se vuoi puoi prendere un normale controller i2c (meno di 1€) con una libreria standard, il codice rimane lo stesso. Tutto il codice di visualizzazione è in funzione di disegno, quindi puoi cambiarlo senza cambiare altre cose.

Spiegato meglio qui.

Passaggio 4: breadboard: visualizzazione dei caratteri con I2c integrato

Breadboard: display dei caratteri con I2c integrato
Breadboard: display dei caratteri con I2c integrato

Lo stesso schema senza i2c controllato espanso.

Passaggio 5: realizzazione

Per misurare la tensione utilizziamo il principio di un partitore di tensione (maggiori informazioni su Wikipedia).

In parole semplici, questo codice è il fattore moltiplicatore per misurare la tensione della batteria.

batResValueGnd / (batResValueVolt + batResValueGnd)

Ho inserito le 2 resistenze di batResValueVolt e batResValueGnd dopo e prima del filo di lettura analogico.

batVolt = (campione1 / (1023.0 - ((BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)) * 1023.0))) * vcc;

sample1 è la media delle letture analogiche;

vcc riferimento tensione Arduino;

1023.0 è il valore massimo di riferimento della lettura analogica (le letture analogiche Arduino vanno da 0 a 1023).

Per ottenere l'amperaggio è necessaria la tensione prima e dopo la resistenza di potenza.

Quando hai la misura della tensione prima e dopo la resistenza di potenza puoi calcolare il milliampere che consuma la batteria.

Il MOSFET viene utilizzato per avviare e arrestare il consumo della batteria dal resistore di alimentazione.

Per sicurezza ho inserito 2 termistori per monitorare la temperatura della batteria e della resistenza di alimentazione.

Passaggio 6: estensibilità

Estensibilità
Estensibilità
Estensibilità
Estensibilità

Cerco di creare una scheda prototipo che sia estensibile, ma per ora utilizzo solo un set minimo di pin (in futuro aggiungerò led e altri pulsanti).

Se si desidera una tensione di supporto maggiore di 10 V, è necessario modificare il valore del resistore della batteria e della resistenza secondo la formula

(BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)

nello schema Tensione di alimentazione della resistenza

Tensione alimentazione resistenza GND 1/2 / (Tensione alimentazione resistenza 2/2 + Tensione alimentazione resistenza GND 1/2)

Il rosa è giù saldatura

Passaggio 7: elenco delle parti

Proprietà del tipo di parte dell'importo

  • Morsettiera a vite per montaggio su PCB da 2 5 mm Morsettiera a vite 8A 250 V LW SZUS (eBay)
  • 1 clone Arduino Pro Mini (compatibile Nano) (eBay)
  • 1 canale P FET di base IRF744N o IRLZ44N (eBay)
  • 11 10kΩ Resistore resistore 10kΩ (eBay)
  • 2 Sensore di temperatura (termistore) 10kΩ; (eBay)
  • * Modulo di intestazione maschile generico ♂ (maschio); (eBay)
  • * Modulo di intestazione femminile generico ♀ (femmina); (eBay)
  • 1 Scheda PerfBoard Scheda prototipo 24x18 (eBay)
  • 10R, 10W

    resistore di potenza (eBay) Trovo il mio in un vecchio televisore crt.

Passaggio 8: scheda: reset, pulsante Gnd E per selezionare la batteria

Scheda: reset, pulsante Gnd E per selezionare la batteria
Scheda: reset, pulsante Gnd E per selezionare la batteria

Nella parte sinistra dei pin si trovano il pulsante e il cicalino.

Uso 3 pulsanti:

  1. uno per cambiare tipo di batteria;
  2. uno per avviare la scarica della batteria selezionata;
  3. quindi uso il pin di ripristino per riavviare tutto e attivare una nuova operazione.

Tutti i pin sono già stati abbassati, quindi è necessario attivarli con VCC

Il reset è attivato con GND

Il rosa è giù saldatura

Passaggio 9: scheda: pin I2c e alimentazione

Scheda: I2c e pin di alimentazione
Scheda: I2c e pin di alimentazione

Alla base puoi vedere il VCC, GND e SDA, SCL per la visualizzazione (e altro in futuro).

Il rosa è giù saldatura

Passaggio 10: scheda: termistore e misurazione della tensione

Scheda: termistore e misurazione della tensione
Scheda: termistore e misurazione della tensione

A destra ci sono i pin per leggere il valore del termistore, uno per il resistore di potenza e l'altro per il termistore della batteria (pin maschio/femmina da collegare).

Poi ci sono pin analogici che misurano la tensione differenziale dopo e prima del resistore di potenza.

Il rosa è giù saldatura

Passaggio 11: scheda: resistenza alla misurazione della tensione

Scheda: resistenza alla misurazione della tensione
Scheda: resistenza alla misurazione della tensione
Scheda: resistenza alla misurazione della tensione
Scheda: resistenza alla misurazione della tensione

Qui puoi vedere il resistore che permette di supportare una tensione doppia rispetto al pin arduino (10v), devi cambiarlo per supportare più tensione.

Il rosa è giù saldatura

Passaggio 12: Passaggio di saldatura: tutti i pin

Fase di saldatura: tutti i pin
Fase di saldatura: tutti i pin
Fase di saldatura: tutti i pin
Fase di saldatura: tutti i pin

Per prima cosa aggiungo tutti i pin e la saldatura.

Passaggio 13: passaggi di saldatura: resistenza di pulldown e termistore

Fasi di saldatura: resistenza di pulldown e termistore
Fasi di saldatura: resistenza di pulldown e termistore
Fasi di saldatura: resistenza di pulldown e termistore
Fasi di saldatura: resistenza di pulldown e termistore

Quindi aggiungo tutti i resistori pulldown (per i pulsanti) e il connettore i2c (display).

Quindi il termistore del resistore di potenza è molto importante, con la batteria acida che si surriscalda.

Passaggio 14: passaggi di saldatura: MOSFET, resistenza per controllare la tensione

Fasi di saldatura: MOSFET, resistenza al controllo della tensione
Fasi di saldatura: MOSFET, resistenza al controllo della tensione
Fasi di saldatura: MOSFET, resistenza al controllo della tensione
Fasi di saldatura: MOSFET, resistenza al controllo della tensione

Ora dobbiamo inserire il mosfet per attivare la scarica e la resistenza per controllare la tensione.

2 resistenza per la tensione prima della resistenza di potenza 2 resistenza per la tensione dopo la resistenza di potenza, quando hai questa tensione puoi calcolare il consumo di milliampere.

Passaggio 15: codice

Il microcontrollore è compatibile con nano, quindi devi impostare il tuo IDE per caricare un Arduino Nano.

Per funzionare devi scaricare il codice dal mio repository github.

Quindi devi aggiungere 3 librerie:

  1. Wire: libreria arduino standard per protocollo i2c;
  2. Libreria Termistor da qui non la libreria che puoi trovare in arduino IDE, ma la mia versione;
  3. LiquidCrystal_i2c: se usi la versione estesa/custom dell'adattatore i2c (la mia versione) devi scaricare la libreria da qui, se usi il componente standard puoi prendere la libreria da arduino IDE, ma tutto è meglio spiegato qui.

Non provo LCD con libreria standard, mi sembra che siano intercambiabili, ma se ci sono problemi non esitate a contattarmi.

Passaggio 16: risultato dopo l'assemblaggio

Image
Image
Risultato dopo il montaggio
Risultato dopo il montaggio
Risultato dopo il montaggio
Risultato dopo il montaggio

La scheda base è nella foto, quindi possiamo andare a provarla.

Passaggio 17: prima seleziona il tipo di batteria

Prima seleziona il tipo di batteria
Prima seleziona il tipo di batteria

Come descritto abbiamo una mappa di valore con configurazione della batteria.

// Struttura della batteria typestruct BatteryType { char name[10]; galleggiante maxVolt; galleggiante minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType batteryTypes[BATTERY_TYPE_NUMBER] = { { "18650", 4.3, 2.9 }, { "17550", 4.3, 2.9 }, { "14500", 4.3, 2.75 }, { "6v Acid", 6.50, 5.91 } };

Passaggio 18: iniziare a scaricare

Inizia a scaricare
Inizia a scaricare
Inizia a scaricare
Inizia a scaricare

Il clic del secondo pulsante inizia a scaricare.

Nel display si possono vedere i milliampere correnti, i milliampere/ore, la percentuale di scaricamento, la tensione della batteria e la temperatura della resistenza di potenza e della batteria.

Passaggio 19: eccezioni: batteria rimossa

Image
Image
Eccezioni: Allarme temperatura
Eccezioni: Allarme temperatura

Se rimuovi la batteria il processo di scarica va in pausa, quando lo reinserisci ricomincia dall'ultimo valore.

Passaggio 20: eccezioni: avviso di temperatura

Eccezioni: Allarme temperatura
Eccezioni: Allarme temperatura
Eccezioni: Allarme temperatura
Eccezioni: Allarme temperatura
Eccezioni: Allarme temperatura
Eccezioni: Allarme temperatura

Se la temperatura (batteria o resistenza di alimentazione) si surriscalda, il processo di scarica va in pausa.

#define BATTERY_MAX_TEMP 50

#define RESISTANCE_MAX_TEMP 69 // 70° su datasheet (Resistenza di derating) #define TEMP_TO_REMOVE_ON_MAX_TEMP 20

Il valore predefinito per la temperatura massima è 50° per la batteria e 69 per la resistenza di alimentazione.

Come puoi vedere nel commento, il resistore di potenza è influenzato dal declassamento quando si supera i 70°.

Se viene generato un avviso, avviare TEMP_TO_REMOVE_ON_MAX_TEMP secondi di pausa per mettere a bassa temperatura.

Passaggio 21: test dell'amperaggio

Amperaggio di prova
Amperaggio di prova

Il risultato del test di amperaggio è buono.

Passaggio 22: pacchetto

Con il componente separato il pacchetto risulta semplice da realizzare.

In una scatola deve fare un rettangolo per LCD, i fori per i pulsanti e un barilotto femmina esterno per fornire tensione dall'alimentatore.

Il pulsante non necessita di resistenza pull-down perché lo aggiungo già a bordo.

Quando ho un po' di tempo lo creo e lo posto.

Consigliato: