Lc метр на ардуино

В радиолюбительской практике часто бывает необходимо измерить емкость конденсатора или индуктивность катушки. Особенно это актуально для SMD компонентов, на которых отсутствует маркировка. Функция измерения емкости есть во многих мультиметрах, но при измерении небольших емкостей, порядка единиц – десятков пФ, погрешность обычно бывает недопустимо велика.

Индуктивность могут измерять далеко не все мультиметры и, аналогично, в большинстве случаев, погрешность при измерении малых индуктивностей довольно большая. Есть, конечно, точные векторные измерители LC, но их стоимость начинается от 150 USD. Сумма для российского радиолюбителя не малая, особенно учитывая, что такой прибор нужен не каждый день.

Выход есть – собрать измеритель LC своими руками. Еще в 2004 году я разработал и изготовил такой прибор. Его описание было опубликовано в журнале «Радио» №7 за 2004 г. Более 10 лет этот измеритель LC исправно выполнял свои функции, но потом вышел из строя индикатор. В приборе был использован самый дешевый и доступный на момент разработки LCD индикатор типа KO-4B. В настоящее время он снят с производства и найти его почти невозможно.

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

Принципиальная схема прибора показана на рисунке. Сейчас стоимость платы Arduino практически равна стоимости установленного на ней контроллера, поэтому в качестве основы я использовал плату Arduino-Pro-Mini. Такие платы выпускаются в двух версиях – с напряжением питания 3,3 В и кварцем на 8 мГц, а также 5 В и 16 мГц. В данном случае подойдет только вторая версия – 5 В, 16 мГц. Индикатор – один из самых распространенных на сегодняшний день, WH1602A фирмы «Winstar» или его аналог. Он имеет две строки по 16 символов.

С целью упрощения схемы и конструкции я использовал операционный усилитель с однополярным питанием типа MCP6002, который допускает работу с уровнями напряжения от нуля до напряжения питания как по входу, так и по выходу. В англоязычных источниках это называется «Rail-to-Rail Input/Output». Возможная замена MCP6001, AD8541, AD8542 и другие, с минимальным потребляемым током, способные работать от однополярного источника 5 В. При поиске задавайте ключевые слова «rail-to-rail input output».

Если в корпусе более одного ОУ, отрицательные входы всех неиспользуемых усилителей нужно подключить к «земле», а положительные – к питанию +5 вольт.

Измерительная схема с незначительными изменениями взята из первого варианта прибора. Принцип измерения следующий. Сигнал возбуждающего напряжения прямоугольной формы с вывода D10 Arduino (порт PB1 микроконтроллера) поступает на измерительную часть схемы. Во время положительной полуволны измеряемый конденсатор заряжается через резистор R1 и диод VD4, а во время отрицательной — разряжается через R1 и VD3. Средний ток разряда, пропорциональный измеряемой емкости, преобразуется с помощью операционного усилителя DA1 в напряжение. Конденсаторы C1 и C2 сглаживают его пульсации.

При измерении индуктивности во время положительной полуволны ток в катушке нарастает до значения, определяемого номиналом резистора R2, а во время отрицательной — ток, создаваемый ЭДС самоиндукции через VD2 и R3, R4 также поступает на вход DA1. Таким образом, при постоянном напряжении питания и частоте сигнала, напряжение на выходе ОУ прямо пропорционально измеряемой емкости или индуктивности.

Но это справедливо только при условии, что емкость успевает полностью зарядиться в течение половины периода возбуждающего напряжения и полностью разрядиться в течение другой половины. Аналогично и для индуктивности. Ток в ней должен успевать нарастать до максимального значения и спадать до нуля. Это обеспечивается соответствующим выбором номиналов R1. R4 и частоты возбуждающего напряжения.

Напряжение, пропорциональное измеренному значению с выхода ОУ через фильтр R9, C4 подается на встроенный 10-и разрядный АЦП микроконтроллера – вывод A1 Arduino (порт PC1 контроллера). Рассчитанное значение индуктивности или емкости отображается на индикаторе. Кнопка SB1 служит для программной коррекции нуля, что компенсирует начальное смещение нуля ОУ, а также емкость и индуктивность клемм и переключателя SA1.

Для повышения точности прибор имеет 9 диапазонов измерения. Частота возбуждающего напряжения на первом диапазоне равна 1мГц. На такой частоте измеряется емкость до

90 пФ и индуктивность до

90 мкГн. На каждом последующем диапазоне частота снижается в 4 раза, соответственно во столько же раз расширяется предел измерения. На 9 диапазоне частота равна примерно 15 Гц, что обеспечивает измерение емкости до

5 мкФ и индуктивности до

5 Гн. Нужный диапазон выбирается автоматически, причем после включения питания измерение начинается с 9 диапазона.

В процессе переключения диапазонов частота возбуждающего напряжения и результат преобразования АЦП отображаются в нижней строке индикатора. Это справочная информация, которая может помочь оценить корректность измерения параметров. Через несколько секунд после стабилизации показаний эта строка индикатора очищается, чтобы не отвлекать внимание пользователя.

Результат измерения отображается в верхней строке. Измеренное значение напряжения с выхода ОУ интерпретируется как емкость или индуктивность в зависимости от положения переключателя SA1.

Стабилизатор напряжения, смонтированный на плате Arduino, очень маломощный. Чтобы не перегружать его, питание подсветки индикатора подается через резистор R11 непосредственно с блока питания прибора. В качестве блока питания используется стабилизированный сетевой адаптер на 9. 12 В с допустимым током нагрузки не менее 100 мА. Диод VD6 защищает прибор от ошибочного подключения к блоку питания обратной полярности. Номинал резистора R11 определяется током светодиодов подсветки индикатора, т.е. необходимой яркостью его свечения.

Измерительный блок смонтирован на печатной плате размерами 40×18 мм. Ее чертеж показан на рисунке. Все постоянные резисторы и конденсаторы в корпусах для поверхностного монтажа типоразмера 1206. Конденсаторы C1 и C2 составлены из двух, включенных параллельно, по 22 мкФ. Диоды VD1. VD4 — высокочастотные с барьером Шоттки. Подстроечные резисторы R3, R5 и R10 малогабаритные типа СП3-19 или их импортные аналоги. DA1 типа MCP6002 в корпусе SOIC.

Номинал емкостей C1, C2 уменьшать не следует. Тумблер SA1 должен быть малогабаритным и с минимальной емкостью между контактами.

Плата Arduino, плата измерительного блока и индикатор монтируются на основной плате. На ней же установлены регулятор контрастности R10, диод VD6, резистор R11, конденсаторы C5, C6, гнездо питания и кнопка калибровки SB1. Индикатор и конденсаторы монтируются со стороны печатных проводников, все остальное – с противоположной стороны.

Все это размещается в корпусе размерами 120х45х35 мм, спаянном из фольгированного гетинакса. Клеммы для подключения измеряемого элемента и переключатель SA1 крепятся непосредственно на корпус. Проводники до SA1 и входных клемм должны быть минимально возможной длины.

Программа для контроллера написана на Си в среде CodeVisionAVR v2.05.0. Совсем не обязательно программировать Arduino в фирменной среде. В контроллер можно загрузить любой HEX файл без программатора с помощью программы XLoader. Однако на плате Arduino-Pro-Mini отсутствует конвертер USB-COM, поэтому придется использовать для программирования внешний конвертер. СтОит он не дорого, а в дальнейшем такой конвертер вам еще пригодится. Так что рекомендую заказать на Aliexpress вместе с платой Arduino-Pro-Mini (5 V, 16 mHz) и модуль USB-COM для ее программирования.

Скачиваем с сайта http://russemotto.com/xloader/ или по ссылке в конце этой странички с моего сайта программу XLoader и устанавливаем ее. Работа с программой проста и интуитивно понятна. Нужно выбрать тип платы — Nano(ATmega328) и номер виртуального COM порта. Скорость обмена 57600 установится сама, менять ее не нужно. Затем указываем путь к HEX файлу прошивки, который находится в папке «Exe» проекта: . Exelcmeter_2.hex. О FUSE битах можно не беспокоиться, они уже выставлены и возможности испортить их нет. После этого нажимаем кнопку «Upload» и ждем несколько секунд до окончания загрузки.

Разумеется, предварительно модуль USB-COM должен быть подключен к USB порту компьютера и для него должен быть установлен драйвер, так, чтобы виртуальный COM порт определился в системе. Разъем программирования на плате Arduino должен быть подключен к соответствующим выводам на плате модуля USB-COM. Внешнее питание на плату во время программирования можно не подавать, она его получит от USB порта компьютера.

Для наладки измерителя LC необходимо подобрать несколько катушек и конденсаторов в диапазоне измерения прибора, имеющих минимальный допуск по номиналу. Если есть возможность, их точные значения следует измерить с помощью промышленного измерителя LC. Учитывая, что шкала линейная, в принципе достаточно одного конденсатора и одной катушки. Но лучше проконтролировать весь диапазон. В качестве образцовых катушек подходят дроссели типа ДМ, ДП.

Устанавливаем движки резисторов R3 и R5 в среднее положение. Переводим SA1 в положение измерения емкости, подаем питание на прибор (к клеммам ничего не подключено) и контролируем результат преобразования АЦП на частоте 1мГц. Эта информация выводится в нижней строке индикатора. Должно быть не менее 15 и не более 30.

Через несколько секунд в верхней строке появится измеренное значение емкости. Если оно отличается от 0.0 pF, нажимаем кнопку коррекции нуля и вновь ждем несколько секунд.

После этого к входным клеммам подключаем образцовую емкость и, вращая движок R5, добиваемся соответствия показаний истинному значению емкости. Оптимально взять емкость номиналом в пределах 4700. 5100 пФ.

Затем подключаем к клеммам конденсатор емкостью 2. 3 пФ и контролируем точность измерения его емкости. Если измеренное значение меньше истинного более, чем на 0,5. 1 пФ, следует увеличить смещение нуля ОУ. Для этого уменьшаем номинал резистора R7. Напряжение на выходе ОУ и результат АЦП должны увеличиться. Если использован операционный усилитель типа «Rail-to-Rail Input/Output» достаточно смещения нуля около 100 мВ, что соответствует результату преобразования АЦП около 20 (к входным клеммам ничего не подключено).

У меня номинал R7 получился 47 кОм, результат АЦП при этом равен 18. 20.

При проведении калибровки обращайте внимание на результат преобразования АЦП, выводимый в нижней строке индикатора. Желательно в качестве эталонной использовать емкость такого номинала, чтобы результат АЦП был по возможности ближе к верхнему пределу измерения на данном диапазоне. Прибор переключается на следующий диапазон, когда результат АЦП превышает 900. Таким образом, для достижения максимально возможной точности измерения, калибровку следует проводить по эталонной емкости, для которой значение АЦП находится в пределах 700. 850.

Затем необходимо проконтролировать весь диапазон и, при необходимости, уточнить положение движка R5, добиваясь точности не хуже +/- 2. 3%.

Настроив прибор в режиме измерения емкости, следует перевести SA1 в нижнее по схеме положение, закоротить входные гнезда и нажать SB1. После коррекции нуля на вход подключается образцовая катушка и резистором R3 выставляются необходимые показания. Цена младшего разряда 0,1 мкГн. Если нужных показаний достичь не удается, следует изменить номинал R4.

Необходимо стремиться к тому, чтобы R2 и сумма (R3+R4) отличались не более, чем на 20%. Такая настройка обеспечит примерно одинаковую постоянную времени "заряда" и "разряда" катушки и, соответственно, минимальную погрешность измерения.

Погрешность не хуже +/- 2. 3% для емкости обеспечивается без труда, с катушками же все обстоит несколько сложнее. Ведь катушка всегда имеет много паразитных параметров — активное сопротивление обмотки, потери в сердечнике на вихревые токи, на гистерезис и др. Кроме того, магнитная проницаемость ферромагнетиков нелинейно зависит от напряженности магнитного поля. Индуктивность при измерении подвергается воздействию однополярных токов, а все реальные ферромагнетики имеют достаточно высокое значение остаточной индукции.

В результате воздействия всех этих факторов показания прибора при измерении индуктивности некоторых катушек могут существенно отличаться от того, что покажет векторный измеритель LC. Тут следует учитывать особенности принципа измерения. Для катушек без сердечника, для незамкнутых магнитопроводов и для ферромагнитных магнитопроводов с зазором точность измерения вполне удовлетворительна, если активное сопротивление катушки не превышает 20…30 Ом. А это значит, что индуктивность всех ВЧ катушек, дросселей, трансформаторов для импульсных источников питания и т.п. можно измерять достаточно точно.

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

цифровая электроника вычислительная техника встраиваемые системы

Измеритель индуктивности и емкости на Arduino

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

Существуют некоторые специальные мультиметры, которые могут измерять индуктивность и емкость, но они являются дорогими. Но можно собрать такой LC-метр своими руками. Это можно сделать с помощью Arduino, как будет показано в данном проекте, в котором мы будем измерять и выводить значения индуктивности и емкости вместе с частотой на ЖК-дисплее 16×2.

В этом проекте мы будем измерять индуктивность и емкость, используя параллельную цепь LC. Эта схема напоминает контур, который начинает резонировать на определенной частоте. Всякий раз, когда мы прикладываем импульс, эта LC-цепь начнет резонировать, и эта резонансная частота будет в форме аналоговой (синусоидальной волны), поэтому нам нужно преобразовать ее в меандр. Для этого мы прикладываем эту аналоговую резонансную частоту к операционному усилителю (741 в нашем случае), который осуществляет такое преобразование при 50% скважности. Теперь мы измеряем частоту, используя Arduino, и, используя некоторый математический расчет, мы можем найти индуктивность или емкость. Для определения частоты используется такая формула:

Здесь время выводится функцией pulseIn(). Теперь получим частоту LC-контура:

f=1/2*Pi* квадратный корень от (LC)

Мы можем решить это, чтобы получить индуктивность:

L = 1/(4* Pi * Pi * f * f * C)

Как мы уже говорили, наш сигнал является синусоидальной волной, поэтому она имеет тот же период времени как в положительной, так и в отрицательной амплитудах. Это означает, что компаратор преобразует его в квадратную волну с 50% скважностью. Чтобы мы могли измерить это с помощью функции pulseIn(). Эта функция даст нам период времени, который можно легко преобразовать в частоту путем обратного пропорциональности периода времени. Поскольку функция pulseIn измеряет только один импульс, так что теперь, чтобы получить правильную частоту, мы должны умножить ее на 2. Теперь мы имеем частоту, которая может быть преобразована в индуктивность, используя приведенную выше формулу. При измерении индуктивности (L1) значение конденсатора (C1) должно составлять 0,1 мкФ, а при измерении емкости (C1) значение индуктивности (L1) должно составлять 10 мГн.

Схема подключения Arduino для реализации измерителя индуктивности и емкости (LC-метр) представлена ниже. Цепь LC состоит из катушки индуктивности и конденсатора. Чтобы преобразовать синусоидальную резонансную частоту в цифровую или прямоугольную волну, мы использовали операционный усилитель, а именно 741. Здесь нам нужно применить отрицательное напряжение питания к операционному усилителю для получения точной выходной частоты. Таким образом, мы использовали 3-вольтовую батарею, подключенную с обратной полярностью, означает, что отрицательный контакт 741 подключен к отрицательной клемме аккумулятора, а положительный контакт батареи подключен к заземлению оставшейся цепи.

Здесь у нас есть кнопка для изменения режима работы, независимо от того, измеряем индуктивность или емкость. ЖК-дисплей 16×2 используется для показа индуктивности или емкости с частотой LC-схемы. Для контроля яркости ЖК-дисплея используется 10-килоомный потенциометр. Цепь питается от питания Arduino 5v. Код программы для Arduino представлен далее.


Измеритель индуктивности в действии. Он отображает резонансную частоту вместе с индуктивностью.

Недавно я завершил небольшой Arduino проект. Это шилд для Arduino Uno, который позволяет измерять индуктивность. Данная функциональность обычно отсутствует в стандартном цифровом измерительном приборе. Да, есть еще и специализированные измерители LCR, которые позволяют измерять индуктивность, но они обычно не измеряют напряжение или ток. Поэтому я решил самостоятельно изготовить измеритель индуктивности.


Плата без дисплея

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

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


При разомкнутых измерительных щупах генератор не может резонировать. Вместо этого отображается текущая калибровка/нулевое смещение.

На шилде установлена индуктивность величиной 1мкГн, которая подсоединена последовательно к измеряемой катушке. Она служит для двух целей: генератор может резонировать, когда вы закоротите измерительные щупы. Затем, когда вы нажмете кнопку на шилде, программа будет использовать текущее измерение в качестве нового значения калибровки. Индуктивность также устанавливает верхний предел для резонансной частоты. Это гарантирует, что программа остальной схемы сможет поддерживать работу генератора.


Нажатие данной синей кнопки обнуляет измеритель.

Как видно по схеме, генератор использует два конденсатора, емкостью 1нФ, соединенных последовательно. Вместе с индуктивностью 1мкГн, они ограничивают частоту до величины примерно 7.1МГц. На практике, генерируется частота величиной около 5.4МГц, когда измерительные щупы закорочены.


Вид снизу шилда Arduino

Выход генератора, за которым следует компаратор, превращает синусоидальный сигнал генератора в прямоугольный сигнал. Я использовал недорогой, но быстрый компаратор MCP6561R компании Microchip. Он имеет максимальную задержку прохождения сигнала величиной 80нс, что позволяет обеспечить максимальную частоту.


Вид сверху

Однако, естественно, частота 5.4МГц слишком высокая, чтобы поддерживаться Arduino. Arduino работает на частоте 16МГц и нуждается в нескольких дюжинах инструкций для обработки каждого импульса от шилда. Мое решение было таким – добавить 8-битный двоичный счетчик 74HC590, который делит частоту на 256. Его использование позволяет обеспечить теоретическую максимальную частоту 7.2МГц / 256 = 27.7кГц. А это уже то значение, с которым легко может справиться Arduino.


Весь шилд без дисплея

По очевидным причинам, на шилд также установлен дисплей. Есть еще и нажимная кнопка, дребезг контактов которой устраняется аппаратно с помощью низкочастотного RC-фильтра, а также буфера с триггером Шмидта. Кнопка используется для обнуления измерителя, т.е. текущее измерение используется как новое нулевое смещение.


Устройство может измерять даже очень маленькие значения индуктивности

Все сопутствующие файлы можно загрузить по ссылке ниже. В него входит исходный код для Arduino (также называемый скетч), а также файлы Eagle и PDF-файлы компоновки и схемы.


[an error occurred while processing the directive]
Карта сайта