- Materiali richiesti
- Schema elettrico
- Unità di misura
- Unità di calcolo e visualizzazione
- Programmazione di Arduino
- Come misurare con maggiore precisione?
- Lavorare e testare
Come ingegneri elettronici, dipendiamo sempre da misuratori / strumenti per misurare e analizzare il funzionamento di un circuito. A partire da un semplice multimetro fino a un complesso analizzatore di rete o DSO, tutto ha le proprie applicazioni uniche. La maggior parte di questi misuratori sono immediatamente disponibili e possono essere acquistati in base ai parametri da misurare e alla loro precisione. Ma a volte potremmo finire in una situazione in cui dobbiamo costruire i nostri contatori. Supponiamo ad esempio che tu stia lavorando a un progetto solare fotovoltaico e desideri calcolare il consumo energetico del tuo carico, in tali scenari possiamo costruire il nostro Wattmetro utilizzando una semplice piattaforma di microcontrollore come Arduino.
Costruire i propri contatori non solo riduce i costi dei test, ma ci dà anche spazio per facilitare il processo di test. Ad esempio, un wattmetro costruito con Arduino può essere facilmente modificato per monitorare i risultati sul monitor seriale e tracciare un grafico sul plotter seriale o aggiungere una scheda SD per registrare automaticamente i valori di tensione, corrente e potenza a intervalli predefiniti. Sembra interessante vero !? Quindi iniziamo…
Materiali richiesti
- Arduino Nano
- LM358 Op-Amp
- 7805 Regolatore di tensione
- Display LCD 16 * 2
- Resistenza shunt da 0,22 ohm 2Watt
- Pot Trimmer 10k
- Resistori da 10k, 20k, 2,2k, 1k
- Condensatori da 0.1uF
- Carica di prova
- Tavola perfetta o breadboard
- Kit di saldatura (opzionale)
Schema elettrico
Di seguito è riportato lo schema circuitale completo del progetto wattmetro arduino.
Per facilità di comprensione, il circuito del wattmetro di Arduino è diviso in due unità. La parte superiore del circuito è l'unità di misura e la parte inferiore del circuito è l'unità di calcolo e visualizzazione. Per le persone che sono nuove a questo tipo di circuiti hanno seguito le etichette. Esempio + 5V è l'etichetta, il che significa che tutti i pin a cui è collegata l'etichetta devono essere considerati poiché sono collegati insieme. Le etichette vengono normalmente utilizzate per rendere pulito lo schema del circuito.
Il circuito è progettato per adattarsi a sistemi che funzionano tra 0-24 V con un intervallo di corrente di 0-1 A tenendo presente le specifiche di un solare fotovoltaico. Ma puoi facilmente estendere la portata una volta compreso il funzionamento del circuito. Il principio alla base del circuito è misurare la tensione attraverso il carico e la corrente attraverso di esso per calcolare la potenza consumata da esso. Tutti i valori misurati verranno visualizzati in un LCD alfanumerico 16 * 2.
Più avanti, suddividiamo il circuito in piccoli segmenti in modo da avere un'immagine chiara di come il circuito è rientrato per funzionare.
Unità di misura
L'unità di misura è costituita da un divisore di potenziale per aiutarci a misurare la tensione e un resistore di chiusura con un amplificatore operazionale non invertente viene utilizzato per aiutarci a misurare la corrente attraverso il circuito. La parte del potenziale divisore del circuito sopra è mostrata di seguito
Qui la tensione di ingresso è rappresentata da Vcc, come detto in precedenza stiamo progettando il circuito per un intervallo di tensione da 0V a 24V. Ma un microcontrollore come Arduino non può misurare valori di tensione così alti; può misurare solo la tensione da 0-5 V. Quindi dobbiamo mappare (convertire) l'intervallo di tensione da 0-24 V a 0-5 V. Questo può essere fatto facilmente utilizzando un potenziale circuito divisore come mostrato di seguito. Il resistore 10k e 2.2k insieme forma il potenziale circuito divisore. La tensione di uscita di un potenziale divisore può essere calcolata utilizzando le formule seguenti. Lo stesso può essere usato per decidere il valore dei tuoi resistori, puoi usare il nostro calcolatore online per calcolare il valore del resistore se stai riprogettando il circuito.
Vout = (Vin × R2) / (R1 + R2)
Lo 0-5V mappato può essere ottenuto dalla parte centrale che è etichettata come Tensione. Questa tensione mappata può quindi essere inviata al pin analogico di Arduino in un secondo momento.
Successivamente dobbiamo misurare la corrente attraverso il CARICO. Come sappiamo i microcontrollori possono leggere solo la tensione analogica, quindi abbiamo bisogno di convertire in qualche modo il valore della corrente in tensione. Può essere fatto semplicemente aggiungendo un resistore (resistore shunt) nel percorso che secondo la legge di Ohm farà scendere un valore di tensione ai suoi capi proporzionale alla corrente che lo attraversa. Il valore di questa caduta di tensione sarà molto inferiore, quindi utilizziamo un amplificatore operazionale per amplificarlo. Il circuito per lo stesso è mostrato di seguito
Qui il valore del resistore shunt (SR1) è 0,22 Ohm. Come detto in precedenza, stiamo progettando il circuito per 0-1 A, quindi in base alla legge di Ohm possiamo calcolare la caduta di tensione su questo resistore che sarà di circa 0,2 V quando un massimo di 1 A di corrente passa attraverso il carico. Questa tensione è molto piccola per la lettura di un microcontrollore, utilizziamo un amplificatore operazionale in modalità amplificatore non invertente per aumentare la tensione da 0,2 V a un livello più alto per la lettura di Arduino.
L'amplificatore operazionale in modalità non invertente è mostrato sopra. L'amplificatore è progettato per avere un guadagno di 21, in modo che 0,2 * 21 = 4,2 V. Le formule per calcolare il guadagno dell'amplificatore operazionale sono fornite di seguito, puoi anche usare questo calcolatore di guadagno online per ottenere il valore del tuo resistore se stai riprogettando il circuito.
Guadagno = Vout / Vin = 1 + (Rf / Rin)
Qui nel nostro caso il valore di Rf è 20k e il valore di Rin è 1k che ci dà un valore gian di 21. La tensione amplificata dall'amplificatore operazionale viene quindi data a un filtro RC con resistenza 1k e un condensatore 0.1uF per filtrare qualsiasi rumore che sia accoppiato. Infine la tensione viene quindi fornita al pin analogico di Arduino.
L'ultima parte rimasta nell'unità di misura è la parte del regolatore di tensione. Dal momento che daremo una tensione di ingresso variabile, abbiamo bisogno di un volt + 5V regolato per far funzionare Arduino e Op-amp. Questa tensione regolata sarà fornita dal regolatore di tensione 7805. All'uscita viene aggiunto un condensatore per filtrare il rumore.
Unità di calcolo e visualizzazione
Nell'unità di misura abbiamo progettato il circuito per convertire i parametri di Tensione e Corrente in 0-5V che può essere alimentato ai pin Arduino Analog. Ora in questa parte del circuito collegheremo questi segnali di tensione ad Arduino e interfacciamo anche un display alfanumerico 16 × 2 ad Arduino in modo da poter visualizzare i risultati. Il circuito per lo stesso è mostrato di seguito
Come puoi vedere, il pin di tensione è collegato al pin analogico A3 e il pin di corrente è collegato al pin analogico A4. L'LCD è alimentato dai + 5V del 7805 ed è collegato ai pin digitali di Arduino per funzionare in modalità 4 bit. Abbiamo anche utilizzato un potenziometro (10k) collegato al pin Con per variare il contrasto dell'LCD.
Programmazione di Arduino
Ora che abbiamo una buona conoscenza dell'hardware, apriamo Arduino e iniziamo a programmare. Lo scopo del codice è leggere la tensione analogica sui pin A3 e A4 e calcolare il valore di tensione, corrente e potenza e infine visualizzarlo sullo schermo LCD. Il programma completo per fare lo stesso è dato alla fine della pagina che può essere usato come tale per l'hardware discusso sopra. Inoltre il codice è suddiviso in piccoli frammenti e spiegato.
Come tutti i programmi iniziamo con la definizione dei pin che abbiamo utilizzato. Nel nostro progetto i pin A3 e A4 sono usati per misurare rispettivamente la tensione e la corrente e i pin digitali 3,4,8,9,10 e 11 sono usati per interfacciare l'LCD con Arduino
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Indica il numero di pin per la connessione LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Abbiamo anche incluso un file di intestazione chiamato cristalli liquidi per interfacciare il display LCD con Arduino. Quindi all'interno della funzione di configurazione inizializziamo il display LCD e visualizziamo un testo introduttivo come "Arduino Wattmeter" e aspettiamo due secondi prima di cancellarlo. Il codice per lo stesso è mostrato di seguito.
void setup () { lcd.begin (16, 2); // Inizializza 16 * 2 LCD lcd.print ("Arduino Wattmeter"); // Intro Message line 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Ritardo riga 2 messaggio introduttivo (2000); lcd.clear (); }
All'interno della funzione loop principale, utilizziamo la funzione di lettura analogica per leggere il valore di tensione dai pin A3 e A4. Come sappiamo il valore di uscita dell'ADC di Arduino da 0 a 1203 poiché ha un ADC a 10 bit. Questo valore deve essere quindi convertito in 0-5V che può essere fatto moltiplicando per (5/1023). Poi di nuovo in precedenza nell'hardware abbiamo mappato il valore effettivo della tensione da 0-24 V a 0-5 V e il valore effettivo della corrente da 0-1 A a 0-5 V. Quindi ora dobbiamo usare un moltiplicatore per riportare questi valori al valore effettivo. Questo può essere fatto moltiplicandolo per un valore moltiplicatore. Il valore del moltiplicatore può essere calcolato teoricamente utilizzando le formule fornite nella sezione hardware oppure se si dispone di un insieme noto di valori di tensione e corrente è possibile calcolarlo praticamente.Ho seguito quest'ultima opzione perché tende ad essere più accurata in tempo reale. Quindi qui il valore dei moltiplicatori è 6,46 e 0,239. Quindi il codice appare come di seguito
float Voltage_Value = analogRead (Read_Voltage); float Current_Value = analogRead (Read_Current); Voltage_Value = Voltage_Value * (5,0 / 1023,0) * 6,46; Current_Value = Current_Value * (5,0 / 1023,0) * 0,239;
Come misurare con maggiore precisione?
Il modo sopra per calcolare il valore della tensione e della corrente effettive funzionerà perfettamente. Ma soffre di uno svantaggio, ovvero la relazione tra la tensione dell'ADC misurata e la tensione effettiva non sarà lineare, quindi un singolo moltiplicatore non darà risultati molto accurati, lo stesso vale anche per la corrente.
Quindi, per migliorare l'accuratezza, possiamo tracciare un insieme di valori ADC misurati con valori effettivi utilizzando un insieme noto di valori e quindi utilizzare tali dati per tracciare un grafico e derivare l'equazione del moltiplicatore utilizzando il metodo di regressione lineare. Puoi fare riferimento al misuratore di dB di Arduino in cui ho usato un metodo simile.
Infine, una volta calcolato il valore della tensione effettiva e della corrente effettiva attraverso il carico, possiamo calcolare la Potenza utilizzando le formule (P = V * I). Quindi visualizziamo tutti e tre i valori sul display LCD utilizzando il codice sottostante.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Voltage_Value); lcd.print (""); lcd.print ("I ="); lcd.print (Current_Value); float Power_Value = Voltage_Value * Current_Value; lcd.setCursor (0, 1); lcd.print ("Power ="); lcd.print (Power_Value);
Lavorare e testare
Per motivi di tutorial ho usato una scheda perf per saldare tutti i componenti come mostrato nel circuito. Ho usato un terminale a vite Phoenix per collegare il carico e un normale jack a barilotto CC per collegare la mia fonte di alimentazione. La scheda Arduino Nano e il display LCD sono montati su un Bergstik femmina in modo che possano essere riutilizzati se necessario in seguito.
Dopo aver preparato l'hardware, carica il codice Arduino sulla tua scheda Nano. Regolare il potenziometro trimmer per controllare il livello di contrasto dell'LCD finché non viene visualizzato un testo di introduzione chiaro. Per testare la scheda collegare il carico al connettore del terminale a vite e la sorgente al jack Barrel. La tensione della sorgente dovrebbe essere superiore a 6 V affinché questo progetto funzioni, poiché Arduino richiedeva + 5 V per funzionare. SE tutto funziona correttamente, dovresti vedere il valore della tensione attraverso il carico e la corrente che lo attraversa visualizzati nella prima riga dell'LCD e la potenza calcolata visualizzata sulla seconda riga dell'LCD come mostrato di seguito.
La parte divertente della costruzione di qualcosa sta nel testarlo per verificare fino a che punto funzionerà correttamente. Per fare ciò ho utilizzato indicatori di direzione per automobili da 12V come carico e RPS come sorgente. Poiché l'RPS stesso può misurare e visualizzare il valore di corrente e tensione, sarà facile per noi effettuare un controllo incrociato dell'accuratezza e delle prestazioni del nostro circuito. E sì, ho anche usato il mio RPS per calibrare il mio valore moltiplicatore in modo da avvicinarmi al valore accurato.
La lavorazione completa si trova nel video riportato alla fine di questa pagina. Spero che tu abbia capito il circuito e il programma e hai imparato qualcosa di utile. Se hai problemi a farlo funzionare, pubblicalo nella sezione commenti qui sotto o scrivi sui nostri forum per ulteriore assistenza tecnica.
Questo progetto Wattmeter basato su Arduino ha molti altri aggiornamenti che possono essere aggiunti per aumentare le prestazioni della registrazione automatica dei dati, tracciare grafici, notifiche su situazioni di sovratensione o sovracorrente, ecc.