Схема. Вольтметр на микроконтроллере ATtiny2313
Принцип работы вольтметра основан на методе преобразования измеряемого напряжения в частоту с помощью однократного интегрирования. Это позволяет, по сравнению с микроконтроллерами, имеющими встроенные десятиразрядные АЦП, получить большую разрешающую способность в широком интервале измеряемого напряжения. Подсчет частоты, переключение пределов и вывод результатов измерения на светодиодный индикатор осуществляет микроконтроллер. Он работает по программе, коды которой приведены в таблице.
:020000020000FC
:100000002FC0189518955AC11895E9C1ADC018951B
:100010001895189518951895189518951895189578
:06002000189518951895D3
:10006000F8944FED4DBF41E948B944274BBF4FEFDE
:1000700047BB4FEF48BB4FE341BB40E242BB4EEOC2
:1000800041BD9927442740936900409367004DBDC7
:100090004CBD40936A0042E049BF44E043BF40E0AA
:1000A00040936B0040E040936C0040E24093680056
:1000B00040EC4093700049EF4093710044EA409354
:1000C000720040EB4093730049E94093740042E9A9
:1000D0004093750042E84093760048EF40937700E4
:1000E00040E84093780040E94093790048E8409325
:1000F0007A0043E840937B0046EC40937C0041EA61
:1001000040937D0046E840937E004EE840937F0098
:10011000789440E84093610040EC4093620049E9E4
:100120004093630049EF409364004FEF40936900B0
:10013000409169004423E1F76BD102D00000FDCF6C
:1001400090FD089500916800002309F00895F89447
:100150001FB69160002708BF0AE809BF02E00EBD84
:1001600095981FBE78940895A8951FB60F931F9376
:100170002F933F934F935F93AF93BF93209168006A
:10018000222319F02A9520936800209169002223E8
:1001900019F02A952093690020916A0088942E33E3
:1001A00038F4239520936A002FEF209360000DC050
:1001B00088942A3738F4239520936A0022272093C5
:1001C000600003C0222720936A0004E011E0BB27EF
:1001D000A1E622B3207F212B22BB3D9140916700F5
:1001E000342B38BB54E04FEF4A9544230000000005
:1001F000D9F75A955523B9F7110F0A95002349F7F6
:100200002FEF28BB22B3207F22BBBF91AF915F911C
:100210004F913F912F911F910F911FBE18951FB6BF
:1002200088249924AA24BB240091650010916600BB
:10023000202F312F8894084E134020FOB394202FA4
:10024000312FF9CF8894022F132F0446104020F04D
:10025000A394202F312FF9CF8894022F132F0A4017
:10026000104020F09394202F312FF9CF8894022F43
:10027000132F802EBB27A1E6FF27E0E7E80D0081C2
:100280000D93E0E7E90D00810D93E0E7EA0D0081B1
:100290000D93E0E7EB0D00818894003C11F491FD93
:1002A0000FEF0C9392FB26F000270093670004C029
:1002B00000916000009367001FBE08951FB68F92E3
:1002C0009F92AF92BF920F93lF932F933F934F93Al
:1002D0005F93AF93BF93EF93FF9300270EBD0DBDC8
:1002E0000CBD02E009BF959A0CE00093680004B5CC
:1002F00015B591FB4EF12FE037E28894200B310BBE
:10030000F8F09B7F20916B0027FF0EC0402F512FEC
:100310002F778894420B504018F0042F152F09C0F6
:1003200088940027112705C08894020F2227121FE6
:1003 300038F0009365001093660071DF77D03EC0FF
:100340008894949A92603AC024ED33E08894200B0C
:10035000310B20F094989D7F9B7F30C02FE037E2D7
:100360008894200B310B08F19B7F949A9260209126
:100370006C0027FF0EC0402F512F2F778894420B1F
:10038000504018F0042F152F09C08894002711271A
:1003900005C08894020F2227121F38F000936500D1
:1003A000109366003CDF42D009C0889494600FE04F
:1003B00017E2009365001093660031DF9E7FFF9186
:1003C000EF91BF91AF915F914F913F912F911F910D
:1003D0000F91BF90AF909F908F901FBE18951FB642
:1003E0000F9300270EBD0DBD0CBD0093650000935B
:1003F000660002E009BF0CE000936800959A0A9538
:100400000EDF9E7F0CE0009368000F911FBE1895D1
:100410004F93AF93BF934FEFBB27AlE64D934D93FF
:100420004D934C93BF91AF914F91089591FB36F04E
:10043000009164000F770093640005C00091630091
:080440000F770093630008959B
:00000001FF
Схема устройства показана на рис. 1 Весь интервал измеряемого напряжения 0…99,99 В разбит на два участка — 0…9,999 и 10,00…99,99 В, которые переключаются автоматически Входное сопротивление на первом участке составляет 470 кОм, на втором — около 100 кОм, абсолютная погрешность измерения на первом участке составляет ±3 мВ. Напряжение питания вольтметра — 15…20 В, потребляемый ток — 60 мА. Период повторения измерений — 100 мс, максимальное время одного цикла преобразования при входном напряжении 9,999 В — 10 мс. При превышении измеряемым напряжением 99,99 В на индикаторе отображается число «9999», мигающее с частотой 2 Гц.
Измерительная часть устройства состоит из интегратора, собранного на элементах DA1, R3, R4, С2, VT1, делителя напряжения на элементах R2, R5, VT2, компаратора напряжения DA3 и работает следующим образом. В момент запуска преобразования с линии порта PD5 (вывод 9) микроконтроллера DD1 на затвор транзистора VT1 поступает низкий логический уровень и он закрывается. В тот же момент программа записывает число 0x02 в управляющий регистр TCCR1B микроконтроллера DD1, что разрешает работу счетчика TCNT1 от импульсов с тактовой частотой контроллера, деленной на восемь, что составляет 1 МГц. Элементы DA1, R3, R4 образуют источник стабильного тока, от которого заряжается конденсатор С2. Компаратор DA3 сравнивает линейно нарастающее напряжение на этом конденсаторе с измеряемым (входным), поступающим на его неинвертирующий вход. Стабилитрон VD1 ограничивает напряжение на этом входе компаратора, защищая его от перегрузки.
Как только нарастающее напряжение превысит измеряемое, на выходе компаратора DA3 установится низкий логический уровень. Спад сигнала на входе ISP (вывод 11) контроллера DD1 приведет к записи в регистр ICR1 содержимого счетного регистра TCNT1, запрос на прерывание по событию «захват» и вызов подпрограммы обработки прерывания. Если измеренное значение напряжения превысит 9,999 В, подачей высокого уровня на затвор транзистора VT2 с линии порта PD4 микроконтроллера DD1 будет включен резистивный делитель напряжения R2R5 Для исключения непрерывного переключения участков измерения на их границе программой предусмотрена зона гистерезиса шириной в 199 мВ.
На точность измерения напряжения влияют, главным образом, такие факторы, как нелинейность стабилизатора тока на стабилизаторе DA1, задержка переключения и напряжение смещения нуля компаратора DA3, сопротивление сток—исток открытого транзистора VT1, ТКЕ конденсатора С2. На втором участке на погрешность влияет точность сопротивлений резисторов R2 и R5. Меньшее влияние оказывают температурный и временной дрейфы частоты кварцевого резонатора ZQ1. Все они заметно ухудшают точность измерения в интервале от 0 до 100 мВ. Нестабильности кварцевого резонатора ZQ1, стабилизатора DA1 и ТКЕ конденсатора С2 носят случайный характер поэтому программной компенсации не поддаются. Но погрешности, вносимые компаратором и полевым транзистором VT1, систематические, поэтому их можно скомпенсировать программным путем Для этого после каждого цикла измерения программа прибавляет к полученному значению константу, вычисляемую в процессе налаживания.
В работе прибора возможна ситуация, при которой прерывание по «захвату» может не наступить. Например, если вход вольтметра соединен с общим проводом или измеряемое напряжение равно нулю, а смещение нуля компаратора DA3 таково, что на его выходе постоянно присутствует низкий логический уровень, то спада сигнала на входе ISP микроконтроллера DD1 не будет и возникнет прерывание по переполнению таймера TCNT1 вместо прерывания по событию «захват». В такой ситуации подпрограмма обработки прерывания по переполнению таймера TCNT1 присвоит измеренному значению нулевое значение.
Конденсатор С7 установлен для подавления выброса напряжения при переключении компаратора DA3, что приводит к ложному возникновению прерывания по событию «захват» В этот момент счетный регистр TCNT1 пуст и на индикатор выводится значение «0,000». Однако подобный эффект наблюдался у компараторов только одной фирмы-производителя, и, скорее всего, установка конденсатора С7 не потребуется.
Большинство деталей, за исключением индикаторов HG1, HG2, смонтированы на основной печатной плате из односторонне фольгированного стеклотекстолита толщиной 1,5 мм, чертеж которой показан на рис. 2, а вид смонтированной платы — на рис. 3 Светодиодные индикаторы монтируют на дополнительной монтажной плате и соединяют с основной изолированными проводами.
Применены постоянные резисторы С2-23, Р1 -4, подстроечный — проволочный многооборотный СП5-2. Резисторы R2, R5 необходимо подобрать с допуском не более 0,5 %, причем резистор R2 можно составить из двух, соединенных последовательно Кроме того, сопротивления резисторов R2 и R5 могут немного отличаться от указанных на схеме, главное, чтобы выполнялось соотношение R2 R5=9 Оксидные конденсаторы — импортные конденсатор С2 — металлопленочный на напряжение 100 В, также импортный, от его ТКЕ зависит температурная стабильность вольтметра, поэтому применение керамических конденсаторов недопустимо. Отличные результаты дает применение конденсаторов серий К73-16, К73-17, однако они имеют большие габариты, что потребует доработки печатной платы. Конденсаторы С9, С10 — КД-2, С1, С4, С6—С8 — керамические для поверхностного монтажа типоразмера 0805.
Микроконтроллер DD1 ATtiny2313-20РI можно заменить на AT90S2313 без каких-либо изменений в программе. При питании вольтметра напряжением, большим 15В. стабилизатор КР142ЕН5А необходимо заменить на L7805CV, который допускает работу при входном напряжении до 35 В. Кварцевый резонатор ZQ1 — РК374 или аналогичный импортный, его частота может лежать в диапазоне 7,5…8,5 МГц, точное значение 8 МГц не принципиально. Индикаторы HG1, HG2 — сдвоенные красного свечения с общим анодом, если применить аналогичные Е20362 зеленого свечения, необходимо уменьшить сопротивление резисторов R6—R13 до 100 Ом. Полевые транзисторы VT1, VT2 — любые n-канальные переключательные с изолированным затвором, рассчитанные на управляющие сигналы с ТТЛ уровнями и с сопротивлением канала открытого транзистора не более нескольких Ом. Транзисторы КТ3102А можно заменить на любые из этой серии либо заменить на транзисторы серии КТ503, подобрав экземпляры с коэффициентом передачи тока базы не менее 100. Стабилитрон VD1 — любой малогабаритный с напряжением стабилизации 12… 13 В и током утечки не более 10 мкА.
Налаживание вольтметра заключается в установке резистором R3 тока зарядки конденсатора С2. Напряжение питания вольтметра может быть в интервале 15…20 В и не стабилизированным, что не влияет на точность измерения во время налаживания и последующей эксплуатации. На вход от внешнего источника подают стабилизированное напряжение в интервале 9…9,8 В, контролируемое образцовым вольтметром В качестве такого вольтметра желательно использовать модели которые могут измерять напряжение до 10 В с точностью в 1 мВ. Резистором R3 уравнивают показания налаживаемого и образцового вольтметров. Затем напряжение на входе уменьшают, добиваясь индикации минимального измеряемого напряжения. Здесь возможны два варианта: при нулевом напряжении на входе налаживаемый вольтметр будет показывать 4…50 мВ или же он покажет «0,000» раньше, чем напряжение на входе уменьшится до нуля. По этим результатам вычисляют константу. И в первом и во втором случаях она равна разности показаний. Но в первом случае ее необходимо вычитать из показаний вольтметра, а во втором — прибавлять к ним.
Под константу в программе выделен 1 байт Старший разряд отводится под знак, поэтому максимальное число, на которое можно изменить показания вольтметра, равно 127. Если константу необходимо вычесть, в старший разряд байта записывают 1, если прибавить — 0. Предположим, вольтметр вместо нуля показывает 0,017 В. В двоичном коде число 17 выглядит как 00010001. Поскольку это число необходимо вычитать из показаний, в старший разряд запишем 1 и получим поправку 10010001 или 91 в шестнадцатеричной форме счисления. Эту константу следует записать в файл ATtiny2313.asm, а именно в строке 221 заменить значение 0x00 на 0x91
Для компенсации показаний вольтметра при работе с делителем, когда измеряемое напряжение лежит в интервале 10,00…99,99 В, исходную константу, в нашем примере 17, необходимо разделить на 10 и округлить до целого значения (до 2), т. е. до 00000010. Добавив знак в старший разряд, получим 10000010, т. е 82 в шестнадцатеричной форме исчисления. Эту константу записывают в файле ATtiny2313.asm, заменив в строке 223 число 0x00 на 0x82 После внесения изменений в файл ATtiny2313.asm его необходимо заново откомпилировать и получившимся файлом ATtiny2313.hex перепрограммировать микроконтроллер В завершение настройки, подавая напряжение от внешнего источника в интервале 9…9,8 В, повторной подстройкой резистором R3 добиваются показаний вольтметра, идентичных эталонному вольтметру.
При программировании микроконтроллера устанавливают его конфигурацию: SPMEN=1, DWEN=1, EESAVE=1, SPIEN=0, WDTON=1, BODLEVEL0…2=111, RSTDISBL=1, CKDIV8=1, CKOUT=1, SUT0,1 = 11. CKSEL0…3=1111, где 0 означает, что разряд запрограммирован, а 1 — нет.
Прилагаемые файлы: vmeter3.zip
С. БЕЛЯЕВ, г. Тамбов
«Радио» №2 2010г.
Похожие статьи:
USB программатор микроконтроллеров AVR — AVR910
Частотомер на микроконтроллере
Миниатюрный вольтметр на микроконтроллере
Лабораторный блок питания на микроконтроллере
Преобразователь USB-COM-LPT на микроконтроллере
Бегущие огни на микроконтроллере АТ89С4051
Часы с термометром и барометром на микроконтроллере ATmega8
Автомат световых эффектов на микроконтроллере
Универсальный таймер на PIC-контроллере
Музыкальный звонок на микроконтроллере