Utilizzare un ACS712 per visualizzare la corrente su un LCD1602 o LCD2004 con I2C
In questo tutorial impareremo come usare il sensore di corrente Allegro ACS712 per misurare sia corrente AC che DC e visualizzare le letture su un LCD1602 o LCD2004 usando I2C. Questo progetto è particolarmente utile per monitorare la corrente in varie applicazioni, fornendo una visualizzazione dei dati di corrente in tempo reale. Alla fine avrai una configurazione funzionante che può mostrare con precisione le letture di corrente su un LCD.


Per chiarimenti sul cablaggio e sul codice, assicurati di controllare il video ai timestamp specificati (nel video a 00:00).
Hardware spiegato
Il componente principale di questo progetto è il sensore di corrente ACS712, che può misurare correnti fino a 30 A. Funziona sfruttando l'effetto Hall per convertire la corrente che lo attraversa in un'uscita di tensione proporzionale. Questa uscita di tensione può essere letta dall'Arduino per calcolare l'intensità della corrente. Il sensore ha tre pin per il collegamento: VCC per l'alimentazione, GND per la massa e OUT per il segnale di tensione.
Il display LCD1602 o LCD2004 si collega tramite I2C, il che permette un cablaggio e un controllo più semplici usando solo due pin dati (SDA e SCL) oltre all'alimentazione e alla massa. Questo rende semplice visualizzare le letture correnti senza ingombrare il cablaggio con connessioni multiple.
Dettagli della scheda tecnica
| Produttore | Allegro Microsystems |
|---|---|
| Numero di parte | ACS712ELCTR-30A-T |
| Tensione logica/IO | 4,5-5,5 V |
| Tensione di alimentazione | 5 V |
| Corrente di uscita (per canale) | 30 A |
| Indicazioni sulla frequenza PWM | Non applicabile |
| Soglie logiche di ingresso | 0.5 V (uscita a riposo) |
| Caduta di tensione / RDS(on)/ saturazione | 1.2 mΩ |
| Limiti termici | 150 °C massimo |
| Pacchetto | TO-220 |
- Assicurare una corretta dissipazione del calore per correnti superiori a 20 A.
- Usare una sezione del cavo appropriata (12 AWG per 30 A) per evitare il surriscaldamento.
- Collegare VCC a 5V e GND a massa per il corretto funzionamento.
- Assicurati che il pin OUT sia collegato a un pin di ingresso analogico sull'Arduino (ad es., A0).
- Tieni presente le differenze di sensibilità tra i vari modelli ACS712.
- Usare condensatori per il disaccoppiamento come specificato nella scheda tecnica.
Istruzioni di cablaggio

Per collegare il sensore di corrente ACS712 all'Arduino e al display LCD, inizia collegando il pin VCC dell'ACS712 al pin 5V dell'Arduino. Successivamente, collega il pin GND dell'ACS712 a un pin di massa dell'Arduino. Il pin OUT dell'ACS712 dovrebbe essere collegato al pin analogicoA0sull'Arduino, dove verrà letto il segnale di tensione.
Per l'LCD1602 o l'LCD2004, collegare il pin VCC al pin 5V e il pin GND a massa. Il pin SDA dell'LCD dovrebbe essere collegato al pin SDA dell'Arduino (di solitoA4su un UNO), e il pin SCL dovrebbe essere collegato al pin SCL sull'Arduino (di solitoA5su un UNO). Verifica che tutte le connessioni siano salde per garantire il corretto funzionamento.
Esempi di codice e guida passo-passo
Nel codice, definiamo il pin di ingresso analogico per leggere l'uscita del sensore con#define VIN A0. Questo ci permette di fare facilmente riferimento al pin a cui il sensore è collegato durante tutto il programma.
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage is from 4.5 to 5.5V. Normally 5V.
Successivamente impostiamo la sensibilità in base al modello di ACS712 che stiamo utilizzando. I valori di sensibilità sono memorizzati in un array, permettendo un accesso semplice in base alla selezione del modello.

const int model = 2; // enter the model number (0, 1, or 2 for 5A, 20A, or 30A)
float sensitivity[] = {0.185, 0.100, 0.066}; // sensitivity values for each model
Nelsetup()Nella funzione inizializziamo il monitor seriale e il display LCD. Questo ci consente di visualizzare le letture correnti sia sul display LCD sia tramite il monitor seriale per il debug.
void setup() {
Serial.begin(9600); // initialize serial monitor
lcd.begin(); // initialize the LCD
lcd.backlight(); // turn on the backlight
lcd.print("Robojax ACS712"); // display initial text
delay(2000); // wait for 2 seconds
}
Illoop()La funzione legge la tensione dal sensore, calcola la corrente in base alla sensibilità e visualizza i risultati di conseguenza. Se la corrente supera una soglia di cutoff specificata, visualizza il valore; altrimenti indica che non è stata rilevata alcuna corrente.
Dimostrazione / Cosa aspettarsi
All'accensione del circuito, il display LCD dovrebbe visualizzare "Robojax ACS712" seguito da "Corrente: " insieme al valore di corrente misurato in ampere. Se la corrente è al di sotto del limite di cutoff, il display mostrerà "Nessuna corrente." Prestare attenzione durante i test con correnti elevate, poiché il sensore può scaldarsi (nel video a 12:00).
Per testare la configurazione, aumentare gradualmente la corrente che attraversa l'ACS712 e osservare le variazioni sul display LCD e sul monitor seriale. Assicurarsi che la corrente non superi i limiti nominali del sensore per evitare danni.
Immagini
Cose di cui potresti avere bisogno
-
Amazon
-
AmazonAcquista LCD1602-I2C da Amazonamzn.to
-
eBayAcquista LCD1602-I2C da eBayebay.us
-
AliExpressAcquista 10 pezzi di LCD1602-I2C da AliExpresss.click.aliexpress.com
Risorse e riferimenti
-
Esterno
File📁
Librerie Arduino (zip)
-
Libreria LCD Arduino LCD1602 di Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB
Scheda tecnica (pdf)
-
Allegro ACS712 Sensore di Corrente AC/DC 4A, 20A, 30A Scheda Tecnica
robojax-allegro_ACS712_current_sensor.pdf0.65 MB
File Fritzing
-
Modulo LCD LCD1602-I2C con 4 fili
LCD1602-I2C.fzpz0.01 MB -
Sensore di corrente Allegre ACS712
Allegreo ACS712 Current Sensor.fzpz0.03 MB