C-метр за 5 минут

Это птица!
Нет, это супермен!
Нет, это… NE555!
Озаботился я в свете грядущего мотания катушек повторением LC-метра на компараторе, да вот беда — нет прецизионных конденсаторов и индуктивностей, а без готового LC-метра измерить их нечем. Оказывается, конденсатор померить есть чем — таймером 555 :).
По схеме из википедии собираем автоколебательный (astable) генератор, как можно более точно измеряем сопротивления R1 и R2 и любым способом измеряем частоту генерации. Я использовал (прости меня Боже :)) Arduino + библиотека FrequencyCounter. Ну а далее вспоминаем математику и получаем емкость конденсатора с точностью около 1% + небольшая величина, зависящая от точности измерения резисторов. ИМХО, неплохо.
Нормально измеряются конденсаторы от 1000пФ (меньше уже портится форма сигнала и счетчик дурит) до 1мкФ (больше падает точность из-за малого периода генератора).
Вот как-то так, может кому пригодится :).
  • +2
  • 23 июля 2011, 17:27
  • DareDen

Комментарии (67)

RSS свернуть / развернуть
«Arduino + библиотека FrequencyCounter»
«C-метр за 5 минут»
В моём случаем это растянется недель на 5, ибо на ардуино ещё надо заработать + доставка почто России…
0
www.youtube.com/watch?v=VY0kiJNI5oE

Arduino за 5 минут
0
Здорово, но сути не меняет, детали ещё надо на что-то купить и откуда-то доставить.
0
Детали? Мегу8-то? Да она даже у нас продается! А больше там ничего и нет. Ну кренка может.
0
Страна у нас большая, в моём городе даже светодиодов нет.
0
Это где такой, что магазины беднее единственного магаза нашего мухосранска?
Хотя, с другой стороны, мой город и не самый маленький. В области — третий по размеру. Тогда — придется заказывать. Но уж мегу8-то имеет (почти) каждый уважающий себя колупатель МК :)

Алсо, в ардуйню можно по быстрому превратить пинборд.
0
Да ее и на печатке собрать ненамного дольше (зависит от прокачанности ЛУТа). Что-нить вроде дихальтовской trashduino (сам ее собрать подумываю, лол). Это ведь почти голый контроллер.
0
Можно замутить то же с компом в качестве частотомера. Я ж не настаиваю на Ардуине (просто под рукой было) — например через LPT порт возможно ловить импульсы.
+1
А этот вариант уже получше. =)
0
Через LPT, да не под чистым досом точность будет весьма печальная!..
0
Еще можно под Линкус использовать :). К тому же можно подобрать резисторы (примерно зная нужную емкость), чтоб частота генерации была подходящая.
0
Кстати, с ардуино можно было делать с-метр как у Lifelover'а.
0
  • avatar
  • Vga
  • 23 июля 2011, 22:14
Да, вполне. Ардуину лично я рассматриваю как еще одну отладочную плату :). На робокрафте даже была статья, как ардуину использовать с winavr, без всякого Wiring.
0
Как? Убрать include <Wiring.h>?)
0
Нее, просто писать на C/C++ и загружать используя бутлоадер Ардуины: ссыль.
0
А если учесть, что вайринг от С/С++/WinAVR отличается только дополнительным инклюдом…
0
:) Ну или так.
0
Я вот просто дудкой ардуину (синапрог, если точнее) прошиваю, если хочется на истинном C писать. ИМХО это лучше, чем какой-то самодельной утилитой пользоваться…
0
А это уже не ардуина. Это просто контроллер с выведенными на штыри (или гнезда ли) пинами.
0
Естественно. В статье по ссылке строка для дудки приведена, а всякие C# поделия — ну их нафиг.
0
А что, зашить обычной дудкой обычную мегу8 на обычной, почти голой плате такая сложная задача?
0
Нет конечно :). Но начинающим по образцу прошивать проще — меня до сих пор пугает прошивка фузов ;). Шаг влево-вправо и надо делать HV программирование… Брр… Поэтому то я и возлюбил STM8.
0
На самом деле я имел в виду «такая нестандартная и нигде не описанная задача».
0
Дело в том, что ардуино всегда лежим в сумке, вместе с ноутом, а я с ним, даже на природе не расстаюсь! :)
Сейчас, конечно имея клон AVR ISP mkII, надобности в ардуине, почти нет, зато на ней ft232rl стоит (ради этой микры всю плату, по сути и купил, когда ЛУТ-ом не владел)!
0
А зачем вообще 555, когда есть Ардуино?

Просто берем два GPIO и один резистор. Соединяем ножка-резистор-конденсатор-земля. В точку конденсатор-резистор подключаем вторую ножку. Подаем на первую ножку 0 для гарантии, потом 1, и замеряем время, за которое на второй ножке появится 1. Это в самом простом случае. Естесственно можно:

— мерять интервал таймером
— использовать компаратор и захват таймера
— и т.д., 100500 вариантов оптимизации. Но идея такая.

Зачем 555?
0
Не-не, такое уже делали, мне не нравится. Надо иметь эталонную емкость, либо очень точно измерять временные интервалы для малых емкостей (к тому же метод измерения RC цепочкой неточен сам по себе). А подход с 555 мне нравится тем, что имея омметр мы можем достаточно точно определить емкость, вот в чем смысл. Причем почти без предварительной подготовки — замерили сопротивления, собрали схему, измерили частоту — все.
+1
Наверное, я Вас удивлю, но упомянутая схема на 555 — есть RC генератор, подчиняющийся тому же уравнению. 555 всего лишь заставляет эту RC-цепь работать циклически. А во втором случае мы ее сами дергаем.

Надо иметь эталонную емкость

Зачем?

либо очень точно измерять временные интервалы для малых емкостей

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

к тому же метод измерения RC цепочкой неточен сам по себе

Кто сказал? В нем есть только один главный фактор нестабильности — резистор.

как можно более точно измеряем сопротивления R1 и R2

И оба они вносят погрешность. А в методе с непосредственным подключением RC-цепи к МК — только один резистор.

Так что метод с измерением постоянной времени как раз точнее.
0
Кстати, можно проводить штук десять измерений и усреднять результаты. Так будет еще точнее.
0
Знаете, Мао-дзе-дун как-то сказал: «Пусть расцветают тысячи цветов». Вам нравится RC-цепочка, мне — генератор на ее основе (кстати, в генераторном методе усреднение идет автоматически ;)). Чем больше методов, тем лучше — каждый выберет себе по душе.
0
Просто мне кажется, что Вы перемудрили. :-) А оверинженеринг — нехорошо. Задачу всегда стоит решать с минимально возможными затратами.

кстати, в генераторном методе усреднение идет автоматически

Это зависит от примененной библиотеки.
0
Хоссподя, была бы задача стоящей такого серьезного подхода. Что резистор с кондером тыкнуть в «доску для бреда» :), что микру, два резистора и кондер — все одно паять ЭТО никто не будет, так что убытку никакого. У меня была задача — точно измерить кондер с минимальными временными затратами — я это сделал и поделился с другими.
И в конце-концов «Дяденька, я ж не настоящий сварщик» (с) анекдот :), хобби это у меня.
0
Хоссподя, была бы задача стоящей такого серьезного подхода.

Что может быть серьезнее измерений? :-)

И в конце-концов «Дяденька, я ж не настоящий сварщик» (с) анекдот :), хобби это у меня.

Эх, а я только хотел загнуть про то, чем отличается хардкорный профи от убогого любителя. Ладно, «на первый раз прощаю».
0
Загни лучше про то, чем отличается убогий профи от хардкорного любителя :)
0
Так это просто — убогий профи все знает, но ничего не умеет, а хардкорный любитель все умеет, но ничего не знает. :-D

А вот хардкорный профи все знает и все умеет. :-) Ну, или почти все.
0
Что-то в этом есть.
0
Это все оттого, что т.н. «профи» изготовляются в ВУЗах, где они обычно практически лишены практики. И потому все знают (по крайней мере, должны бы :-) ), но нифига не умеют. Любители обычно не имеют профильного образования, а познают все на опыте. Потому — могут все уметь, но ничего не знать, поскольку систематической теорподготовки чаще всего не получают. И только человек, получивший профильное образование (либо, еще реже, сбалансированное самообразование) но, при этом, многое делавший сам, «для души», может со временем стать настоящим профессионалом экстра-класса.

Скажу честно, я надеюсь, что когда-нибудь таким стану. :-)
0
На самом деле, идея с таймером для калибровки емкости мне кажется интересной. Дело в том, что таймер разработан так, что частота генерации сигнала практически не зависит от напряжения питания схемы. Конечно, получить точность 1% — это вряд-ли (даже, если омметр измеряет сопротивление с такой точностью) — есть куча других погрешностей — тот же входной ток микросхемы. Но тут хоть один точный резистор. А в измерителе с микроконтроллером — все хуже -требуется либо несколько точных резисторов, либо надо придумывать что-то с АЦП, и тоже калибровать его. Может это действительно неплохая идея?
0
:) Я надеюсь, что идея неплохая. 1% это минимально возможная погрешность, так прописано в даташите на таймер. Может, кстати, кто из счастливых обладателей точного C-метра, проведет эксперимент :).
0
1% — это если погрешности остальных элементов равны 0. А резистор и частоту с какой погрешностью измеряешь?
0
А входной ток микросхемы и сопротивление разрядного ключа?
Думаю, в лучшем случае получится 2-3%.
0
Все равно хорошо получается :). Прецизионный кондер с погрешностью 2-3% еще поискать надо. А тут практически задарма (без учета термостабильности конечно).
0
А в измерителе с микроконтроллером — все хуже -требуется либо несколько точных резисторов, либо надо придумывать что-то с АЦП, и тоже калибровать его. Может это действительно неплохая идея?

Так постоянная времени RC-цепи не зависит от приложенного напряжения. Или я что-то путаю?

В предложенной схеме, кстати, тоже необходимы прецезионные резисторы.
0
А я не о постоянной времени. Я о времени заряда до порогового напряжения (и как его калибровать — это напряжение?)
0
А в таймере все резисторы внутри, и уже напылены так, что они одинаковы (с точностью тот самый 1%)
0
Хотя, наверное, если к компаратору подключить АЦП, то можно измерять пороговое напряжение и напряжение питания, считать пропорцию и, далее, учитывать это при расчетах.
Вообщем, нужно рисовать схему и пытаться прсчитать математику.
0
А в таймере все резисторы внутри

??? В 555? ЕМНИП, там для генератора требуется два внешних резистора.

Логика обладает пороговыми свойствами. Кроме того, в МК есть встренная неплохая опора.
0
Там внутри три одинаковых резистора между питанием, выводами компараторов и землей.
Поэтому пороги компаратов установлены с высокой точностью 1/3 питания и 2/3 питания. И поэтому частота не зависит от напряжения питания. У DareDen есть только возможность подобрать точные резисторы 1% продаются везде). Поэтому он может попытаться вытащить себя за волосы.
У МК есть встроенная опора. Но ее напряжение может варьироваться в широких пределах. Померить ее напряжение, как и напряжение питания с высокой точностью не удастся (китайским тестером???).
Для измерения периода RC-цепочку нужно будет подключить ко входу встроенного компаратора.
На другом входе — сформировать пороговон напряжение. И хмерять встроенным АЦП это пороговое напряжение и напряжение питания, и их соотношение использовать при расчете времени заряда. Только там будет еще куча граблей. Я сейчас не за своим компьютером (за моим жена), а то можно было бы все нарисовать и продумать.
0
Хотя если порог задать теми-же точными резисторами, может быть что-нибудь и получится. Но с таймером мне интуитивно пока больше нравится. Надо подумать.
0
Там внутри три одинаковых резистора между питанием, выводами компараторов и землей.
Поэтому пороги компаратов установлены с высокой точностью 1/3 питания и 2/3 питания.

Это я знаю. Но внешние резисторы все равно нужны и все равно влияют.

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

А 1% резисторы сейчас не проблема — сколько раз мне их в магазине давали только потому, что из данного номинала были только такие. Когда покупал хуже 5% — вообще не помню уже.
0
Я тоже всегда стремлюсь сделать проще — мания такая — минимализм. Но, я уверен, с контроллером не получится такой же точности. Попоэже я нарисую схему и покажу, почему. Скажу только, что огромным преимуществом схемы с таймером, кроме минимума деталей, вносящих погрешность (2 резистора и сам таймер), является то, что в ней оба порога срабатывания компараторов точно зафиксированы. На МК мы можем зафиксировать верхний порог. А как зафиксировать нижний (нет гарантий, что разрядная цепь разрядит конденсатор до 0, а не до 0,1 В) — я не знаю. Можно попробовать тоже измерять с помощью АЦП, но пока сказать ничего определенного не могу.
А про 1% резисторы — их купить не проблема, но чем их больше в схеме, тем хуже точность. Попозже я прикину устройство — может быть что-то и получится.
0
А как зафиксировать нижний (нет гарантий, что разрядная цепь разрядит конденсатор до 0, а не до 0,1 В) — я не знаю.

Переключить ту ногу, которая должна мерять (и потому напрямую подключена к конденсатору) на выход, и подать на нее ноль.

но чем их больше в схеме, тем хуже точность.

Именно. В схеме с МК их будет меньше. Два — чтобы задать порог компаратора, и еще один, через который заряжать конденсатор. А в схеме с 555 — как минимум пять, считая внутренние.
0
Чтобы не спалить ненароком ногу, можно сначала где-то секунду разряжать через резистор, а потом, для гарантии, заземлить конденсатор второй ногой.
0
Мужики, а вы уверены, что будет 0 (0 Вольт)?
Внутренние — не в счет — они сделаны в едином технологическом цикле и относятся к таймеру.
0
Будет, будет. А вот «1» и правда до +5 не дотягивает. Ох, сейчас переборю лень, нарисую «честную» схему на МК и опишу алгоритм.
0
Итак,



1. Готовим конденсатор:

Держим на GPIO ноль, например, секунду (зависит от максимальной измеряемой емкости).

GPIO/COMP+ в режиме GPIO, подаем на него ноль для гарантии.

2. Начинаем измерение.

Конфигурируем таймер на захват по компаратору.

Подаем на GPIO «1» и разрешаем прерывание.

Все. По прерыванию читаем значение регистра захвата и считаем.
0
А, ну да, ессно, GPIO/COMP+ переключаем в COMP+, и включаем COMP-
0
Вот я тоже до своего компьютера добрался.
Схему я такую же хотел нарисовать. Только не подумал об использовании верхнего GPIO. И, действительно, если все три GPIO переключить на 0, конденсатор разрядится до 0.
0
А вот я не уверен. Не забывайте, что при 5В питания 0,05 В — это 1 %. А если порог сделать 2,5 В, то это 25 мВ.
0
Сколько мерял — всегда 0.00. Там же двухтактный каскад на выходе, и при нуле открывается мосфет на землю.

Полюбому, через сопротивление мосфета конденсатор 100% разрядится до нуля за совершенно пренебрежимое время.

И да, мы же не ждем от этой схемы точности в 1%? :-)
0
Я так понимаю, что ждем. Огород из-за этого городим.
0
Если Вы таки не верите в мосфет, можно подключить компаратор одним входом изнутри к земле, а вторым — к конденсатору, и разряжать его через резистор до нуля.
0
Нет, надеюсь, что разрядится.
0
И все равно мне нравится идея.
0
Ночь не спал, страдал, мучился, все думал — чем же мне так нравится идея с таймером?
И понял. Интуицию не проведешь.
Точность при вытягивании себя за волосы.
Если в схеме генератора en.wikipedia.org/wiki/555_timer_IC резистор R1 применить раз в 10 меньшего номинала, чем R2, то его точность почти не скажется на точность частоты генератора. И погрешность будет определяться только погрешностью резистора R2 и параметрами таймера.
В измерителе на МК погрешность определяется тремя резисторами (они равно ее вносят) и погрешностями МК.
Кроме того, при измерении частоты, по моему, проще учесть погрешность частотомера, чем при изменении периода — погрешность соответствующего измерителя. (При измерении частоты можно выбрать сколь угодно большой период измерения и погрешность будет зависеть только от погрешности кварцевого генератора).
В общем, я за генератор.
0
А если брать ардуино (который у меня работает на ATMega8L без кварца с FT232RL), то я наткнулся на одну статью на их сайте, только не могу понять к каким портам что подключать и собсвтенно какая там схема должна быть?
arduino.cc/playground/Main/CapacitanceMeasurement
0
Всем желающим обзавестись измерителем емкости, а также индуктивности и сопротивления, который дополнительно определяет
паразитные параметры (ESR), рекомендую найти статью LMSbridge.
Измеритель состоит из двухканального операционника (напр. LM358),
полнодуплексной звуковой карты (других сейчас вроде бы и нет) и компа. Софтина под Windows. Затрат на сборку практически никаких.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.