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

Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство

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

Arduino UNO 1
Модуль датчика напряжения (0-25В) 1
LCD-дисплей Nokia 5110 1
Макетная плата 1
Перемычки 1 набор

Приложения и сервисы

О проекте

В этом уроке я покажу, как собрать вольтметр с большим LCD-дисплеем Nokia 5110 на базе Arduino.

Сборка вольтметра — отличный учебный опыт. Завершив проект, вы лучше поймете принцип работы вольтметров, освежите закон Ома и увидите на практике мощь платформы Arduino. На базе этого проекта и полученного опыта вы сможете легко создавать более сложные устройства.

Устройство можно использовать для измерения постоянного напряжения в электронных схемах или мониторинга состояния батарей в ваших проектах. Также, зная принцип работы, вы сможете сделать свой датчик напряжения для кастомного вольтметра под свои нужды.

Шаг 1: Подготовка деталей

Необходимые детали:

Стоимость проекта около $10.

Шаг 2: Модуль датчика напряжения

Этот датчик очень прост и измеряет постоянное напряжение 0-25В. Он состоит всего из двух резисторов! Можно собрать самостоятельно или купить готовый модуль за менее чем доллар. Это делитель напряжения — распространенная схема, понижающая напряжение с помощью пары резисторов. Формула расчета выходного напряжения основана на законе Ома.

В этом модуле R1 = 30 000 Ом, R2 = 7500 Ом. Если подать 25В на вход, на выходе получим 5В — максимальное напряжение для аналогового пина Arduino. Превышение 25В сожжет аналоговый вход. При 0В на входе — 0В на выходе. Таким образом, входное 0-25В преобразуется в 0-5В на выходе.

Arduino Uno имеет 10-битный АЦП, разрешение с этим датчиком — 25 мВ. С Arduino Due (12-битный АЦП) можно получить лучшее разрешение, но придется собрать свой датчик, так как Due работает с 3.3В логикой.

Шаг 3: LCD Nokia 5110

Nokia 5110 — мой любимый дисплей для Arduino-проектов.

Это базовый графический LCD-экран, изначально для мобильных телефонов. Использует контроллер PCD8544 — низкопотребляющий CMOS-контроллер/драйвер. Потребление всего 0.4 мА при включенном экране без подсветки и менее 0.06 мА в спящем режиме!

Интерфейс PCD8544 — последовательная шина, поэтому подключение к Arduino простое: нужно соединить 8 проводов и использовать библиотеку: https://www.rinkydinkelectronics.com/library.php?id=47

Эта отличная библиотека разработана Хеннингом Карлсеном, который огромно способствовал развитию Arduino-сообщества.

Шаг 4: Сборка вольтметра

Подключение датчика напряжения (3 пина, используем 2):

Подключение дисплея Nokia 5110:

После подключения загружаем код. На пару секунд отображается заставка, затем можно начинать измерения.

Шаг 5: Код проекта

Код состоит из двух файлов: ui.c (графика) и VoltMeter.ino (основная программа).

ui.c — графика для проекта

В ui.c хранятся бинарные данные двух иконок: заставки и интерфейса вольтметра. Подробнее о загрузке собственной графики — в прилагаемом видео.

VoltMeter.ino — основная программа

Подключаем библиотеку Nokia 5110, объявляем переменные, инициализируем дисплей, показываем заставку 3 секунды. Затем выводим интерфейс и каждую секунду считываем аналоговое значение с датчика.

Вся магия в функции:

float readVoltage() {
  sensorValue = analogRead(sensorPin);
  vout = (sensorValue * 5.0) / 1024.0;
  vin = vout / (R2/(R1+R2));
  return vin;
}

Функция считывает значение датчика и конвертирует в напряжение 0-25В. При использовании своего датчика измените значения R1 и R2 на свои.

После чтения значение преобразуется в строку и выводится на экран.

Код прикреплен к уроку. Актуальную версию можно скачать на сайте проекта: educ8s.tv/arduino-voltmeter-project/

Шаг 6: Тестирование

Тестировал вольтметр на перезаряжаемом АА-аккумуляторе, 18650 и большой 12В сигнальной батарее. Показания нашего "самодельного" вольтметра очень близки к профессиональному мультиметру. Отлично, не правда ли?

Этот проект наглядно демонстрирует возможности открытого железа и ПО. За несколько минут можно собрать такое впечатляющее устройство! Идеален для новичков и, как сказано в начале, — отличный учебный опыт.

Буду рад вашему мнению в комментариях: полезен ли проект? Какие улучшения возможны?

Код

VoltMeter.ino (C/C++)

////////////////////////////////////////////////
// Arduino Voltmeter Project
// with NOKIA 5110 LCD
// https://www.educ8s.tv
///////////////////////////////////////////////
#include  // Библиотека: https://www.rinkydinkelectronics.com/library.php?id=47

LCD5110 lcd(8,9,10,12,11);
extern unsigned char BigNumbers[];
extern uint8_t ui[];
extern uint8_t startScreen[];

float voltage = 0.0;
int sensorPin = A0;
float sensorValue = 0.0f;
String voltageString = "0.0";
int stringLength = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 30000.0;
float R2 = 7500.0;

void setup() {
  Serial.begin(9600);
  lcd.InitLCD();
  lcd.drawBitmap(0, 0, startScreen, 84, 48);
  lcd.update();
  delay(3000);
  lcd.setFont(BigNumbers);
  delay(1000);
}

void loop() {
  lcd.clrScr();
  lcd.drawBitmap(0, 0, ui, 84, 48);
  voltage = readVoltage();
  Serial.println(voltage);
  voltageString = String(voltage, 1);
  stringLength = voltageString.length();
  displayVoltage(stringLength);
  lcd.update();
  delay(1000);
}

float readVoltage() {
  sensorValue = analogRead(sensorPin);
  vout = (sensorValue * 5.0) / 1024.0;
  vin = vout / (R2/(R1+R2));
  return vin;
}

void displayVoltage(int length) {
  switch(length) {
    case 3: lcd.print(voltageString, 14, 19); break;
    case 4: lcd.print(voltageString, 2, 19); break;
    default: lcd.print(voltageString, 2, 19); break;
  }
}

ui.c (графические данные)

// Содержит бинарные данные для заставки и интерфейса (массивы ui[] и startScreen[])
// Полный код в оригинале

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

  1. Сборка станции качества воздуха и погоды на Raspberry Pi с InfluxDB и Grafana
  2. Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
  3. Создание осциллографа на Arduino Nano с дисплеем Nokia 5110 (20 кГц): простое DIY-руководство
  4. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  5. Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
  6. Интерактивный HMI-проект на Nextion с Arduino Mega и датчиками
  7. Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
  8. Создание приложения Fridgeye с дисплеем Nextion: пошаговое руководство
  9. Генерация музыкальных тонов на Arduino: полный спектр 88 клавиш пианино
  10. Проект Arduino GPS и TFT-сенсорного экрана: отображение местоположения в реальном времени