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

DIY вольтметр с Arduino и дисплеем Nokia 5110

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

Arduino UNO
× 1
Датчик напряжения (общий)
× 1
ЖК-дисплей Nokia 5110
× 1
Макет (общий)
× 1
Перемычки (общие)
× 1

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

IDE Arduino

Об этом проекте

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

Изготовление вольтметра - отличный опыт. Когда вы закончите создание этого проекта, вы лучше поймете, как работают вольтметры, обновите свои знания о законе Ома и увидите в действии, насколько мощной может быть платформа Arduino. Используя этот проект в качестве основы и полученный опыт, вы сможете легко создавать более сложные проекты в будущем.

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

Без промедления, приступим!

Шаг 1. Получите все детали

Детали, необходимые для создания этого проекта, следующие:

  • Arduino Uno
  • Датчик напряжения
  • ЖК-дисплей Nokia 5110
  • Маленькая макетная плата
  • Некоторые провода

Стоимость проекта очень низкая. Это около 10 долларов.

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

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

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

Arduino Uno имеет 10-битный АЦП, поэтому разрешение, которое мы можем достичь с помощью этого датчика, составляет 25 мВ. Если мы используем Arduino Due, мы можем добиться еще лучшего разрешения, поскольку он имеет 12-битные АЦП. Но, конечно, нам нужно создать собственный датчик напряжения, потому что плата Arduino Due использует логические уровни 3,3 В, и любое напряжение, превышающее это, приведет к повреждению его аналогового вывода.

Шаг 3. ЖК-дисплей Nokia 5110

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

Nokia 5110 - это простой графический ЖК-экран, изначально предназначенный для использования в качестве экрана мобильного телефона. Он использует контроллер PCD8544, который является контроллером / драйвером CMOS LCD с низким энергопотреблением. Благодаря этому у этого дисплея впечатляющее энергопотребление. Когда он включен, он потребляет всего 0,4 мА, но подсветка отключена. В спящем режиме он потребляет менее 0,06 мА! Это одна из причин, по которой этот дисплей стал моим любимым.

PCD8544 взаимодействует с микроконтроллерами через интерфейс последовательной шины. Это делает дисплей очень простым в использовании с Arduino. Вам нужно всего лишь подключить 8 проводов и использовать следующую библиотеку:http://www.rinkydinkelectronics.com/library.php?id=47

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

Я подготовил подробное руководство по использованию ЖК-дисплея Nokia 5110 с Arduino. Я приложил это видео к этому руководству, оно может предоставить полезную информацию о дисплее, поэтому я рекомендую вам внимательно его посмотреть.

А теперь идем дальше!

Шаг 4. Создание вольтметра

Теперь давайте соединим все части вместе.

Сначала подключаем датчик напряжения. У него всего 3 контакта. Из них нам нужно подключить только 2.

Подключение датчика напряжения

  • - Контакт идет к заземлению Arduino.
  • + Пин остается неподключенным
  • Вывод S соответствует аналоговому выводу 0

Следующим шагом будет подключение ЖК-дисплея Nokia 5110.

Подключение ЖК-дисплея Nokia 5110

  • RST подключается к цифровому выводу 12 Arduino.
  • CE подключается к цифровому выводу 11 Arduino.
  • DC подключается к цифровому выводу 10 Arduino
  • DIN подключается к цифровому выводу 9 Arduino.
  • CLK подключается к цифровому выводу 8 Arduino.
  • VCC переходит на Arduino 3.3V
  • LIGHT переходит на Arduino GND (подсветка включена)
  • GND подключается к Arduino GND.

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

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

Код проекта состоит из 2-х файлов.

  • ui.c
  • VoltMeter.ino

Код ui.c - Графики для нашего проекта

В первом файле ui.c содержатся двоичные значения двух значков, отображаемых на ЖК-дисплее Nokia 5110. После этого появляется значок всплеска и пользовательский интерфейс для вольтметра. Пожалуйста, посмотрите прикрепленное видео, которое я подготовил, чтобы увидеть, как загрузить вашу собственную графику в ваш проект Arduino.

Код VoltMeter.ino - Основная программа

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

Вся магия происходит в следующей функции:

  с плавающей запятой readVoltage () {sensorValue =analogRead (sensorPin); vout =(значение датчика * 5.0) / 1024.0; vin =vout / (R2 / (R1 + R2)); вернуть vin;}  

Вышеупомянутый метод считывает значение с датчика и преобразует его в напряжение от 0 до 25 В. Если вы используете датчик напряжения, изготовленный по индивидуальному заказу, вам необходимо изменить переменные R1 и R2, чтобы отразить значения резисторов вашего датчика.

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

Я прикрепил код к этому руководству. Чтобы загрузить последнюю версию кода, вы можете посетить веб-страницу проекта:education8s.tv/arduino-voltmeter-project/

F4FWJORIRXTXQG8.c FY005LHIRXTXQG9.ino

Шаг 6. Тестирование проекта

Теперь, когда код загружен, мы можем протестировать вольтметр с некоторыми батареями. Я тестирую его с перезаряжаемой батареей AA, батареей 18650 и большой батареей для сигнализации 12 В.

Как видно на приложенных фотографиях, вольтметр работает нормально. Для сравнения я также использовал свой мультиметр. Показания нашего "ручного" вольтметра очень близки к показаниям профессионального мультиметра. Отлично, не правда ли?

Как видите, этот проект - отличная демонстрация того, на что способно оборудование и программное обеспечение с открытым исходным кодом. За несколько минут можно построить такой впечатляющий проект! Этот проект идеально подходит для начинающих, и, как я уже сказал в начале, этот проект является отличным опытом для обучения.

Хотелось бы услышать ваше мнение об этом проекте. Считаете ли вы это полезным? Есть ли какие-то улучшения, которые можно внести в этот проект? Пожалуйста, разместите свои комментарии или идеи в разделе комментариев ниже!

Код

  • Voltmeter.ino
  • ui.c
Voltmeter.ino C / C ++
 /////////////////////////////////////////////// / Проект вольтметра Arduino // // с ЖК-дисплеем NOKIA 5110 //// http://www.educ8s.tv /////////////////////////// ////////////////////// # include  // ЭТА БИБЛИОТЕКА Я ИСПОЛЬЗУЮ:http://www.rinkydinkelectronics.com/library .php? id =47LCD5110 lcd (8,9,10,12,11); extern unsigned char BigNumbers []; extern uint8_t ui []; extern uint8_t startScreen []; плавающее напряжение =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; поплавок R2 =7500.0; void setup () {Serial.begin (9600); lcd.InitLCD (); lcd.drawBitmap (0, 0, startScreen, 84, 48); lcd.update (); задержка (3000); lcd.setFont (BigNumbers); задержка (1000);} недействительный цикл () {lcd.clrScr (); lcd.drawBitmap (0, 0, ui, 84, 48); напряжение =readVoltage (); Serial.println (напряжение); VoltageString =Строка (напряжение, 1); stringLength =VoltageString.length (); displayVoltage (stringLength); lcd.update (); задержка (1000);} float readVoltage () {sensorValue =analogRead (sensorPin); vout =(значение датчика * 5.0) / 1024.0; vin =vout / (R2 / (R1 + R2)); return vin;} void displayVoltage (int length) {switch (length) {case 3:lcd.print (VoltageString, 14,19); ломать; корпус 4:lcd.print (VoltageString, 2,19); ломать; по умолчанию:lcd.print (VoltageString, 2,19); ломать; }} 
ui.c C / C ++
Данные пользовательского интерфейса
 #include  const unsigned char ui [] PROGMEM ={0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x31, 0xF1, 0xD1, 0x01, 0x01,0x81, 0xF1, 0x11, 0x11, 0xC1, 0xE1, 0x11, 0x11, 0x11, 0x31, 0xE1, 0xC1, 0x01, 0x01, 0x11, 0xF1,0xF1, 0x11, 0x01, 0x01, 0x11, 0x01, 0x01 0x11, 0x11, 0xF1, 0xF1, 0x11, 0x11, 0x31, 0x01, 0x01, 0x01,0x01, 0x81, 0x61, 0x31, 0xF1, 0xC1, 0x01, 0x01, 0x01, 0xC1, 0xE1, 0x11, 0x11, 0x11 0x31,0x31, 0x01, 0x11, 0xF1, 0xF1, 0x91, 0x91, 0x91, 0x31, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,0x01, 0x01, 0x01, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,0xC0, 0xC3, 0xCF, 0xCC, 0xC3, 0xC0, 0xC0, 0xC0, 0xC3, 0xC7, 0xC0, 0xC0, 0xC8 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC8, 0xC8, 0xCC, 0xC0, 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC0,0xC0, 0xC0, 0xC0, 0xC1x, 0xC1, 0xCF, 0xC1 0xCE, 0xC8, 0xC0, 0xC3, 0xC7, 0xCC, 0xC8, 0xC8, 0xC9, 0xCF, 0xC7, 0xC1, 0xC8, 0xCF, 0xCF, 0xC8, 0xC8, 0xC8, 0xCC, 0xC0, 0xC0, 0xC0,0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x20, 0x60, 0xE 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x20, 0x60, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00FF, 0x00x, 0x 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xE0,0x00, 0x00, 0x0 0, 0x00, 0xC0, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00,0x01, 0x0F, 0x3F, 0xFF, 0xFF, 0xFC, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00FF, 0x80, 0x 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, 0x83, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF,}; const unsigned char startScreen [] PROGMEM ={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x1C, 0x04, 0x00, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x20, 0xC0x, 0xE0 , 0x60, 0x20, 0x20, 0x20, 0x60, 0xC0, 0x80, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,0xE0, 0x60, 0x20, 0xE0, 0xE0, 0x00x, 0x0 , 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x00, 0x00,0x00, 0x80, 0xC0, 0x60, 0x20, 0x20, 0x20, 0x60, 0xE0, 0x00, 0x20, 0xE0, 0xE0, 0x20, 0x00x20, 0x20, 0x20 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x07, 0x3F, 0x38, 0x38, 0x07,0x00, 0x00, 0x0F, 0x1F, 0x30, 0x20, 0x20, 0x20, 0x30, 0x1F, 0x0F, 0x20, 0x3F, 0x3F, 0x20, 0x20,0x30, 0x38 , 0x00, 0x00, 0x20, 0x3F, 0x3F, 0x20, 0x00, 0x00, 0x20, 0x38, 0x27, 0x04,0x04, 0x27, 0x3F, 0x 3C, 0x20, 0x0F, 0x1F, 0x30, 0x20, 0x20, 0x24, 0x3C, 0x3C, 0x04, 0x20, 0x3F, 0x3F, 0x22, 0x22, 0x22, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00, 0x 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0x3F, 0x0F, 0x83, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0x38,0x00, 0x00, 0x00 0x08, 0xF8, 0x18, 0xF8, 0xE0, 0x00, 0xE0, 0x18, 0xF8, 0xF8, 0x08,0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x0018, 0x8x08, 0x 0x08, 0x18,0x38, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88,0xF8, 0x70, 0x00, 0x00x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7C, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1E, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0FFx, 0x, 0xF 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x07, 0x07, 0x00,0x08, 0x0F, 0x0F, 0x08, 0x0x08, 0x08, 0x08, 0x08, 0x08 0x08, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x08,0x0F, 0x0F, 0x08, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08 , 0x0E, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x01, 0x03, 0x06, 0x0C, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0xE0, 0xFE, 0x7F, 0x9F, 0x87, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x03, 0x01, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0 x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}; 

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

  1. Монитор окружающей среды и качества воздуха своими руками
  2. Игра Arduino Pong - OLED-дисплей
  3. DIY Простой осциллограф Arduino 20 кГц на ЖК-дисплее Nokia 5110
  4. Вольтметр своими руками с использованием Arduino и смартфона
  5. Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
  6. Игра с дисплеем Nextion
  7. DIY вольтметр с Arduino и дисплеем Nokia 5110
  8. Создайте приложение Fridgeye с дисплеем Nextion
  9. Как создавать музыку с помощью Arduino
  10. Отображение местоположения по GPS с помощью экранов GPS и TFT