Manual

do

Maker

.

com

Sensor de tensão AC com Arduino

Sensor de tensão AC  com Arduino

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.

Wiring

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!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.