Миллиомметр с ЖК-индикатором на Arduino своими руками
MCP3422 LT3092 ULN2003
У каждого радиолюбителя, инженера, разработчика есть различного рода измерительные приборы. Это могут быть как сложные многофункциональные приборы промышленного изготовления, так и простые вольтметры, амперметры, измерители емкости аккумуляторов, омметры, измерители ESR, которые собраны своими руками. Об одном из таких приборов, который пригодиться любому радиолюбителю, пойдет речь в статье (Рисунок 1).
Миллиомметер – прибор, использующийся для измерения малых сопротивлений резисторов, проводников на печатной плате, обмоток двигателя, катушек индуктивности, обмоток трансформатора, а также может использоваться для расчета длины проводов. Он имеет высокое разрешение, несвойственное обычным мультиметрам, что позволяет получать точные данные измерений в диапазоне миллиом.
Рисунок 1. | Миллиомметр с ЖК-индикатором на Arduino. |
В сети Интернет можно встретить много подобных конструкций, но в статье мы рассмотрим версию прибора, которая отличается реализацией аппаратной части. В миллиомметре используется прецизионный приемник тока и аналого-цифровой преобразователь (АЦП) высокого разрешения. Управление приемником тока (для выбора диапазона измерений) и АЦП осуществляет микроконтроллер (МК) на плате Arduino Nano (Рисунок 2). Полный список компонентов, примененных в приборе, приведен в Таблице 1 ниже.
Рисунок 2. | Принципиальная схема миллиомметра на Arduino. |
Микросхема LT3092 представляет собой интегральный прецизионный источник тока, но в данной конструкции используется в режиме приемника тока (или источника втекающего тока). Для управления приемником тока использованы цепи на транзисторах T1, T2, T3 и резисторах R12, R13, R14. Управление транзисторами (выбор диапазона измерения) выполняет МК через микросхему ULN2003 (набор мощных составных ключей).
В качестве АЦП используется микросхема MCP3422A0. Это 18-разрядный двухканальный АЦП последовательного приближения со встроенным источником опорного напряжения и выходным интерфейсом I 2 C. Входные каналы АЦП являются дифференциальными, поэтому в приборе используется только один канал микросхемы (CH1+ и CH1-), который подключается к тестируемому резистору (сигналы S+ и S-). АЦП настроен на разрешение 18 бит, но, поскольку S+ всегда больше чем S-, эффективное разрешение будет 17 бит.
Чтобы уменьшить влияние сопротивления измерительных проводов (щупов) на результаты измерений, в приборе для подключения исследуемого резистора к точке измерения используются специальные тестовые зажимы Кельвина (Рисунок 3). Это 4-проводные щупы предназначенные для измерения сопротивления методом Кельвина.
Рисунок 3. | Специализированные тестовые щупы Кельвина. |
Прибор имеет три диапазона измерений:
- Диапазон 0m1: от 0.1 мОм до 12.999 Ом;
- Диапазон 1m0: от 1 мОм до 129.999 Ом;
- Диапазон 10m: от 10 мОм до 1299.99 Ом.
Выбор диапазона измерения производится одной из двух кнопок в приборе. Результаты измерений и текущий диапазон измерения отображаются на двухстрочном ЖК индикаторе (стандартный ЖК индикатор 16×2).
Питается прибор от внешнего блока 12 В. Питание измерительных цепей, приемника тока, АЦП, ЖК индикатора осуществляется от встроенного на плату Arduino Nano регулятора напряжения 5 В.
Из-за сложности проекта не рекомендуется выполнять монтаж элементов на монтажной плате, это отнимет много времени и не исключит ошибки. Для прибора была разработана печатная плата в САПР Eagle. Внешний вид проекта печатной платы изображен на Рисунке 4. Схема и проект печатной платы доступны для скачивания в разделе загрузок. Вид готовой платы представлен на Рисунке 5. Как можно заметить (по печатной плате и по списку примененных компонентов), большинство элементов в корпусах для поверхностного монтажа, поэтому для их установки потребуется пинцет, паяльный фен или паяльник с тонким жалом.
Рисунок 4. | Проект печатной платы для миллиомметра разработан в САПР Eagle. |
Рисунок 5. | Внешний вид готовой печатной платы миллиомметра на Arduino. |
Таблица 1. Список примененных компонентов. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Корпус
Чтобы прибор имел презентабельный вид, для него был разработан алюминиевый корпус. Необходимые файлы проекта (Inkscape), шаблоны и трафареты также доступны в разделе загрузок.
На передней панели прибора расположены кнопки управления (выбор диапазона измерения, удержание показаний), разъемы для подключения тестовых щупов и ЖК-индикатор. Внешний вид передней панели прибора и расположение на ней кнопок, разъемов и индикатора изображено на Рисунке 6.
Рисунок 6. | Вариант передней панели и корпуса миллиомметра. |
Подключение ЖК-индикатора, разъемов и кнопок указано на Рисунке 7. На рисунке отмечено: 1 – печатная плата прибора, 2 – разъем внешнего питания, 3 – ЖК-индикатор, 4 –разъемы для тестовых щупов Кельвина, 5 –кнопки управления.
Рисунок 7. | Подключение кнопок управления, ЖК индикатора, тестовых щупов к разъемам на печатной плате миллиомметра. |
Программная реализация
Алгоритм работы прибора и сам код довольно сложны. Необходимо установить диапазон измерения, управляя входами ULN2003 (выходы Arduino D10, D11, D12), который вместе с режимом работы (определяется состоянием кнопок) учитывается в дальнейшем. Затем выполняется считывание АЦП для расчета сопротивления и отображение значения на индикаторе.
С целью упрощения программного кода в скетче было использовано несколько библиотек, в том числе Wire.h, LiquidCrystal_I2C и библиотека для работы с EEPROM. Библиотека Wire используется для облегчения процесса обмена данными по шине I 2 C между Arduino, ЖК индикатором и АЦП. Частота тактового сигнала шины I 2 C выбрана 400 кГц. Библиотека LiquidCrystal_I2C (не предустановленная в Arduino IDE) помогает взаимодействовать с ЖК-индикатором, а библиотека EEPROM используется для доступа к энергонезависимой памяти МК, обеспечивая хранение информации о режиме работы и диапазоне измерения.
Библиотеки Wire и EEPROM предуставновлены в среде Arduino IDE, библиотеку LiquidCrystal_I2C можно установить с помощью менеджера билиотек.
Исходный код довольно громоздкий, но снабжен подробными комментариями. Тем не менее, стоит пояснить, что работа с измерительным узлом, АЦП и индикатором в исходном коде строится на основе определений, макросов и функций. Поэтому основные функции setup() и loop() содержат очень мало строк кода. Скетч доступен для скачивания в разделе загрузок.
После компиляции скетча в Arduino IDE загрузите его в плату, и, если все правильно собрано, прибор запустится (Рисунок 8).
Рисунок 8. | Работа миллиомметра, если к измерительным щупам ничего не подключено. |
Если подключить к измерительным щупам резистор с сопротивлением миллиомного диапазона, то на индикаторе вы увидете значение сопротивления (Рисунок 9).
Рисунок 9. | К измерительным щупам миллиомметра подключен тестовый резистор. |
Ниже вы можете посмотреть видео о работе миллиомметра.
Источник
Миллиомметр для внутрисхемных измерений
В радиолюбительской практике иногда требуется измерить малые сопротивления, например, измерительных шунтов, обмоток дросселей и трансформаторов. Для этих целей применяется такой прибор, как миллиомметр, вариант реализации которого представлен в этой статье. Кроме того, одно из основных назначений описываемого прибора – внутрисхемный поиск мест короткого замыкания при ремонте радиоаппаратуры путем определения участка с минимальным сопротивлением.
Основные особенности описываемого прибора: измерение активного сопротивления резисторов и дросселей без выпаивания из схемы; определение участка схем с минимальным сопротивлением без выпаивания элементов при поиске КЗ; питание всего от одного щелочного элемента типа ААА; переход в спящий режим с малым потреблением при отсутствии измерений; защита от пробоя входа внешним напряжением, например, при случайном подключении к заряженному конденсатору.
Технические характеристики устройства:
Напряжение питания, В ………………………….……………………..… 1.2 – 1.6
Ток потребления: в режиме измерения, не более, мА ………………..… 200
в режиме ожидания, мА ……….……….………..….. 6
в спящем режиме, мА ………………..…………. … 0.03 – 0.05
Погрешность измерения: в диапазоне 0.01 – 0.9 Ом, не более, % …….. ±(1+2 ед. индикации)
в диапазоне 0.01 – 3 Ом, не более, % …….. ±(2+2 ед. индикации)
Общий диапазон измерения, Ом ………………………………………… 0.001 – 3.6
Время перехода в спящий режим из режима ожидания, с ………….…. 40
Рассмотрим принципиальную схему устройства.
Основным элементом схемы является микроконтроллер (МК) PIC16F690, который тактируется от внутреннего генератора частотой 8 МГц. Питание 3 В на МК подается с LDO (Low Drop Out) стабилизатора DA3 типа XC6206P301, который характеризуется экстремально низкими током потребления (1 мкА) и минимальным падением напряжения. На DA3 поступает напряжение 3.3 В с повышающего преобразователя на элементах DA2, L1, VD5, C3 – C5. Здесь преобразователь DA2 типа NCP1402SN33 включен по типовой схеме. Необходимость стабилизатора DA3 обусловлена чрезмерно высоким уровнем помех на выходе повышающего преобразователя, которая отрицательно влияет на точность измерений.
Индикация осуществляется посредством четырехразрядного светодиодного индикатора красного цвета свечения, сегментные выводы которого подключены к порту C МК, а выводы разрядов – к порту B. Здесь, как и в (1), применена посегментная динамическая индикация (ДИ) – в каждый момент времени опрашивается только один сегмент (по кругу все за 32 цикла). Такой способ ДИ позволил отказаться как от разрядных ключей, так и от гасящих резисторов в цепях сегментов, при этом, импульсный ток выходов МК не превышает 15 мА. В данной схеме тип индикатора определяется автоматически, для чего при включении прибора на выход RC0 подается высокий уровень при низком на разрядных выводах RB4-RB7. Напряжение на выводе RC0 измеряется АЦП (AN4) и по его значению делается вывод о типе индикатора, ОА или ОК. При этом, не требуется никаких внешних элементов!
Собственно, ДИ организована в прерываниях от таймера TMR1 с интервалом 512 мкс. Частота опроса индикатора – 1/(0.5*32), примерно равна 63Гц. Яркость индикатора, несмотря на небольшой средний ток через сегмент, вполне достаточна и комфортна.
Измерительный ток (примерно 45 мА) задается резистором R6 и, отчасти R1, через открытый в этом случае транзистор VT1. Подобная простая схема подачи измерительного тока многим может показаться примитивным и не обеспечивающим достойную погрешность, ведь в подобных приборах часто используется сложный источник тока (ИТ) на активных элементах. Однако, это не совсем так. Применение активного ИТ, а так же источника питания МК, как опорного для АЦП, приводит к температурному дрейфу как одного, так и другого. Это снижает точность измерения либо требует сложных схем термокомпенсации. В данном же случае, сопротивление резистора вычисляется по формуле Rx = N * Ro / (1023*Kop – N), где Ro = R6+R1, Kop – коэффициент усиления (КУ) ОУ, N – величина отсчета АЦП. Как видно из формулы, результат не зависит от напряжения питания (при его равенстве с напряжением, подаваемым на R6) и, вообще, не зависит от активных элементов. Как результат, по моему мнению, данная схема при своей простоте обеспечивает более высокую точность измерений, чем при использовании активного ИТ.
При каждом измерении измерительный ток подается непрерывно в течении всего цикла, что минимизирует влияние больших емкостей и индуктивностей на результат при внутрисхемных измерениях.
Система защиты , в отличие от похожей в этом приборе, не такая «всеобъемлющая» и при работе следует соблюдать определенную осторожность. Она состоит из элементов R1, VD1, VD2, R2, R4, VD3. В качестве VD2 используется диод Шоттки для ограничения напряжения на щупах в пределах 250мВ максимум, что важно при внутрисхемных измерениях. Дело в том, что значительный ток выхода прибора – до 50 мА – может, в противном случае, повредить маломощные полупроводниковые элементы схемы.
Операционный усилитель (ОУ) DA1.1, используется для усиления очень низких напряжений с измеряемого резистора (от менее чем десятых долей мВ). Коэффициент усиления (КУ) ОУ может составлять 67 либо 16.8 в зависимости от диапазона (0 – 0.9 Ом, либо 0.9 – 3.6 Ом). Он (КУ) переключается портом RA1 (вывод 18 МК) подключением дополнительного резистора R8. Как оказалось, на этот вывод наводится помеха от ДИ, поэтому, все измерения посредством АЦП проводятся с отключением тока через сегменты индикатора. Применение Rail-to-Rail ОУ с малым током потребления MCP602 позволило питать его непосредственно с выхода порта МК (вывод 3) без ущерба для его работы. Для компенсации напряжения начального смещения ОУ, на него подается избыточное положительное смещение с делителя R2R3. «Лишнее» смещение измеряется и вычитается из результатов. Кроме того, слабый ток через R5 создает необходимый потенциал на входе прибора в режиме ожидания.
Напряжение элемента питания измеряется по выводу 9 (AN9), также задействованному в ДИ, что потребовало использовать цепочку R10VD4. Резистор R10 ограничивает паразитный ток при работе ДИ, а диод Шоттки VD4 уменьшает утечку тока от имеющего высокий потенциал вывода 9 МК на элемент питания в спящем режиме. При измерении напряжения он не оказывает существенного влияния, так как при малом (не более 0.5 мкА) протекающем прямом токе, на нем падает всего около 20мВ (компенсируется программно).
В спящем режиме на сегменты и разряды индикатора подается высокий уровень, что обесточивает индикатор. Прибор «засыпает» при длительном (около 40-45с) нахождении как с разомкнутыми щупами, так и с замкнутыми. Из спящего режима МК выходит по прерыванию от таймера WDT, после чего прибор переходит в рабочий режим в случае неразомкнутых щупов (либо разомкнутых если «засыпание» произошло по длительно замкнутым щупам). В противном случае, устройство «засыпает» обратно и так далее. Интервал прерываний WDT выбран примерно 150 мс. Наличие включенного таймера WDT, кроме того, позволяет обойтись без кнопки сброса при отсутствии выключателя питания.
Все детали устройства, включая элемент питания, размещены на печатной плате размерами 35мм на 85мм из фольгированного стеклотекстолита с односторонней металлизацией.
Применены как обычные, так и SMD компоненты. Микроконтроллер установлен на разъемной колодке. Индикатор можно заменить на FYQ3641AH, а так же, практически любой подобных размеров и красного цвета свечения как с ОА, так и с ОК. ОУ можно применить MCP601, но с коррекцией рисунка платы. В качестве DA3 подойдет XC6206P302MR. MOSFET транзистор VT1 можно заменить транзистором типа AO3401. Диод VD1 меняется на любой из серии 1N100x, а VD2 — VD4 – на 1N5818. Стабилитрон VD3 – любой на напряжение 2.7 — 3.3 В.
Резисторы R5 — R8 следует брать с допуском не более ±0.5 %. В крайнем случае, их можно отобрать из экземпляров с допуском ±5%, подбирая с точностью не менее ±0.25% омметром с классом точности не хуже 0.25%. Но есть еще один вариант — использовать точные только резисторы R5 и R8 с последующей программной коррекцией. В случае отказа от применения точных резисторов совсем, скорее всего, программно настроить до заявленной точности удастся только один из диапазонов измерения (0 – 0.9 Ом или 0.9 – 3.6) . Остальные резисторы – с допуском ±5%. Все SMD конденсаторы – типоразмера 1206, а резисторы – 0805.
Плата с припаянными деталями и элемент питания размещаются в подходящем пластмассовом корпусе. В нем напротив индикатора прорезается прямоугольное окно, которое заклеивается прозрачным оргстеклом красного цвета. Входные щупы изготовлены из латунных штырей диаметром 2 мм и длиной 50 мм, в крайнем случае, можно использовать заточенные стальные гвозди. Один из них (XN1) впаян с помощью проволочных хомутов непосредственно в плату, другой – на проводе, изготовлен из секции винтового разъема, применяемого в электрике.
Программа для МК написана на языке Си и оттранслирована в среде MikroC for PIC.
При прошивке, слово конфигурации (00EC) загружается автоматически.
Устройство не требует наладки и начинает работать сразу, при отсутствии ошибок. При применении деталей с указанными допусками, заявленная погрешность обеспечивается автоматически. При необходимости можно установить коэффициент коррекции показаний прибора для обеспечения требуемой точности.
Перейдем к подробному описанию работы прибора
РЕЖИМ ОЖИДАНИЯ. При неподключенных щупах прибор переходит в режим ожидания и на экране загораются средние сегменты 2-го и 3-го разрядов. В этом режиме, через 8 секунд и далее, каждые 16 с, в течении 2 с индицируется напряжение батареи питания в виде ”uX.XX” , где Х.ХХ – напряжение элемента питания. Причем, в первый раз измеряется напряжение при максимальной нагрузке, а в последующие – без нагрузки. Если к прибору ничего не подключено в течении 40 с, он переходит в спящий режим (выключается) с полным гашением индикатора. В таком состоянии прибор может находиться сколь угодно долго, пока щупы не будут замкнуты между собой либо не будет к ним подключен низкоомный резистор.
РЕЖИМ ОЖИДАНИЯ+РАЗРЯЖЕННАЯ БАТАРЕЯ. Если напряжение питания под нагрузкой менее 1.15 В, происходит первая индикация напряжения батареи через 8 с после перехода в режим ожидания (при этом, запятая в младшем разряде сигнализирует о разряде элемента питания) и сразу после этого прибор «засыпает», то есть через 10, а не 40 секунд. При напряжении батареи менее 1.05 В, прибор выключается и включается только после замены элемента питания.
Источник