Автоматический измеритель малого тока » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

Сколько лет вы занимаетесь программированием PIC микроконтроллеров?


от 0-1 года
1-3 года
3-5 лет
5-10 лет
более 10


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Автоматический измеритель малого тока
    Автор публикации: alex Просмотров: 7753 Добавлен: 20-08-2012, 22:42 Комментарии: 0

         Универсальные измерительные приборы сейчас имеются в домашней лаборатории практически каждого радиолюбителя. Весьма часто при проведении экспериментов необходимо одновременно контролировать напряжение и ток в различных точках. Например, ток, потребляемый налаживаемым устройством от источника питания. В таких случаях идеально было бы иметь два прибора с автоматическим выбором пределов измерений. Однако они могут быть не всегда. Кроме того, низший предел тока в недорогих измерительных приборах, как правило, составляет 200 мкА, что затрудняет измерение с достаточной точностью токов порядка нескольких микроампер. Предлагаемое автоматическое устройство предназначено для измерения малых постоянных токов при напряжении питания не более 6 В.
         устройство представляет собой У микроамперметр с автоматическим выбором пределив измерения и разработано специально для контроля тока, потребляемого налаживаемым узлом от источника питания. Поэтому устройство имеет определенные ограничения в применении, в частности, напряжение в точке измерения тока относительно общего провода не должно превышать 6 В и включать его следует в плюсовую линию питания.
         Технические характеристики
         Измеряемый постоянный ток ..............0,05 мкА.,.10 мА
         Число пределов измерения .......4 (9,99, 99,9, 999 мкА, 9,99 мА)
         Выбор пределов измерения , .......автоматический
         Погрешность измерений, %, не более ......................2
         Период обновления информации на индикаторе, с....... ...... 0,35
         Падение напряжения при измерении тока, мВ, не более ......82
         Напряжение питания, В .....3 (два гальванических элемента типоразмера ААА)
         Потребляемый ток, мА .......10
         Принцип работы прибора (рис. 1) основан на измерении напряжения на образцовом резисторе известного сопротивления, которое возникает при протекании через него тока. С целью уменьшения влияния на измеряемую цепь сопротивление этого резистора должно быть как можно меньше, что приводит к необходимости дальнейшего усиления напряжения, полученного на этом резисторе. Для этой цели можно применить специализированные микросхемы, так называемые токовые сенсоры, выпускаемые различными производителями. В предлагаемом устройстве использована микросхема MAX4372F (DA3) фирмы Maxim в миниатюрном корпусе с пятью выводами (SOT23-5). Помимо двух выводов для подключения образцового резистора, два предназначены для подачи питающего напряжения питания и один — выход усиленного сигнала. Эта микросхема выпускается в трех вариантах с фиксированными коэффициентами усиления по напряжению 20, 50 и 100. В данном случае применен ее вариант с коэффициентом усиления 50, о чем свидетельствует суффикс F в наименовании.

         Если Uобр — падение напряжения на образцовом резисторе, то напряжение на выходе усилителя DA3 составит Uвых=50U*обр= 50Rобр*Iизм, где Iизм измеряемый ток. При Rобр = 82 Ом 1, Uвых = 50*Uобр = 4100*Iизм. При Iизм = 1 мА падение напряжения на образцовом резисторе составит 82 мВ, что вполне допустимо для большинства измерений, а ивых = 4,1 В. Таким же будет выходное напряжение при уменьшении измеряемого тока в десять раз и увеличении в десять раз сопротивления образцового резистора. При этом падение напряжения на этом резисторе не изменится.
         Весь интервал измеряемых токов разделен на четыре поддиапазона: 0,05...9,99, 10...99, 100...999 мкА и 1... 10 мА. Для каждого из поддиапазонов применен отдельный образцовый резистор (R3, R4, R8, R9), их коммутация осуществляется транзисторными сборками VT1, VT2, VT4, VT5, каждая из которых содержит два полевых транзистора с индуцированным каналом p-типа и изолированным затвором. Канал верхнего по схеме полевого транзистора в каждой сборке включен последовательно с одним из образцовых резисторов R3, R4, R8 и R9, и все четыре резисторно-транзисторные цепочки соединены параллельно. Если полевой транзистор закрыт, сопротивление его канала составляет десятки мегаом и коммутируемый им резистор практически не влияет на точность измерения. Если же транзистор открыт, сопротивление его канала не превышает 0,05 Ом, а это — около 0,5 % от самого низкоомного образцового резистора R9 (8,2 Ом), что также мало влияет на результат измерения и может быть учтено при налаживании.
         Управление указанными транзисторами в сборках VT1, VT2, VT4, VT5 осуществляется подачей на их затворы напряжения 5 В (закрыт) или -5 В (открыт), которое поступает со стоков нижних по схеме транзисторов (в этих сборках), которыми в свою очередь управляет микроконтроллер DD1. Напряжение с выхода усилителя DA3 поступает на вход (линия порта RC0, вывод 10) микроконтроллера DD1. Эта линия сконфигурирована как вход встроенного десятиразрядного АЦП. Образцовое напряжение (4,096 В) для АЦП формируется на выходе стабилизатора напряжения DA4. Следует отметить, что образцовое напряжение в милливольтах (4096) весьма близко к коэффициенту 4100, выражающему зависимость выходного напряжения усилителя DA3 от измеряемого тока (Uвыхx = 50*Uобр = 4100*Iизм). Поэтому численное значение кода Nацп на выходе АЦП при напряжении Uвых в милливольтах составит Nацп = (Uвых/4096)*2^10 = 1024*Iизм*(4100/4096) = 1024*Iизм. Замена отношения 4100/4096 на 1 в этой формуле приведет к некоторой погрешности вычислений, которая, однако, не превышает 0,5 %.
         Сопротивление образцового резистора, например 82 Ом, соответствует максимальной величине измеряемого тока 1 мА. При этом Nацп= 1024. Для индикации этого значения на ЖК индикаторе в микроамперах в нашем примере код, поступающий на него, должен быть Nжки = 1000. Поэтому код, поступающий с выхода АЦП, необходимо предварительно преобразовать: Nжки= Nацп( 1000/1024) = 1000*Iизм, что реализовано программно. Преобразованный код с линий RC4 и RC5 (выводы 5 и 6) микроконтроллера DD1 в формате 12С поступает на контроллер ЖК индикатора (DD2), резисторы R13 и R14 — "подтягивающие". Контроллер DD2 управляет цифровым ЖК индикатором HG1 LCD-S301C31TR фирмы Lumex и сконфигурирован для работы в статическом режиме.

         Питание осуществляют от батареи напряжением 3 В, состоящей из двух гальванических элементов типоразмера ААА. Для получения необходимого питающего напряжения 5 В применен импульсный повышающий преобразователь напряжения DA1 на накопительных конденсаторах. Напряжение питания -5 В формируется из напряжения 5 В с помощью инвертора напряжения DA2. Включение устройства осуществляют нажатием на кнопку SB1. В исходном состоянии, когда контакты этой кнопки разомкнуты, на выводе 7 преобразователя напряжения DA1 присутствует напряжение батареи 3 В. Эта микросхема "выключена", и все остальные элементы обесточены. При этом потребляемый устройством ток не превышает нескольких микроампер, что сравнимо с током саморазрядки гальванических элементов.
         При нажатии на кнопку SB1 на выходе преобразователя DA1 появляется напряжение 5 В, микроконтроллер DD1 активизируется и на линии порта RA2 (вывод 11) устанавливается напряжение высокого уровня, транзистор VT3 открывается и шунтирует контакты кнопки SB1 Этот процесс не превышает по длительности доли секунды. В результате вход SDN (вывод 7) микросхемы DA1 будет соединен с общим проводом и устройство останется включенным после отпускания кнопки. Выключение устройства осуществляется программно после примерно трех минут неактивности (индикации нулей на ЖК индикаторе) за счет установки низкого уровня напряжения на затворе транзистора VT3, который закрывается и выключает преобразователь напряжения DA1.
         Программа микроконтроллера написана на языке ассемблера и предназначена для компилирования в среде MPLAB. Исходный ее текст достаточно полно прокомментирован, поэтому ограничимся только общим описанием алгоритма. Программа начинается с конфигурирования портов ввода/вывода микроконтроллера, установки рабочей частоты тактового генератора — 1 МГц и инициализации драйвера ЖК индикатора на работу в статическом режиме. Функции encode7segR и encode7segL предназначены для сопряжения с ЖК индикатором. Основной цикл программы начинается с метки loop. Во время выполнения цикла микроконтроллер производит измерение тока подпрограммой getCurrent, преобразует полученное значение в BCD-код функцией bin2BCD и загружает его в драйвер дисплея функцией displayData. Все это происходит в течение 104 мс и приводит к обновлению показаний ЖК индикатора.
         Следующее измерение тока произойдет после задержки на 250 мс, что сделано с целью предотвращения быстрого изменения показаний индикатора, затрудняющего их считывание. После задержки производится проверка переменной idleCnt, которая является счетчиком времени неактивности. Сам счетчик обновляется внутри функции getCurrent. По достижении им значения 512, что происходит примерно после трех минут нулевых показаний на индикаторе, производится отключение питания устройства.

         Основные вычисления происходят в процедуре getCurrent, которая производит 64 измерения тока и усредняет полученные значения. Усредненное значение выводится на индикатор. Каждое из 64 измерений начинается с выбора предела измерения. Сначала производится измерение на пределе 1...10мА. Если полученное значение больше 97, выбор предела закончен. В противном случае производится новое измерение на следующем пределе — 999 мкА и так далее. Поэтому выбор предела при неизменном измеряемом токе произойдет максимум после четырех контрольных измерений. Выбранный предел запоминается, но если значение на выходе АЦП в процессе измерения составит 1023, что соответствует переполнению, производится переключение на больший предел.
         Если значение меньше 97, будет выбран меньший предел. Число переключений с предела на предел в процессе одного измерения ограничено пятью, это сделано с целью предотвращения бесконечных переключений при измерении быстро меняющегося тока. Значение порога переключения — 97 — выбрано исходя из следующих соображений. При измерении тока устройство стремится так выбрать диапазон, чтобы измеренное значение находилось между 100 и 998 (после нормализации, т. е. умножения на 1000/1024) и, следовательно, было бы трехзначным. До нормализации этим значениям соответствуют 102 и 1023. При этом значение 1023 используется как порог переключения на больший предел. Использование несколько меньшего порога переключения (97 вместо 102) приводит к небольшому перекрытию диапазонов, что сделано с целью уменьшения переключений. После каждого изменения необходимо подождать, пока полностью откроются ключи на МОП транзисторах и установится напряжение на выходе микросхемы DA3. Этот процесс занимает около 0,2 мс, поэтому была выбрана задержка в 1 мс, которая реализована в подпрограмме getSample.
         В каждом цикле измерения требуется 1 мс на ожидание и около 0,56 мс на само измерение и обработку его результатов. При измерении тока значение на выходе АЦП переводится в микроамперы путем умножения этого значения на 10, 100 или 1000 в зависимости от выбранного предела. С этой целью в программу введены небольшие задержки, выравнивающие время измерения до 135 циклов CPU на каждом из пределов, что соответствует 0,54 мс. Соответственно все вычисления (усреднение, сравнение, округление и пр.) производятся в микроамперах. При отображении результата на индикатор подпрограммами bin2BCD и displayData происходит передача только трех старших цифр, что существенно ускоряет вычисления, правда, за счет некоторого усложнения программы. Как отмечалось выше, время от начала каждой серии из 64 измерений тока до завершения передачи усредненного значения составляет примерно 104 мс.
         Индикация предела измерения на индикаторе производится с помощью десятичных точек. На пределе 9,99 мкА — "Х.ХХ", на пределе 99,9 мкА — "ХХ.Х”, 999 мкА — "XXX". На последнем пределе кроме цифр индицируются две точки — "Х.Х.Х”, при этом левая является собственно десятичной, а правая служит для индикации предела (мА) в отличие от (мкА) на остальных. При превышении током предельного значения вместо цифр индицируются тире ”---".
         Большинство деталей смонтированы на печатной плате из односторонне фольгированного стеклотекстолита или другого диэлектрического материала толщиной 1,5...2 мм, чертеж которой показан на рис. 2. Печатный проводник, идущий от вывода 12 контроллера DD2, должен быть соединен с общим проводом. В конце этого проводника на плате есть площадка для установки резистора, регулирующего контрастность ЖК индикатора HG1. Однако для примененного типа индикатора никакой регулировки не потребовалось. Плата рассчитана на установку в пластмассовый корпус размерами 85x55x26 мм фирмы Hammond (модель 1591). Помимо голубого, примененного нами, такие корпусы выпускаются черного или бежевого цвета.

         По краям платы с помощью винтов установлены шесть металлических стоек высотой 5 мм с внутренней резьбой М2 (рис. 3). После установки на плате стойки приклеивают к внутренней верхней части корпуса эпоксидным клеем, это позволит впоследствии вынимать и устанавливать плату. Высота установки ЖК индикатора над платой должна быть такой, чтобы его верхняя плоскость находилась на высоте 5 мм от платы или, соответственно, на высоте стоек. На стороне платы, свободной от деталей (рис. 4), приклеены два держателя для гальванических элементов типоразмера ААА. Имеющиеся у авторов держатели для одиночных элементов оказались немного короче, чем сдвоенные, последние просто не помещались в корпус. Элементы соединяют последовательно и подключают к плате через отверстия, помеченные "+" и Для ЖК индикатора, входного гнезда и толкателя кнопки в верхней части корпуса сделаны отверстия соответствующих размеров (рис. 5).
         В устройстве в основном применены детали для поверхностного монтажа (SMD). Резисторы (Р1-12, РН1-12) и керамические конденсаторы (К10-17 или импортные) могут быть типоразмера 0603 или 0805. Конденсатор С3 — танталовый для поверхностного монтажа типоразмера 3528. Резисторы R3, R4, R8 и R9 (типоразмер 0805) следует подобрать с допуском не более 1 %, от их точности и стабильности во многом зависит точность всего прибора.
         Микросхема PCF8566T — в корпусе VSOP40, микросхема MAX4372F — в корпусе SOT23-5, транзистор IRLML2502TR и микросхема REF3040AIDBZT — в корпусе SOT23. Все остальные микросхемы — в корпусах SOIC с шагом выводов 1,27 мм. Кнопка — KSC421G 70 SH LFS фирмы С&К, на ее толкатель приклеена подходящая по размеру пластмассовая насадка. Авторы применили насадку красного цвета 752703000 той же фирмы.
         В качестве входного гнезда использован разъем NPPC032KFMS-RC фирмы Sullins, содержащий шесть гнезд, расположенных в два ряда. Все нижние гнезда (см. рис. 3) соединены с общим проводом. Среднее верхнее гнездо никуда не подключено, а левое и правое являются соответственно входами "+" и прибора. При работе с измерителем его общий провод следует обязательно соединить с общим проводом контролируемого устройства, в противном случае при отсутствии тока в контролируемой цепи показания ЖК индикатора будут ненулевыми.
         Так как прибор не имеет индикации неправильного подключения полярности, при работе с ним следует быть осторожным. Чтобы защитить микросхему DA3 от перегрузки и неправильной полярности, между входами установлена диодная сборка VD1, содержащая два включенных встречно-параллельно диода Шотки. Эта сборка была добавлена уже после изготовления прибора, поэтому места на печатной плате для нее не было предусмотрено, и она установлена на печатных проводниках рядом с входами усилителя DA3. Как показали эксперименты, введение диодной сборки практически не повлияло на погрешность измерения.
         Для программирования микроконтроллера, установленного на плате, следует временно отключить от него выход источника образцового напряжения DA4, отпаяв соответствующую проволочную перемычку на плате. Для повышения стабильности источника образцового напряжения на его выходе следует установить конденсатор емкостью 0,01...0,1 мкФ. Налаживание прибора сводится к проверке правильности монтажа и программированию микроконтроллера.
    Материал взят из: Журнала Радио 2009 №12

    В архиве исходный код программы на ассемблере и прошивка

    4xkanusilpdu.rar [8,44 Kb] (cкачиваний: 227)

    Комментарии