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

 

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

Автор: Mike(admin) от 5-12-2016, 07:35

Амперметр представляет собой устройство, который способен измерять проходящий через него ток. Амперметры бывают как аналоговые (например, стрелочные), так и цифровые. На самом деле сделать самостоятельно цифровой амперметр не так уж и сложно. Тем более, когда имеется плата Arduino.


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

В данном материале показан проект, который может измерять неизвестное текущее значение постоянного тока. При этом величина зарегистрированного тока отображается на LCD-дисплее 16*2.


Здесь используется плата Arduino pro mini. Концепция проекта заключается в применении АЦП для считывания напряжение, которое в последствии делится на значение сопротивления резистора, через который проходит ток, чтобы получить искомую величину тока. Резистор в данном случае представляет собой шунт, поскольку включен в схему таким образом, чтобы через его основные терминалы протекал ток цепи, а измерительными терминалами он подключается параллельно плате Arduino для считывания напряжения. На каждом терминале, подключенном к определенной линии АЦП, присутствует напряжение в диапазоне от 0 до 5 В, и разность напряжений этих двух терминалов пропорциональна току, текущему через шунт. Схематично подключение шунта можно представить на изображении ниже.


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

Здесь I представляет собой ток, текущий через резистор-шунт, R является сопротивлением этого шунта, а V представляет собой разность потенциалов между двумя измерительными терминалами, то есть V = V2 – V1. Тогда по закону Ома ток находится очень легко: I = (V2 – V1) / R.


В данном проекте также нужно грамотно подойти к вопросу выбора сопротивления для резистора-шунта. Оно должно быть таким, чтобы не оказывать влияния на работу нагрузки, которая потребляет ток. Использование высокого значения сопротивления приведет к тому, что падение напряжения на резистивном пути будет слишком большим, что не обеспечит нагрузку достаточным током. Использование же слишком малого значения сопротивления не позволит АЦП правильно считать значение. Для выбора сопротивления можно применить следующее правило: R >Vр / I. Здесь Vр представляет собой напряжение разрешения АЦП, то есть минимальное напряжение, которое может зарегистрировать аналогово-цифровой преобразователь. В нашем случае оно составляет 4.88 мВ. Тогда, например, если минимальное требуемое значение тока для измерения составляет 0.5 мА, то получим: R > 4.88 мВ / 0.5 мА > 9.76. То есть можно взять сопротивление 10 Ом.


Ниже представлена схема амперметра на 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;

unsigned long resistance;

unsigned long sample_count = 0;

 

void setup()

{

  // указание строк и столбцов отображения дисплея

  lcd.begin(16, 2);

  // Печатаем сообщение на экране дисплея

  lcd.print("    EG LABS    ");

  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;

 

  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print(dc_current_I0);

  lcd.print(" mA"); 

 

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

 

  delay(1000);   

}



© digitrode.ru


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



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

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

Оставить комментарий
Цитата
  • Группа: Посетители
  • ICQ:
  • Регистрация: 16.12.2016
  • Статус: Пользователь offline
  • Комментариев: 1
  • Публикаций: 0
^
что за линия со стрелочкой отходит от LCD?
Цитата
  • Группа: Администраторы
  • ICQ:
  • Регистрация: 28.08.2013
  • Статус: Пользователь offline
  • Комментариев: 13
  • Публикаций: 673
^
Цитата: Xavaniur
что за линия со стрелочкой отходит от LCD?

Подключение к потенциометру для регулировки яркости.