Оглавление:

Точный и точный вольтметр Arduino (0-90 В постоянного тока): 3 шага
Точный и точный вольтметр Arduino (0-90 В постоянного тока): 3 шага

Видео: Точный и точный вольтметр Arduino (0-90 В постоянного тока): 3 шага

Видео: Точный и точный вольтметр Arduino (0-90 В постоянного тока): 3 шага
Видео: Винтажный индикатор СО2. Процесс создания аналогового прибора 2024, Июль
Anonim

В этом руководстве я построил вольтметр для измерения высокого напряжения постоянного тока (0-90 В) с относительной точностью и точностью с помощью Arduino Nano.

Проведенные мной тестовые измерения были достаточно точными, в основном в пределах 0,3 В от фактического напряжения, измеренного стандартным вольтметром (я использовал Astro AI DM6000AR). Это достаточно близко для предполагаемого использования устройства.

Чтобы заархивировать это, я использовал источник опорного напряжения (4,096 В) и делитель напряжения.

Что касается кода, я, конечно, использовал параметр «внешняя ссылка» для Arduino Nano и пример «Сглаживание» в руководствах по Arduino.

Запасы

1 x Arduino Nano - ссылка

1 x Oled Display (SSD 1306) - Ссылка

Резисторы 1 x 1/4 Вт, 1% - 1 кОм - Ссылка

Резисторы 1 x 1/4 Вт, 1% - 220 кОм - Ссылка

Резисторы 1 x 1/4 Вт, 1% - 10 кОм - Ссылка

1 x 4,096 В опорное напряжение LM4040DIZ-4.1 - ссылка

Макетная плата и провода - Ссылка

Astro AI DM6000AR - Ссылка

USB Power Bank - Ссылка

Батареи 9 В - Ссылка

CanadianWinters является участником программы Amazon Services LLC Associates, партнерской рекламной программы, предназначенной для предоставления сайтам средств для получения комиссионных путем ссылки на Amazon.com и аффилированные сайты. Используя эти ссылки, я как партнер Amazon зарабатываю на соответствующих покупках, даже если вы покупаете что-то другое - и это вам ничего не будет стоить.

Шаг 1: Схема

Схема
Схема
Схема
Схема

Я соединил все части согласно схемам выше. В частности, я выбрал опорное напряжение 4,096, чтобы оставаться как можно ближе к отметке 5 В, чтобы избежать потери разрешения.

Следуя таблице данных, я выбрал резистор 1 кОм в качестве источника опорного напряжения, хотя можно было использовать другое значение. Напряжение для опорного сигнала подается с вывода Nano 5v.

Идея схемы заключается в том, что измеряемое постоянное напряжение проходит через резистор напряжения. Масштабированное напряжение затем поступает на аналоговый вывод Arduino для выборки, сглаживания, масштабирования и отображения на OLed-дисплее.

Я старался не усложнять:)

Шаг 2: Расчет кода и резистора

Значения резисторов были выбраны так, как рекомендуется (если я не ошибаюсь, это указано в таблице данных Arduino / Atmega), чтобы поддерживать импеданс ниже 10 кОм.

Чтобы упростить задачу, я сделал электронную таблицу, которая автоматизирует вычисления на случай, если вы хотите использовать разные значения резисторов: Ссылка на Google Sheet

Вот код, который я использовал для этого проекта:

#включают

#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (вращение, [сброс]) float Voltage = 0; // используется для хранения значения напряжения float Radjust = 0.043459459; // Коэффициент делителя напряжения (R2 / R1 + R2) float vbat = 0; // конечное напряжение после расчета - напряжение поплавка аккумулятора Vref = 4.113; // Опорное напряжение - измеренное действительное значение. Номинальное значение 4.096v const int numReadings = 50; // количество отсчетов чтения - увеличивайте для большего сглаживания. Уменьшение для более быстрого чтения. int чтения [numReadings]; // показания с аналогового входа int readIndex = 0; // индекс текущего чтения unsigned long total = 0; // промежуточная сумма int average = 0; // переменные для обновления экрана без использования задержки unsigned long previousMillis = 0; // сохранит время последнего обновления экрана // константы не изменятся: const long interval = 50; // интервал обновления экрана (миллисекунды) void setup (void) {analogReference (EXTERNAL); // используйте AREF для опорного напряжения 4.096. Мое референсное реальное напряжение - 4,113 В u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {//… переход к началу: readIndex = 0; } // вычисляем среднее значение: average = (total / numReadings); напряжение = среднее * (Vref / 1023.0); // 4.113 - это Vref vbat = Voltage / Radjust; // Установка задержки обновления экрана с помощью Millis if (currentMillis - previousMillis> = interval) {// сохраняем время последнего обновления экрана previousMillis = currentMillis; u8g2.clearBuffer (); // очищаем внутреннюю память // Отображение напряжения упаковки u8g2.setFont (u8g2_font_fub20_tr); // шрифт 20px u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // шрифт 10 пикселей u8g2.setCursor (76, 20); u8g2.print («Вольт»); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters"); u8g2.setCursor (1, 60); u8g2.print («Точное напряжение»); } u8g2.sendBuffer (); // переносим внутреннюю память на дисплей delay (1); }

Обратите внимание, что я немного устарел с кодированием Arduino, поэтому, если вы обнаружите какую-либо ошибку или способ улучшить код, я открыт для предложений:)

Шаг 3: Давайте проверим

Давайте проверим!
Давайте проверим!
Давайте проверим!
Давайте проверим!
Давайте проверим!
Давайте проверим!

Чтобы проверить этот вольтметр, я использовал 8 батарей по 9 В, которые я купил в местном магазине. Я планирую использовать этот вольтметр для измерения напряжения на аккумуляторных батареях моих электрических велосипедов (они имеют напряжение в диапазоне от 24 до 60 В, иногда с 72 В).

Как только электроника будет упакована в печатную плату и небольшую коробку, получится красивый и портативный измеритель батарейного блока. Графика и шрифты на OLED-экране могут быть настроены в соответствии с вашими потребностями (например, более крупный шрифт для удобства чтения).

Моей целью было получить показания напряжения на измерителе Oled / Arduino недалеко от моего цифрового мультиметра. Я стремился к дельте +/- 0,3В макс. Как вы можете видеть из видео, мне удалось заархивировать это, за исключением верхней части измерений.

Надеюсь, вам понравилось это руководство, и поделитесь со мной своими мыслями!

Рекомендуемые: