Medindo Tensão Elétrica AC com Módulo GBK P8 e Arduino
Neste tutorial vamos aprender como medir a tensão da rede elétrica utilizando o sensor de tensão GBK P8 em conjunto com um Arduino UNO.
[toc]
Módulo GBK P8
Em alguns projetos, é necessário medir grandezas elétricas em algum aparelho ou circuito, para monitorar condições de funcionamento, prevenir falhas, ou medir seu consumo de energia.
O módulo Sensor de Tensão GBK P8 é uma opção para medição de tensão elétrica. A placa é baseada num optoacoplador (TIL 116) e com ela é possível realizar a medição de tensões de 127 até 220 V.
Mãos à obra – Medindo Tensão AC com Módulo Sensor de Tensão GBK P8
Componentes necessários
Neste projeto, vamos monitorar o valor de tensão de um equipamento para verificar se ele está ligado ou desligado. Para isso, precisaremos de:
- 1 x Arduino UNO;
- 1 x Sensor de Tensão Módulo P8 GBK;
- Jumpers
Montando o projeto
A placa possui três terminais, que estão identificados, como a figura abaixo.
Os três terminais são:
- +5Vcc, é o pino de alimentação, que é ligado ao 5 V do Arduino
- gnd, é o terminal de 0 V, ligado no GND do Arduino
- Out, que será conectado no do Arduino
ATENÇÃO! Ao realizar este projeto, você estará trabalhado diretamente com tensões maiores que o habitual. Nesse nível de tensão, um choque elétrico pode causar danos a você e ao seu equipamento.
Se você está em dúvida sobre como proceder nessa parte, peça ajuda a alguém que saiba como trabalhar com segurança.
A montagem fica assim:
Programando
Após conectarmos o Arduino ao computador e abrirmos sua IDE, selecionamos o modelo da placa que estamos usando – no caso, Arduino UNO – e selecionamos a porta de conexão dele com o computador.
Escreva na IDE o seguinte código:
#define gbk A0 const int R1 = 220000; const int R2 = 10000; int valorLido = 0; float acum = 0; float v1 = 0; void setup() { Serial.begin(9600); } void tensaoCalculo() { valorLido = analogRead(gbk); v1 = valorLido * 0.004882812; acum = v1 / (R2 / (R2 + R1)); if(acum == 0) { Serial.println("Aparelho desconectado da tomada"); Serial.println(""); } else { Serial.println("Aparelho conectado a tomada"); Serial.print("Tensao = "); Serial.print(acum); Serial.println(" V"); Serial.println(""); } } void loop() { tensaoCalculo(); delay(1000); }
Colocando pra funcionar
ATENÇÃO! Ao realizar este projeto, você estará trabalhado diretamente com tensões maiores que o habitual. Nesse nível de tensão, um choque elétrico pode causar danos a você e ao seu equipamento.
Se você está em dúvida sobre como proceder nessa parte, peça ajuda a alguém que saiba como trabalhar com segurança.
Após dar upload do código ao Arduino, conectamos o módulo em PARALELO ao dispositivo. No nosso caso, adaptamos uma extensão para ligar direto na rede elétrica em tensão AC.
IMAGEM LIGAÇÃO EXTENSÃO E SENSOR
Depois de concluir todos os passos, o Arduino deve imprimir a seguinte mensagem no monitor serial: “Aparelho desconectado da tomada”. Agora conecte a extensão na tomada e veja o resultado no monitor serial.
IMAGEM MONITOR SERIAL
Através da saída analógica do sensor de tensão AC o Arduino consegue dizer quando o aparelho está conectado a tomada e informar a tensão elétrica.
Entendendo o Módulo GBK P8
Hardware
O módulo GBK é composto por um optoacoplador, resistores e um capacitor. O esquema de ligação pode ser visto logo abaixo.
(esquemático GBK P8)
Por estar conectado em paralelo com a tomada, entre os terminais de conexão da rede elétrica haverá uma diferença de potencial interligados por um resistor de 220 kΩ (como visto no esquemático acima), com isso, circulará uma corrente com valor bem reduzido por esse resistor. Essa corrente passará também pela entrada do optoacoplador TIL116.
Na entrada do optoacoplador existe um diodo infravermelho, que emite luz quando há corrente. Essa luz chega ao fototransistor do acoplador, chaveando corrente e criando um sinal de tensão em sua saída.
A forma de onda da saída do optoacoplador seria a um retificador de meia onda, permitindo corrente apenas nos ciclos positivos de corrente. Entretanto, a presença do capacitor no circuito altera o sinal, descarregando para o circuito no ciclo negativo, criando uma tensão de ripple com menos variação.
Software
Vamos explicar os trechos do código, para que você entenda por completo o que está sendo feito, e possa modificar o que for necessário no seu projeto.
– Variáveis do programa
O programa inicia com a definição de uma constante para o compilador: onde aparecer gbk o compilador interpreta como A0, que é o pino da leitura analógica. A vantagem desse recurso é que se o pino for alterado fisicamente depois, basta fazer a alteração em apenas um lugar do código, o que é bem útil em programas muito grandes.
Depois são declaradas algumas variáveis e constantes que ficarão na memória. R1 e R2 são constantes que armazenam os valores das resistências do módulo. A variável valorLido armazena a leitura analógica do pino A0, que vem do módulo. As variáveis v1 e acum são utilizadas no cálculo da tensão.
#define gbk A0 const int R1 = 220000; const int R2 = 10000; int valorLido = 0; float acum = 0; float v1 = 0;
– As definições no setup
No setup acontece a inicialização da comunicação serial, para a utilização do monitor serial
Serial.begin(9600);
– A função de cálculo da tensão
A função que calcula a tensão, com base na leitura analógica, é chamada logo no início da função loop.
void tensaoCalculo() { valorLido = analogRead(gbk); v1 = valorLido * 0.004882812; acum = v1 / (R2 / (R2 + R1)); if(acum == 0) { Serial.println("Aparelho desconectado da tomada"); Serial.println(""); } else { Serial.println("Aparelho conectado a tomada"); Serial.print("Tensao = "); Serial.print(acum); Serial.println(" V"); Serial.println(""); } }
Ela inicia fazendo a leitura analógica do pino A0 e armazenando na variável valorLido. Em sequência, faz a conversão da leitura, que vai de 0 a 1023, para um valor de tensão, que vai de 0 a 5 V. A conversão é feita multiplicando o valorLido por 0,004882812. Esse valor é equivalente a 5/1024, e representa quanto vale em volts cada inteiro da leitura analógica. A multiplicação então, converte a leitura analógica para um valor de tensão.
valorLido = analogRead(gbk); v1 = valorLido * 0.004882812;
Depois, se faz o cálculo de quanto a tensão lida representa no valor real. A tensão lida no sensor é uma tensão de 0 a 5 V, na saída de um divisor de tensão. Para o valor real, a tensão faz o cálculo inverso ao do divisor de tensão:
acum = v1 / (R2 / (R2 + R1));
– Declarando a função tensaoCalculo()
Antes de iniciar o void loop(), é necessário declarar a função que será chamada por ele.
void tensaoCalculo()
– Lendo os dados do pino A0
É armazenado o valor lido no pino A0 na variável do tipo inteiro “valorLido”.
valorLido = analogRead(A0);
– Convertendo para tensão
Multiplica-se o valor lido na entrada analógica por 0,00482812 para descobrir o valor da tensão da entrada analógica do arduino.
v1 = valorLido * 0.004882812;
Considerações finais
Esperamos que este tutorial tenha ajudado a entender como utilizar o Módulo Sensor de Tensão GBK P8, e como utilizá-lo em projetos para medir tensão da rede elétrica, ou de dispositivos ligados em tensão AC.
Deixe nos comentários suas dúvidas. Críticas e sugestões também são muito bem vindas.
Até o próximo!
Técnico em eletrotécnica e estudante de Engenharia Elétrica pelo IFES.