Carica batterie con Arduino

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 ?

formatting link

Reply to
alfio
Loading thread data ...

"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.

Reply to
robby_1

Il 15/10/2017 18:12, robby_1 ha scritto:

e' un punto di partenza.

Reply to
alfio

"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.

Reply to
robby_1

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.

Reply to
alfio

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
Reply to
LAB

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
Reply to
LAB
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
Reply to
LAB

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
Reply to
LAB

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
Reply to
LAB

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
Reply to
LAB

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
Reply to
LAB

Guarda anche qui:

formatting link

--

http://www.avg.com
Reply to
LAB

Ooops.. Qui ho impostato il clock a 1MHz per ridurre il consumo, ma si

--

http://www.avg.com
Reply to
LAB

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)
Reply to
not1xor1

Il 16/10/2017 13:02, LAB ha scritto:

c'e' modo di vederlo senza registrarsi ?

Reply to
alfio

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.