misurare la 230V(0 220V) su arduino con lcd

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

Mi pare strano che non hai trovato nulla.

Questo?Arduino Forum

Prima risposta di google a questa ricerca: Google

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

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.

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

ho fatto le prove. impressionante risposta :grin: :smiley:
funziona alla perfezione.

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

ecco un log:

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

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;

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:

#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);
}