Вольтметр на пик. Вольтамперметр на PIC16F676
Продолжаем разбираться с вариантами реализации вольтметра - амперметра на базе микропроцессора.
Не забудьте архив с файлами, они нам сегодня потребуются.
При желании поставить крупные индикаторы, придется решать вопрос ограничения тока потребления через порты МК. В данном случае необходимо ставить буферные транзисторы на каждый разряд индикатора.
Индикаторы больших размеров
Итак, рассмотренная ранее схема примет вид, показанный на рис. 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 читателей.
Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.Кроме того, возможно применение как одного индикатора, так и двух. Причем, если применяются четырех разрядные, то крайний правый разряд отображает стилизованные единицы измерения "V" или "A". Но, в есть ограничение на применение индикаторов с ОА. При таком включении эммитерных повторителей, появляется "засвет" индикаторов измерительными токами. Т.о., при 2х индикаторной схеме целесообразно применять индикаторы с ОК, в таком случае измеряемые токи не будут оказывать влияния на открывание транзисторных ключей.
Если установлены кнопки, то нажатие кн "В" на левом индикаторе отобразит текущий режим этого индикатора, "-U-" или "-I-". Дальнейшее удержание сменит режим. Для исполнения с одним 3х разрядным индикатором, эта функция поможет вспомнить в каком режиме находится устройство, а для 2х индикаторного исполнения,- поменяет местами отображаемые значения напряжения и тока. В любом случае, для напряжения применена функция гашения незначащих нулей, т.е., если напряжение не превышает значения 9,9В, то на индикаторе мы не увидим первого нуля ("_Х.Х").
Кн "Н" позволяет войти в меню коррекции смещения тока. Это бывает необходимо в случае, если для улучшения линейности показаний тока, было применено смещение ОУ в линейный участок. Т.о., коррекцией можно удалить "лишние" показания. После кратковременного нажатие кнопки на левом индикаторе (если их два), появится сообщение "ShI" (смещение тока) и индикатор начнет мигать. Пока он мигает, кнопками можно откорректировать смещение. Через несколько секунд индикатор прекратит мигать и данные запишутся в энергонезависимую память. Заодно, в памяти сохранится режим отображения индикатора, который и будет появлятся при следующем включении.
Отображаемое напряжение 0,0...99,9В, ток.0 ... 99,9А(или 0,0... 9,99А, зависит от файла прошивки и подстройки ОС ОУ).
Доработка узла измерителя тока:
Автор доработки impuls . Идея simsim-а.
Весь смысл в организации смещения ОУ в линейный участок,
с последующей коррекцией показаний в сервис-меню.
У вас нет доступа к скачиванию файлов с нашего сервера
Файлы ПП для 2х3 и 2х4 индикаторов, любезно предоставил evg339
Файлы ПП для 2х3 и 2х4 индикаторов,размещенных вертикально, переделав ПП от evg339 , любезно предоставил VolosKR
У вас нет доступа к скачиванию файлов с нашего сервера
У вас нет доступа к скачиванию файлов с нашего сервера
У вас нет доступа к скачиванию файлов с нашего сервера
Файл прошивки для индикаторов с ОА
У вас нет доступа к скачиванию файлов с нашего сервера
Файл прошивки для индикаторов с ОК
У вас нет доступа к скачиванию файлов с нашего сервера
Доработка входного делителя напряжения:
Внимание! Делитель на 10
Файл прошивки внизу
Полярность индикаторов определяет положение резистора 1К с 11 н. контроллера.
Вариант с измерительными входами напряжения - RA0 и тока - RA1^
Файл прошивки дел.напр., 1:10 т.е. до 50В, 2х3,2х4,1х3,1х4 индикаторов и измерительные входы 13 и 12 ножки контроллера У вас нет доступа к скачиванию файлов с нашего сервера
Файл прошивки дел.напр., 1:20 т.е. до 100В, 1х3,1х4 индикаторов и измерительные входы 13 и 12 ножки контроллера. У вас нет доступа к скачиванию файлов с нашего сервера
Файл прошивки дел.напр., 1:20 т.е. до 100В, изменено измерение тока,1х3,1х4 индикаторов и измерительные входы 13 и 12 ножки контроллера. У вас нет доступа к скачиванию файлов с нашего сервера
Да! Отпала необходимость в подстроечнике по напряжению. Теперь, кнопочками строимся.
Coviraylhik подвёл итог (спасибо ему):
vaDCw2L8UAra0ra1.hex маленькая буква v ,дел.напр., 1:10 до 50В,
vaDCw2L4ra01.hex это для одного индикатора, (выбор V,A одной кнопкой)
vaDCw2L8UAra01i.hex Стандартная до 100В _0.0V , 0.00A дел.напр., 1:20
vaDCw2L8UAra01X.hex Стандартная до 100В, но перенесена точка 00.0А
Схема на рис.1 - развитие предыдущей идеи конструкции по использованию аналогового входа в микроконтроллере, не имеющего встроенного АЦП, а так же используются технические приемы из другой идеи конструкции по управлению семисегментным светодиодным индикатором без внешних ключевых транзисторов. Данная схема имеет последовательный канал, и нужна только витая пара для передачи измеренных значений на персональный компьютер.
Последовательный канал был протестирован с использованием программы компании Microsoft Hyper Terminal сконфигурированной параметрами 115,200 бод; 8 бит, четность, 1 стоп-бит; без аппаратного контроля.
Коротко, программа управляет одним светодиодным семисегментным индикатором за раз по линиям RA0 и RB7. Установка выхода RA0 в единицу и использование RB7, как входа активизирует индикатор с общим анодом DS3. Установка выхода RA0 в ноль и использование RB7 как входа, активизирует индикатор с общим катодом DS2. Использование RA0 как входа и установка выхода RB7 в единицу активизирует индикатор с общим анодом DS1, а при использовании RA0 как вход и установке выхода RB7 в ноль активизирует индикатор с общим катодом DS0. После успешной активизации одного индикатора, только одна из линий RB0 … RB6, конфигурируется как выход для управления одним светодиодным сегментом. Эта схема больше не имеет ограничения на питающее напряжение VDD - 3В или ниже - так как светодиоды включены встречно-параллельно, таким образом, прямое падение напряжения на одном светодиоде ограничивает обратное напряжение на другом. Использование красных светодиодов требует 1,6 В.
Рис.2 иллюстрирует новые аспекты идеи конструкции. Q1, R5, и R6 работают как эквивалентный переменный резистор, RX, который заряжает конденсатор C3. Вместо подключения RX к земле, просто подключите его к одной линии ввода-вывода - например RB0 - микроконтроллера. Если RB0 включен как выход в нулевом состоянии, значит первый аналоговый канал активизирован и измерительная подпрограмма подсчитывает импульсы заряда до величины 66% от VDD; затем, по таблице полученная величина задержки переводится в величину милливольт из трех цифр. Для увеличения количества аналоговых входов, вы можете подключить до семи цепей переменного резистора в параллель - таким образом, что каждый подключен между C3 и одной линией ввода-вывода, RB1 … RB7. Важно, что линии ввода-вывода подключены к индикаторам и так же активируют или отключают аналоговые каналы. Когда один аналоговый канал активизирован линией ввода-вывода выходом в низком состоянии, другие линии имеют высокое сопротивление и работают как входы, что отключает все остальные каналы. Соответственно, индикаторы отключены.
В схему на рис.1 так же добавлен простейший последовательный канал без добавления внешних компонентов. Если вы подключите две линии ввода-вывода, RA1 и RA2, сконфигурированные как выходы к RXD (Выв 2) и GND (Выв 5) разъема RS 232, вы сможете создавать, с помощью программы, положительное и отрицательное напряжение относительно земли порта RS 232 в ПК. Когда RA1 в единице, а RA2 в ноле, RXD имеет положительный потенциал 5 В относительно земли порта RS 232 в ПК. Когда RA1 в ноле, а RA2 в единице, RXD имеет отрицательный потенциал -5 В относительно земли порта RS 232 в ПК.
Ампервольтметр предназначен для измерения тока 0-9,99А и напряжения 0-100В с разрешением 0,01А и 0,1В соответственно.
Операционный усилитель можно заменить на LM2904, LCD дисплей должен быть на контроллере HD44780. Количество символов 2х8... Так же можно применить 2х16 символьный дисплей, но в таком случае останется незадействованной бОльшая часть дисплея. В такой ситуации в устройстве, куда будет встраиваться ампервольтметр рекомендуется вырезать окошко только под рабочую часть дисплея на которой будет выводиться информация. Важно! Непосредственно на дисплеях, как правило, установлен токоограничительный резистор в цепи питания подсветки. Если резистора нет, то его необходимо установить самостоятельно в разрыв цепи идущей на LED +. Сопротивление резистора 6...100 Ом в зависимости от желаемой яркости подсветки...
Настройка устройства проста: сначала резистором "контрастность" устанавливаем необходимую контрастность дисплея, а резисторами "уст U" и "уст I" регулируем точность показаний вольтметра и амперметра. Регулировку желательно производить на верхних пределах показаний вольтметра и амперметра. Если после регулировки амперметр без нагрузки отображает какое-либо значение тока - подбираем операционный усилитель чтобы без нагрузки значение тока было 0,00А!
Фото устройства!
Подключение ампервольтметра к блоку питания.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
МК PIC 8-бит | PIC12F675 | 1 | В блокнот | |||
Сдвиговый регистр | CD74HC164 | 1 | В блокнот | |||
Операционный усилитель | LM358 | 1 | Замена: LM2904 | В блокнот | ||
Линейный регулятор | LM7805CT | 1 | В блокнот | |||
LCD-дисплей | HD44780 | 1 | 8x2 | В блокнот | ||
C1, C2, C4, C5 | Конденсатор | 0.1 мкФ | 4 | В блокнот | ||
C3 | Электролитический конденсатор | 100 мкФ | 1 | В блокнот | ||
Резистор | 100 Ом | 2 | В блокнот | |||
Резистор | 91 кОм | 1 | В блокнот | |||
Резистор | 5.1 кОм | 1 | В блокнот | |||
Резистор | 680 Ом | 1 | В блокнот | |||
Резистор | 0.01 Ом | 1 |
Вольтамперметр на PIC16F676
Этот проект - ампервольтметр (или вольтамперметр, если хотите) постоянного тока. Диапазон - до 99.9В и 9.9А (или 99.9А, зависит от прошивки).
Особенность его состоит в том, что он построен на распространённом микроконтроллере PIC16F676, однако, несмотря на это, имеет возможность одновременного отображения измеряемых напряжения и силы тока на четырёхсимвольных (или трёхсимвольных) семисегментных индикаторах, как с общим анодом, так и с общим катодом (задаётся одним резистором). При использовании четырёхсимвольного индикатора, последний сегмент отображает символ "U" для напряжения и "A" для тока. Ампервольтметр может работать и с одним индикатором, при этом кнопкой "B" можно выбирать, что будет на нём отображаться - напряжение или сила тока. В том случае, если установлены оба индикатора, этой кнопкой можно поменять местами их назначение. Кнопка "H" служит для коррекции показаний амперметра и выравнивания линейности этих показаний, если это необходимо.
up feb 2014:
сейчас разработку можно найти по адресу:
Схема вольтамперметра приведена ниже. Как уже было сказано, он построен на распространённом микроконтроллере PIC16F676, на котором, в частности, собирают простые вольтметры и амперметры.
Нажмите на схему для увеличения
В виду ограниченного количества пинов у данного МК, применён регистр 74HC595. Аналогов с совпадающей цоколёвкой у этой микросхемы нет, но она недефицитна и часто применяется в подобных схемах для подключения индикаторов к МК. Для защиты выходов МК от перегрузки и повышения яркости индикаторов применены ключи на транзисторах. При использовании индикаторов с общим катодом, необходимо использовать транзисторы другой структуры, соединив их коллекторы не с +5В, а с массой, при этом резистор на 11 выводе микроконтроллера нужно переставить в другое положение. Возможно, Вам потребуется подобрать резисторы на выходе регистра и в базах транзисторов под свои индикаторы и транзисторы.
Как уже говорилось ранее, кнопка "B" позволяет поменять местами назначение индикаторов в случае, если их два. Если индикатор один, то этой кнопкой можно чередовать отображение напряжения и тока. При нажатии кнопки "H" индикаторы начнут мигать. Пока они мигают, кнопками "B" и "H" можно корректировать показания амперметра. После корректировки мигание прекратится и коэффициент корректировки будет записан в энергонезависимую память. Режим отображения, установленный кнопкой "B", также хранится в энергонезависимой памяти.
После включения индикаторы начинают светиться не сразу, а с задержкой в несколько секунд. Частота изменения показаний - около 9Гц.
Один из вариантов печатной платы для четырёх индикаторов с общим анодом. На рисунке кружками обведены необходимые исправления: нужно убрать перемычку, идущую на массу, и добавить одну маленькую перемычку.
Файлы к проекту.