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


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

Внешний вид измерителя емкости и индуктивности на Arduino

На нашем сайте мы уже рассматривали создание измерителя емкости, измерителя частоты и измерителя сопротивления (омметра) на основе платы Arduino. А в этой статье мы рассмотрим создание измерителя емкости и индуктивности (Inductance LC Meter) на основе платы Arduino. Измеренные значения емкости и индуктивности мы будем показывать на экране ЖК дисплея 16х2. Кнопка в схеме проекта будет использоваться для переключения между режимом измерения емкости и индуктивности.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Микросхема операционного усилителя 741.
  3. ЖК дисплей 16х2 (купить на AliExpress).
  4. Батарея на 3v (для питания операционного усилителя) и источник питания для остальной части схемы.
  5. Резистор 100 Ом (купить на AliExpress).
  6. Конденсаторы (купить на AliExpress).
  7. Индуктивности.
  8. Диод 1n4007 (купить на AliExpress).
  9. Резистор 10 кОм (купить на AliExpress).
  10. Потенциометр 10 кОм (купить на AliExpress).
  11. Кнопка.
  12. Макетная или печатная плата и соединительные провода.

Внешний вид некоторых из использованных в проекте компонентов показан на следующем рисунке.

Расчет частоты и индуктивности

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

f=1/(2*time)

где time (время) будет определяться с помощью функции pulseIn() .

Также нам известна формула для расчета частоты LC контура:

f=1/2*Pi* square root of (LC)

square root – квадратный корень.

Из этого выражения мы можем выразить индуктивность L:

f2 = 1/ (4Pi2LC)
L= 1/ (4Pi2 f2C)
L = 1/(4* Pi * Pi * f * f * C)

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

Примечание: во время измерения индуктивности (L1) емкость C1) в нашем проекте должна быть 0.1 мкФ, а во время измерения емкости (C1) индуктивность (L1) должна быть равна 10 мГн. Если вы хотите изменить эти значения, то вам необходимо будет внести соответствующие изменения в код программы.

Работа схемы

Схема измерителя емкости и индуктивности на основе платы Arduino представлена на следующем рисунке.

Схема измерителя емкости и индуктивности на основе платы ArduinoПлата Arduino в этой схеме управляет всеми процессами. Для измерения емкости или индуктивности используется LC контур, состоящий из конденсатора и катушки индуктивности. Для преобразования синусоидальной волны с выхода LC в прямоугольную волну мы использовали операционный усилитель на микросхеме 741. Для этого мы должны подать отрицательное напряжение питания на операционный усилитель – с этой целью мы используем батарейку на 3 В, соединенную в отрицательной полярности. Это означает что отрицательный контакт микросхемы 741 подключен к отрицательному контакту батареи, а положительный контакт батареи подключен к земле схемы.

Кнопка в схеме используется для смены режима – измерения емкости или индуктивности. ЖК дисплей используется для отображения результатов измерений. Потенциометр предназначен для управления яркостью ЖК дисплея. Схема запитывается от контакта 5v платы Arduino, а саму плату Arduino можно запитать через USB кабель от компьютера или с помощью адаптера на 12 В.

Внешний вид собранной на макетной плате схеме показан на следующих рисунках, а также на них показан пример работы схемы в режиме измерения емкости и в режиме измерения индуктивности.

Работа проекта в режиме измерения емкости

Работа проекта в режиме измерения индуктивности

Объяснение программы для Arduino

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

Сначала в программе нам необходимо подключить библиотеку для работы с ЖК дисплеем и инициализировать необходимые нам для работы контакты и переменные.

Далее, в функции setup мы инициализируем ЖК дисплей и последовательную связь чтобы показывать измеренные значения емкости и индуктивности на экране ЖК дисплея и в окне монитора последовательной связи (serial monitor).

Затем в функции loop мы будем формировать прямоугольный импульс фиксированной длительности для последующей подачи его на LC контур. Этот импульс зарядит LC контур. После снятия импульса LC контур начнет резонировать. После преобразования волны с выхода LC контура в прямоугольную мы ее считываем платой Arduino и с помощью функции pulseIn() мы измеряем длительность ее импульса, и на основании этой измеренной длительности мы рассчитываем частоту.

После получения значения частоты мы рассчитываем значение индуктивности.

С помощью аналогичного фрагмента кода мы можем определить и значение емкости.

Исходный код программы (скетча)

Код программы достаточно объемный, но по своей сути он достаточно простой, мы надеемся, что его понимание не вызовет у вас затруднений.

Видео, демонстрирующее работу схемы

Фото собранного проекта от читателя нашего сайта

Читатель нашего сайта (его зовут Александр) собрал описанный в данной статье проект измерителя емкости и индуктивности на основе платы Arduino и решил поделиться с нами фотографиями собранного проекта, за что мы выражаем ему огромную признательность.

Фото 1 Фото 2 Фото 3
Фото 4 Фото 5 Фото 6
Фото 7 Фото 8 Фото 9
Фото 10

Здесь картинки представлены в сжатом виде (они кликабельны) в целях экономии интернет трафика, в оригинальном качестве вы можете скачать их с яндекс.диска или с гугл диска (ссылка в комментариях).

(1 голосов, оценка: 4,00 из 5)
Загрузка...
8 951 просмотров

Комментарии

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

  1. Здравствуйте люди , прошу вас пожалуйста кто сможет собрать на макетной плате или же спаять саму схему за денежное вознаграждение буду очень благодарен, ибо у меня таких знакомых нету и к сожалению необходимо использовать данный диплом как дипломный проект , но к сожалению навыками к сборке и пайке не обладаю , хотелось бы желающим помочь отписать мне на почту +79817320711, я бы выкупил ваш собранный данный прибор либо же оплатил саму сборку и комплектующие к ней.

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

  2. деление измеренной частоты на Delay=15 это подгонка под правильный результат или для чего это?

  3. Здравствуйте, хотелось бы узнать зачем в данной схеме нужна батарейка ,и для чего нужен после 2 диода делитель напряжения между МК и катушкой с конденсатором ? Также хотел бы спросить не проще было бы с 10 выхода выводить кнопку сразу на землю без соединения его с лмкой ? Извините за глупые вопросы , не очень сильно разбираюсь в схемотехнике и с физикой тоже тяжело , буду очень вам благодарен за подробный ответ!

    • Добрый вечер.
      1. Насчет батарейки есть же ответ в тексте статьи - чтобы подать отрицательное напряжение смещения на операционный усилитель.
      2. Там не делитель напряжения, а просто токоограничивающий резистор.
      3. Кнопку можно выводить и на землю, но здесь она кроме подачи уровня LOW на 10 контакт дополнительно она еще блокирует работу операционного усилителя во время нажатия. Наверное, это улучшает стабильность работы схемы, чтобы во время переключения работы не возникало нежелательных переходных процессов

  4. Измерением частоты внутреннего компаратора как в примере pcbway.com/project/shareproject/_______________________________________________________PIC_16F628A.html

    • Ну здесь же используется микроконтроллер PIC, почему вы думаете что аналогичное решение заработает на плате Ардуино Нано? Если бы это был отдельный микроконтроллер AVR то, наверное, еще можно было придумать что-нибудь аналогичное, ну а когда он в составе платы его некоторые функции могут быть заблокированы. За удобство работы с платой Ардуино приходится же чем то платить, ну как минимум уменьшением числа свободных контактов микроконтроллера AVR в ее составе

      • Просто заинтресовало, на avr не видел ни одного проекта измерителя lc в сети с использованием внутреннего компаратора

        • Ну точный ответ на этот вопрос я не знаю, но, возможно, внутренний компаратор AVR по своему устройству чем то отличается от внутреннего компаратора PIC и поэтому не подходит для таких проектов

    • И каким образом вы хотите его использовать здесь? Что то не очень понял. Но я думаю что вряд ли он подойдет для этих задач

  5. Здраствуйте, еще раз, я собрал на макетке это устройство с LM741CN, но при измерении оно замерят импульс полсекунды, а после уходит в ноль. И то замеряет оно по нарастающей. Попытаюсь поменять на к140уд708, вдруг что выйдет

    • Добрый вечер. К сожалению, тут пока больше ничего не могу полезного вам посоветовать, поэтому остается только пожелать вам успехов

    • резистор R1 надо взять мощностью на 0,250вт ,индуктивность 1mH,на 10 мне кажется опечатка,показывает неправильно,если есть эталонные конденсаторы то делаем калибровку изменяя числовые значения delayMicroseconds(100);
      digitalWrite(charge, LOW);
      delayMicroseconds(50) в строках 36,38,у меня оптимально вышло 900,400,а так схема для домашнего пльзования отличная,для интервала 2-15р надо другую индуктивность 3,5mH,до 15мкф меряет все конденсаторы,после низкочастотные через раз или вообще не меряет,предел 30мкф

        • Хорошо, спасибо за конструктивные комментарии. Надеюсь, они помогут другим пользователям нашего сайта, которые будут собирать данный проект

  6. Здраствуйте, у меня появилось два вопроса. Я начинающий электроник, поэтому не совсем понимаю, на что уходит земля со схемы в итоге и какой минимальной мощности брать резисторы, чтобы они не сгорели?

  7. Здравствуйте Admin - new, я вот подумал, если хотите то могу фотками и "печаткой" поделиться. Видео нет, да и не нужно оно. Надумаете дайте знать и адрес, куда скинуть всё.

  8. С НОВЫМ ГОДОМ ВАС!
    Здравствуйте, скажите пожалуйста, можно ли использовать arduino nano вместо UNO?
    По настройке, нужно ли подбирать какие либо детали или нет? Я понял что нужно собрать по схеме, "закинуть" скетч и только выбирая кнопкой режим измерения ставить либо С1 - 0,1 мкФ. - для измерения индуктивности, либо L1 - 10 мГн - для измерения ёмкости? Я правильно понимаю?

    • Спасибо, и вас с наступившим Новым годом.
      Да, можно использовать arduino nano. В основном вы все правильно поняли. Но если вдруг у вас все сразу не заработает так, как надо (а такое бывает), то советовал бы начать отладку проекта с использованием только одного режима работы - либо для измерения емкости, либо для измерения индуктивности

      • Здравствуйте, собрал я данный девайс. Работает, только врёт немного. Изначально мне нужно было измерять индуктивность. Проблема в том, что цифры прыгают - так очень неудобно. Единственный метод настройки - подгонка конденсатора, чтоб точно уже известную индуктивность "поймать", ну и потом уже неизвестную мерять, больше не додумаюсь не до чего. Скажите, а в скетче ничего нельзя поменять чтоб подогнать, мож значение какое?
        Заранее благодарен.

        • Александр, можно попробовать поизменять значения переменных capacitance и inductance

          • Здравствуйте, спасибо вам, но вроде разобрался. Перепробовал разные оу(конденсатор 100n) и нашёл подходящий - НА17741,но так у меня получилось, у других может и подругому будет. Показывает от 1mH и выше вроде правильно, если ниже индуктивность, то не очень на мой взгляд. Спасибо вам за схему!

            • Спасибо и вам за полезный комментарий к статье.

  9. а если ввести постоянную составляющую при подаче импульса - то не получиться избавиться от ОУ ?

    • Не получится. Операционный усилитель в этой схеме используется для преобразования синусоидального колебания в последовательность прямоугольных импульсов. А если вы от него избавитесь, то каким образом вы будете осуществлять это преобразование? Есть, конечно, способы. Но они вряд ли будут проще использования ОУ, которые сейчас достаточно дешево стоят

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *