Manual
do
Maker
.
com
Tudo o que você precisa é de um divisor de tensão, mas esse sensor da GBK Robotics tem adicionalmente um optocoupler para fazer o isolamento da rede AC, protegendo assim o lado digital do seu circuito.
O sensor de tensão se baseia simplesmente no divisor de tensão. Esse sensor da GBK Robotics utiliza um resistor de 220K e um resistor de 10K. R1 é o resistor mais alto, de modo que R2 = 10k. Depois, tudo que precisa ser feito é calcular a saída assim:
val = \frac{(\frac{analogRead\*5.0}{1024.0})}{(\frac{R2}{R1+R2})}
Vou conectar esse módulo a um Arduino Nano do nosso parceiro Fulltronic (esse Nano da foto). O dock do Nano também pode ser adquirido com eles e garanto, é bem melhor utilizar jumpers femea-femea do que a protoboard, ficam menos fios e mais rápido de prototipar.
O wiring é muito simples, basta conectar Out da board ao A0 do Arduino (o código serve para qualquer Arduino). O 5V vai ao 5V do Arduino e o GND vai ao GND do Arduino.
Agora basta ler e aplicar a fórmula descrita anteriormente. Você pode querer um pouco de precisão na leitura. Nesse caso, coletar algumas amostras e tirar a média pode ser uma boa opção. O código para tal pode ficar assim:
#define R1 220000.0
#define R2 10000.0
#define SAMPLES 5
float acum = 0;
int analog0 = 0;
int loops = 0;
float v1 = 0;
void calc(){
analog0 = analogRead(0);
v1 = (5.0 * analog0)/1024.0;
Serial.print("Valor da amostragem ");
Serial.print(loops);
Serial.print(": ");
Serial.println(v1);
if (v1 < 1){
return;
}
acum += v1/(R2/(R2+R1));
loops++;
if (loops >4){
loops = 0;
float result = acum/SAMPLES;
Serial.print("V=");
Serial.println(result);
}
delay(200);
}
void setup() {
pinMode(0,INPUT);
Serial.begin(9600);
Serial.println("Iniciando");
}
void loop() {
calc();
}
A serial ficará imprimindo muito rápido devido ao delay curto, mas esse delay de 200ms aproxima a media a 1 segundo, considerando que a amostragem tirada é de 5 samples.
Apenas para esclarecer, o valor 1024.0 se trata da resolução do pino analógico, que é de 10 bits. Se você utilizar uma MCU com mais resolução, basta subir esse valor. Por exemplo, se for 12 bits, troque para 4096.0. Se for utilizar o ESP8266, você precisará utilizar um divisor de tensão extra para derrubar a tensão para 1V, que é o máximo permitido na porta analógica dele. Escreverei um artigo a respeito.
Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.
Próximo post a caminho!
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.