Utilizzare un ACS712 per visualizzare la corrente su un LCD1602 o LCD2004 con I2C

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.

LCD1602-I2C display module with 4 wires

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

ProduttoreAllegro Microsystems
Numero di parteACS712ELCTR-30A-T
Tensione logica/IO4,5-5,5 V
Tensione di alimentazione5 V
Corrente di uscita (per canale)30 A
Indicazioni sulla frequenza PWMNon applicabile
Soglie logiche di ingresso0.5 V (uscita a riposo)
Caduta di tensione / RDS(on)/ saturazione1.2 mΩ
Limiti termici150 °C massimo
PacchettoTO-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

Arduino wiring for Allegro ACS712 current sensor with LCD

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

Sensore di corrente DC/AC Allegro ACS712 con LCD1602/LCD2004 I2C con codice Arduino
Sensore di corrente DC/AC Allegro ACS712 con LCD1602/LCD2004 I2C con codice Arduino
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
ACS712_in_series_with_load
ACS712_in_series_with_load
allegro_ACS712_module-1
allegro_ACS712_module-1
allegro_ACS712_module-2
allegro_ACS712_module-2
allegro_ACS712_module-4
allegro_ACS712_module-4
allegro_ACS712_module-0
allegro_ACS712_module-0
Arduino wiring for Allegro ACS712 current sensor with LCD
Arduino wiring for Allegro ACS712 current sensor with LCD
131-Allegro ACS712 DC/AC current sensor with LCD1602/LCD2004 I2C and Arduino code
Lingua: C++
Copia!

Cose di cui potresti avere bisogno

File📁

Librerie Arduino (zip)

Scheda tecnica (pdf)

File Fritzing