Встраиваемый ампер-вольтметр на PIC12F675 и LED-индикаторах. Простой модульный вольтметр переменного напряжения на PIC16F676 Высокочастотный вольтметр на микроконтроллере своими руками

Принципиальная схема и описание самодельного цифрового амперметра, выполненного на микроконтроллере ATtiny13, программа и печатная плата.

Как-то раз в руки к автору этих строк попало весьма интересное устройство,рожденное в СССР, в далеком 1976 году -его просто отдали за ненадобностью. Звали это устройство АДЗ-101У2, и оно представляло собой типичный образчик советского конструктивизма: тяжелый двадцатикилограммовый "чемодан", с ручкой для переноски в верхней части и мощным однофазным трансформатором внутри.

Но самое интересное, что у этого "чемодана" напрочь отсутствовала задняя панель - и вовсе не потому, что прибор успел ее "посеять", нет. А дело здесь было в том, что обе его панели являлись... передними! С одной своей стороны "чемодан" представлял собой сварочный аппарат, а с другой - зарядное устройство для автомобильных аккумуляторов.

И если как "сварочник" он особых эмоций не вызвал - еще бы, ведь всего-то 50 А переменного тока; то вот "зарядник" - вещь в хозяйстве, безусловно, нужная. Испытания прибора подтвердили его полную боеспособность (даже сварка работала!), но без недостатков, разумеется, не обошлось.

Суть проблемы состояла в том, что штатный амперметр "зарядника" скрылся в неизвестном направлении, и предыдущий владелец аппарата подыскал ему вполне "равноценную" замену - автомобильный амперметр, скрученный с какого-то военного грузовика, и имеющий очень "информативную" шкалу в ±30 А!

Понятно, что следить за зарядом аккумулятора (а ток зарядки - всего лишь 3-6 А!) при помощи такого вот прибора, мягко говоря, проблематично - как будто и нет его вовсе...

Поэтому решено было заменить "грузовиковый показометр" на какой-либо более или менее адекватный прибор, с внятной шкалой на 0-10 А. Идеальным кандидатом на эту роль представлялся стрелочный щитовой амперметр со встроенным шунтом - один из тех, которые раньше использовались практически во всех "зарядниках" советского производства, да и много где еще.

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

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

Таблица 1. Характеристики устройства.

Принципиальная схема

Для вывода результатов измерения в данном амперметре решено было использовать пару 7-сегментых LED-индикаторов. Такие индикаторы, несмотря на некоторую свою архаичность по сравнению с новомодными LCD-модулями типа 16хх, обладают также и рядом неоспоримых преимуществ: они гораздо надежнее и прочнее; не портятся и не мутнеют от контакта с нефтепродуктами (а замасленные руки в гараже - дело обычное, цифры на LED-индикаторах ярче и гораздо "читабельнее" - особенно издали; и к тому же, никакой холод в гараже светодиодам не страшен - в отличие от ЖК, который на морозе попросту "слепнет".

Ну а последним доводом в пользу светодиодной матрицы - в контексте данной разработки - стал тот факт, что длинный 1602 просто-напросто не вписывался по размерам в штатное отверстие для амперметра (круглое и очень небольшое!) на корпусе ЗУ. Определившись с типом индикатора, встал другой вопрос - какой же микроконтроллер использовать в качестве основы для данного устройства.

В том, что эту схему нужно строить именно на МК, сомнений никаких не возникало -делая амперметр на "КМОП-россыпи", можно повредиться рассудком. На первый взгляд, самым очевидным решением является "рабочая лошадка" ATtiny2313 -этот МК имеет достаточно развитую архитектуру, и вполне подходящее для подключения LED-матрицы количество линий ввода-вывода.

Однако, здесь все оказалось не так уж и просто - ведь для измерения тока в состав МК обязательно должен входить аналогово-цифровой преобразователь, но инженеры фирмы Atmel почему-то не оснастили "2313-й" данной функцией... Другое дело семейство Меда: эти чипы обязательно имеют "на борту" модуль АЦП.

Но, с другой стороны, даже ATMega8в - как самый простой представитель "старшего" семейства - обладает гораздо большей функциональностью, чем того требует построение простого амперметра. А это уже не самое лучшее решение с точки зрения классического подхода к проектированию!

Под "классическим подходом к проектированию" здесь подразумевается так называемый "принцип необходимого минимума" (горячим приверженцем которого, в пику новомодным "Ардуинам", является и автор этих строк), согласно которому любую систему следует проектировать с использованием минимально возможного количества ресурсов; а окончательный результат должен содержать в себе как можно меньше незадействованных элементов. Поэтому, в соответствии с этим принципом - простому прибору -простой микроконтроллер, и никак иначе!

Правда, и не все простые МК подойдут для поставленной задачи. Взять, к примеру, ATtinyl3 - в нем есть АЦП, он прост и недорог; да вот только линий ввода-вывода - для подключения матрицы из двух "семисегментников" - у него явно маловато...

Хотя, если немного пофантазировать, то такая проблема вполне разрешима - при помощи копеечного счетчика К176ИЕ4 и несложного алгоритма, этим счетчиком управляющего.

Вдобавок, у такого подхода есть даже положительные стороны - во-первых, отпадает необходимость "навешивать" на каждый сегмент индикатора по токоограничительному резистору (генераторы тока уже имеются в выходных каскадах счетчика); а во-вторых, в данной схеме можно использовать индикатор как с общим катодом, так и с общим анодом - для перехода на "общий анод" нужно изменить подключение транзисторов VT1 и VT2, выв. 6 DD2 подключить к линии +9 В через резистор 1 кОм, а левый вывод R3 соединить с "землей".

Рис. 1. Принципиальная схема самодельного амперметра (до 10А) на микроконтроллере ATtiny13.

Для того, чтобы управлять счетчиком при помощи МК, нужно задействовать всего две линии: одну - для сигнала счета (С), а другую -для сигнала сброса (R).

Причем, в ходе испытания устройства выяснилось, что КМОП-микросхема К176ИЕ4, будучи подключенной напрямую к линиям МК, вполне надежно работает с его ТТЛ-уровнями - без какого-либо дополнительного согласования.

А еще две линии МК управляют ключами VТ1-VТ2, создавая динамическую индикацию. Фрагмент исходного кода, где реализована процедура управления счетчиком DD2, приведен в листинге:

Рис. 2. Процедура управления К176ИЕ4.

Процедура написана на низкоуровневом языке AVR-Assembler; однако, она легко может быть переведена и на любой язык высокого уровня. В регистре Temp процедура получает число, которое необходимо отправить в счетчик К176ИЕ4 для отображения на индикаторе; линия 1 порта В микроконтроллера подключена ко входу сброса счетчика (R), а линия 2 - к его счетному входу (С).

Чтобы избежать мерцания чисел в момент переключения счетчика, перед вызовом данной процедуры необходимо погасить оба разряда, закрыв транзисторы VT1 и VT2 подачей лог.О на линии 0 и 4 порта В МК; ну а после того, как процедура отработает, уже можно зажигать тот или иной разряд индикатора. Кстати, благодаря счетчику К176ИЕ4, к любому МК можно подключить индикаторную матрицу 7x4, задействовав для этого только 6 линий ввода-вывода (две - для управления счетчиком, и еще четыре - для динамического переключения разрядов).

А если в "напарники" к К176ИЕ4 добавить еще один счетчик -декадный К176ИЕ8 - чтобы использовать его для "сканирования" разрядов; то появится возможность подключить к МК индикаторную матрицу величиной до 10 знакомест, выделив для этого всего лишь 5 линий ввода-вывода (две - для управления К176ИЕ8; две - для К176ИЕ4; и еще одна - для гашения индикатора в момент счета К176ИЕ4)!

В подобном случае алгоритм динамической индикации будет сводиться к управлению счетчиком К176ИЕ8, что во многом аналогично алгоритму передачи цифры в счетчик К176ИЕ4, приведенному в листинге выше.

К недостаткам же такого подключения индикаторной матрицы - помимо использования "лишней" микросхемы - можно отнести необходимость введения в схему дополнительного питания +9 В, т.к. попытки запитать КМОП-счетчики от +5 В, увы, не увенчались успехом...

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

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

И если все делать "по уму", то неплохо было бы выделить - для динамического управления этой самой запятой - еще одну ножку МК (т.к. в К176ИЕ4 никаких средств для управления запятыми не предусмотрено) - чтобы на нее "повесить" вывод индикатора, отвечающий за запятые.

Но, поскольку все линии ввода-вывода МК уже были заняты, то бороться с этой проблемой пришлось отнюдь не самым изящным способом: обе запятые решено было оставить постоянно зажженными, запитав соответствующий вывод индикаторной "матрицы" от линии +9 В через токоограничительный резистор R3 (подбирая его сопротивление, можно выровнять яркость свечения запятой относительно остальных сегментов); а лишнюю запятую в младшем разряде (крайнюю правую) просто замазать каплей черной нитрокраски.

С технической точки зрения такое решение сложно назвать идеальным; но в глаза "загримированная" подобным образом запятая совершенно никак не бросается...

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

Более того, в "прошивке" микроконтроллера предусмотрена возможность выбора сопротивления измерительного шунта - в данной схеме может быть применен как 0,05-омный, так и 0,1-омный датчик тока.

Для того, чтобы задать микроконтроллеру сопротивление шунта, использующегося в конкретном случае, необходимо записать определенное значение в ячейку памяти EEPROM, расположенную по адресу 0x00 - для сопротивления 0,1 Ом это может быть любое число меньше 128 (в таком случае МК, будет делить результат измерений на 2); а при использовании шунта сопротивлением 0,05 Ом в эту ячейку, соответственно, следует записать число больше 128.

И если планируется эксплуатировать устройство с приведенным на схеме 0,05-омным шунтом, то о записи указанной ячейки можно и вовсе не беспокоиться, т.к. у нового (или "стертого в ноль") МК во всех ячейках памяти итак будет число 255 (0xFF).

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

В этом случае напряжение питания нужно брать до выпрямительного моста "зарядника" (т.е., непосредственно с обмотки), а в разрыв обоих проводов питания амперметра включить по резистору 75 Ом/1 Вт. Резисторы необходимы для зашиты "отрицательных" диодов моста VD1-4 от прохождения через них части зарядного тока.

Дело в том, что если подключить прибор к зарядной обмотке, не установив этих резисторов то, учитывая общую "землю" у моста VD1-4 и диодного моста зарядного устройства, около половины зарядного тока аккумулятора будет возвращаться в обмотку не через мощные диоды выпрямителя ЗУ, а через "отрицательное" плечо моста VD1-4, вызывая сильный нагрев маломощных 1N4007.

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

Принципиальная схема

Печатная плата для данного амперметра разрабатывалась под конкретные посадочные места в корпусе конкретного ЗУ; ее чертеж приведен на рис.3.

Индикаторная матрица устанавливается отдельно - на небольшой платке (отрезке "макетки" 30x40), которая крепится к основной плате болтами М2,5 через дистанционные втулки, со стороны монтажа; и соединяется с ней 10-жильным шлейфом.

Еще одной частью получившегося "бутерброда" является декоративная передняя панель из оргстекла, покрашенная с обратной стороны нитрокраской из баллончика (незакрашенным должен остаться только небольшой прямоугольник - "окошко" для индикатора).

Передняя панель также крепится к основной плате со стороны монтажа (болтами М3 с дистанционными втулками - ими же прибор крепится и к корпусу ЗУ). Печатные дорожки сильноточной цепи, идущие к резисторам R1 и R2, следует выполнить как можно более широкими, и припаять к ним выводы резисторов на всю длину, заодно усилив монтаж толстым слоем припоя.

В качестве выводов для подключения прибора к ЗУ желательно использовать два болта М3, припаяв их головки к плате, и закрепив с другой стороны гайками.

Рис. 3. Печатная плата для схемы цифрового амперметра на микроконтроллере.

Программа

При записи "прошивки" в МК его необходимо настроить для работы на частоте 1,2 МГц, от внутреннего тактового генератора. Для этого частоту тактирования следует выбрать равной 9,6 МГц, и включить внутренний делитель такта на 8.

Для увеличения надежности работы также желательно активировать внутренний супервайзор питания (модуль BOD), настроив его на сброс МК при "просадке" питающего напряжения ниже 2,7 В.

Все настройки производятся при помощи записи соответствующих значений в конфигурационные Fuse-ячейки: SUT1=1, SUT0=0, CKDIV8=0, BODLEVEL1 =0, BODLEVELO=1, WDTON=1. Остальные "фъюзы" можно оставить по умолчанию.

Прошивка для микроконтроллера и печатная плата формата Sprint Layout - Скачать .

Рис. 3. Плата амперметра на Attiny13 в сборе.

Рис. 4. Плата амперметра на Attiny13 в сборе (вид с обратной стороны).

Реализация вольтметра от Владимира

Добавлены ключи на аноды индикатора, что повысило яркость дисплея, и позволяет использовать более мощные дисплеи.

Две печатки под DIP14 и SO14

В схеме применены транзисторы BC847 (КТ3102).

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

Реализация сетевого вольтметра от Wali Marat

Печатка отличается от схемы заменой резисторов R2 и R3 на один подстроечный 4,7к и отсутствием стабилитрона VD1.

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

Фото сетевого вольтметра

Реализация вольтметра/амперметра от Wali Marat

Во все схемы от Wali Marat был добавлен стабилитрон VD1 на 5,1В(обозначен зелёным цветом), для защиты входа АЦП микроконтроллера от перенапряжения.

Предлагаю вашему вниманию конструкцию цифрового вольтметра, который также может быть переделан в амперметр. Схема была взята из журнала Радио №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 придется подобрать, он будет меньше, чем в исходной схеме. Немного измененная прошивка прилагается ниже (так же и исход)

Схема на рис.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 в ПК.