Sommario:

Alimentatore Bluetooth con alimentazione USB C digitale: 8 passaggi (con immagini)
Alimentatore Bluetooth con alimentazione USB C digitale: 8 passaggi (con immagini)

Video: Alimentatore Bluetooth con alimentazione USB C digitale: 8 passaggi (con immagini)

Video: Alimentatore Bluetooth con alimentazione USB C digitale: 8 passaggi (con immagini)
Video: La METÀ di voi NON sapeva dell'esistenza di questo COSO?! 2024, Luglio
Anonim
Alimentatore Bluetooth con alimentazione USB C digitale
Alimentatore Bluetooth con alimentazione USB C digitale
Alimentatore Bluetooth con alimentazione USB C digitale
Alimentatore Bluetooth con alimentazione USB C digitale
Alimentatore Bluetooth con alimentazione USB C digitale
Alimentatore Bluetooth con alimentazione USB C digitale
Alimentatore Bluetooth con alimentazione USB C digitale
Alimentatore Bluetooth con alimentazione USB C digitale

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 e telefono?

In questo tutorial ti mostrerò come costruire esattamente questo: un alimentatore digitale, che è alimentato tramite USB C. È compatibile con Arduino e può essere controllato tramite il PC tramite USB o tramite il telefono tramite Bluetooth.

Questo progetto è un'evoluzione del mio precedente alimentatore, che funzionava a batterie e disponeva di display e manopole. Controllalo qui! Tuttavia, volevo diventare più piccolo, quindi è per questo che l'ho fatto!

L'alimentatore può essere alimentato da un banco di batterie USB C o da un caricatore del telefono. Ciò consente fino a 15 W di potenza, che è sufficiente per alimentare la maggior parte dei dispositivi elettronici a bassa potenza! Per avere una buona interfaccia utente su un dispositivo così piccolo, ho incluso Bluetooth e un'app Android per i controlli. Questo rende questo alimentatore ultra portatile!

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

  • Alimentato da USB C
  • Controllato tramite app Android tramite Bluetooth
  • Controllato tramite Java su USB C
  • 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
  • Alimentato da ATMEGA32U4, programmato con Arduino IDE
  • Può essere alimentato da un banco batterie USB C per renderlo portatile
  • Rilevamento USB C e caricabatterie Apple
  • 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 - 25 V, passi di 25 mV (DAC a 10 bit) (funzionamento a 0 V effettivi)
  • Misura della tensione: risoluzione 25 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 $ 100, con tutti i componenti una tantum. 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 scenderà a circa $ 70. 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 (C23 e R32). Questo produce una tensione analogica - tra 0 e 5 V - proporzionale alla tensione di uscita desiderata. Poiché la nostra gamma di uscita è 0 - 25 V, dovremo amplificare questo segnale con un fattore 5. Ciò viene fatto dalla configurazione dell'amplificatore operazionale non invertente di U7C. Il guadagno al pin impostato è determinato da R31 e R36. Questi resistori sono tolleranti allo 0,1%, per ridurre al minimo gli errori. R39 e R41 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,5 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 U1B. Se la corrente è troppo alta, questo accenderà un led, e tirerà anche la linea impostata dell'LT3080 a massa (tramite Q1), spegnendo così l'uscita. La misura della corrente e la generazione del segnale ADC_Iout avviene come segue. La corrente di uscita scorre attraverso il resistore R22. Quando la corrente scorre attraverso questo resistore, crea una caduta di tensione, che possiamo misurare, e viene posta 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 (U7B) con un guadagno di 5. Ciò si traduce in un intervallo di tensione di 0 - 2,5 V (ne parleremo più avanti), quindi il partitore di tensione sul segnale PWM della corrente. Il buffer (U7A) è lì per assicurarsi che la corrente che scorre nei resistori R27, R34 e R35 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 R46), 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. Sfortunatamente, questo circuito è all'uscita dell'LT3080, il che significa che la sua corrente contribuirà alla corrente di uscita che vogliamo misurare. Fortunatamente, è costante, quindi possiamo calibrare per questa corrente. Il diodo zener D7 viene utilizzato per bloccare la tensione di uscita se supera i 25 V e il divisore del resistore riduce l'intervallo di tensione di uscita da 0 - 25 V a 0 - 2,5 V (ADC_Vout). Il buffer (U7D) assicura che i resistori non assorbano corrente dall'uscita.

Pompa di carico

La tensione negativa di cui abbiamo parlato prima è generata da un curioso circuitino: la pompa di carica. È alimentato da un PWM del 50% del microcontrollore (PWM).

Convertitore boost

Diamo ora un'occhiata alla tensione di ingresso del nostro blocco principale: VCC. Vediamo che è 5 - 27 V, ma aspetta, USB dà un massimo di 5 V? In effetti, ed è per questo che abbiamo bisogno di aumentare la tensione, con un cosiddetto convertitore boost. Potremmo sempre aumentare la tensione a 27 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.

USB C

Questo ci porta alla vera tensione di ingresso: la porta USB! Il motivo per l'utilizzo di USB C (USB di tipo 3.1 per l'esattezza, USB C è solo il tipo di connettore) è perché consente una corrente di 3 A a 5 V, che è già abbastanza potente. Ma c'è un problema, il dispositivo deve essere conforme per assorbire questa corrente e "negoziare" con il dispositivo host. In pratica, questo viene fatto collegando due resistori di pulldown da 5.1k (R12 e R13) alla linea CC1 e CC2. Per la compatibilità USB 2, la documentazione è meno chiara. In breve: prendi tutta la corrente che vuoi, a patto che l'host possa fornirla. Questo può essere verificato monitorando la tensione del bus USB: se la tensione scende sotto i 4,25 V, il dispositivo assorbe troppa corrente. Questo viene rilevato dal comparatore U1A e disabilita l'uscita. Invia anche un segnale al microcontrollore per impostare la corrente massima. Come bonus, sono stati aggiunti resistori per supportare il rilevamento dell'ID del caricabatterie dei caricabatterie Apple e Samsung.

Regolatore 5V

La tensione di alimentazione di 5 V dell'arduino normalmente proviene direttamente dall'USB. Ma poiché la tensione USB può variare tra 4,5 e 5,5 V in base alle specifiche USB, questo non è abbastanza preciso. Pertanto, viene utilizzato un regolatore 5V, che può generare 5V da tensioni inferiori e superiori. Tuttavia, questa tensione non è terribilmente precisa, ma questo è risolto da una fase di calibrazione in cui il ciclo di lavoro del segnale PWM viene regolato di conseguenza. Questa e tensione è misurata dal partitore di tensione formato da R42 e R43. 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 uscita e può pilotare la linea di selezione del chip del potenziometro.

Riferimento di tensione 2,56 V

Questo piccolo chip fornisce un riferimento di tensione di 2,56 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,5 V.

FTDI

L'ultima parte di questa alimentazione è la connessione con il crudele mondo esterno. Per questo, dobbiamo convertire i segnali seriali in segnali USB. Fortunatamente, questo viene fatto dall'ATMEGA32U4, questo è lo stesso chip utilizzato nell'Arduino Micro.

Bluetooth

La parte Bluetooth è molto semplice: viene aggiunto un modulo Bluetooth standard e si occupa di tutto per noi. Poiché il suo livello logico è 3,3 V (VS 5 V per il microcontrollore) viene utilizzato un partitore di tensione per spostare il livello del segnale.

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

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.

Mentre il mio precedente alimentatore aveva solo componenti a foro passante, il vincolo di dimensione per il mio nuovo lo rendeva impossibile. La maggior parte dei componenti è ancora relativamente facile da saldare, quindi non aver paura. A titolo di esempio: un mio amico che non aveva mai saldato prima è riuscito a popolare questo dispositivo!

È più semplice eseguire prima i componenti sul lato anteriore, poi sul retro e terminare con i componenti del foro. Quando si esegue questa operazione, il PCB non oscillerà durante la saldatura dei componenti più difficili. L'ultimo componente da saldare è il modulo Bluetooth.

Tutti i componenti possono essere saldati, tranne i 2 jack a banana, che monteremo nel prossimo passaggio!

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 un case in alluminio 20x50x80mm (https://www.aliexpress.com/item/Aluminum-PCB-Instr…), 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 i jack a banana. L'ho fatto a mano, ma se hai accesso a un CNC sarebbe un'opzione più accurata. Inserisci i jack a banana in questi fori e saldali sul PCB.

È una buona idea aggiungere ora dei dischetti di seta e tenerli in posizione con una piccola goccia di super colla. Questi consentiranno il trasferimento di calore tra l'LT3080 e l'LT1370 e il case. Non dimenticarli!

Ora possiamo concentrarci sul pannello frontale, che si avvita semplicemente in posizione. Con entrambi i pannelli in posizione, ora possiamo inserire l'assieme nella custodia e chiudere il tutto. 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'ATMEGA32U4, 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. Invia dati all'app
  2. Leggi i dati dall'app
  3. Misurare la tensione
  4. Misura corrente
  5. Pulsante sondaggio

La sovracorrente USB viene gestita da una routine di servizio di interruzione per renderla il più reattiva possibile.

Prima che il chip possa essere programmato tramite USB, il bootloader deve essere masterizzato. Questo viene fatto tramite la porta ISP/ICSP (le intestazioni maschili 3x2) tramite un programmatore ISP. Le opzioni sono AVRISPMK2, USBTINY ISP o un arduino come ISP. Assicurati che la scheda sia alimentata e premi il pulsante "masterizza bootloader".

Il codice può ora essere caricato sulla scheda tramite la porta USB C (poiché il chip ha un bootloader). Scheda: Arduino Micro Programmatore: AVR ISP / AVRISP MKII Ora possiamo dare un'occhiata all'interazione tra Arduino e PC.

Passaggio 6: app per Android

Applicazione Android
Applicazione Android

Ora abbiamo un alimentatore completamente funzionante, ma non c'è ancora modo di controllarlo. Molto noioso. Quindi creeremo un'app Android per controllare l'alimentatore tramite Bluetooth.

L'app è stata realizzata con il programma di inventore dell'app del MIT. Tutti i file possono essere inclusi per clonare e modificare il progetto. Innanzitutto, scarica l'app complementare MIT AI2 sul tuo telefono. Quindi, importa il file.aia sul sito Web di AI. Ciò ti consente anche di scaricare l'app sul tuo telefono scegliendo "Build> App (fornisci codice QR per.apk)"

Per utilizzare l'app, seleziona un dispositivo Bluetooth dall'elenco: verrà visualizzato come modulo HC-05. Una volta connesso, tutte le impostazioni possono essere modificate e l'uscita dell'alimentatore può essere letta.

Passaggio 7: 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 8:

Immagine
Immagine
Immagine
Immagine
Immagine
Immagine

Dopo tutto questo lavoro, ora abbiamo un alimentatore perfettamente funzionante!

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, votami per il concorso tascabile e microcontrollore, te ne sarei davvero grato!

Consigliato: