Sommario:

Alimentazione digitale a batteria: 7 passaggi (con immagini)
Alimentazione digitale a batteria: 7 passaggi (con immagini)

Video: Alimentazione digitale a batteria: 7 passaggi (con immagini)

Video: Alimentazione digitale a batteria: 7 passaggi (con immagini)
Video: Come imparare a usare un tester / multimetro e come controllare la carica delle batterie 2024, Novembre
Anonim
Alimentatore digitale a batteria
Alimentatore digitale a batteria
Alimentatore digitale a batteria
Alimentatore digitale a batteria
Alimentatore digitale a batteria
Alimentatore digitale a batteria
Alimentatore digitale a batteria
Alimentatore digitale a batteria

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 e costi
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

Schema e teoria del funzionamento
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

PCB ed elettronica
PCB ed elettronica
PCB ed elettronica
PCB ed elettronica
PCB ed elettronica
PCB ed elettronica
PCB ed elettronica
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

Custodia e assemblaggio
Custodia e assemblaggio
Custodia e assemblaggio
Custodia e assemblaggio
Custodia e assemblaggio
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

Codice Arduino
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:

  1. Leggi i dati seriali da java
  2. Pulsanti sondaggio
  3. Misurare la tensione
  4. Misura corrente
  5. Misura la corrente con INA219
  6. Invia dati seriali a java
  7. Configura boostconvertitore
  8. Ottieni la carica della batteria
  9. 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

Codice Java
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

Successo!
Successo!
Successo!
Successo!
Successo!
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!

Concorso di alimentazione
Concorso di alimentazione
Concorso di alimentazione
Concorso di alimentazione

Secondo Premio al Concorso Alimentatori

Consigliato: