Wattímetro baseado em Arduino

Este é um projeto baseado em placa Arduino que pode medir o consumo de energia dos dispositivos. Quando conectamos este wattímetro a um dispositivo que está em operação, o LCD 16*2 exibe seu valor de consumo de energia em Watts. O projeto utiliza um Miniplaca Arduino Pro cujo recurso ADC é usado junto com o conceito da lei de Ohm e do circuito divisor de tensão para desenvolver este Wattímetro.

Protótipo de medidor de watts baseado em Arduino

Figura 1: Protótipo de medidor de watts baseado em Arduino

Descrição

Todo o projeto pode ser dividido em três blocos básicos;

1) Unidade Sensora de Potência

2) Unidade de Processamento

3) Unidade de exibição

Diagrama de blocos do medidor de watts baseado em Arduino

Figura 2: Diagrama de blocos do medidor de watts baseado em Arduino

A Unidade Sensora de Potência permite que a corrente flua através de um dispositivo cujo consumo de energia precisa ser medido. A Unidade Sensora produz duas tensões, uma é a saída de tensão da fonte de alimentação e outra é uma tensão que varia de 0 a 5V. A diferença entre essas duas tensões é proporcional à quantidade de corrente que flui através da unidade do sensor.

A Unidade do Processador pode aceitar duas tensões de entrada, ambas na faixa de 0 a 5V. Esta unidade considera a saída da unidade do sensor como tensões de entrada e usa o ADC para ler essas tensões. Um algoritmo é então aplicado para calcular o consumo de energia do dispositivo. A unidade então envia dados de 4 bits para a unidade de exibição para exibir o consumo de energia em Watts.

A unidade de exibição pega os dados de 4 bits da unidade do processador e produz uma exibição de 16*2 para o consumo atual do dispositivo.

1) Unidade Sensora de Potência

O Sensor de Potência neste projeto é um único resistor de baixo valor através do qual a corrente flui para o dispositivo de carga. A tensão através do resistor e do o fluxo de corrente através do resistor é medido para calcular o consumo de energia do dispositivo.

Em nosso projeto implementamos o resistor 'R' no caminho do fluxo de corrente cujo valor de resistência é conhecido. Em seguida, medimos a tensão em ambas as extremidades do resistor para calcular o fluxo de corrente com a ajuda da seguinte equação.

Eu = (V2 – V1) /R

Diagrama de circuito do circuito de detecção de potência

Figura 3: Diagrama de circuito do circuito de detecção de potência

Nós temos selecionado um valor de R = 10 ohms, agora fica a equação para cálculo da potência;

Eu = V2 – V1/10

Uma vez obtido o valor da corrente 'I', a potência consumida pelo dispositivo 'P' pode ser calculada através da seguinte equação;

P = V2 * I

2) Unidade de Processamento

A unidade processadora neste projeto é a placa Arduino e utiliza o módulo ADC para ler as tensões de saída V1 e V2 da Unidade Sensor. Na placa Arduino estamos usando um ADC de 8 canais e 10 bits com o pino de tensão de referência conectado a 5 V. O ADC lê a tensão V1, V2 e gera um valor equivalente 'ValorADC'no registro ADC. A partir deste valor o algoritmocalcula as tensões V1 e V2 e depois o consumo de energia.

Uma vez obtidos os valores de V1 e V2 o valor do fluxo de corrente 'I' é calculado utilizando os valores conhecidos de R = 10 ohms, com o auxílio da equação;

Eu = (V2 – V1) / 10

O consumo de energia é então calculado usando a equação;

P = V2 * I

O código a seguir calcula a potência e a exibe no LCD.

dc_power = dc_corrente_I0 * dc_voltage_V1;

lcd.claro ;

lcd.setCursor(0, 0);

lcd.print(dc_power);

lcd.print(”mW DC”);

Unidade de exibição e explicação do código

3) Unidade de exibição

A unidade de exibição usa um LCD padrão 16*2 no qual o Arduino exibe o valor de consumo de energia. O LCD foi conectado no modo de quatro bits para reduzir o número de pinos de saída da placa Arduino a serem usados.

Imagem mostrando o módulo LCD usado para exibir a resistência

Figura 4: Imagem mostrando o módulo LCD usado para exibir a resistência

Descrição do código

O código lê continuamente os canais ADC A0 e A2 um após o outro, calculando cada vez os valores de V1 e V2. Quando ambos os valores de V1 e V2 são obtidos, o código calcula então o valor do consumo de energia do dispositivo e que o valor é exibido no LCD 16*2.

O código rodando no Arduino usou a função de biblioteca analogRead para obter o valor ADC e lcd.print para exibir os dados no LCD 16*2.

Diagrama de fluxo do código Arduino para medição de potência

Figura 5: Diagrama de fluxo do código Arduino para medição de potência

Limitações:

O resistor de 10 ohms é um valor alto comparado ao resistor de precisão de 0,05 ohms dentro de um multímetro. Mais fluxo de corrente, mais queda de tensão no resistor, e essa queda de tensão é proporcional ao valor da resistência. Para valores de corrente acima de 500mA, crie uma resistência baixa conectando tantas resistências em paralelo quanto possível. Como o ADC do Arduino pode ler no máximo apenas 5V, não use uma fonte de corrente com tensão superior a 5V.

Código fonte do projeto

###


// inclui o código da biblioteca:

#incluir

// inicializa a biblioteca com os números dos pinos da interface

LCD de cristal líquido (12, 11, 5, 4, 3, 2);

int valor_adc = 0;

int voltage_peak_value = 0;

float voltage_average_value = 0;

flutuante tensão_cc_V0 = 0;

flutuante tensão_ac_V0 = 0;

flutuante dc_voltage_V1 = 0;

flutuante tensão_ac_V1 = 0;

float dc_current_I0 = 0;

float ac_current_I0 = 0;

float dc_power = 0;

float ac_power = 0;

resistência longa não assinada;

sample_count longo sem sinal = 0;

configuração nula

{

// configura o número de colunas e linhas do LCD:

lcd.begin(16, 2);

// Imprime uma mensagem no LCD.

lcd.print("EG LABS");

pinMode(13, SAÍDA);

}

loop vazio

{

// Serial.println("=============================== TENSÃO =========== =============================");

voltage_peak_value = 0;

for(contagem_amostra = 0; contagem_amostra < 5000; contagem_amostra ++)

{

adc_value = analogRead(A0);

if(tensão_pico_valor < valor_adc)

voltage_peak_value = adc_value;

outro;

atrasoMicrossegundos(10);

}

dc_voltage_V0 = voltage_peak_value * 0,00488;

tensão_ac_V0 = tensão_cc_V0 / 1,414;

// Serial.println("================================ ATUAL ========== ==============================");

voltage_peak_value = 0;

for(contagem_amostra = 0; contagem_amostra < 5000; contagem_amostra ++)

{

adc_value = analogRead(A2);

if(tensão_pico_valor < valor_adc)

voltage_peak_value = adc_value;

outro;

atrasoMicrossegundos(10);

}

dc_voltage_V1 = voltage_peak_value * 0,00488;

tensão_ac_V1 = tensão_cc_V1 / 1,414;

dc_corrente_I0 = (dc_voltage_V1 - dc_voltage_V0) * 100;

ac_current_I0 = (ac_voltage_V1 - ac_voltage_V0) * 100;

//================================ PODER ============== ===========================

dc_power = dc_corrente_I0 * dc_voltage_V1;

potência_ac = corrente_ac_I0 * voltagem_ac_V1;

lcd.claro ;

lcd.setCursor(0, 0);

lcd.print(dc_power);

lcd.print("mW");

//============================================== ================================

atraso(1000);

}

###

Diagramas de circuito

Diagrama de Circuito-Arduino-Wattímetro

Vídeo do projeto

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.