Dear Friends, I have to visualize the current passing through the TA12-10 sensor. Usage, Arduino Genuino Uno, with the I2C connection. There are three sensor pins but only 2 are used, of which S goes to pin A0 or other analog and G goes connected to GND.
I checked the address of the LCD 1602 TYPE and it is as per algorithm 0x27. Now I can not understand where I'm wrong, since the library I use, works perfectly with all types of sensors. Where am I wrong? Thank you
The code
//Baseado no exemplo da biblioteca EmonLib
/*-importacao Necessaria*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//Carrega as bibliotecas
#include "EmonLib.h"
/*Declaracao de Constates e Objetos*/
// seta o Endereco do Display LCD 0x27
// Seta os pinos do I2C usado (padrao da biblioteca)
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0X27, 16,2); // Set the LCD I2C address
EnergyMonitor emon;
//Tensao da rede AC 110 Volts e na verdade (127 volts)
int tensao = 127;
//desvio medio
double ruido =0.005;
//Pino do sensor
int sensor= 0;
double Irms =0;
double media =0;
void setup() {
Serial.begin(9600); //Serial
// inicializa o lcd de 20 caracters e 4 linhas
lcd.begin(16,2);
//lcd.begin(16,2);
//Pino, calibracao - Corrente Constante= Ratio/BurdenR. = x.
emon.current(sensor, 12);
//descarta os 5 primeiros valores de leitura.
//(costuma ter muito ruido)
for(int index =0; index <5; index++){
media =media+ emon.calcIrms(1480);
delayMicroseconds(1);
media =0;
}
// ------- Um breve blink de backlight (luz de fundo -------------
//liga
lcd.backlight();
delay(250);
//desliga
lcd.noBacklight();
delay(250);
//finaliza com a luz de fundo ligada
lcd.backlight();
}
void loop() {
Irms =0;
media =0;
//Calcula a media da corrente fazendo 10 amostragem
for(int index =0; index <100; index++){
media =media+ emon.calcIrms(1480);
delayMicroseconds(1);
}
//ruido do sensor (desvio)
Irms = media /100;
Irms = Irms - ruido;
//Trata possiveis desvios de ruido
if(Irms < ruido || Irms < 0){
Irms =0;
}
lcd.clear();
//Reposiciona o cursor na linha 0 e coluna 0
lcd.setCursor(0,0);
//Escreve
//Mostra o valor da corrente
Serial.print("Corrente : ");
// Irms
Serial.print(Irms, 3);
Serial.print(" A ");
lcd.print("Corrente :");
lcd.print(Irms, 3);
lcd.print("A");
//Pula para segunda linha na posicao 0
lcd.setCursor(0,2);
//Escreve
//Calcula e mostra o valor da potencia
Serial.print(" Potencia (Consumo) : ");
Serial.print(Irms * tensao);
Serial.println(" Watts ");
lcd.print("Potencia (Consumo) : ");
lcd.setCursor(0,3);
lcd.print(Irms * tensao);
lcd.print(" Watts ");
//Aguarda 8 segundos para reiniciar o loop
delay(2000);
}