Вольтметр на базе Ардуино

0 0

Вольтметр на базе Ардуино

Этот вольтметр измеряет напряжения постоянного тока от 12 до 100 В. Устройство не нуждается во внешнем источнике питания и работает на базе Ардуино.

Инструменты и материалы:
-Arduino Nano;
-Дисплей SSD 1306;
-ADS 1115 — 16-битный АЦП;
-Резистор 690 кОм;
-Резистор 10 кОм;
-Макетная или печатная плата;
-Цифровой мультиметр;
-Преобразователь постоянного тока XH-M298;
-Аккумулятор 9 В;
-3D-принтере;
-Нить для принтера;

Шаг первый: корпус
Корпус мастер разработал в программе CAD и затем распечатал на 3D-принтере.

Вольтметр на базе Ардуино

Шаг второй: схема
Перед сборкой схемы необходимо отрегулировать преобразователь на напряжение 12В. Затем все монтируется согласно схемы. При этом контакт ADDR ADC1115 подключается к земле. Это устанавливает адрес АЦП на 0x48.

Вольтметр на базе Ардуино

Вольтметр на базе Ардуино

Шаг третий: код
Идея устройства состоит в том, что измеряемое постоянное напряжение проходит через делитель напряжения. Затем напряжение поступает на аналоговый вывод преобразователя АЦП для считывания, передается в Arduino через I2C, и отображается на дисплее.
Мастер сделал электронную таблицу, которая автоматизирует вычисления на случай, если используются разные значения резисторов в делителе напряжения.
Код можно скачать ниже.

Вольтметр на базе Ардуино

 Показать / Скрыть текст#include <Arduino.h> #include <U8g2lib.h> #include <Adafruit_ADS1015.h> #include <Wire.h> Adafruit_ADS1115 ads(0x48); //Adress of the ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);// (rotation, [reset]) int calib = 7; // Value of calibration of ADS1115 to reduce error float voltage =0; // used to store voltage value float Radjust = 0.01430684; // (for 690K resistior) Voltage divider factor ( R2 / R1+R2 ) float vbat =0; //final voltage after calcs- voltage of the battery //variables for refreshing the screen without using delay unsigned long previousMillis = 0; // will store last time the screen was refreshed // constants won't change: const long interval = 250; // interval at which to refresh the screen (milliseconds) void setup(void) { Serial.begin(9600); u8g2.begin(); ads.begin(); } void loop(void) { int16_t adc0; // 16 bits ADC read of input A0 adc0 = ads.readADC_SingleEnded(0); voltage = ((adc0 + calib) * 0.1875)/1000; unsigned long currentMillis = millis(); vbat = voltage/Radjust; //Prevent displaying negative voltage when battery/power is disconnected if (vbat < 0.1) { vbat = 0.01; } // Setting the delay for the screen refresh using Millis if (currentMillis — previousMillis >= interval) { previousMillis = currentMillis; u8g2.clearBuffer(); // clear the internal menory //Pack Voltage display — Fonts at this page: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px font u8g2.setFont(u8g2_font_fub35_tr); // 35px font u8g2.setCursor (1, 42); u8g2.print(vbat,2); u8g2.setFont(u8g2_font_8x13B_mr); // 10 px font u8g2.setCursor (1, 60); u8g2.print("Volts"); } u8g2.sendBuffer(); // transfer internal memory to the display delay(1); }

Вольтметр на базе Ардуино

Шаг четвертый: тестирование
Чтобы проверить вольтметр, мастер использовал зарядное устройство для электрического велосипеда и аккумулятор, который идет в комплекте с велосипедом. Зарядное устройство установлено на 54,4 / 54,5 В.
Проверка цифровым мультиметром показала точность показаний вольтметра.

Вольтметр на базе Ардуино

(Source) Подборки: Вольтметр Делитель напряжения

Вольтметр на базе Ардуино

Пульсоксиметр на базе ESP32

Источник

Оставьте ответ

Your email address will not be published.