Variação Portas Analógica

Olá, Srs.

Estou iniciando nesta área de eletrônica, estou um projeto de identificar a tensão de entrada da rede elétrica e inicialmente só colocar no LCD. Bom, meu projeto está funcionando perfeitamente.

O sensor está perfeito, mas uma das funções dele é identificar se a rede está ligada ou não, só que quando eu desligo da rede pública o arduino me passa uns valores aleatórios.

Chegando a apresentar 800V no LCD.

Fiz o teste de desligar o jumper do arduino e continua os mesmos valores.

Alguém sabe se tens como eu identificar se tem corrente no arduinos, caso não tenha ele me apresentar 0.

Segui este projeto para o sensor.

Obrigado.

Ligaste o GND do Arduino a este circuito?

Sim, está ligado, mas o que acontece é quando fica sem energia elétrica no circuito os valores são informados aleatório. Quando tem corrente da tomada é apresentado o valor correto.

Sem ver o codigo... nem tao pouco uma foto do esquema ou a garantia que o esquema e o mesmo com os mesmos valores... acho que estas a pedir um pouco demais, nao?

O transformador e igual?

Boa tarde, bubulindo.

o circuito é este que envio abaixo.

Ja o código que estou utilizando segue abaixo.

float sensorTensao;
float sensorTemperatura;
float valorTemp;
float valorTensao;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  // Zerando as variaveis
  sensorTemperatura = 0;
  sensorTensao      = 0;
  
  // Efetuando a Leitura dos Sensores  
  
  // Fiz um for para pegar uma media de 1000 leituras
  for(int i=0;i<1000;i++)
  {
    sensorTensao = sensorTensao + analogRead(A0);
  } 
  valorTensao = sensorTensao/1000; //Media de mil leituras
  Serial.print("Valor Porta = " );                       
  Serial.println(valorTensao);
  valorTensao = valorTensao * (5.0/1024);//Converte valor lido para tensão
  Serial.print("Tensao Porta = " );                       
  Serial.println(valorTensao);
  valorTensao = valorTensao * 75.90361445783133;
  Serial.print("Tensao Medida = " );                       
  Serial.println(valorTensao);
   
  delay(2000);
}

Se tiver Corrente na entrada do circuito a leitura é exata, caso eu desligue a tomada ele continua lendo uns valores aleatórios.

Obrigado.

Bom... o teu circuito, a bem dizer... fica a flutuar.

No entanto, olhando ao teu codigo... se tu meteres 5V na entrada analogica, ficaras com algo como 5*75... que e 375... logo os teus 800V que aparecem no ecra, ca para mim, tem outra causa...

No entanto, vi ali coisinhas muito feias no teu codigo... 1000 amostras e ridiculo.
Adicionar ints a floats nao e bonito... ate podera funcionar, mas nao ha necessidade.

loop()....

unsigned int leituras = 0; // isto vai ate 65000... 
float tensao = 0; 

//65000/1024 = 63. 
//vamos fazer uma media mais em conta... 20 valores. 

for (unsigned char i=0 ; i<20; i++) {
     leituras = leituras + analogRead(A0);
}

tensao = (float) leituras/20;

Serial.print("Tensao Medida = " );                       
Serial.println(tensao);

delay(2000);

Importas-te de experimentar??

Muito Obrigado pelas dicas, vou testar e te aviso.

Tenta colocar uma resistência de cerca de 10K em paralelo à entrada do ADC, isto é entre o pino do ADC e o GND.O teu circuito quando desligado capta sinais indesejados e o ADC por sua vez mede os e apresenta-tos.A resistencia lá ira fazer um pull-down nesses sinais quando o desligares.