Прецизионный вольтметр на микроконтроллере. Встраиваемый ампер-вольтметр на PIC12F675 и LED-индикаторах

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

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

Делитель напряжения R2, R3 позволяет измерять напряжения больше 5ти вольт. Для измерения малых напряжений входной сигнал пропускается через операционный усилитель DA2 с регулируемым коэффициентом усиления. Его коэффициент усиления задается резисторами R4, R5. Для измерения тока на входе прибора должен быть установлен шунт R1.
Основой схемы служит микроконтроллер Atmega8. После преобразования уровня сигнала он поступает на вход АЦП, встроенного в микроконтроллер. Микроконтроллер выводит полученное значение на трехразрядном сегментном индикаторе с общим анодом. Напряжение на аноды разрядов поступает через транзисторы. Резисторы в эмиттерах R9, R10, R11 задают яркость индикатора. Способ индикации — динамический.
Питание можно подавать напрямую от источника напряжения 5В, либо через стабилизатор. Обратите внимание, что минус питания и минус измерительного входа соединены друг с другом.

Печатная плата

Плата измерительного прибора

Плата односторонняя и содержит все элементы измерительного прибора. Резистор R1 (шунт амперметра) имеет несколько посадочных мест для корпусов разной мощности. Файл с платой, нарисованной в формате Sprint-Layout 5.0 можно скачать по ссылке .

Программа

При включении устройства в течении двух секунд на индикатор выводится приветствие «HI», после чего начинается работа прибора. В AVR-микроконтроллерах используется 10-ти разрядный АЦП. В нашем проекте мы используем только девять разрядов. Эта разрядность позволяет получить конечную приборную точность 1%. Для большей стабильности и плавности изменения показаний берется выборка из ста отсчетов и на дисплей выводится наибольший из них. Если входное напряжение превышает диапазон измеряемых значений на индикатор выводится сообщение: -0. Третий разряд не включается, если он не используется.
HEX-фал для каждой версии свой. Мы будем их прикладывать к каждой версии отдельно. Фьюз-биты всегда должны оставаться заводскими. Прошивка загружается через стандартный 6ти-пиновый разъем ISP-программирования.

Технические характеристики

  • напряжение питания, 5В либо 7-12В
  • потребляемый ток, не более 60мА
  • частота обновления индикатора, 56Гц
  • пределы измерения, 0.5В, 5В, 50В
  • входное сопротивление, не менее 10кОм
  • точность, не менее, 10%

Вольтметр на 50В

Для сборки вольтметра с пределом измерения 50В нужно установить все элементы, кроме R1, R4, R5, DA2. Если вы не планируете использовать нестабилизированное питание, то можно не устанавливать также конденсатор C1 и стабилизатор DA1.

После сборки плата с лицевой стороны выглядит так:

…и с обратной стороны:

Элементы схемы на предел 50В:

  1. R2 — подстроечный резистор CA6V на 2,5кОм, 1шт
  2. R3 — чип-резистор 0805 на 10кОм, 1шт.
  3. Гребенка PLS-контактов

Прошивку для версии с пределом измерения на 50В можно скачать . Фьюз-биты оставляем без изменения.
Если все правильно собрано, то работать должно примерно так:

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

Вольтметр на 5В

На плату необходимо установить следующие элементы:

  1. C2 — танталовый конденсатор, 22мкФ, 16В T491C226K016AT, 1шт.
  2. C1,C3,C4 — конденсаторы на 0,1мкФ в корпусе 0805
  3. DA1 — стабилизатор L7805 в корпусе D2PAK, 1шт.
  4. DD1 — микроконтроллер Atmega8a-au, 1шт.
  5. J1 — чип-резистор 1206 с сопротивлением 0 Ом, 1шт. (перемычка)
  6. HL1 — сегментный индикатор BA56-12YWA, 1шт. (желательно устанавливать через колодку)
  7. R2 — подстроечный резистор CA6V на 25кОм, 1шт
  8. R3 — чип-резистор 0805 на 1кОм, 1шт.
  9. R6-R8, R12 — чип-резисторы 0805 на 1кОм, 4шт.
  10. R9-R11 — чип-резисторы 0805 на 56Ом, 3шт. (можно взять с меньшим сопротивлением для увеличения яркости)
  11. VT1-VT3 — транзисторы BC807-40, 3шт.
  12. Гребенка PLS-контактов

Фактически отличаются только сопротивления резисторов в делителе напряжения R2, R3.
Прошивку для версии вольтметра на 5В можно скачать . Фьюз-биты оставляем без изменения. Отличие этой прошивки от предыдущей только в положении разрядной точки.
Видео работы вольтметра на 5В:

Вольтметр на 300мВ

Для работы с пределом измерения от 0 до 300мВ потребуется дополнительный каскад на микросхеме LM358N. Принципиальная схема при этом принимает следующий вид:

Резисторы R4, R5 задают коэффициент усиления усилителя. R1 необходим для того, чтобы в отсутствии входного сигнала вольтметр показывал 0В.
Элементы платы:

  1. C2 — танталовый конденсатор, 22мкФ, 16В T491C226K016AT, 1шт.
  2. C1,C3,C4 — конденсаторы на 0,1мкФ в корпусе 0805
  3. DA1 — стабилизатор L7805 в корпусе D2PAK, 1шт.
  4. DA2 — операционный усилитель L358N в корпусе SO8, 1шт.
  5. DD1 — микроконтроллер Atmega8a-au, 1шт.
  6. J1 — чип-резистор 1206 с сопротивлением 0 Ом, 1шт. (перемычка)
  7. HL1 — сегментный индикатор BA56-12YWA, 1шт. (желательно устанавливать через колодку)
  8. R1 — чип-резистор 0805 на 10кОм, 1шт.
  9. R4 — чип-резистор 0805 на 1кОм, 1шт.
  10. R5 — подстроечный резистор CA6V на 25кОм, 1шт
  11. R6-R8, R12 — чип-резисторы 0805 на 1кОм, 4шт.
  12. R9-R11 — чип-резисторы 0805 на 56Ом, 3шт. (можно взять с меньшим сопротивлением для увеличения яркости)
  13. VT1-VT3 — транзисторы BC807-40, 3шт.
  14. Гребенка PLS-контактов

Версия прошивки для этого вольтметра не использует разрядную точку совсем. Если старшие разряды индикатора не используются, то они отключаются. В этой версии вольтметра переполнение показывается при достижении входного напряжения 300мВ. Скачать ее можно . Фьюз-биты также необходимо оставить без изменения.
Видео работы вольтметра с пределом измерения 300мВ:

Предосторожности в работе и особенности эксплуатации

Вольтметр предназначен для встраивания в любительскую радиоаппаратуру и поэтому не имеет встроенных схем защиты. Вы можете его раз и навсегда встроить его в свой лабораторный блок питания или для контроля показаний какого-либо датчика. Он не предназначен для повседневного использования в качестве тестера, поэтому необходимо соблюдать предосторожности при работе с ним:

  1. Вольтметр рассчитан только для измерения постоянного напряжения
  2. У вольтметра нет встроенной защиты от смены полярности входного напряжения
  3. Измерения производятся относительно напряжения питания. Другими словами стабильность питающего напряжения определяет точность показаний вольметра.
  4. У вольтметра нет защиты по входу. Не стоит подавать на него напряжения больше предельного
  5. Вход вольметра не имеет гальванической развязки. Если вы питаете основную схему и предложенный вольтметр от одного и того же источника питания измерения можно производить только относительно общего провода . В случае, когда необходимо измерить разность потенциалов между двумя точками на которых есть напряжение, необходимо использовать для питания вольтметра отдельный источник питания с гальванической развязкой через трансформатор. И при этом обязательно подключать минус вольтметра к точке с меньшим напряжением!
  6. Если необходимо увеличить яркость индикатора, можно уменьшить сопротивление резисторов R9-R11. Однако не стоит ставить сопротивление меньше 20Ом
  7. Если вы планируете использовать вольтметр для индикации бортового напряжения в автомобиле вам потребует подключить только два провода: минус автомобиля к «GND» вольтметра, а плюсовой провод к выводам разъема «7-12V» и «+»

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

Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров .

Простой вольтметр переменного напряжения с частотой 50 Гц, выполнен в виде встраиваемого модуля, который может использоваться как отдельно, так и быть встроен в готовое устройство.
Вольтметр собран на микроконтроллере PIC16F676 и 3-разрядном индикаторе и содержит не очень много деталей.

Основные характеристики вольтметра:
Форма измеряемого напряжения - синусоидальная
Максимальное значение измеряемого напряжения - 250 В;
Частота измеряемого напряжения - 40…60 Гц;
Дискретность отображения результата измерения - 1 В;
Напряжение питание вольтметра - 7…15 В.
Средний ток потребления - 20 мА
Два варианта конструкции: с БП на борту и без
Односторонняя печатная плата
Компактная конструкция
Отображение измеряемых величин на 3-разрядном LED-индикаторе

Принципиальная схема вольтметра для измерения переменного напряжения


Реализовано прямое измерение переменного напряжения с последующим вычислением его значения и вывода на индикатор. Измеряемое напряжение поступает на входной делитель, выполненный на R3, R4, R5 и через разделительный конденсатор C4 поступает на вход АЦП микроконтроллера.

Резисторы R6 и R7 создают на входе АЦП напряжение 2,5 вольта (половина питания). Конденсатор C5, относительно малой ёмкости, шунтирует вход АЦП и способствует уменьшению ошибки измерения. Микроконтроллер организует работу индикатора в динамическом режиме по прерываниям от таймера.

--
Спасибо за внимание!
Игорь Котов, главный редактор журнала «Датагор»


🕗 01/07/14 ⚖️ 19,18 Kb ⇣ 238 Здравствуй, читатель! Меня зовут Игорь, мне 45, я сибиряк и заядлый электронщик-любитель. Я придумал, создал и содержу этот замечательный сайт с 2006 года.
Уже более 10 лет наш журнал существует только на мои средства.

Хорош! Халява кончилась. Хочешь файлы и полезные статьи - помоги мне!

Логика программы

В начале программы выполняются функции инициализации. Настраивается и запускается АЦП, конфигурируется порт, к которому подключен индикатор, и настраивается таймер Т0. Затем разрешаются прерывания, и микроконтроллер выполняет бесконечный цикл. В цикле опрашивается программный буфер АЦП и вычисляется значение напряжения. Вычисленное значение передается функции индикатора, которая преобразует его в двоично-десятичные цифры, затем в коды цифр индикатора и записывает их в массив (буфер).

Параллельно основной программе вызываются прерывания АЦП и таймера Т0. АЦП работает в режиме однократного преобразования, с внутренним опорным источником напряжения на 2,56В. Выравнивание вправо, используются все 10 разрядов. Результат преобразования АЦП накапливается 8 раз в переменной, усредняется и записывается в программный буфер.

В прерывании таймера Т0 происходит его перезапуск и вызывается функция обновления индикатора. Она гасит текущий отображаемый разряд и зажигает следующий.

Структура проекта

Проект состоит из 3-ех программных модулей.
main.c – основная программа
adc.c – функции для работы с АЦП
indicator.c – драйвер семисегментного 4-ех разрядного индикатора.


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

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

Индикаторы больших размеров


Итак, рассмотренная ранее схема примет вид, показанный на рис. 2. Добавилось три транзистора VT1-VT3 буферного каскада на каждый разряд индикатора. Установленный буферный каскад инвертирует выходной сигнал МК. По сему, входное напряжение на базе VT2 инверсно относительно коллектора указанного транзистора, а значит подходит для подачи на вывод формирования запятой. Это дает возможность убрать транзистор VT1, который был ранее в схеме на рис. 1, заменив последний развязывающим резистором R12. Не забудьте, что изменились и номиналы резисторов в цепях базы транзисторов VT1-VT3.
Если желаете поставить индикаторы с нетрадиционно большими габаритами, то придется в цепи коллекторов указанных транзисторов поставить низкоомные (1 – 10 Ом) резисторы для ограничения бросков тока при их включении.

Логика работы МК для этого варианта нуждается только в небольшом изменении программы в части инверсии выходного сигнала управления разрядами, а именно портов RA0, RA1, RA5.
Рассмотрим только то, что изменится, а именно подпрограмму, уже известную нам под условным названием «Функция формирования динамической индикации» в Листинге №2 (смотрите папку «тр_ОЕ_30V» в архиве или первую часть статьи):

16. void Indicator (){ 17. while (show_digit < 3) { 18. portc = 0b111111; // 1 -> C 19. if (show_digit == 2){ delay_ms(1); } 20. porta = 0b100111; 21. show_digit = show_digit + 1; 22. switch (show_digit) { 23. case 1: { 24. if (digit1 == 0) { } else { 25. Cod_to_PORT(DIGIT1); 26. PORTA &= (~(1<<0)); //0 -> A0 27. } break;} 28. case 2: { 29. Cod_to_PORT(DIGIT2); 30. PORTA &= (~(1<<1)); //0 -> A1 31. break;} 32. case 3: { 33. Cod_to_PORT(DIGIT3); 34. PORTA &= (~(1<<5)); //0 -> A5 35. break;} } 36. Delay_ms(6); 37. if (RA2_bit==0) {PORTA |= (1<<2);// 1 -> A2 38. Delay_ms(1);} 39. if ((show_digit >= 3)!= 0) break; 40. } show_digit = 0;}


Сравните оба варианта. Инверсия сигнала по порту RA (строка 20 Листинга №2) легко читается, поскольку записано в двоичной форме. Достаточно совместить выводы МК и двоичное число. В строках 19 и 37 появились немного странные условия, которых не было вначале. В первом случае: «задержать сигнал логического нуля на порту RA1 во время индикации второго разряда». Во втором: «в случае если на порте RA2 логический нуль, инверсия». Когда будете компилировать финальную версию программы можете их удалить, а вот для симуляции в PROTEUSе они нужны. Без них не будет нормально индицироваться запятая и сегмент «G».
Почему? - спросите Вы, ведь первый вариант прекрасно работал.

В завершение, вспомните слова кузнеца из фильма «Формула Любви»: «…если один человек построил, другой завсегда разобрать может!».
Удачи!

Читательское голосование

Статью одобрили 27 читателей.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.

Предлагаю вашему вниманию конструкцию цифрового вольтметра, который также может быть переделан в амперметр. Схема была взята из журнала Радио №2 за 2010 год. Схема представлена на рисунке

Вольтметр предназначен для измерения напряжения до 0-99,99 в, этот интервал разбит на два участка – 0-9,999в и 10-99,99 в. Переключение с одного диапазона на другой –автоматическое. Входное сопротивление на первом участке – 470 кОм, на втором – около 100 кОм, абсолютная погрешность измерения на первом участке составляет ±3мв, напряжение питания – 15-20 в, потребляемый ток – 60мА(зависит от примененного семисегментного индикатора). Период повторения измерения – 100мс, максимальное время одного цикла преобразования при входном напряжении 9,999 в – 10мс. При превышении измеряемым напряжением 99,99 в на индикаторе отображается число «9999», которое мигает с частотой 2Гц. Полярность входного напряжения - положительная.
Принцип работы вольтметра основан на методе преобразования измеряемого напряжения в частоту с помощью однократного интегрирования. Это позволяет по сравнению с микроконтроллерами, имеющими встроенные десятиразрядные АЦП, получить большую разрешающую способность в широком интервале измеряемого напряжения. Подсчет частоты, переключение пределов и вывод результатов измерения на светодиодный индикатор осуществляет микроконтроллер. Подробное описание работы можно прочитать в статье, в прилагаемом файле, так же исходный код и файл прошивки
depositfiles.com/files/9p9spo2oo
Теперь про доработку этого вольтметра. Резистор делителя напряжения R2 я сделал составным – резистор ПТМН – 0,5Вт 100кОм, ±0,25% и последовательно с ним многооборотный подстроечный СП5-2 на 22 кОм, резистор R5 поставил подстроечный СП3-39А на 15 кОм. Это было сделано для точного подбора сопротивления делителя напряжения при настройке вольтметра.
Вольтметр собран на печатной плате. Плата была перерисована из статьи в программе sprint layout, файл печатки прилагается ниже
depositfiles.com/files/rsbo4oebv
а вот печатка для SMD компонентов
depositfiles.com/files/zi6xq8x7f
Микроконтроллер прошивался при помощи программатора STK 200/300, в программе CodeVisionAVR.
Фьюзы для CodeVisionAVR

Фьюзы для Pony Prog


Питается вольтметр от трансформаторного блока питания с стабилизатором напряжения на микросхеме 7815, собранном по типовой схеме. Блок питания собран на печатной плате, так же на плате находится составной резистор R2 и R5. Файл печатной платы ниже.
depositfiles.com/files/nsaa4kzkj
Фото основной платы вольтметра




Фото блока питания




И теперь все в сборе


Настройка вольтметра заключается в установке резистором R3 тока зарядки конденсатора C2 и подбор сопротивления делителя напряжения. Предварительно делитель подстроечными резисторами настраивается – резистор R2 на сопротивление 117 кОм, резистор R5 на сопротивление 13 кОм. На вход прибора подают стабилизированное напряжение в интервале 9…9.8 в, контролируя образцовым вольтметром. Резистором R3 уравнивают показания налаживаемого и образцового вольтметров. Увеличивают напряжение до тех пор, пока вольтметр не переключится на второй диапазон измерений. Если показания вольтметра «зависли» при этом, то резисторами R2 и R5 добиваются переключения вольтметра на второй диапазон, после этого нужно повторить регулировку резистором R3. Подают на вольтметр максимально возможное напряжение до 100 в и резисторами R2 и R5 корректируют показания. Далее подают на вход от 5 до 10 в и при необходимости корректируют показания резистором R3. Проверяется показания вольтметра во всем диапазоне.
Фото показаний вольтметра на первом диапазоне и образцового прибора Щ301-1.


Фото показаний вольтметра на втором диапазоне и образцового прибора Щ301-1.

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


Показания могут лежать в диапазоне от 0,00 до 99,99А.
Децимальная точка зафиксирована, старший разряд при показаниях, меньших 10А не горит.
Делитель изъят, вместо С4 стоит танталовый конденсатор К53-4 6,8мкФ - для усреднения. В сток транзистора VT1 добавил резистор 1ом, ёмкость-то большая, хоть немного ограничивает пиковый ток разряда.
Для имеющегося шунта необходимо пересчитать ёмкость С2: Сх=(Uпоказ./Uшунт)*С2, где Сх, мкФ - искомая ёмкость конденсатора, Uпоказ., мВ - требуемое максимальное показание амперметра, Uшунт, мВ - напряжение на шунте, соответствующее максимальному измеряемому току, С2 - 2,2мкФ. Пусть на шунте падает 300мВ. Для 10А получается: (1000/300)*2,2 = 7,33 мкФ. Ёмкость лучше округлить в большую сторону, до 8,2мкФ. Номинал резистора R4 придется подобрать, он будет меньше, чем в исходной схеме. Немного измененная прошивка прилагается ниже (так же и исход)



Похожие статьи