Introduction: Amperometro Con Arduino

  • Per questo progetto utilizzeremo il sensore ACS714 prodotto dalla Allegro accetta una corrente di input bidirezionale con un'ampiezza al massimo pari a 5A e fornisce in output una tensione analogica proporzionale (185mV/A) centrata a 2.5V con un errore tipico pari a ±1.5%. Il sensore opera in un range di tensioni fra 4.5 e 5.5V ed è stato progettato per essere utilizzato in sistemi che operano a 5V.Il sensore si basa sull'effetto Hall e permette all'IC di isolare elettricamente il percorso della corrente dall'elettronica del sensore (fino a 2.1 kV RMS): ciò permette di inserire il sensore in qualunque punto lungo il percorso della corrente e soprattutto permette di utilizzare questo sensore in applicazioni che richiedono isolamento elettrico.La larghezza di banda viene fissata attraverso il condensatore C9 connesso al pin etichettato con la dicitura "Filter"

    Prossimamente il LINK per interfacciare i dati da arduino a TouchOsc


    --------------------------------

#include //inclusione della libreria LCD

// definizione dei pin int ACS714 = A0; int partitore = A1;

//definizione valori integer e float per calcolo valori corrente e tensione int sensorValue = 0; int outputValue = 0; float vout = 0.0; float amps = 0.0; float vref = 5.0; int valV = 0; float volts = 0.0; float R1 = 46220.0; // !! Valore della resistenza R1 !! float R2 = 9781.0; // !! Valore della resistenza R2 !! float corr = 1.02; // Valore di correzione lettura tensione

//definizione dei pin LCD int RS = 5; int EN = 4; int D7 = 0; int D6 = 1; int D5 = 2; int D4 = 3;

//inizializzazione libreria LCD LiquidCrystal lcd(RS,EN,D4,D5,D6,D7);

void setup(){

analogRead(ACS714); // prima lettura analogica della corrente analogRead(partitore); // prima lettura analogica della tensione lcd.begin(16,2); //inizializzazione lcd 16x2 delay (10);

// Test LCD

lcd.print("Test LCD OK") ; // messaggio di test delay(2000); // pausa di 2 secondi

lcd.clear(); // cancellazione display delay(10); // pausa per effettuazione operazione }

void loop(){

amps =0.0742*analogRead(ACS714)-37.87; if (amps < 0.15) amps = 0.0;

valV = analogRead(partitore); //Lettura del valore fornito dal partitore vout = (valV*vref)/1024.0; //Conversione del valore in di volts = (vout / (R2/(R1+R2)))*corr; //Calcolo valore letto

lcd.clear(); // pulisci memoria lcd lcd.setCursor(0,0); //setta il cursore sulla prima linea display lcd.print("AMPS: "); //scrivi la parola AMPS: lcd.print(amps,1); // riporta il valore calcolato degli ampere

lcd.setCursor(0,1); // setta il cursore sulla prima linea display lcd.print("VOLT: "); // scrive la parola VOLTS: lcd.print(volts,1); // riporta il valore calcolato dei volts delay (500); //pausa lettura }