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

Это птица!Озаботился я в свете грядущего мотания катушек повторением LC-метра на компараторе, да вот беда — нет прецизионных конденсаторов и индуктивностей, а без готового LC-метра измерить их нечем. Оказывается, конденсатор померить есть чем — таймером 555 :).
Нет, это супермен!
Нет, это… NE555!
По схеме из википедии собираем автоколебательный (astable) генератор, как можно более точно измеряем сопротивления R1 и R2 и любым способом измеряем частоту генерации. Я использовал (прости меня Боже :)) Arduino + библиотека FrequencyCounter. Ну а далее вспоминаем математику и получаем емкость конденсатора с точностью около 1% + небольшая величина, зависящая от точности измерения резисторов. ИМХО, неплохо.
Нормально измеряются конденсаторы от 1000пФ (меньше уже портится форма сигнала и счетчик дурит) до 1мкФ (больше падает точность из-за малого периода генератора).
Вот как-то так, может кому пригодится :).
- +2
- 23 июля 2011, 17:27
- DareDen
«Arduino + библиотека FrequencyCounter»
«C-метр за 5 минут»
В моём случаем это растянется недель на 5, ибо на ардуино ещё надо заработать + доставка почто России…
«C-метр за 5 минут»
В моём случаем это растянется недель на 5, ибо на ардуино ещё надо заработать + доставка почто России…
Это где такой, что магазины беднее единственного магаза нашего мухосранска?
Хотя, с другой стороны, мой город и не самый маленький. В области — третий по размеру. Тогда — придется заказывать. Но уж мегу8-то имеет (почти) каждый уважающий себя колупатель МК :)
Алсо, в ардуйню можно по быстрому превратить пинборд.
Хотя, с другой стороны, мой город и не самый маленький. В области — третий по размеру. Тогда — придется заказывать. Но уж мегу8-то имеет (почти) каждый уважающий себя колупатель МК :)
Алсо, в ардуйню можно по быстрому превратить пинборд.
Да, вполне. Ардуину лично я рассматриваю как еще одну отладочную плату :). На робокрафте даже была статья, как ардуину использовать с winavr, без всякого Wiring.
Нее, просто писать на C/C++ и загружать используя бутлоадер Ардуины: ссыль.
Я вот просто дудкой ардуину (синапрог, если точнее) прошиваю, если хочется на истинном C писать. ИМХО это лучше, чем какой-то самодельной утилитой пользоваться…
А зачем вообще 555, когда есть Ардуино?
Просто берем два GPIO и один резистор. Соединяем ножка-резистор-конденсатор-земля. В точку конденсатор-резистор подключаем вторую ножку. Подаем на первую ножку 0 для гарантии, потом 1, и замеряем время, за которое на второй ножке появится 1. Это в самом простом случае. Естесственно можно:
— мерять интервал таймером
— использовать компаратор и захват таймера
— и т.д., 100500 вариантов оптимизации. Но идея такая.
Зачем 555?
Просто берем два GPIO и один резистор. Соединяем ножка-резистор-конденсатор-земля. В точку конденсатор-резистор подключаем вторую ножку. Подаем на первую ножку 0 для гарантии, потом 1, и замеряем время, за которое на второй ножке появится 1. Это в самом простом случае. Естесственно можно:
— мерять интервал таймером
— использовать компаратор и захват таймера
— и т.д., 100500 вариантов оптимизации. Но идея такая.
Зачем 555?
Не-не, такое уже делали, мне не нравится. Надо иметь эталонную емкость, либо очень точно измерять временные интервалы для малых емкостей (к тому же метод измерения RC цепочкой неточен сам по себе). А подход с 555 мне нравится тем, что имея омметр мы можем достаточно точно определить емкость, вот в чем смысл. Причем почти без предварительной подготовки — замерили сопротивления, собрали схему, измерили частоту — все.
Наверное, я Вас удивлю, но упомянутая схема на 555 — есть RC генератор, подчиняющийся тому же уравнению. 555 всего лишь заставляет эту RC-цепь работать циклически. А во втором случае мы ее сами дергаем.
Зачем?
Вы не поверите, но, чтобы пристойно измерять частоту/период, тоже требуется точное измерение интервалов. Которое, кстати, для МК, в общем, не проблема (если он работает от внешнего кварца). Для малых емкостей можно поставить резистор побольше.
Кто сказал? В нем есть только один главный фактор нестабильности — резистор.
И оба они вносят погрешность. А в методе с непосредственным подключением RC-цепи к МК — только один резистор.
Так что метод с измерением постоянной времени как раз точнее.
Надо иметь эталонную емкость
Зачем?
либо очень точно измерять временные интервалы для малых емкостей
Вы не поверите, но, чтобы пристойно измерять частоту/период, тоже требуется точное измерение интервалов. Которое, кстати, для МК, в общем, не проблема (если он работает от внешнего кварца). Для малых емкостей можно поставить резистор побольше.
к тому же метод измерения RC цепочкой неточен сам по себе
Кто сказал? В нем есть только один главный фактор нестабильности — резистор.
как можно более точно измеряем сопротивления R1 и R2
И оба они вносят погрешность. А в методе с непосредственным подключением RC-цепи к МК — только один резистор.
Так что метод с измерением постоянной времени как раз точнее.
Знаете, Мао-дзе-дун как-то сказал: «Пусть расцветают тысячи цветов». Вам нравится RC-цепочка, мне — генератор на ее основе (кстати, в генераторном методе усреднение идет автоматически ;)). Чем больше методов, тем лучше — каждый выберет себе по душе.
Просто мне кажется, что Вы перемудрили. :-) А оверинженеринг — нехорошо. Задачу всегда стоит решать с минимально возможными затратами.
Это зависит от примененной библиотеки.
кстати, в генераторном методе усреднение идет автоматически
Это зависит от примененной библиотеки.
Хоссподя, была бы задача стоящей такого серьезного подхода. Что резистор с кондером тыкнуть в «доску для бреда» :), что микру, два резистора и кондер — все одно паять ЭТО никто не будет, так что убытку никакого. У меня была задача — точно измерить кондер с минимальными временными затратами — я это сделал и поделился с другими.
И в конце-концов «Дяденька, я ж не настоящий сварщик» (с) анекдот :), хобби это у меня.
И в конце-концов «Дяденька, я ж не настоящий сварщик» (с) анекдот :), хобби это у меня.
Хоссподя, была бы задача стоящей такого серьезного подхода.
Что может быть серьезнее измерений? :-)
И в конце-концов «Дяденька, я ж не настоящий сварщик» (с) анекдот :), хобби это у меня.
Эх, а я только хотел загнуть про то, чем отличается хардкорный профи от убогого любителя.


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

1. Готовим конденсатор:
Держим на GPIO ноль, например, секунду (зависит от максимальной измеряемой емкости).
GPIO/COMP+ в режиме GPIO, подаем на него ноль для гарантии.
2. Начинаем измерение.
Конфигурируем таймер на захват по компаратору.
Подаем на GPIO «1» и разрешаем прерывание.
Все. По прерыванию читаем значение регистра захвата и считаем.

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