цифровая электроника
вычислительная техника
встраиваемые системы

 

Ваттметр на Arduino своими руками

Автор: Mike(admin) от 16-12-2016, 10:45

Ваттметр измеряет потребляемую устройством мощность, выражаемую в ваттах (Вт). Сегодня ваттметры можно купить в электротехническом магазине, а можно сделать самому, что выйдет дешевле и полезнее в плане приобретения инженерных навыков.


Ваттметр на Arduino своими руками

Благодаря широкому распространению и разносторонней поддержке платы Arduino создание ваттметра на ее основе не составит особого труда. Принцип работы и подключение в данном случае схожи с примером создания амперметра на Arduino.


Здесь также в качестве датчика выступает шунтирующий резистор, через который протекает ток. С шунта выходят два дополнительных провода, подключаемые к двум каналам АЦП платы Arduino. Разница напряжений с этих двух линий пропорциональна проходящему через резистор электрическому току. Ток можно рассчитать по формуле I = (V2 – V1) / R. Поскольку мощность представляет собой произведение напряжения и тока, то P = V2 * I. Таким образом, благодаря простой формуле можно из амперметра сделать ваттметр и измерять потребляемую мощность.


Схема подключения и код (скетч для Arduino) представлены ниже.


Ваттметр на Arduino своими руками


#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


int adc_value = 0;

int voltage_peak_value = 0;

float voltage_average_value = 0;

float dc_voltage_V0 = 0;

float ac_voltage_V0 = 0;

float dc_voltage_V1 = 0;

float ac_voltage_V1 = 0;

float dc_current_I0 = 0;

float ac_current_I0 = 0;

float dc_power = 0;

float ac_power = 0;

unsigned long resistance;

unsigned long sample_count = 0;

 

void setup()

{

  lcd.begin(16, 2);

  lcd.print("    Wattmeter    ");

  pinMode(13, OUTPUT);

}

 

void loop()

{

 

//=============================== НАПРЯЖЕНИЕ ========================================

 

  voltage_peak_value = 0;

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

  {

      adc_value = analogRead(A0);

      if(voltage_peak_value < adc_value)

          voltage_peak_value = adc_value;

      else;

      delayMicroseconds(10);

  }

 

  dc_voltage_V0 = voltage_peak_value * 0.00488;

  ac_voltage_V0 = dc_voltage_V0 / 1.414;

 

   

//================================ ТОК ========================================

 

  voltage_peak_value = 0;

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

  {

      adc_value = analogRead(A2);

      if(voltage_peak_value < adc_value)

          voltage_peak_value = adc_value;

      else;

      delayMicroseconds(10);

  }

 

  dc_voltage_V1 = voltage_peak_value * 0.00488;

  ac_voltage_V1 = dc_voltage_V1 / 1.414;

 

  dc_current_I0 = (dc_voltage_V1 - dc_voltage_V0) * 100;

  ac_current_I0 = (ac_voltage_V1 - ac_voltage_V0) * 100;

 

  //================================= МОЩНОСТЬ =========================================

 

  dc_power = dc_current_I0 * dc_voltage_V1;

  ac_power = ac_current_I0 * ac_voltage_V1; 

 

  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print(dc_power);

  lcd.print(" mW"); 

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

  delay(1000);   

}



© digitrode.ru


Теги: Arduino, ваттметр



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий