Измерение емкости конденсатора ардуино: Измерение емкости конденсаторов с помощью Arduino

Содержание

Цифровой измеритель емкости конденсаторов на базе Ардуино своими руками

Этот измеритель емкости и индуктивности позволит вам измерять емкость на микроконтроллере в диапазоне измерений от 0.000pF до 1000uF. Данные отобразятся на дисплее 16х2, а главным рабочим компонентом будут Ардуино Уно и дисплей.

Шаг 1: Список материалов

  • 1 16X2 параллельный LCD-дисплей
  • 1 Arduino Uno R3 DIP Edition (Revision 3)
  • 1 Arduino Uno Proto Shield (только PCB)
  • 1 клемма к батарейке 9V со штекером 2.1 мм
  • 1 кабель USB2.0 A/B 90 см, черный USB-A мама на USB-B мама
  • 1 коннектор со штырьками на 40 позиций 2.54 мм с прямыми сквозными отверстиями
  • 1 потенциометр из металлокерамики на 0,6 кв. см 1/2W 10 Kohm
  • 1 Пластиковый ABS корпус для платы Arduino — для UNO или MEGA
  • 1 6-позиционный хедер-мама в сквозном стиле для Arduino

Шаг 2: Схема

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

Шаг 3: Дисплей 16X2

На этом шаге отрежьте 2х6 пинов и вставьте их в отверстия дисплея в соответствующие пины: от 1 до 6 и от 11 до 16, таким образом, у вас будет больше свободного места между платой и дисплеем, когда он будет установлен.

Шаг 4: Дисплей, часть 2

На этом шаге нужно создать основное соединение для дисплея, затем нужно идентифицировать соединения от дисплея в пинах 4, 6, 11, 12, 13, и 14, которые позже будут подключены к соответствующим пинам Ардуино Уно 11, 9, 5, 4, 3, и 2, не забывая о подключении +5V, GND и потенциометра на 10K.

Шаг 5: Дисплей, часть 3

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

Шаг 6: Плата

Как только вы определили, что с чем соединять между дисплеем и платой, вы должны разъединить их, чтобы установить на плату коннектор со штырьками, разместив 2х8 пинов на стороне цифровых пинов и использовав два пина на другой стороне для GND и +5V.

Шаг 7: Плата, часть 2

На этом шаге нужно соединить два GND с +5V, чтобы вся земля была соединена, и можно было на дорожку земли подсоединить потенциометр на 10K, а затем подцепить всё это к дорожке+5V. Во время выполнения этой процедуры, припаяйте центральный пин к другой ближней дорожке.

Шаг 8: Плата, часть 3

Теперь можно всё соединить – подготовьте соединения и оставьте достаточно места для установки дисплея.

Шаг 9: Соединение платы и дисплея

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

Шаг 10: Соединение платы и дисплея, часть 2

Внимательно проверьте все соединения на задней стороне вашей платы, чтобы убедиться, что ваши контакты между платой и дисплеем в порядке. Очевидно, что нужно проверить соединения на GND и +5V на правой дорожке.

Шаг 11: Завершение проекта

После завершения, необходимо определить выходы нашего прибора для измерения емкости конденсаторов, в нашем случае A0 — негативный(-) и A4 — позитивный (+).

Шаг 12: Подготовка к калибровке

Перед загрузкой кода, нужно немного расширить металлические отверстия платы А0 и А4 при помощи небольшой биты для дрели, чтобы сохранить нулевую емкость, когда будет установлен хедер-мама со штырьками 1х6.

Шаг 13: Корпус

Возьмите корпус и установите Ардуино Уно, срезав пластиковые столбики, как показано на картинке.

Шаг 14: Устанавливаем шилд на Ардуино Уно

Как только Ардуино Уно установлен, можно соединить его с шилдом.

Шаг 15: Устанавливаем хедер-маму 1х6

Просто вставьте хедер 1х6 и когда вы загрузите код, указатель будет отображать 0.000pF.

Шаг 16: Загрузка кода

Установив кабель USB-A на USB-B между вашим девайсом и компьютером, загрузите в него этот код http://pastebin.com/njjKZrfv. Дальше посмотрите на указатель, на котором должно отображаться 0.000pF.

Шаг 17: Использование девайса

После загрузки кода, отсоедините кабель, чтобы подключить переходник на батарейку на 9V и таким образом получить данные по любому конденсатору, который вы пожелаете. В моем случае, я делаю замер конденсатора на 1 pF.

Шаг 18: Использование № 2

Теперь конденсатор на 3.3 pF

Шаг 19: Использование № 3

10 pF.

Шаг 20: Использование № 4

100 pF.

Шаг 21: Использование № 5

1 nF.

Шаг 22: Использование № 6

10 nF.

Шаг 23: Использование № 7

100 nF.

Шаг 24: Использование № 8

1 uF.

Шаг 25: Использование № 9

10uF.

Шаг 26: Использование № 10

100 uF.

Шаг 27: Использование № 11

1000 uF.

L/C метр (Arduino) | Радиотехника

L/C метр (Arduino)

На платформе Arduino можно собрать простой измеритель емкости и индуктивности. Прибор позволяет измерять индуктивность катушек от единиц мкГн до десятков мГн и емкость конденсаторов от десятков пФ до 0,5 мкФ с достаточно большой точностью. Схема собрана на компараторе LM311 и нескольких пассивных элементах, на плате Arduino собран частотомер (до 6,5 МГц).

Измерение емкости и индуктивности происходит достаточно просто, так как L/C элементы представляют собой колебательный контур, то компаратор совместно с колебательным контуром будет генерировать частоту, а частотомер на Arduino произведет пересчет частоты в значения индуктивности или емкости. В уст-ве две кнопки управления, первая переключение режимов измерения L/C, вторая калибровка нуля. Из схемы видно, что в уст-ве уже имеется индуктивность и емкость, индуктивность необходима для измерения емкости, а так же для измерения малых величин индуктивности. Емкость нужна для измерения индуктивности, при этом индуктивность встроенная в прибор может иметь большой разбег в номинале, а конденсатор должен быть точным, от него зависит базовая погрешность прибора. При первоначальной настройке прибора необходимо закоротить контакты «⊥» и «L», нажать на кнопку калибровки нуля, при этом произойдет измерение индуктивности встроенная в прибор, значение индуктивности будет сохранено в энергонезависимой памяти. Далее можно подключить любую катушку или конденсатор выбрать нужный режим (L/C) и провести измерение. Для измерения емкости необходимо нажать на кнопку L/C, закоротить контакты «⊥» и «L», а  емкость подключить к контактам «⊥ или L» и «C».

При измерении индуктивности или емкости значения индуктивности или емкости внутренних элементов (L1 C1), будут автоматически вычтены из конечного результата. Полученные значения выводятся на LCD индикатор 1602 на первую строку, а во второй строке выводится резонансная частота.

L/C метр (Arduino)L/C метр (Arduino)L/C метр (Arduino)L/C метр (Arduino)

Так прибор способен проводить измерения емкости только до 0,5 мкФ, было принято решение немного доработать уст-во. Добавлена еще одна клемма для подключения электролитических конденсаторов емкостью от 0,1 до 10000 мкФ и пара резисторов.

L/C метр (Arduino)

Процесс измерения емкости электролитических конденсаторов достаточно прост, через резистор номиналом 1 кОм подается напряжение 5 В на конденсатор, одновременно аналоговый вход микроконтроллера производит измерение напряжения подаваемое на конденсатор, как только напряжение достигнет 63% от 5 В, микроконтроллер подсчитает время заряда и пересчитает его по формуле: T = RC. Как и в первых двух режимах измерения, можно воспользоваться кнопкой калибровки нуля, для более точного измерения емкости конденсаторов небольшого номинала.

L/C метр (Arduino)L/C метр (Arduino)L/C метр (Arduino)L/C метр (Arduino)

Скетч — https://rcl-radio.ru/?p=66450

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

Система, показанная в Примере Arduino, вероятно, не будет работать для вас.

Вы пытаетесь измерить доли, если nF, так что или ваш резистор будет огромным, или ваше время, чтобы найти интересующую вас точку, настолько мало, что вы получите только 4 или 5 выборок на вашем АЦП. Предыдущий не вариант, из-за утечки на входе, последний не потому, что вы не найдете его.

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

Что вам нужно будет сделать, это воссоздать то, что делает ваш мультиметр. Конденсатор имеет внутреннее сопротивление плюс сопротивление, которое он имеет для частотного сигнала. Большинство доступных мультиметров игнорируют внутреннее сопротивление и просто измеряют общее значение при 1 кГц.

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

Z(c) = 1 / (jwC) где w = Z(c) = 1 / (jwC) буква омега, обозначающая угловую скорость, или w = 2*pi*f , где f — частота сигнала. Для целей первой оценки можно упростить это до реальной части сопротивления, определяемой как:

"R(c)" = 1 / ((2*pi*f)*C) <- игнорирует мнимые части, которые могут быть важны в некоторых случаях.

Теперь, что делает мультиметр или RLC-метр? Упрощенно что-то вроде этого:

смоделировать эту схему — схема, созданная с использованием CircuitLab

Он знает, что он выполняет синусоидальную функцию 1 кГц при определенном напряжении, поэтому он измеряет ток, который течет в конденсатор, а затем, если он уверен в напряжении (либо с помощью сильных драйверов синусоидального сигнала, либо путем измерения этого также), он может рассчитать эффективное сопротивление переменного тока и по приведенной выше формуле превратит его в емкость.

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

Чтобы оценить то, что нам нужно, мы должны рассчитать кажущееся сопротивление ваших предельных значений. От вашего графика это 50pF до 350pF, поэтому мы возьмем немного места и сделаем это от 25pF до 500pF. Таким образом, мы рассчитываем с помощью упрощенного уравнения, которое я дал ранее, я приму 1 кГц, так как это позволяет вам при необходимости настроить 100 Гц и 10 кГц:

"R(25pF)" = 1 / (2*pi*1000Hz * 25pF) =~ 6.37M Ohm

"R(500pF)" = 1 / (2*pi*1000Hz * 500pF) =~ 318k Ohm

Теперь, это предполагает синусоидальную волну, и вы, скорее всего, будете делать прямоугольную волну, которая содержит много более высоких частот, что уменьшит эти цифры. Предполагая, что вы используете 5 В, мы можем с уверенностью сказать, что ваше измерение будет между 1 мкА и 40 мкА.

Теперь нам нужно найти способ превратить 1 мкА в 40 мкА в то, что может измерить твой Arduino. Вот так:

смоделировать эту схему

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

Первый операционный усилитель усиливает разницу на резисторе 10 кОм на 5, потому что он хочет, чтобы напряжение + было на стороне -. На высоком фланге вашего сигнала он увидит разницу, основанную на токе, в положительном направлении. На низком фланге он увидит противоположное, поэтому попытается создать отрицательное напряжение. К счастью, питание от +5 В и заземление не может этого сделать.

Второй операционный усилитель принимает положительные импульсы и усиливает их на 2 через диод. Диод гарантирует, что конденсатор может заряжаться только импульсами и разряжаться с помощью контура обратной связи R7 + R8. Таким образом, разрядка конденсатора емкостью 100 нФ имеет постоянную времени около 0,44 секунды, чтобы разряжаться до 37%, что немного замедляет работу, но дает хорошее выпрямление для сигналов от 100 Гц до 10 кГц. Зарядка также может занять немного времени, поскольку операционный усилитель может не полностью зарядить конденсатор в первые несколько импульсов, но я не думаю, что вы заметите эту разницу.

Если вам нужно, чтобы все было быстрее, вы можете немного уменьшить конденсатор, просто убедитесь, что разрядная постоянная RC (значение R умножено на значение C) меньше 1/5 от частоты источника, которую вы в конечном итоге используете.

Я выбрал TL051A, потому что он имеет хороший и низкий входной ток смещения, низкое входное напряжение смещения (менее 1 мВ) и хорошую выходную скорость нарастания (20 В / мкс), а также ширину полосы единого усиления, более чем в 50 раз превышающую самую высокую рассматривали. Еще одним важным моментом здесь является тот факт, что его входы могут идти вплоть до источника питания. Они не дают хороших результатов на отрицательной шине (поэтому, когда импульс устойчиво выключен), но из его внутренней схемы я ожидаю, что выходной сигнал останется достаточно близким к 0, чтобы не сильно беспокоить.

Он доступен в Farnell примерно за € 1 — в пакетах SMD и DIP, поэтому он вполне подходит для хобби. Я попытался найти Digikey, но функция поиска не сработала.

Вот таблица данных TL051A.

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

Вот таблица данных LM358N

Теперь вы можете сэмплировать сигнал от 0,1 до 4 В для определения утечки измеряемой емкости. При 10-битном АЦП, работающем на 5 В, разрешение в битах составляет около 5 мВ на LSB, поэтому вы должны быть в состоянии измерять достаточно точно.

Измерения малых ёмкостей (аналоговый ёмкостной датчик) / Хабр

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

Разрабатывая хобби-электронику, мне понадобился какой-нибудь простой датчик расстояния на ёмкостном эффекте. Поискав в Интернете, нашёл только датчики касания, но они имеют малое расстояние срабатывания и дискретный выход. Другие же датчики слишком сложные или с долгой настройкой. Нужен был очень простой и дешёвый, работающий от микроконтроллера. Что получилось — под катом…

Схема

После нескольких экспериментов

появилась схема

, на рис. 1.


Рис. 1. Схема. MicroCap10

Как работает

Принцип действия основан на измерении заряда, который накопился на обкладке конденсатора при зарядке. Вторая обкладка – это объект, подносимый к датчику. Для моделирования она показана подключённой к «земле», но это не принципиально.

Обкладка конденсатора подключена к выводу микроконтроллера, который настроен на выдачу меандра частотой 120 — 180 кГц, на схеме это источник напряжения V2. Также, обкладка подключена к базе транзистора Q1. Эмиттер подключён к тому же генератору. Так как выход МК комплементарный, это означает что вывод попеременно подключён то к «+» источнику питания, то к «0». Что происходит в эти полупериоды:

  • На выходе МК лог. 1: Конденсатор быстро заряжается через R1, R2. Так как ёмкость очень мала, можно обойтись без диодного разделения, сопротивление R2 достаточно для полного заряда, и нет паразитной ёмкости диодов. Транзистор закрыт, так как включён в обратном направлении UБЭ<0.
  • На выходе МК лог. 0: Конденсатор С1 разряжается через R3, переход БЭ Q1 и выход МК. Так как эмиттер через вывод МК подключился к «0V», то ток разряда на очень короткое время открывает транзистор. Создаётся ток коллектора на короткое время, определяемое зарядом конденсатора С1.

комплементарный выход

Диод D1 и конденсатор С2 образуют амплитудный детектор – на R5 создаётся напряжение, пропорциональное ёмкости С1. Транзистор Q2 нужен для согласования сопротивлений с АЦП МК. Выходное напряжение снимается с R6.

Результаты моделирования (рис. 2) при номиналах, показанных на схеме. Линейная зависимость примерно сохраняется до 10 пФ.


Рис. 2. График ёмкость — напряжение

При снижении R3 до 2 кОм, увеличивается чувствительность и снижается линейный участок примерно до 0…4 пФ.


Рис. 3. График ёмкость — напряжение

Примечание: подъём графика около 0 пФ – ошибки моделирования, там на самом деле продолжается линейность. Проверено в «железе».

Приведённая схема отличается от других (с диодной развязкой или мостами и неизменным включением БЭ транзистора) тем, что пропорция ёмкость/напряжение имеется почти с 0 пФ, без мёртвой зоны. Также, в схеме задействована только одна обкладка конденсатора.

При выполнении на плате собственная ёмкость схемы намного меньше ёмкости одной обкладки — пластины в 20 см2. Чувствительность датчика: для поднесённой руки примерно на 50 мм к пластине — изменение выходного сигнала более 10%. Расчётное изменение ёмкости около 2 пФ. На сетевые помехи, ЭМП и GSM датчик не реагирует.

Уточнения для реализации

  • Транзисторы должны быть с рабочей частотой от 100 МГц, и минимальной ёмкостью базы (здесь 2 пФ).
  • Диод D1 – высокочастотный типа BAV99, ёмкость единицы пФ.
  • С2 в диапазоне 10 – 30 нФ, больше не надо, растёт ток вывода МК. Для сглаживания импульсов можно поставить конденсатор параллельно R6
  • Резистор R1 в 100 Ом ограничивает ток вывода МК, импульсный 5мА, средний 0,2 мА.
  • Микроконтроллер в данной схеме – Atmega8A, выход меандр 166 кГц, АЦП его же. Увеличение частоты выше 300 кГц не рекомендуется, из-за влияния паразитных ёмкостей.

Кто реализует и применит в своих поделках — отпишитесь, интересно.

Альтернативное применение.

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

Сенсорную пластину взял 40х60 мм, хорошо замотав в 4 слоя сантехнического скотча (допустим, герметизировал). Собственная ёмкость возросла, пришлось поменять номиналы в схеме, снизив чувствительность до уровня 15 пФ. Новая схема здесь :

Рис. 4. Схема для датчика влажности почвы.

Эксперименты:

Плоской

земли у меня нет, есть песок, который я насыпал в банку объёмом примерно 300 мл. Доливал воды каждый раз примерно по 15…20 мл.


Сухой песок. Собственная ёмкость сенсора.


Песок +20мл воды.


Ещё долил воды и немного утрамбовал.


… и ещё воды.


… и ещё воды.


… и ещё воды.


… и ещё воды. Стало совсем тропически сыро.

Напряжение снимал с R5, поэтому при увеличении ёмкости напряжение увеличивается.
Видно, что ёмкость возрастает при каждом доливе. Однако, то ли песок такой, то ли я не знаю что, но показания увеличиваются сразу при доливе. Я ожидал более плавное изменение U при пропитывании песка водой.

Да, я знаю о сенсорных датчиках для Ардуино с Али. Но мне хотелось разобраться самому и сделать с заданными параметрами.

Прибор для измерения емкости электролитических конденсаторов

Этот измеритель является простым устройством, служащим для измерения емкости электролитических конденсаторов от 1 мФ до 4700 мФ.

Его точность — около 5% — в большей мере зависит от точности исполнения и градуировки.

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

Принцип действия устройства следующий: измеряемый конденсатор Сх заряжается током от регулируемого источника с транзистором Т2 и разряжается импульсами через транзистор Т1.

Среднее значение напряжения Ucx зависит от емкости Сх, а также от силы тока, подаваемого от источника. Это напряжение сравнимо с напряжением смещения на компараторе, который сигнализирует момент совпадения этих двух напряжений путем загорания светодиода. Значение емкости считывается со шкалы потенциометра, регулирующего силу тока источника.

Конструкция измерителя основана на двух операционных усилителях, входящих в состав интегральной схемы LM324. Один из них (ІС1а) играет роль генератора управляющих импульсов Т1.

Второй является компаратором, который сравнивает напряжение диода D2 (напряжение смещения) с напряжением на измеряемом конденсаторе и в зависимости от результата сравнения вызывает пульсирующее или постоянное свечение светодиода D1.

Детали и налаживание

ІС1LM324
Т2ВС307
Т1ВС21ЕВС337
R11 МОм
R233 кОм
R3, R6100 кОм
D1подходящий светодиод
D21N4148
C1100 мкФ/16 В
C24,7 мкФ/16 В
P147-100 кОм
P24,7 кОм
R4, R710 кОм
R5, R81 кОм
R9120 Ом
R102,7 кОм
R1122 кОм
R1215 кОм
R13240-330 Ом

Аккуратно собранная, согласно схеме, система начинает работать сразу, требуя только градуировки образцами конденсаторов известной емкости.

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

Питание устройства осуществляется от стабилизированного источника напряжением 9 В. Потребляемый ток не превышает 20-30 мА, отсюда возможность питания устройства от батареи элементов.

Источник: ВРЛ — 100 лучших радиоэлектронных схем, 2004.

Измеритель емкости на AVR

 

Этот измеритель емкости может измерять емкость конденсаторов с разрешением 1 пФ в нижнем конце диамазона. Максимальная измеряемая емкость —  10000 мкФ. Реальная точность не известна, но линейная ошибка лежит в пределах максимум 0.5 % , и обычно меньше 0.1% (получено измерением параллельно подключенных нескольких конденсаторов). Наибольшие затруднения возникают при измерении электролитических конденсаторов большой емкости.

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

Измеритель емкости имеет систему меню, которая в том числе позволяет откалибровать нулевое значение и емкость в 1 мкФ. Калибровка сохраняется в EEPROM.

Для проекта был выбран один из самых маленьких чипов — Атмега8. Схема питается от 9-вольтовой батарейки через линейный регулятор 7805.

 

Прибор может работать в трех режимах: измерение в нижнем диапазоне, в верхнем диапазоне, и в режиме разрядки. Эти режимы определяются состоянием выводов  PD5 и PD6 контроллера. Во время разрядки PD6 имеет лог. 0 и кондерсатор разряжается через резистор R7 (220 Ом). В верхнем диапазоне измерений PD5 имеет лог. 1, заряжая конденсатор через R8 (1.8K) и PD6 находится в Z-состоянии чтобы позволить аналоговому компаратору сравнивать напряжение. В нижнем диапазоне измерений PD5 также находится в Z-состоянии, и конденсатор заряжается только через R6 (1.8MОм).

В качестве индикатора может использоваться любой дисплей на контроллере HD44780 размером 16×2 символов. Разводка коннектора дисплея показана на этом рисунке:

Устройство собрано на макетной плате и размещено в простом прямоугольном пластиковом корпусе. В крышке корпуса вырезаны отверстия под индикатор, кнопку и светодиод, которые закреплены термоклеем:

 

Программа измерителя емкости

В устройстве можно использовать контроллера atmega8 и atmega48/88/168 семейства. При замене контроллера в программе нужно изменить строку, отвечающую за конфигурацию таймера конкретного контроллера.

Скачать программу

 

 

 

Цифровой измеритель ёмкости – Радиодед

С помощью данного измерителя ёмкости можно легко измерить любую ёмкость от единиц пФ до сотен мкФ. Существует несколько методов измерения емкости. В данном проекте используется интеграционный метод.

 

Главное преимущество использования этого метода в том, что измерение основано на измерении времени, что может быть выполнено на МК довольно точно. Этот метод очень подходит для самодельного измерителя ёмкости, к тому же он легко реализуем на микроконтроллере.

Принцип работы измерителя ёмкости

Явления, происходящие при изменении состояния схемы называются переходными процессами. Это одно из фундаментальных понятий цифровых схем. Когда ключ на рисунке 1 разомкнут, конденсатор заряжается через резистор R, и напряжение на нём изменятся как показано на рисунке 1b. Соотношение определяющее напряжение на конденсаторе имеет вид:

Величины выражены в СИ единицах, t секунды, R омы, C фарады. Время за которое напряжение на конденсаторе достигнет значения VC1 , приближенно выражается следующей формулой:

Из этой формулы следует, что время t1 пропорционально емкости конденсатора. Следовательно, ёмкость может быть вычислена из времени зарядки конденсатора.

Схема

Для измерения времени зарядки, достаточно компаратора и таймера микроконтроллера, и микросхемы цифровой логики. Вполне разумно использовать микроконтроллер AT90S2313 (современный аналог – ATtiny2313). Выход компаратора используется как триггер TC1. Пороговое напряжение устанавливается резисторным делителем. Время зарядки не зависит от напряжения питания. Время зарядки определяется формулой 2, следовательно оно не зависит от напряжения питания т.к. соотношение в формуле VC1/E определяется только коэффициентом делителя. Конечно, вовремяизмерениянапряжениепитаниядолжнобытьпостоянно.

Формула 2 выражает время зарядки конденсатора от 0 вольт. Однако с напряжением близким к нулю сложно работать из-за следующих причин:

  • Напряжение не падает до 0 Вольт. Для полной разрядки конденсатора необходимо время. Это приведет к увеличению времен иизмерения.
  • Необходимо время между стартом зарядки и запуском таймера. Это вызовет погрешность измерения. Для AVRэто не критично т.к. на это необходим всего один такт.
  • Утечка тока на аналоговом входе. Согласно даташиту AVR, утечка тока возрастает при напряжении на входе близком к нулю вольт.

Для предотвращения данных сложностей использовано два пороговых напряжения VC1(0.17 Vcc) и VC2(0.5 Vcc). Поверхность печатной платы должна быть чистой для минимизации токов утечки. Необходимое напряжение питания микроконтроллера обеспечивается DC-DCпреобразователем,работающего от 1.5VAA батарейки. Вместо DC-DC преобразователя, желательно использовать 9V батарейку и преобразователь 78L05, желательно также не выключать BOD, иначе могут возникнуть проблемы с EEPROM.

 

Калибровка

При первом включении устройства, на семисегментных индикаторах загорится значение ёмкости в несколько пФ (паразитная ёмкость). Необходимо провести калибровку устройства. Для этого необходимо два конденсатора 1nF и 100nF сдопуском ±1%.

Для калибровки нижнего диапазона: С помощью кнопки SW1. Затем, соедините pin #1 и pin #3 на разъёме P1, вставьте конденсатор 1nF и нажмите SW1.

Для калибровки верхнего диапазона: Замкните pin #4 и #6 разъёма P1, вставьте конденсатор на 100nFи нажмите SW1.

Надпись “E4” при включении означает, что калибровочное значение в EEPROM не найдено.

Использование

Автоматическое определениедиапазона

Зарядка начинается через резистор 3.3М. Если напряжение на конденсаторе не достигнет 0.5 Vccменее чем за 130 mS (>57nF), происходит разрядка конденсатора и новая зарядка, но уже через резистор 3.3кОм. Если напряжение на конденсаторе не достигает 0.5 Vccза 1 секунду (>440µF),надпись “E2”. Когда время замерено, происходит вычисление и отображение ёмкости. Последний сегмент отображает диапазон измерения (pF, nF, µF).

Зажим

В качестве зажима можно использовать часть какого-нибудь сокета. При измерении малых ёмкостей (единицы пикофарад) использование длинных проводов нежелательно.

 

Схема Elm-Chan`а, http://elm-chan.org/works/cmc/report.html – описание на английском.

Спасибо, htscooter! Он прислал печатную плату в SprintLayout 5.0 и фотки.

Спасибо, maxim, за прошивку для ATtiny2313.

Просмотров всего: 2 695, сегодня: 1

Измеритель емкости Arduino

Измеритель емкости

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

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

Простые цифровые мультиметры

(DMM) не могут измерять емкость, и для ее определения вам нужно либо использовать продвинутый, дорогой цифровой мультиметр, либо специальные модули измерения емкости.

Специализированные измерители емкости часто поставляются с широким спектром измерений различных параметров, таких как емкость, индуктивность, сопротивление, hFE транзистора и т. Д.

В этом проекте мы попытаемся построить простой измеритель емкости Arduino для двух различных диапазонов емкостей.Одна схема будет использоваться для измерения емкости в диапазоне от 1 мкФ до 4700 мкФ. Другая схема будет использоваться для измерения меньшей емкости, то есть в диапазоне от 20 пФ до 1000 нФ.

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

Измеритель емкости для диапазона от 1 мкФ до 4700 мкФ

Схема
Схема

Необходимые компоненты
  • Arduino UNO [Купить]
  • ЖК-дисплей 16 x 2 [Купить здесь]
  • Потенциометр 10 кОм
  • Резистор 10 кОм (1/4 Вт)
  • Резистор 220 Ом (1/4 Вт)
  • Макет
  • Соединительные провода
  • Блок питания
  • Тестируемый конденсатор
Принцип работы

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

Принцип, лежащий в основе этого измерителя емкости, заключается в одном из основных свойств конденсатора: постоянной времени. Постоянная времени (обозначаемая греческим алфавитом Tau — τ) определяется как время, необходимое для зарядки конденсатора (C) через резистор (R) до достижения 63,2% максимального напряжения питания.

В качестве альтернативы, постоянная времени (τ) конденсатора также может быть определена как время, необходимое полностью заряженному конденсатору C для разряда до 36.8% от его максимального напряжения через резистор R.

.

Конденсаторы меньшего размера будут иметь меньшую постоянную времени, поскольку им требуется меньше времени для зарядки. Точно так же конденсаторы большего размера будут иметь более высокие постоянные времени.

Математически, постоянная времени TC или τ = R x C (τ = RC).

Здесь τ или TC — постоянная времени конденсатора в секундах (с), C — емкость конденсатора в фарадах (F), а R — сопротивление резистора в омах (Ω).

Следующая схема и график покажут вам кривую постоянной времени для конденсатора C, заряжающегося до напряжения питания V через резистор R.

Мы используем ту же концепцию в нашем измерителе емкости на базе Arduino. Мы зарядим неизвестный конденсатор через известное сопротивление с помощью выводов Arduino и рассчитаем время, необходимое для достижения 63,2% напряжения питания (примерно 3,1 В). Исходя из времени, мы можем рассчитать емкость по формуле C = τ / R.

Мы будем использовать резистор 10 кОм для зарядки конденсатора и резистор 220 Ом для его разрядки. Контакты для зарядки и разрядки на Arduino — 8 и 9 соответственно.Напряжение на конденсаторе измеряется с помощью вывода A0 аналогового входа.

Сначала мы разрядим конденсатор с помощью контакта 9 (установив его как ВЫХОД и НИЗКИЙ), чтобы убедиться, что конденсатор не заряжен. Затем мы запустим таймер и зарядим конденсатор, используя контакт 8 для заряда (установив его как ВЫХОД и ВЫСОКИЙ).

Теперь мы должны контролировать напряжение на конденсаторе на аналоговом выводе, и как только оно достигнет 63,2% от 5 В (примерно 648 от аналогового вывода), мы должны остановить таймер и вычислить емкость.

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

Код

Измеритель емкости для диапазона от 20 пФ до 1000 нФ

Схема
Схема

Необходимые компоненты
  • Ардуино UNO
  • ЖК-дисплей 16 x 2
  • Потенциометр 10 кОм
  • Тестируемый конденсатор
  • Соединительные провода
  • Макет
  • Блок питания
Принцип работы

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

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

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

Здесь CT — это проверяемый конденсатор, а CI — внутренний конденсатор. Нам не нужно беспокоиться о внутреннем конденсаторе, его значение может быть от 20 до 30 пФ. Неизвестный конденсатор подключен между A2 и A0 (положительный вывод к A0 в случае поляризованного конденсатора). Здесь A2 действует как зарядный штифт, а A0 действует как разрядный штифт.

Сначала мы зарядим неизвестный конденсатор, установив для A2 значение HIGH, и измерим напряжение на A0 по следующей формуле.

VA0 = (VA2 X CT) / (CT + CI)

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

CT = (CI X VA0) / (VA2-VA0)

Код
Преимущества
  • Это простой измеритель емкости на базе Arduino с очень меньшими требованиями к оборудованию.
  • Проект может использоваться для измерения любой емкости в диапазоне от 20 пФ до 4700 мкФ.
Недостатки
  • Результаты могут быть неточными.
  • Для получения точных результатов рекомендуется использовать цифровые мультиметры, которые могут измерять емкость.
Приложения
  • Измеритель емкости может использоваться для измерения емкости неизвестных конденсаторов.
  • Использование Arduino для измерителя емкости упрощает реализацию проекта, а с небольшими изменениями схема может быть создана для широкого диапазона конденсаторов.
Строительство и производство

Рекомендуем прочитать:

Измеритель емкости

на базе Arduino

/ *************************************** *****************************

*

* Измеритель емкости на базе Arduino.

* Значение емкости отображается на ЖК-дисплее 16×2.

* Это бесплатное программное обеспечение БЕЗ ГАРАНТИЙ.

* https://simple-circuit.com/

*

******************************* ************************************** /

#include // включить библиотеку ЖК-дисплея Arduino

// подключения модуля ЖК-дисплея (RS, E, D4, D5, D6, D7)

LiquidCrystal lcd (2, 3, 4, 5, 8, 9);

#define разгрузочный_pin A1

#define channel0_pin A2

#define channel1_pin A3

#define channel2_pin A4

// переменные

bool ok;

байт ch_number;

const uint32_t res_table [3] = {1000, 10000, 100000};

uint32_t res, t_mul;

char _buffer [9];

пустая настройка (недействительна) {

Последовательный.begin (9600);

ЖК начало (16, 2); // устанавливаем количество столбцов и строк ЖК-дисплея

lcd.setCursor (0, 0); // перемещаем курсор в столбец 0, строку 0 [позиция (0, 0)]

lcd.print («Capacitance =»);

pinMode (разгрузочный_контакт, ВЫХОД);

digitalWrite (разряд_контакт, LOW);

// Конфигурация модуля Timer1

TCCR1A = 0;

TCCR1B = 0;

ТИМСК1 = 1; // разрешить прерывание переполнения таймера 1

ADCSRA = 0x04; // отключаем модуль АЦП

ADMUX = 0x45; // выбираем канал 5

ADCSRB = (1 << ACME); // отрицательный вход компаратора поступает от мультиплексора АЦП

ACSR = 0x12; // настраиваем аналоговый компаратор и его прерывание (прерывание по заднему фронту)

ch_number = 2;

}

// аналоговый компаратор ISR

ISR (ANALOG_COMP_vect) {

TCCR1B = 0; // отключить Timer1

// отключить все контакты зарядки

pinMode (channel0_pin, INPUT);

pinMode (channel1_pin, INPUT);

pinMode (channel2_pin, INPUT);

// начинаем разряжать конденсатор

pinMode (digit_pin, OUTPUT);

digitalWrite (разряд_контакт, LOW);

ок = 1; // процесс завершен

ACSR & = ~ 0x08; // отключение прерывания аналогового компаратора

}

// Переполнение таймера 1 ISR

ISR (TIMER1_OVF_vect) {

t_mul ++;

if (ch_number! = 0) {

ch_number = 0;

ch_select (ch_number);

}

}

// основной цикл

void loop () {

// сбросить все

TCNT1 = 0;

t_mul = 0;

ок = 0;

// ждем разрядки конденсатора

ADCSRA | = 0x80; // включить АЦП

uint16_t volt;

do {

ADCSRA | = 1 << ADSC; // запускаем преобразование

while (ADCSRA & 0x40) delay (1); // ждем завершения преобразования

вольт = ADCL | ADCH << 8; // считываем аналоговые данные

} while (volt> 0);

ADCSRA & = ~ 0x80; // отключаем АЦП

delay (100);

// отсоединить вывод разрядки

pinMode (разряд_контакт, INPUT);

ACSR | = 0x08; // разрешить прерывание аналогового компаратора

TCCR1B = 1; // запускаем Timer1 с предделителем = 1 (1 тик каждые 62.5 нс)

ch_select (ch_number);

в то время как (ok == 0) задержка (1); // ждем завершения процесса (зарядки конденсатора)

int32_t _time = 65536 * t_mul + TCNT1;

колпачок uint32_t;

if (ch_number == 0)

cap = -62,5 * _time / (res * log (0,5)); // ограничение указано в нФ

else {

_time — = 385; // корректируем

if (_time <0) _time = 0;

кап = -62500.0 * _time / (res * log (0.5)); // ограничение указано в пФ

}

if ((ch_number == 1 && cap <10000) || (ch_number == 0 && cap <10))

ch_number = 2;

if ((ch_number == 2 && cap> 12000) || (ch_number == 0 && cap <500))

ch_number = 1;

if (ch_number! = 0) {

if (cap <1000) // if cap <1000 pF = 1 nF

sprintf (_buffer, «% 03u pF», (uint16_t) cap);

else

sprintf (_buffer, «% 03u nF», (uint16_t) (cap / 1000)% 1000);

}

else {

if (cap <1000000) // if cap <1000000 nF = 1000 мкФ

sprintf (_buffer, «% 03u.% 1u uF «, (uint16_t) (cap / 1000), (uint16_t) (cap / 100)% 10);

else

sprintf (_buffer,»% u uF «, (uint16_t) (cap / 1000)) ;

}

lcd.setCursor (0, 1); // перемещаем курсор в позицию (0, 1)

lcd.print (_buffer);

Serial.print («Capacitance =»);

Serial.println (_buffer); Serial.println ();

delay (1000); // ждать секунду

}

void ch_select (byte n) {

switch n) {

case 0:

pinMode (channel1_pin, INPUT);

pinMode (channel2_pin, INPUT);

pinMode (channel0_pin, OUTPUT);

digitalWrite (channel0_pin, HIGH2 9000);

случай 1:

pinMode (channel0_pin, INPUT);

pinMode (channel2_pin, INPUT);

pinMode (channel1_pin, OUTP UT);

digitalWrite (channel1_pin, HIGH);

перерыв;

корпус 2:

pinMode (channel0_pin, INPUT);

pinMode (channel1_pin, INPUT);

pinMode (channel2_pin, ВЫХОД);

digitalWrite (channel2_pin, HIGH);

}

res = res_table [n];

}

// конец кода.

Как выбрать сопротивление для измерителя емкости Arduino?

Измеритель емкости Arduino — это устройство, которое позволяет вам тестировать несколько аспектов (например, напряжение, ток и многие другие) как электронного, так и электрического устройства.

Итак, совершенно необходимо, чтобы вы понимали механику этого устройства. И хорошая новость в том, что это легко сделать.

С помощью нашей статьи вы узнаете о лоте все, в том числе:

  1. Как выбрать сопротивление для измерителя емкости Arduino?
  2. Что это?
  3. Поля, в которых можно использовать единицу
  4. Преимущества и недостатки

И еще несколько вещей.Короче говоря, к концу этой статьи у вас будет четкое представление обо всем, что вам нужно, чтобы узнать о продукте. Итак, приступим?

Как выбрать сопротивление для измерителя емкости Arduino?

Измерители емкости Arduino обычно состоят из RC-цепей (цепи резисторов-конденсаторов). Вот как можно выбрать себе сопротивление:

Шаг-1 (Схема)

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

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

Шаг-2 (Формула)

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

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

Затем нужно подключить резисторы к цепи. Чтобы дать правильную ссылку, для 0.1F — 3900F, первый резистор должен иметь сопротивление 10 кОм, а второй — 220 Ом.

Что такое измеритель емкости Arduino?

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

Ардуино

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

Измеритель емкости

Что ж, как следует из названия, такой измеритель позволит вам обеспечить правильные и точные измерения емкости конденсаторов в цепи.Обычно измерения проводятся на дискретном количестве конденсаторов.

Измеритель емкости Arduino

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

Места, в которых можно использовать измеритель емкости Arduino

Теперь, когда мы знаем, что это такое и как его создать, позвольте нам потратить еще немного времени на его использование.Есть несколько областей, в которых вы можете использовать измеритель емкости Arduino. Позвольте нам узнать их для вас:

1. Измерение емкости

Бывают случаи, когда вам требуется емкость. Это может быть для определенных проектов, основанных на сигналах, и многих других типов вещей. Во всяком случае, это совсем не сложно. Используя измерение емкости Arduino, вы можете выяснить все напрямую и без каких-либо проблем.

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

2. Калибровка сопротивления

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

Вам известна постоянная времени и емкость. Смените тему, и вы точно сможете измерить сопротивление.

3.Выходное напряжение и мощность

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

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

И вы должны знать выходную мощность.

4. Определение частоты и длины волны

Это немного более сложный расчет. Однако вы можете использовать устройство и для этого.

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

Плюсы
  • Вы можете использовать устройство для измерения различных аспектов цепи
  • Из-за чипа Arduino вероятность ошибки значительно снижена
  • Использовать это электронное устройство очень просто.Все, что вам нужно сделать, это подключить его к устройству, которое вы пытаетесь измерить
  • Изделие очень легкое, поэтому переносить его и хранить очень легко.
  • Вы можете сделать такой продукт без каких-либо проблем, и вы можете приобрести и прикрепить чип Arduino
Минусы
  • Аппарат довольно дорогой
  • Обязательно используйте его с большой осторожностью, так как он очень хрупкий и чувствительный.
Заключительные слова

Есть много способов использовать это устройство в своих интересах.Все, что вам нужно сделать, это понять , как выбрать сопротивление для измерителя емкости Arduino , его работу и основы. Как только вы их изучите, мы можем заверить вас, что вы сможете использовать это чудо практически во всех областях.

Артикул:

  1. https://www.circuitbasics.com/how-to-make-an-arduino-capacitance-meter/

Проект измерителя емкости Arduino — Инженерные проекты

#include

LiquidCrystal lcd (12, 11, 7, 6, 5, 4);

непостоянные длинные микросекунды без знака;

летучая плавающая емкость;

int CapPf = 9;

int CapUf = 10;

const int Cap_Out = A2;

const int Cap_In = A0;

const float Stray_Cap = 24,48;

const float Cap_GND = Stray_Cap;

const float Pullup_Res = 34,8;

const int ADC_Value = 1023;

void setup () {

lcd.begin (16, 2);

pinMode (2, ВХОД);

pinMode (CapPf, INPUT);

pinMode (CapUf, INPUT);

pinMode (Cap_Out, OUTPUT);

pinMode (Cap_In, OUTPUT);

Serial.begin (9600);

lcd.setCursor (0,0);

lcd.print («Емкость»);

lcd.setCursor (0,1);

lcd.print («Счетчик»);

задержка (2000);

}

void cap () {

микросекунд = микросекунды () — микросекунды;

емкость = 1.443 * микросекунды / 300;

емкость = емкость / 1000;

Serial.print (емкость, 3);

Serial.println («мкФ»);

lcd.clear ();

lcd.setCursor (0,0);

lcd.print («Диапазон: 1 мкФ-1 мФ»);

lcd.setCursor (0, 1);

lcd.print (емкость, 3);

lcd.print («мкФ»);

микросекунды = микросекунды ();

}

void loop () {

if (digitalRead (CapUf))

{

attachInterrupt (0, cap, RISING);

}

if (digitalRead (CapPf))

{

lcd.Чисто();

pinMode (Cap_In, INPUT);

digitalWrite (Cap_Out, HIGH);

int val = analogRead (Cap_In);

digitalWrite (Cap_Out, LOW);

if (val <1000)

{

pinMode (Cap_In, OUTPUT);

емкость с плавающей запятой = (float) val * Cap_GND / (float) (ADC_Value —

val);

lcd.setCursor (0,0);

ЖК.print («Диапазон: 1пФ-1нФ»);

lcd.setCursor (0,1);

lcd.print (емкость, 3);

lcd.setCursor (14,1);

lcd.print («пФ»);

задержка (200);

}

else

{

pinMode (Cap_In, OUTPUT);

задержка (1);

pinMode (Cap_Out, INPUT_PULLUP);

беззнаковое длинное u1 = micros ();

беззнаковое длинное t;

int digVal;

до

{

digVal = digitalRead (Cap_Out);

беззнаковое длинное u2 = micros ();

t = u2> u1? u2 — u1: u1 — u2;

}

в то время как ((digVal <1) && (t <400000L));

pinMode (Cap_Out, INPUT);

val = аналоговое чтение (Cap_Out);

digitalWrite (Cap_In, HIGH);

int разгрузочное время = (int) (t / 1000L) * 5;

задержка (Время разряда);

pinMode (Cap_Out, OUTPUT);

digitalWrite (Cap_Out, LOW);

digitalWrite (Cap_In, LOW);

емкость с плавающей запятой = — (с плавающей запятой) t / Pullup_Res / log (1.0 — (float) val / (float) ADC_Value);

lcd.setCursor (0,0);

lcd.print («Масштаб: 1пФ-1нФ»);

if (емкость> 1000,0)

{

lcd.setCursor (0,1);

lcd.print (ёмкость / 1000,0, 2);

lcd.setCursor (14,1);

lcd.print («мкФ»);

задержка (200);

}

остальное

{

ЖК.setCursor (0,1);

lcd.print (емкость);

lcd.setCursor (14,1);

lcd.print («нФ»);

задержка (200);

}

}

в то время как (micros ()% 1000! = 0);

}

}

(PDF) Система измерения емкости с использованием RC-цепи

  

     

      

 

Доклад конференции

Система измерения емкости с использованием

RC-цепи

Wisnu Djatmiko

           

Абстракция

             

          

              

            

           

           

             

           

          

 

             

            

                 

              

 

Ключевые слова:        

1.Введение

           

              

          

            

              

             

         ​​    

            

            

       

Как цитировать эту статью           3-я Международная конференция UNJ по

Техническое и профессиональное образование и обучение 2018           

 

  



   

    

   

Издательские услуги предоставляет

Знание E

    

    

  

   

   

    

    

 

   

     

  



Автоматический выбор диапазона КЭ метр с ЖК-дисплеем · Один транзистор

Используйте Arduino для измерения постоянной времени RC-цепи с известным резистором.Вычислите емкость от 500 пФ до более 10 000 мкФ.

Измеритель емкости — полезный прибор для проверки. А поскольку мой мультиметр слишком хреновый, чтобы получать постоянные показания, я решил сделать свой собственный измеритель, особенно для больших емкостей. С платой для разработки Arduino, дисплеем и некоторыми резисторами измеритель емкости был почти построен. Требовалось соответствующее программное обеспечение для зарядки и разрядки конденсатора, затем измерения постоянной времени и вычисления емкости. Значение конденсатора можно определить, поместив его либо в генератор L-C и измерив частоту, либо в цепь R-C и измерив постоянную времени.Хотя для первого метода требуются некоторые дополнительные детали и он сложен с точки зрения программного обеспечения, он позволяет измерять небольшие емкости, а также индуктивности (с использованием конденсатора известного номинала и расчета индуктивности).

В этом проекте используется второй метод с RC цепью. Если напряжение подается на цепь последовательного резистора-конденсатора, последний стремится достичь напряжения питания на своих выводах (он заряжается). Для зарядки требуется время, зависящее от номинала последовательного резистора и конденсатора. Следует отметить, что конденсатор потребляет ток, поскольку он изменяет напряжение на своих выводах.Следующая схема выполняет как зарядку, так и разряд конденсаторов. Однако измерения производятся только во время зарядки. Функция разряда позволяет Arduino выполнять несколько измерений одного и того же конденсатора, не вынимая его из этой цепи.

Измеритель емкости на макетной плате

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

Схема измерителя емкости Arduino

Вот как я все подключал. Но нет никаких ограничений в сохранении той же схемы подключения. За исключением резистора 10 кОм, который должен подключать к аналоговому выводу, все остальные резисторы и дисплей можно подключить к любому цифровому выводу Arduino.

Резистор 220 Ом предназначен только для разряда конденсатора. Чем ниже значение, тем быстрее происходит разрядка.Но это означает больший ток. При питании 5 В максимальный ток разряда составляет 22 мА, что безопасно для вывода микроконтроллера. Не используйте резистор меньшего размера! Резистор на 1 кОм используется для зарядки больших (микрофарад) конденсаторов. Если эта зарядка происходит менее чем за 1 миллисекунду, конденсатор разряжается через резистор 220 Ом. Вторая попытка измерения конденсатора происходит после отключения резистора 1 кОм и включения резистора 1 кОм. Это подходит для небольших (нанофарад) конденсаторов.Опять же, если для зарядки требуется менее 500 микросекунд, наиболее вероятной причиной является отсутствие подключенного конденсатора (или конденсатора менее 500 пФ). Следует отметить, что цикл, который проверяет аналоговое считывание вывода, занимает на ATmega328 от 116 до 128 микросекунд. Эта задержка измеряется, когда конденсатор не подключен, и используется в качестве поправочного коэффициента при измерении конденсатора.

В скетче есть функция зарядки конденсатора. Он устанавливает соответствующий вывод резистора как выходной с высоким уровнем.Затем он сохраняет текущие микросхем () . Он входит в цикл while () , пока напряжение на конденсаторе не достигнет 63,14 процента напряжения питания (это 646 из максимального значения 1023 ). После разрыва цикла время сохраняется, и разница между ним и временем начала вычисляется как chargeTime в микросекундах. Зарядный резистор отключен, и функция возвращает настроенное значение chargeTime .

long chargeCapacitor (байтовый резисторPin) {
 беззнаковый длинный startTime = 0;
 беззнаковый длинный stopTime = 0;

 // отображение знака зарядки
 ЖКsetCursor (15, 0);
 lcd.write (байт (1));

 // устанавливаем зарядный резистор
 pinMode (resistorPin, ВЫХОД);
 digitalWrite (resistorPin, HIGH);

 // начинаем измерение
 startTime = micros ();
 в то время как (analogRead (A0) <646)
 ;
 stopTime = micros ();

 long chargeTime = stopTime - startTime;

 // отключаем резистор
 pinMode (resistorPin, INPUT);

 // устанавливаем корректировку времени
 если (Время зарядки <500)
 Adjust = 0 - Время зарядки;

 // убираем знак зарядки
 lcd.setCursor (15, 0);
 ЖК-запись ('');

 возврат (время зарядки + регулировка);
}
 

Поправочный коэффициент для времени зарядки рассчитывается после каждой попытки измерения без подключенного конденсатора.Выборка аналогового вывода занимает более 100 микросекунд. Измерение и автоматический выбор диапазона выполняются в другой функции.

void performMeasurement (float & capacity, char & unit) {
 длинный chTime = 0;

 емкость = 0;
 unit = 'u';

 // пытаемся зарядить меньшим резистором
 chTime = chargeCapacitor (PIN_UF);

 // если зарядка была слишком быстрой
 if (chTime <1000) {
 // выполняем быструю разрядку
 pinMode (PIN_DIS, ВЫХОД);
 digitalWrite (PIN_DIS, LOW);
 // конденсатор должен быть меньше 1 мкФ
 // C <1 мкФ, R = 330 => Tdis <5 * 330 * 0.000001 = 1,65 мс
 // полная разрядка происходит менее чем за 2 мс; давай подождем 10
 задержка (10);
 pinMode (PIN_DIS, INPUT);

 // пробуем с большим резистором
 chTime = chargeCapacitor (PIN_NF);
 unit = 'n'; // переключаемся на нанофарады

 if (chTime <500) {// измерение ниже 500 пФ ненадежно
 Adjust = 0 - chTime;
 возвращение;
 }
 }

 если (unit == 'u')
 емкость = время / K_RESISTOR;
 еще
 емкость = chTime / M_RESISTOR;
}
 

Предполагая, что к цепи подключен конденсатор, предпринимается попытка зарядить его резистором 1 кОм.Если он заряжается менее чем за 1000 микросекунд, возможно, это конденсатор нанофарад. Следовательно, он разряжается установкой вывода разрядного резистора на низкий уровень. С резистором 220 Ом пять постоянных времени (5T) занимают менее 2 миллисекунд. Однако функция ждет 10 миллисекунд для полной разрядки. Разрядный резистор отключается, и выполняется вторая попытка зарядки, на этот раз резистором 1 М. Если зарядка занимает менее 500 микросекунд, предполагается, что конденсатор не подключен.

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

Вам известно минимальное значение емкости конденсатора, которое можно измерить: 0,5 нФ. Но какой максимум? Время зарядки измеряется с помощью функции micros () . Значение, возвращаемое этой функцией, переполняется примерно через 70 минут. Таким образом, измеритель емкости может безопасно отсчитывать время до нескольких минут.Недостатком является то, что вам нужно дождаться проведения измерения. При тестировании различных конденсаторов вы заметите, что время измерения пропорционально емкости. Например, конденсатор емкостью 4700 мкФ заряжается до 63 процентов за 4,7 секунды с резистором 1 кОм. И он будет разряжаться через несколько секунд с резистором 220 Ом. Добавьте 0,5-секундную задержку между измерениями, и это означает, что вам придется немного подождать для цикла измерения.

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

Поскольку я не ожидаю, что у зарядного резистора будут точные значения, я добавил поправочные коэффициенты. Это определения для M_RESISTOR и K_RESISTOR . Вы запишите здесь значения резисторов в МОмах для первого и в килоомах для второго, умноженные на 1000 .Эти числа должны быть типа float , поэтому объявляйте их с десятичной точкой.

// задаем здесь поправочные коэффициенты (значение резистора в M и k * 1000.0)
#define M_RESISTOR 1055.0 // значение резистора 1M
#define K_RESISTOR 1042.5 // значение резистора 1 кОм
 

Этот проект вдохновлен учебником Arduino. Ник Гаммон использовал различные методы отсчета времени для повышения точности счетчика. Мой набросок доступен на GitHub.

Сделайте измеритель емкости с использованием ЖК-дисплея 20 * 4 и интерфейса Arduino uno - KT780

В этом проекте мы делаем измеритель емкости, который является устройством, которое используется для измерения емкости конденсатора.

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

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

Специализированные измерители емкости часто поставляются с широким спектром измерений различных параметров, таких как емкость, индуктивность, сопротивление, hFE транзистора и т. Д.

В этом проекте мы попытаемся построить простой измеритель емкости Arduino для двух разных диапазонов емкостей. Одна схема будет использоваться для измерения емкости в диапазоне от 1 мкФ до 4700 мкФ. Другая схема будет использоваться для измерения меньшей емкости, то есть в диапазоне от 20 пФ до 1000 нФ.

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

  • Arduino UNO с USB-кабелем - 1
  • ЖК-дисплей 20 x 4 - 1
  • Потенциометр 10 кОм - 1
  • Резистор 10 кОм (1/4 Вт) - 2
  • Резистор 220 Ом (1/4 Вт) - 2
  • Макетная плата, 400 точек - 1
  • Перемычки (вилка - вилка и вилка - розетка) - по 40 штук
  • Батарея 9 В с разъемом постоянного тока - 1
  • Конденсатор 10 нФ - 2
  • Одножильный провод 2 м - 1

Arduino IDE 1.8.5 (программируемая платформа для Arduino)

Нажмите, чтобы загрузить: https: //www.arduino.cc/en/Main/Software

. 20 * 4 ЖК-ДИСПЛЕЙ
  • ЖК-дисплей Режим: STN, положительный , Полупрозрачный
  • Цвет дисплея: темно-синий / желто-зеленый
  • Угол обзора: 6H
  • Метод вождения: 1/16 нагрузки, 1/5 смещения
  • Подсветка: желто-зеленая светодиодная подсветка
  • Габаритные размеры: 803615.8 MAX

Примечание

  • Цветовой тон может незначительно изменяться в зависимости от температуры и условий движения.
  • Цвет определяется как неактивный / фоновый цвет

20 * 4 ЖК-ДИСПЛЕЙ Функция

Символ

Внешнее соединение

VSS

Источник питания

Заземление сигнала для lcm

VDD

0

0 POWER SUPPLY

0 POWER

0 для LCM

Регулировка контрастности

RS

MPU

Сигнал выбора регистра

RW

MPU

RW

MPU

  • 00 Запись
  • 00
  • MPU

    91 157

    Сигнал разрешения работы

    DB0 ~ DB3

    MPU

    Четыре линии двунаправленной шины низкого порядка с тремя состояниями.Используется для передачи данных между MPU и LCM. Эти четыре не используются между 4-битными операциями.

    DB4 ~ DB7

    MPU

    Четыре двунаправленных линий высокого порядка Три линии шины состояния, используемые для передачи данных между MPU

    A

    KL Power

    Блок питания для BKL

    K

    https: // docs.google.com/document/d/e/2PACX1vT67nfENmvFS5_xSdmC09FY0vekG9QN92UAGKN4IfhtbZ6399qdBoSAV3UHc4FIzuUMcHy4ghQXqJAC/pub

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

    Принцип, лежащий в основе этого измерителя емкости, заключается в одном из основных свойств конденсатора: постоянной времени. Постоянная времени (обозначаемая греческим алфавитом Tau - τ) определяется как время, необходимое для зарядки конденсатора (C) через резистор (R) до 63.2% от максимального напряжения питания.

    В качестве альтернативы, постоянная времени (τ) конденсатора также может быть определена как время, необходимое полностью заряженному конденсатору C для разряда до 36,8% своего максимального напряжения через резистор R.

    Конденсаторы меньшего размера будут иметь меньшую постоянную времени. так как они заряжаются меньше времени. Точно так же конденсаторы большего размера будут иметь более высокие постоянные времени.

    Математически, постоянная времени TC или τ = R x C (τ = RC).

    Здесь τ или TC - постоянная времени конденсатора в секундах (с), C - емкость конденсатора в фарадах (F), а R - сопротивление резистора в омах (Ω).

    Следующая схема и график покажут вам кривую постоянной времени для конденсатора C, заряжающегося до напряжения питания V через резистор R.

    Мы используем ту же концепцию в нашем измерителе емкости на базе Arduino. Мы зарядим неизвестный конденсатор через известное сопротивление с помощью выводов Arduino и рассчитаем время, необходимое для достижения 63,2% напряжения питания (примерно 3,1 В). Основываясь на времени, мы можем рассчитать емкость по формуле C = τ / R.

    Мы будем использовать резистор 10 кОм для зарядки конденсатора и резистор 220 Ом для его разрядки.Контакты для зарядки и разрядки на Arduino - 8 и 9 соответственно. Напряжение на конденсаторе измеряется с помощью вывода A0 аналогового входа.

    Сначала мы разрядим конденсатор с помощью контакта 9 (установив его как OUTPUT и LOW), чтобы убедиться, что конденсатор не заряжен. Затем мы запустим таймер и зарядим конденсатор, используя контакт 8 для заряда (установив его как ВЫХОД и ВЫСОКИЙ).

    Теперь мы должны контролировать напряжение на конденсаторе на аналоговом выводе, и когда оно достигнет 63.2% от 5 В (примерно 648 от аналогового вывода), мы должны остановить таймер и рассчитать емкость.

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

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