Go Down

Topic: misurare la 230V(0 220V) su arduino con lcd (Read 1 time) previous topic - next topic

mitidj2008

SAlve a tuttti. so che sara gia parlato di questo ma non riesco a trovare nulla.
Ecco il mio problema che mi fa pensare da giorni: Ho preso un amplificaotre audio della crest ed ho fatto un taglio nel pannlo forntale ed no messo un lcd 4x20 di cui vedo le temperature dei radiatori perche il sitema di conotrollo ventole e protezione utilizza gli LM35DT e mi sono allaciato direttamnte li. ma vorrei pure visualizzare la tensione di rete. avete un idea con un trasformatore 1:10 o 1:100 oppure optoisolatore? grazie


uwefed

trasformatore, ponte radrizzatore, condensatore e una resistenza in paralello al condensatore. Tutto dimensionato da avere al massimo 5V.
Ciao Uwe

mitidj2008

#3
Nov 13, 2012, 07:11 pm Last Edit: Nov 13, 2012, 08:23 pm by mitidj2008 Reason: 1
Ragazi grazie tanto.
non avevo messo    
Misurare tensione 220v alternata con arduino

scrivevo arduino 220V per seplificare ma non mi trovava.
ho trovato un vecchio progetto che avevo fatto a scuola.
era un voltmetro da pannello per la 220V aveva un trasformatori per isolare ed alimentare i led display(7 segmenti)e poi ce una sorta di rettifiaotre con operazionale altri componenti. credo sia per essere piu stabile che poi abbassa a 2V o milliVolt. ci daro una occhita migliore e poi vi faro sapere.

uwefed

forse perché la tensione nominale non sono piú 220V ma 230V.
CIao Uwe

mitidj2008

ho fatto le prove. impressionante risposta  :smiley-mr-green: :D
funziona alla perfezione.
http://www.youtube.com/watch?v=irs3SvM7Hco
ho usato il riscaldatore potente come carico per vedere la variazione.
arudino per in quel caso era con la 220V sopra o il neutro. non era isolato l'ingresso del convertitore. faro delle prove per vede se con un trasformatore a 12V

mitidj2008

#6
Nov 14, 2012, 05:03 pm Last Edit: Nov 15, 2012, 11:44 pm by mitidj2008 Reason: 1
ecco un log:
Code: [Select]
valore=222.22
valore=221.82
valore=222.62
valore=220.62
valore=221.42
valore=221.02
valore=222.22
valore=221.02
valore=223.02
valore=222.62
valore=223.02
valore=222.62
valore=223.42
valore=222.62
valore=223.42
valore=222.62
valore=223.42
valore=222.62
valore=221.42
valore=221.82
valore=218.61
valore=214.21
valore=213.81
valore=215.01
valore=213.41
valore=214.61
valore=213.41
valore=215.81
valore=214.61
valore=215.81
valore=219.81
valore=220.21
valore=215.01
valore=215.81
valore=213.41
valore=214.61
valore=214.61
valore=215.81
valore=214.61
valore=215.81
valore=213.41
valore=215.01
valore=221.02
valore=222.22
valore=221.02
valore=222.22
valore=221.42
valore=222.22
valore=221.42
valore=222.62
valore=222.62
valore=223.42
valore=222.62

mitidj2008

#7
Nov 14, 2012, 05:48 pm Last Edit: Nov 15, 2012, 11:42 pm by mitidj2008 Reason: 1
ecco un altra prova. in questo caso arudino è  isolato con un trasformatore toroidale.
ha 2 secondari uno da 9Vac che raddrizzati diventano 12 e alimenta arduino e un altro duale da 21Vac/ramo, però ho usato gli estremi cioe avevo 42Vac ai capi del trasformatore che vanno nella scheda convertitore AC-DC
sul PIN 0 ho 0.600mV che ovviamente variano
vedro di avere 2.30V pari alla rete cosi ho da guadagnare sul ingresso arduino che fare i moltiplicatori interni.
per esempio adesso ho  dovuto moltiplicare per 412 per avere quelle cifre e sul display, ma alzando il guadagno ce piu errori e sbalzi per via delle basse tensioni e interferenze che ci sono al giro.
vout = (value * 412.0) / 1024.0;

http://www.youtube.com/watch?v=W5frqvJx8Zs
dopo il filmato ho aggiunto una rez da 1k tra PIN 0 e GND per stabili e abbasamento piu veloce infatti nel filmato si vede che varia lentamente per via di un grande condensatore da 6,3V a 3300uF
sketch completo:
Code: [Select]


#include <LiquidCrystal.h>



#define RS  8
#define EN  9
#define D7  7  
#define D6  6
#define D5  5
#define D4  4

/* Definizioni globali */
 float vref = 1.1;
 LiquidCrystal lcd( RS, EN, D4, D5, D6, D7 );
 int analogInput = 0;
 float vout = 0.0;
 float vin = 0.0;
 int value = 0;

/* Impostazione dell'hardware */

void setup()
{
 Serial.begin(9600);
 analogReference( INTERNAL );  
 pinMode(analogInput, INPUT);
 lcd.begin( 4, 20 );
 
}

void loop()
{
 lcd.clear();
 value = analogRead(analogInput);

 vout = (value * 412.0) / 1024.0;
 vin = vout ;  

 // print result to lcd display
 lcd.print("Vin=");
 lcd.setCursor(4, 0);
 lcd.print(vin);
 lcd.print("Vac");
 int valore = analogRead(0);
 Serial.print("valore=");
 Serial.println(vin);
 // sleep...
 delay(1000);
}

Go Up