Sommario:
- Passaggio 1: caratteristiche e costi
- Passaggio 2: schema e teoria del funzionamento
- Passaggio 3: PCB ed elettronica
- Passaggio 4: custodia e assemblaggio
- Passaggio 5: codice Arduino
- Passaggio 6: codice Java
- Passaggio 7: successo
Video: Alimentazione digitale a batteria: 7 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Hai mai desiderato un alimentatore da usare in movimento, anche senza una presa a muro nelle vicinanze? E non sarebbe bello se fosse anche molto preciso, digitale e controllabile tramite PC?
In questo tutorial ti mostrerò come costruire esattamente questo: un alimentatore digitale a batteria, che è compatibile con arduino e può essere controllato tramite il PC tramite USB.
Tempo fa ho costruito un alimentatore da un vecchio alimentatore ATX e, sebbene funzioni alla grande, volevo migliorare il mio gioco con un alimentatore digitale. Come già detto, è alimentato da batterie (2 celle al litio per la precisione), e può erogare un massimo di 20 V a 1 A; che è abbondante per la maggior parte dei miei progetti che richiedono un alimentatore preciso.
Mostrerò l'intero processo di progettazione e tutti i file di progetto possono essere trovati sulla mia pagina GitHub:
Iniziamo!
Passaggio 1: caratteristiche e costi
Caratteristiche
- Modalità a tensione costante e corrente costante
- Utilizza un regolatore lineare a basso rumore, preceduto da un preregolatore di tracciamento per ridurre al minimo la dissipazione di potenza
- Utilizzo di componenti saldabili a mano per mantenere il progetto accessibile
- Alimentato da ATMEGA328P, programmato con Arduino IDE
- Comunicazione PC tramite applicazione Java su micro USB
- Alimentato da 2 celle agli ioni di litio 18650 protette
- Spine a banana distanziate di 18 mm per la compatibilità con gli adattatori BNC
Specifiche
- 0 - 1A, passi di 1 mA (DAC 10 bit)
- 0 - 20 V, passi di 20 mV (DAC a 10 bit) (funzionamento a 0 V vero)
- Misura della tensione: risoluzione 20 mV (ADC 10 bit)
-
Misura di corrente:
- < 40mA: risoluzione 10uA (ina219)
- < 80mA: risoluzione 20uA (ina219)
- < 160mA: risoluzione 40uA (ina219)
- < 320mA: risoluzione 80uA (ina219)
- > 320mA: risoluzione 1mA (ADC 10 bit)
Costo
L'alimentatore completo mi è costato circa $ 135, con tutti i componenti unici. Le batterie sono la parte più costosa ($ 30 per 2 celle), poiché sono protette da 18650 celle al litio. È possibile ridurre significativamente il costo se non è necessaria alcuna operazione a batteria. Omettendo le batterie e il circuito di ricarica, il prezzo scende a circa $ 100. Anche se questo può sembrare costoso, gli alimentatori con prestazioni e caratteristiche molto inferiori spesso costano di più.
Se non ti dispiace ordinare i tuoi componenti da ebay o aliexpress, il prezzo con le batterie scenderebbe a $ 100 e $ 70 senza. Ci vuole più tempo prima che le parti arrivino, ma è un'opzione praticabile.
Passaggio 2: schema e teoria del funzionamento
Per capire il funzionamento del circuito, dovremo guardare lo schema. L'ho diviso in blocchi funzionali, in modo che sia più facile da capire; Spiegherò quindi anche passo passo il funzionamento. Questa parte è abbastanza approfondita e richiede una buona conoscenza dell'elettronica. Se vuoi solo sapere come costruire il circuito, puoi saltare al passaggio successivo.
Blocco principale
L'operazione si basa sul chip LT3080: è un regolatore di tensione lineare, che può abbassare le tensioni, in base a un segnale di controllo. Questo segnale di controllo sarà generato da un microcontrollore; come questo è fatto, sarà spiegato in dettaglio più avanti.
Impostazione della tensione
Il circuito intorno all'LT3080 genera i segnali di controllo appropriati. Per prima cosa, daremo un'occhiata a come viene impostata la tensione. L'impostazione della tensione dal microcontrollore è un segnale PWM (PWM_Vset), che viene filtrato da un filtro passa basso (C9 e R26). Questo produce una tensione analogica - tra 0 e 5 V - proporzionale alla tensione di uscita desiderata. Poiché la nostra gamma di uscita è 0 - 20 V, dovremo amplificare questo segnale con un fattore 4. Ciò viene fatto dalla configurazione dell'amplificatore operazionale non invertente di U3C. Il guadagno al pin impostato è determinato da R23//R24//R25 e R34. Questi resistori sono tolleranti allo 0,1%, per ridurre al minimo gli errori. R39 e R36 non contano qui, poiché fanno parte del ciclo di feedback.
Impostazioni correnti
Questo pin impostato può essere utilizzato anche per la seconda impostazione: modalità corrente. Vogliamo misurare l'assorbimento di corrente e disattivare l'uscita quando questa supera la corrente desiderata. Si riparte quindi da un segnale PWM (PWM_Iset), generato dal microcontrollore, che ora viene filtrato passa basso e attenuato per passare da un range 0 - 5 V ad un range 0 - 2 V. Questa tensione viene ora confrontata con la caduta di tensione attraverso il resistore di rilevamento della corrente (ADC_Iout, vedi sotto) dalla configurazione del comparatore dell'amplificatore operazionale U3D. Se la corrente è troppo alta, questo accenderà un led, e porterà anche la linea impostata dell'LT3080 a massa (tramite Q2), spegnendo così l'uscita. La misura della corrente e la generazione del segnale ADC_Iout avviene come segue. La corrente di uscita scorre attraverso i resistori R7 - R16. Questi totalizzano 1 ohm; il motivo per non utilizzare 1R in primo luogo è duplice: 1 resistore dovrebbe avere una potenza nominale maggiore (deve dissipare almeno 1 W) e utilizzando 10 resistori 1% in parallelo, otteniamo una precisione maggiore di con un solo resistore dell'1%. Un buon video sul perché funziona può essere trovato qui: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Quando la corrente scorre attraverso questi resistori, crea una caduta di tensione, che possiamo misurare, ed è posto prima dell'LT3080, poiché la caduta di tensione ai suoi capi non dovrebbe influenzare la tensione di uscita. La caduta di tensione viene misurata con un amplificatore differenziale (U3B) con un guadagno di 2. Ciò si traduce in un intervallo di tensione di 0 - 2 V (ne parleremo più avanti), quindi il partitore di tensione sul segnale PWM della corrente. Il buffer (U3A) è lì per assicurarsi che la corrente che scorre nei resistori R21, R32 e R33 non passi attraverso il resistore di rilevamento della corrente, il che influenzerebbe la sua lettura. Si noti inoltre che questo dovrebbe essere un operazionale rail-to-rail, poiché la tensione di ingresso all'ingresso positivo è uguale alla tensione di alimentazione. L'amplificatore non invertente è solo per la misurazione della rotta, tuttavia, per misurazioni molto precise, abbiamo a bordo il chip INA219. Questo chip ci consente di misurare correnti molto piccole ed è indirizzato tramite I2C.
Cose aggiuntive
All'uscita dell'LT3080, abbiamo altre cose. Innanzitutto c'è un dissipatore di corrente (LM334). Questo assorbe una corrente costante di 677 uA (impostata dal resistore R41), per stabilizzare l'LT3080. Non è però collegato a massa, ma a VEE, una tensione negativa. Ciò è necessario per consentire all'LT3080 di funzionare fino a 0 V. Quando è collegato a terra, la tensione più bassa sarebbe di circa 0,7 V. Sembra abbastanza bassa, ma tieni presente che questo ci impedisce di spegnere completamente l'alimentazione. Il diodo zener D3 viene utilizzato per bloccare la tensione di uscita se supera i 22 V e il divisore del resistore riduce l'intervallo di tensione di uscita da 0 - 20 V a 0 - 2 V (ADC_Vout). Sfortunatamente, questi circuiti sono in uscita dall'LT3080, il che significa che la loro corrente contribuirà alla corrente di uscita che vogliamo misurare. Fortunatamente, queste correnti sono costanti se la tensione rimane costante; quindi possiamo calibrare la corrente quando il carico viene scollegato prima.
Pompa di carico
La tensione negativa di cui abbiamo parlato prima è generata da un curioso circuitino: la pompa di carica. Per il suo funzionamento farei riferimento a qui: https://www.youtube.com/embed/1WAhTdWErrU&t=1s E' alimentato da un PWM al 50% del microcontrollore (PWM)
Convertitore boost
Diamo ora un'occhiata alla tensione di ingresso del nostro blocco principale: Vboost. Vediamo che è 8 - 24 V, ma aspetta, 2 celle al litio in serie danno un massimo di 8,4 V? In effetti, ed è per questo che abbiamo bisogno di aumentare la tensione, con un cosiddetto convertitore boost. Potremmo sempre aumentare la tensione a 24 V, indipendentemente dall'uscita che vogliamo; tuttavia, questo sprecherebbe molta energia nell'LT3080 e le cose si surriscaldano! Quindi, invece di farlo, aumenteremo la tensione un po' più della tensione di uscita. È appropriato circa 2,5 V in più per tenere conto della caduta di tensione nel resistore di rilevamento della corrente e della tensione di caduta dell'LT3080. La tensione è impostata da resistori sul segnale di uscita del convertitore boost. Per modificare questa tensione al volo, utilizziamo un potenziometro digitale, l'MCP41010, controllato tramite SPI.
Batteria in carica
Questo ci porta alla vera tensione di ingresso: le batterie! Dato che utilizziamo celle protette, dobbiamo semplicemente metterle in serie e il gioco è fatto! È importante utilizzare qui celle protette, per evitare sovracorrenti o sovrascarica, e quindi danni, delle celle. Ancora una volta, utilizziamo un divisore di tensione per misurare la tensione della batteria e abbassarla a un intervallo utilizzabile. Passiamo ora alla parte interessante: il circuito di ricarica. Usiamo il chip BQ2057WSN per questo scopo: in combinazione con il TIP32CG, forma fondamentalmente un alimentatore lineare stesso. Questo chip carica le cellule tramite una traiettoria CV CC appropriata. Poiché le mie batterie non hanno una sonda di temperatura, questo ingresso dovrebbe essere collegato a metà della tensione della batteria. Questo conclude la parte di regolazione della tensione dell'alimentatore.
Regolatore 5V
La tensione di alimentazione di 5 V dell'arduino è realizzata con questo semplice regolatore di tensione. Tuttavia, non è l'uscita a 5 V più precisa, ma questo verrà risolto di seguito.
Riferimento di tensione 2,048 V
Questo piccolo chip fornisce un riferimento di tensione di 2.048 V molto accurato. Viene utilizzato come riferimento per i segnali analogici ADC_Vout, ADC_Iout, ADC_Vbatt. Ecco perché avevamo bisogno di divisori di tensione per portare questi segnali a 2 V. Microcontrollore Il cervello di questo progetto è l'ATMEGA328P, questo è lo stesso chip utilizzato nell'Arduino Uno. Abbiamo già esaminato la maggior parte dei segnali di controllo, ma ci sono comunque alcune aggiunte interessanti. Gli encoder rotativi sono collegati ai 2 soli pin di interrupt esterni dell'arduino: PD2 e PD3. Ciò è necessario per un'implementazione software affidabile. Gli interruttori sottostanti utilizzano un resistore di pullup interno. Poi c'è questo strano divisore di tensione sulla linea di selezione del chip del potenziometro (Pot). Un partitore di tensione su un'uscita, a cosa serve; potresti dire. Come accennato in precedenza, l'alimentazione a 5 V non è molto accurata. Sarebbe quindi bene misurarlo con precisione e regolare di conseguenza il ciclo di lavoro del segnale PWM. Ma dal momento che non avevo più input liberi, ho dovuto fare un doppio lavoro di pin pull. Quando l'alimentatore si avvia, questo pin viene prima impostato come ingresso: misura la linea di alimentazione e si autocalibra. Successivamente, viene impostato come output e può guidare la linea di selezione del chip.
Driver dello schermo
Per il display, volevo uno schermo lcd hitachi comunemente disponibile ed economico. Sono guidati da 6 pin, ma poiché non avevo più pin, avevo bisogno di un'altra soluzione. Un registro a turni in soccorso! Il 74HC595 mi consente di utilizzare la linea SPI per controllare il display, quindi ho solo bisogno di 1 linea aggiuntiva di selezione del chip.
FTDI
L'ultima parte di questa alimentazione è la connessione con il crudele mondo esterno. Per questo, dobbiamo convertire i segnali seriali in segnali USB. Questo viene fatto da un chip FTDI, che è collegato a una porta micro USB per una facile connessione.
E questo è tutto!
Passaggio 3: PCB ed elettronica
Ora che abbiamo capito come funziona il circuito, possiamo iniziare a costruirlo! Puoi semplicemente ordinare il PCB online dal tuo produttore preferito (il mio costa circa $ 10), i file gerber possono essere trovati sul mio GitHub, insieme alla distinta base. L'assemblaggio del PCB è quindi sostanzialmente una questione di saldatura dei componenti in posizione secondo la serigrafia e la distinta base.
Il primo passo è la saldatura dei componenti SMD. La maggior parte di questi sono facili da eseguire manualmente, ad eccezione del chip FTDI e del connettore micro USB. Pertanto, puoi evitare di saldare questi 2 componenti da solo e utilizzare invece una scheda breakout FTDI. Ho fornito perni di intestazione su cui è possibile saldare.
Quando il lavoro SMD è terminato, puoi passare a tutti i componenti del foro passante. Questi sono molto semplici. Per i chip, potresti voler utilizzare i socket invece di saldarli direttamente alla scheda. È preferibile utilizzare un ATMEGA328P con bootloader Arduino, altrimenti dovrai caricarlo utilizzando l'intestazione ICSP (mostrata qui).
L'unica parte che richiede un po' più di attenzione è lo schermo lcd, poiché deve essere montato inclinato. Salda su di esso alcuni connettori maschio angolati, con il pezzo di plastica rivolto verso la parte inferiore dello schermo. Ciò consentirà un buon posizionamento dello schermo sul pcb. Successivamente, può essere saldato in posizione proprio come qualsiasi altro componente a foro passante.
L'unica cosa che resta da fare è aggiungere 2 fili, che si collegheranno ai terminali a banana sulla piastra frontale.
Passaggio 4: custodia e assemblaggio
Fatto il pcb, possiamo passare al caso. Ho progettato specificamente il PCB attorno a questo case hammond, quindi non è consigliabile utilizzare un altro case. Tuttavia, puoi sempre stampare in 3D una custodia con le stesse dimensioni.
Il primo passo è preparare il pannello finale. Avremo bisogno di praticare dei fori per viti, interruttori, ecc. L'ho fatto a mano, ma se hai accesso a un CNC sarebbe un'opzione più accurata. Ho fatto i fori secondo lo schema e ho tappato i fori delle viti.
È una buona idea aggiungere ora dei dischetti di seta e tenerli in posizione con una piccola goccia di super colla. Questi isoleranno l'LT3080 e il TIP32 dalla piastra posteriore, pur consentendo il trasferimento di calore. Non dimenticarli! Quando si avvitano i chip al pannello posteriore, utilizzare una rondella di mica per garantire l'isolamento!
Ora possiamo concentrarci sul pannello frontale, che scorre semplicemente in posizione. Ora possiamo aggiungere i jack a banana e le manopole per gli encoder rotativi.
Con entrambi i pannelli in posizione possiamo ora inserire l'assieme nella custodia, aggiungere le batterie e chiudere il tutto. Assicurati di utilizzare batterie protette, non vuoi che le celle esplodano!
A questo punto l'hardware è fatto, ora non resta che dargli un po' di vita con il software!
Passaggio 5: codice Arduino
Il cervello di questo progetto è l'ATMEGA328P, che programmeremo con l'IDE Arduino. In questa sezione esaminerò le operazioni di base del codice, i dettagli possono essere trovati come commenti all'interno del codice.
Il codice esegue fondamentalmente i seguenti passaggi:
- Leggi i dati seriali da java
- Pulsanti sondaggio
- Misurare la tensione
- Misura corrente
- Misura la corrente con INA219
- Invia dati seriali a java
- Configura boostconvertitore
- Ottieni la carica della batteria
- Schermata di aggiornamento
Gli encoder rotativi sono gestiti da una routine di servizio di interruzione per renderli il più reattivi possibile.
Il codice può ora essere caricato sulla scheda tramite la porta micro USB (se il chip ha un bootloader). Scheda: Arduino pro o pro mini Programmatore: AVR ISP / AVRISP MKII
Ora possiamo dare un'occhiata all'interazione tra Arduino e PC.
Passaggio 6: codice Java
Per la registrazione dei dati e il controllo dell'alimentazione tramite PC, ho realizzato un'applicazione java. Questo ci permette di controllare facilmente la scheda tramite una GUI. Come con il codice Arduino, non entrerò in tutti i dettagli, ma darò una panoramica.
Iniziamo creando una finestra con pulsanti, campi di testo ecc; cose di base della GUI.
Ora arriva la parte divertente: aggiungere le porte USB, per le quali ho usato la libreria jSerialComm. Una volta selezionata una porta, java ascolterà tutti i dati in entrata. Possiamo anche inviare dati al dispositivo.
Inoltre, tutti i dati in entrata vengono salvati in un file csv, per un successivo trattamento dei dati.
Quando eseguiamo il file.jar, dovremmo prima scegliere la porta giusta dal menu a discesa. Dopo la connessione, i dati inizieranno ad arrivare e potremo inviare le nostre impostazioni all'alimentatore.
Sebbene il programma sia piuttosto semplice, può essere molto utile controllarlo tramite un PC e registrarne i dati.
Passaggio 7: successo
Dopo tutto questo lavoro, ora abbiamo un alimentatore perfettamente funzionante!
Devo anche ringraziare alcune persone per il loro supporto:
- Il progetto era basato sul progetto uSupply di EEVBLOG e sul suo schema Rev C. Quindi un ringraziamento speciale a David L. Jones per aver rilasciato i suoi schemi con una licenza open source e aver condiviso tutte le sue conoscenze.
- Un enorme ringraziamento a Johan Pattyn per aver prodotto i prototipi di questo progetto.
- Anche Cedric Busschots e Hans Ingelberts meritano il merito per l'aiuto nella risoluzione dei problemi.
Ora possiamo goderci il nostro alimentatore fatto in casa, che tornerà utile mentre si lavora su altri fantastici progetti! E, soprattutto: abbiamo imparato molte cose lungo la strada.
Se ti è piaciuto questo progetto, per favore votami nel concorso powersupply, lo apprezzerei davvero!
Secondo Premio al Concorso Alimentatori
Consigliato:
Raspberry Pi allo stato brado! Timelapse esteso con alimentazione a batteria: 10 passaggi (con immagini)
Raspberry Pi allo stato brado! Timelapse esteso con alimentazione a batteria: Motivazione: volevo utilizzare la fotocamera Raspberry Pi alimentata a batteria per scattare foto una volta al giorno all'aperto per creare video time-lapse a lungo termine. La mia particolare applicazione è quella di registrare la crescita delle piante tappezzanti la prossima primavera e l'estate. Sfida: D
Dimensioni fai-da-te e costruzione di un generatore di backup dell'alimentazione a batteria con batterie a ciclo profondo da 12 V: 5 passaggi (con immagini)
Dimensioni fai-da-te e costruzione di un generatore di backup della batteria con batterie a ciclo profondo da 12 V: *** NOTA: fare attenzione quando si lavora con batterie ed elettricità. Non cortocircuitare le batterie. Utilizzare strumenti isolati. Segui tutte le regole di sicurezza quando lavori con l'elettricità.*** Preparati prima che la prossima volta che l'alimentazione si spenga con una batteria in standby
Alimentatore Bluetooth con alimentazione USB C digitale: 8 passaggi (con immagini)
Alimentatore Bluetooth con alimentazione USB C digitale: hai mai desiderato un alimentatore da utilizzare in movimento, anche senza una presa a muro nelle vicinanze? E non sarebbe bello se fosse anche molto preciso, digitale e controllabile tramite PC e telefono? In questo tutorial ti mostrerò come costruire esattamente
Converti il trasmettitore FM Belkin dall'alimentazione a batteria all'alimentazione per auto: 8 passaggi
Conversione del trasmettitore FM Belkin da alimentazione a batteria a alimentazione per auto: ho uno dei trasmettitori FM Tunecast Belkin originali per il mio iPod. Dopo averlo alimentato con un paio di batterie AA, ho deciso che avevo bisogno di un modo migliore. Quindi, ecco come ho convertito un caricabatterie per cellulare con accendisigari per auto in un metodo per alimentare il mio tra
Elimina l'alimentazione in standby con un interruttore di alimentazione desktop!: 7 passaggi (con immagini)
Elimina l'alimentazione in standby con un interruttore di alimentazione desktop!: Sappiamo tutti che sta succedendo. Anche quando i tuoi dispositivi (TV, computer, altoparlanti, dischi rigidi esterni, monitor, ecc.) sono disattivati "OFF," sono ancora effettivamente accesi, in modalità standby, sprecando energia. Alcuni televisori al plasma in realtà consumano più energia in