mi avanzano un Arduino Uno, un display LCD 16x2, e la scatola di un vecchio carica batterie a 4 posti, e mi e' venuto in mente di unire le 3 cose in un unico progetto, ma prima di reinventare la ruota, chiedo: che voi sappiate, esiste gia' un progetto che usi un Arduino per realizzare un carica/scarica batterie nimh "intelligente" stile i Lacrosse ?
Carica batterie con Arduino
Oct 15, 2017
36 Replies
formatting link
"alfio" ha scritto nel messaggio news:orvv9t$1hom$ snipped-for-privacy@gioia.aioe.org...
Proprio come quello forse no, ma ci sono progettini per 1 batteria, sta a te capire se riesci a farne replicare 4 con lo stesso principio.
tensione di ogni singola cella.
gruppo ne risente,
carica.
formatting link
Saluti.
Il 15/10/2017 18:12, robby_1 ha scritto:
e' un punto di partenza.
"alfio" ha scritto nel messaggio news:os03nc$1p8c$ snipped-for-privacy@gioia.aioe.org...
A pensarci bene, magari tra un po' ci sentiamo, potrebbe interessare anche a me. Buon lavoro.
Il 15/10/2017 19:05, robby_1 ha scritto:
il regolatore lineare, come hanno usato in quel progetto, non mi piace molto, io vorrei caricare con correnti di 1A o piu'. stavo pensando di usare questi moduli step-down, visto che costano poco: questo dovrebbe essere il loro schema:
la mia idea e' di regolare il trimmer per la V max a circa 2V, togliere il trimmer per la I max e portare l'ingresso del LM358 all'uscita PWM di Arduino, opportunamente filtrata. Visto che quei regolatori partono da 1,3V, credo basti inserire in serie all'uscita un diodo per aggiungere la caduta necessaria, anche se poi scaldera' parecchio.
ora mi serve un circuito per la scarica. che ne dite di un semplice MosFet, pilotato in zona lineare ? anche con 1A di scarica deve dissipare solo 1W circa, poi basta tenerlo spento e puo' rimanere in parallelo alla batteria durante la carica.
Lacrosse e simili sono alimentati a tensione bassissima, mi sembra 3V. Credo, quindi, che abbiano regolatori di corrente lineari ela tensione di alimentazione sia bassa per limitare la dissipazione dei transistor.
Tieni sotto controlla la tensione di ciascuno dei 4 elementi e comanda 4 transistor in PWM. Usi ciascun transistor come generatore di corrente costante di 1A (con una semplice resistenza in serie all'emettitore) e lo moduli in PWM quando imposti correnti di carica inferiori.
Quando viene rilevato un abbassamento della tensione dell'elemento si interrompe la carica. Prevedi anche un sensore di temperatura per ciascun elemento e un'interruzione della carica di ogni elemento dopo
di 3Ah).
http://www.avg.com
Anche un rapido innalzamento della temperatura (a prescindere dal valore assoluto) indica il completamento della carica: da quel momento, tutta l'energia fornita si trasforma in calore).
http://www.avg.com
---
formatting link
6 I/O per il display
3 I/O per un encoder
4 per leggere le tensioni
4 PWM per i transistor di carica
4 per i transistor di scarica
----
21 Se usi l'oscillatore interno hai a disposizione anche PB6 e PB7: 21 I/O! :- )
http://www.avg.com
Scusa: 22 I/O! :-)
---
formatting link
Puoi metterci anche un cicalino :-)
Utilizzando saggiamente i pin, puoi collegare anche dei LED: se mandi le tensioni agli ingressi analogici tramite una resistenza (ad es. da 47k) puoi collegare sui pin dei LED tramite 330 ohm e normalmente pilotare i LED; ogni 5 secondi, poi, commuti i pin in ingressi, attendi 100uS e
reimposti lo stato dei LED.
http://www.avg.com
Google ne trova:
formatting link
http://www.avg.com
formatting link
http://www.avg.com
Nota la lettura di Vb e di Vcc su A1 e A2. Nel forum trovi anche il collegamento a Github con tutto il programma.
http://www.avg.com
PB6 e PB7 sono normalmente inutilizzati, in quanto su quei pin fisici
commutare i due pin del quarzo su PB6 e PB7, avendo poi a disposizione tutti gli 8 bit della porta B.
http://www.avg.com
Tempo fa avevo provato a usare PB6 e PB7:
void setup() { DDRB|=B11100000; }
void loop() { PORTB|=B01100000; // Porta a 1 PB6 e PB7 delay(500);
PORTB&=B10011111; // Porta a 0 PB6 e PB7 delay(500); }
Naturalmente devi impostare i "Fuse" per usare l'oscillatore interno. Basta aggiungere la configurazione che segue all'interno del file boards.txt in D:\Programmi\Arduino 1.8.2\hardware\arduino\avr o simile, secondo dove hai installato l'IDE.
##############################################################
uno1MHz.name=Arduino uno 1MHz (ATmega328)
uno1MHz.upload.tool=avrdude uno1MHz.upload.protocol=arduino uno1MHz.upload.maximum_size=32256 uno1MHz.upload.maximum_data_size=2048 uno1MHz.upload.speed=9600
uno1MHz.bootloader.tool=avrdude uno1MHz.bootloader.low_fuses=0x62 uno1MHz.bootloader.high_fuses=0xd9 uno1MHz.bootloader.extended_fuses=0xfd uno1MHz.bootloader.unlock_bits=0x3F uno1MHz.bootloader.lock_bits=0x0F uno1MHz.bootloader.file=optiboot/optiboot_atmega328.hex
uno1MHz.build.mcu=atmega328p uno1MHz.build.f_cpu=1000000L uno1MHz.build.board=AVR_UNO_1MHz uno1MHz.build.core=arduino uno1MHz.build.variant=standard
##############################################################
http://www.avg.com
Guarda anche qui:
formatting link
http://www.avg.com
Ooops.. Qui ho impostato il clock a 1MHz per ridurre il consumo, ma si
http://www.avg.com
Il 16/10/2017 12:07, LAB ha scritto:
potrebbe anche usare dei moduli esterni ADC/DAC controllati da un unico bus seriale (I2C o SPI)
bye
!(!1|1)
Il 16/10/2017 13:02, LAB ha scritto:
c'e' modo di vederlo senza registrarsi ?
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required