Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
Компоненты и материалы
| Arduino UNO | 1 |
| Модуль датчика напряжения (0-25В) | 1 |
| LCD-дисплей Nokia 5110 | 1 |
| Макетная плата | 1 |
| Перемычки | 1 набор |
Приложения и сервисы
- Arduino IDE
О проекте
В этом уроке я покажу, как собрать вольтметр с большим LCD-дисплеем Nokia 5110 на базе Arduino.
Сборка вольтметра — отличный учебный опыт. Завершив проект, вы лучше поймете принцип работы вольтметров, освежите закон Ома и увидите на практике мощь платформы Arduino. На базе этого проекта и полученного опыта вы сможете легко создавать более сложные устройства.
Устройство можно использовать для измерения постоянного напряжения в электронных схемах или мониторинга состояния батарей в ваших проектах. Также, зная принцип работы, вы сможете сделать свой датчик напряжения для кастомного вольтметра под свои нужды.
Шаг 1: Подготовка деталей
Необходимые детали:
- Arduino Uno
- Датчик напряжения
- LCD-дисплей Nokia 5110
- Малая макетная плата
- Провода
Стоимость проекта около $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):
- Pin - → GND Arduino
- + Pin — не подключен
- S Pin → Аналоговый пин A0
Подключение дисплея Nokia 5110:
- RST → Digital Pin 12
- CE → Digital Pin 11
- DC → Digital Pin 10
- DIN → Digital Pin 9
- CLK → Digital Pin 8
- VCC → 3.3V Arduino
- LIGHT → GND (подсветка включена)
- GND → GND Arduino
После подключения загружаем код. На пару секунд отображается заставка, затем можно начинать измерения.
Шаг 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[]) // Полный код в оригинале
Производственный процесс
- Сборка станции качества воздуха и погоды на Raspberry Pi с InfluxDB и Grafana
- Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
- Создание осциллографа на Arduino Nano с дисплеем Nokia 5110 (20 кГц): простое DIY-руководство
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
- Интерактивный HMI-проект на Nextion с Arduino Mega и датчиками
- Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
- Создание приложения Fridgeye с дисплеем Nextion: пошаговое руководство
- Генерация музыкальных тонов на Arduino: полный спектр 88 клавиш пианино
- Проект Arduino GPS и TFT-сенсорного экрана: отображение местоположения в реальном времени