Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Умный вольтметр на Arduino и смартфоне — простое DIY-проект

Компоненты и материалы

Arduino UNO 1 шт.
PHPoC WiFi Shield для Arduino 1 шт.
Резистор 100 кОм 1 шт.
Резистор 1 МОм 1 шт.
Перемычки (набор) 1 шт.

О проекте

Демонстрация

Если вы новичок в Arduino, начните с базовых уроков по Arduino.

Принцип работы

Аналоговый вход Arduino может измерять напряжение до 5 В. Для расширения диапазона используется делитель напряжения.

Теория

Умный вольтметр на Arduino и смартфоне — простое DIY-проект

Формула измеряемого напряжения:

V_measure = (R1 + R2) / R2 * V_in

Коэффициент деления: ratio = (R1 + R2) / R2

При выборе R1 = 10 × R2 получаем V_measure = 11 * V_in. Так как максимальное V_in = 5 В, максимальное измеряемое напряжение составляет 55 В.

Для ограничения тока через вывод Arduino и предотвращения повреждений резисторы выбирают максимально большими. Используются: R1 = 1 МОм, R2 = 100 кОм.

На практике

Встречаются две основные проблемы:

Эти проблемы решаются на этапе калибровки.

Калибровка

1. Измерение реального коэффициента деления

Выполняется один раз для получения точного значения ratio.

Сборка по схеме:

Умный вольтметр на Arduino и смартфоне — простое DIY-проект

ratio = (R1 + R2) / R2 = V_measure / V_in = A1_read_value / A0_read_value

Код для калибровки см. ResisterCalibration.ino в разделе «Код».

2. Нестабильность питания

Нестабильность питания вызывает дрейф опорного напряжения аналогового входа. Для устранения необходимо периодически измерять опорное напряжение.

Подключите 3,3 В к выводу A1:

Умный вольтметр на Arduino и смартфоне — простое DIY-проект

Опорное напряжение вычисляется косвенно по значению на A1:

V_reference = 1023 * 3.3 / A1_value

Расчёт измеряемого напряжения:

V_in = mapFloat(A0_value, 0, 1023, 0, V_reference); V_measure = ratio * V_in;

Основная схема подключения:

Умный вольтметр на Arduino и смартфоне — простое DIY-проект

Пошаговая инструкция

  1. Соберите схему «калибровка резисторов».
  2. Загрузите скетч ResistorCalibration.ino.
  3. Откройте Serial Plotter.
  4. Скопируйте значение ratio.
  5. Замените это значение в строке 5 скетча Voltmeter.ino.
  6. Пересоберите схему по «основной схеме».
  7. Загрузите Voltmeter.ino.
  8. Загрузите веб-интерфейс (voltmeter.php и voltmeter_body.jpg) на PHPoC Shield.
  9. Откройте в браузере https://phpoc_shield_ip_address/voltmeter.php для просмотра напряжения на смартфоне.
Умный вольтметр на Arduino и смартфоне — простое DIY-проект

Советы по монтажу

Умный вольтметр на Arduino и смартфоне — простое DIY-проект
Умный вольтметр на Arduino и смартфоне — простое DIY-проект
Умный вольтметр на Arduino и смартфоне — простое DIY-проект

Код

ResistorCalibration.ino

double ratio; 
int analogReadAverage(int pin, int read_time) { 
  unsigned long read_value = 0; 
  for(int i = 0; i < read_time; i++) { 
    read_value += analogRead(pin); 
    delay(2); 
  } 
  read_value /= read_time; 
  return read_value; 
} 
double resistorCalibration() { 
  double _ratio; 
  double A0_read_value; 
  double A1_read_value; 
  A0_read_value = analogReadAverage(A0, 20); 
  A1_read_value = analogReadAverage(A1, 20); 
  _ratio = A1_read_value / A0_read_value; 
  return _ratio; 
} 
void setup() { 
  Serial.begin(9600); 
} 
void loop() { 
  ratio = resistorCalibration(); 
  Serial.print("ratio:"); 
  Serial.println(ratio); 
  delay(200); 
}

Voltmeter.ino

double V_measure; 
double V_in; 
double V_reference; 
double ratio = 11.59; // замените на откалиброванное значение 
double mapFloat(double x, double in_min, double in_max, double out_min, double out_max) { 
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; 
} 
int analogReadAverage(int pin, int read_time) { 
  unsigned long read_value = 0; 
  for(int i = 0; i < read_time; i++) { 
    read_value += analogRead(pin); 
    delay(2); 
  } 
  read_value /= read_time; 
  return read_value; 
} 
double getVoltageReference() { 
  double A1_value = analogReadAverage(A1, 20); 
  double V_REF = 1023 * 3.3 / A1_value; 
  return V_REF; 
} 
void setup() { 
  Serial.begin(9600); 
} 
void loop() { 
  V_reference = getVoltageReference(); 
  double A0_value = analogReadAverage(A0, 20); 
  V_in = mapFloat(A0_value, 0, 1023, 0, V_reference); 
  V_measure = ratio * V_in; 
  Serial.println(V_measure); 
  delay(200); 
}

voltmeter.php (веб-интерфейс)

<!DOCTYPE html> 
<html> 
<head> 
<title>PHPoC Shield - VOLTMETER</title> 
<meta name="viewport" content="width=device-width, initial-scale=0.7"> 
<link rel="stylesheet" media="screen" href="https://fontlibrary.org/face/segment7" type="text/css"/> 
<style> 
html {height: 100%;} 
body {width: 100%; height: 100%; text-align: center;} 
.container {width: 100%; min-height: 99%; max-height: 100%;} 
canvas { background: url(voltmeter_body.jpg); background-size:contain; font-family: 'Segment7Standard'; font-weight: bold; font-style: italic; } 
</style> 
<script> 
// ... JavaScript код для WebSocket и отрисовки вольтметра на canvas ... 
</script> 
</head> 
<body onresize="canvas_resize()"> 
<div class="container" id="container"> 
<canvas id="graph"></canvas> 
</div> 
</body> 
</html>

Схемы

Умный вольтметр на Arduino и смартфоне — простое DIY-проект

Производственный процесс

  1. DIY-консоль управления Photoshop на Arduino Nano RP2040 Connect
  2. Надежная система учета рабочего времени на Arduino с RFID и Python
  3. Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
  4. Надежный ИК-датчик пульса на Arduino: пошаговое руководство
  5. Точное измерение частоты и коэффициента заполнения на Arduino UNO
  6. Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
  7. Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
  8. MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона
  9. Бесшовное управление яркостью светодиодов с помощью Bolt IoT и Arduino UNO
  10. Умная робо-рука на Arduino: простое DIY-руководство