0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
1

LC-meter на AVR AtMega8

09.06.2011, 18:49. Показов 50939. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!

Делаю LC-meter на Меге8.
За основу взял популярную схему на PIC+LM311, только МК поставил Мега8.

Спаял генератор на компараторе LM311, взял осциллограф - мерять частоту генератора.

Картинка получилась как на первом рисунке.

Но наблюдаю странную картину. При такой схеме период прмерно 2.5мкс (400кГц). При увеличении кондера С5 в 10 раз - измеренный период увеличился только до 3мкс, хотя по идее должен увеличиться в 3 раза (обратная квадратическая зависимость. Увеличиваю до 50 раз - период увеличивается всего в два раза (должен в 7). Как посчитать период по приведенной схеме?
Я думал, что период
t = 2*Пи* sqrt(L2*C5)

Или там как-то еще С3 задействован должен быть?
И для чего С4 - для фильтрации от постоянки?
С6 - это эталонный, он сейчас никак не подключен.

Кстати, думал, что что-то с насыщение катушки, отмотал половину витков - но первоначальный период никак не изменился.

И как сделать форму символов прямоугольными - без заваленных фронтов?


http://**************************/download/file.php?id=5363&sid=f3b7c8539ddde32cbc34d1ba6723d2cf


http://**************************/download/file.php?id=5362&sid=f3b7c8539ddde32cbc34d1ba6723d2cf
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2011, 18:49
Ответы с готовыми решениями:

LC-meter на AVR
Я сделал LC-meter на AVR. Руководствуясь разработкой от товарища okt (...

Задание в AVR studio на atmega8
Написать код для создания схемы «Гирлянда»

ATmega8. AVR-GCC в Linux Ubuntu
Воспользовался парой известных туториалов по этим микроконтроллерам и столкнулся со следующей...

atmega8 fuse биты в AVR Studio
Добрый вечер, Подцепил кварц на 16 Мгц , кондеры, все как в мануале. Выставить фьюзы не могу, два...

Преобразование двоичного числа в десятичное. В микроконтроллере AVR Atmega8
Здравствуйте. Написал функцию для перевода пришедшего двоичного числа в десятичное и вывода его на...

19
0 / 0 / 0
Регистрация: 27.08.2010
Сообщений: 77
10.06.2011, 00:45 2
И как сделать форму символов прямоугольными - без заваленных фронтов?
Варистор поставь.
0
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 368
11.06.2011, 22:44 3
Цитата Сообщение от kytikot
Всем привет!

Делаю LC-meter на Меге8.
За основу взял популярную схему на PIC+LM311, только МК поставил Мега8.
вот очень простой и рабочий прибор- http://rodyokot.ru/konkurs/024/ CLR2313 - измеритель ёмкостей, индуктивностей и сопротивлений;
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
11.06.2011, 23:37 4
Ребята, я все две схемы (на ПИКе и Тини2313) подробно проработал.
Причины, по которым я делаю свое - несколько. Во-первых, отсутствие эталонных индуктивностей для схемы на 2313 и, честно говоря, неизвестные коэффициенты в формуле генератора там.
Во-вторых - для ПИКа не хочу делать программатор.
В-третьих - хочется самому.

Но уперся в простую проблему с генератором, которая, в-общем-то, может и не быть связана конкретно с этим прибором.
0
0 / 0 / 0
Регистрация: 23.05.2007
Сообщений: 792
12.06.2011, 14:08 5
И как сделать форму символов прямоугольными - без заваленных фронтов?
Фронт завален, потому что у 311 выход с открытым коллектором. Попробуй верхний вывод R12 зацепить не на +5, а больше. Скажем, на +9. А с выхода на землю стабилитрон 5 вольт. Форма должна улучшиться. Или добавить буфер на транзисторе, который будет тянуть вверх. Или вместо компаратора воткнуть ОУ с полноценным выходом. На характеристиках не знаю как отразиться, но форма должна улучшиться.
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
20.06.2011, 21:26 6
В-общем, продолжил я работу. То ли осциллограф у меня был неправильный, то ли индуктивность мала... Решил поставить МК в схему и посмотреть, как будет дело в реальном режиме, уже в полной схеме. Генератор на удивление работает правильно.
Теперь пишу программу. Заткнулся на перемножении 24-х разрядных чисел...
А ведь впереди еще деление...
0
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 3,496
20.06.2011, 23:20 7
Чё там перемножать? Сдвинул-сложил, сдвинул-сложил. В аппнотах есть 16 бит, добавить туда еще...
http://studentbank.ru/view.php?id=8479&p=2
Алгоритм: 1. Берутся модули от сомножителей.
2. Исходное значение суммы частичных произведений принимается равным 0
3. Если анализируемая цифра множителя равна 1, то к сумме частичных произведений прибавляется множимое; если эта цифра 0, прибавление не производится.
4. Производится сдвиг суммы частичных произведений вправо на один разряд.
5. Пункты 3 и 4 последовательно выполняются для всех цифровых разрядов множителя, начиная с младшего.
6. Произведению присваивается знак плюс, если знаки сомножителей одинаковы, минус - в противном случае.
https://www.cyberforum.ru/asse... 81981.html
под результат сразу отводишь в два раза больше место чем занимает множимое, т.е байт на байт равно слово, слово на слово равно двойное слово. Рассматриваем 100=1100100b
1) сразу проверяешь множитель если 0 тогда и результат ноль
2) сдвигаешь 1100100b -> 110010b вправо CF=0, тогда сдвигаешь второй множитель влево т.е 2*X
3) сдвигаешь 110010b -> 11001b вправо CF=0, тогда сдвигаешь второй множитель влево т.е 4*X
4) сдвигаешь 11001b -> 1100b вправо CF=1, тогда складываешь с результатом 4*X и снова сдвигаешь влево 8*X
5) сдвигаешь 1100b -> 110b вправо CF=0, тогда сдвигаешь второй множитель влево т.е 16*X
6) сдвигаешь 110b -> 11b вправо CF=0, тогда сдвигаешь второй множитель влево т.е 32*X
7) сдвигаешь 11b -> 1b вправо CF=1, тогда складываешь с результатом 4*X+32*X и снова сдвигаешь влево 64*X
8) сдвигаешь 1b -> 0b вправо CF=1, тогда складываешь с результатом 4*X+32*X+64X и снова сдвигаешь влево 128*X
на каждом шаге проверяешь первый множитель если он стал нулевым значит умножение закончилось
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
21.06.2011, 01:34 8
Я перемножаю байты командой mul.
Пока пытался воткнуть inline assembler в Си. Столкнулся с ограничениями компилятора GCC - там написано, что можно мнемоничестки использовать %А как младший байт, %В - следующий и т.п. Так вот, больше чем %D - не получается, %E он воспринимает опять как младший байт.
Приходится оперировать не одним 64-разрядным числом. а двумя 32-разрядными.

В-общем, получается (прикидочно) точность до 2-х пикоФарад или до 2-х микроГенри. Мне хватит.

P.S. Все идет нормально, но вот, как говорят, дьявол в деталях. То там закавыка непринципиальная, то в другом месте.
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
21.06.2011, 01:45 9
А в меге же есть аппаратное умножение за два такта. Может проще через восьмибитные произведения?

A = A1<<16 + A2<<8 + A3
B = B1<<16 + B2<<8 + B3

Перемножаем, раскрываем скобки, итого 9 восьмибитных умножений и 18 сумм. И примерно столько же сдвигов.
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
21.06.2011, 11:42 10
Если хитро оперировать регистровыми парами - то не нужно и сдвигов

A - r16:r15:r14 (A2:A1:A0)
B - r24:r23:r22 (B2:B1:B0)
res - r11:r10:r9:r8:r7:r6

Код
clr   tmp
mul   r16, r24   ; старшие байты A2*B2
movw   r10, r0
mul   r14, r22   ; младшие A0*B0
movw   r6, r0
;
mul   r15, r22   ; A1*B0
add   r7, r0
adc   r8, r1
adc   r9, tmp
;
mul   r23, r14   ; A0*B1
add   r7, r0
adc   r8, r1
adc   r9, tmp
;
mul   r16, r23   ; A2*B1
add   r9, r0
adc   r10, r1
adc   r11, tmp
;
mul   r15, r24   ; A1*B2
add   r9, r0
adc   r10, r1
adc   r11, tmp
;
mul   r16, r22   ; A2*B0
add   r8, r0
adc   r9, r1
adc   r10, tmp
;
mul   r14, r24   ; A0*B2
add   r8, r0
adc   r9, r1
adc   r10, tmp
;
mul   r15, r23   ; A1*B1
add   r8, r0
adc   r9, r1
adc   r10, tmp
;
clr   r1, r1
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
21.06.2011, 19:38 11
Ну да, они же восьмибитные. Чего-то переклинило, что если результат умножения - шестнадцатибитный, то его надо будет на байты побить.
0
0 / 0 / 0
Регистрация: 15.02.2011
Сообщений: 176
22.06.2011, 12:44 12
Я вот тоже задумался о том чтобы собрать LC-метр. Но у меня вот какая идея: измерять не время зарядки конденсатора до опред. уровня, а сначала измерить кривую заряда с помощью АЦП, а затем анализируя ее уже вычислить значение емкости. Аналогичное можно сделать и с индуктивностью измеряя кривую тока (подключив последовательно ей резистор переходим к замеру напряжения). Как думаете, будет ли это точнее чем временной или резонансный методы?
0
SWK
22.06.2011, 13:10 13
Цитата Сообщение от K_I_S_T
Как думаете, будет ли это точнее чем временной или резонансный методы?
Нет. Самый точный метод - частотный. Кривая заряда имеет нелинейность с большой протяженностью пологого участка, где малейшие отклонения при измерении дают большую погрешность. Кроме того, нужно мерять емкости в пределах 5-6 порядков, и если схема LC с компаратором перекрывает весь диапазон одним пределом (частоты получаются от герц до 500-700 и более килогерц), то другие методы редко на одном диапазоне имеют перекрытие более 10 без потери точности. Кроме того, при измерении заряда емкости в единицы пик нужны наноамперные зарядные токи (чтобы получить приемлемое время заряда), при этом сильно влияние утечек и нагрузок. При больших (доли микрофарады) емкостях наоборот, нужны большие токи заряда, что создает свои проблемы.
Также трудно учесть паразитные емкости и индуктивности монтажа и проводов, а в схемах с компаратором это компенсируется при калибровке автоматически. Так что лучше LC схем с генератором на компараторе ничего не придумано. Особенно для малых емкостей и индуктивностей, где такие измерения и нужны, они обеспечивают хорошую точность. Другие же системы при малых значениях имеют погрешность намного больше.
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
22.06.2011, 20:58 14
Все, решил насчет перемножения с результатом более 32 разряда - оно мне не нужно.
Если множители более 16-ти разрядов - я их буду "усекать" до 16ти, перемножать с результатом 32 разряда, а потом делить и прочее. а в конце опять расширю сдвигом на столько разрядов, сколько раньше усекал. Точность от этого пострадает на доли процента - этого вполне достаточно.

Дело в том. что GCC-AVR (WinAVR Си) более-менее работает с умножением-делением 32-разрядных переменны, но страшно тормозит на 64-х битных в размере кода. А самому с ними возиться тоже не резон. Пробовал IAR, говорят, в нем long long (64 бита) нормально реализовано, но пока он мне "не пошел".
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
23.06.2011, 14:39 15
Что-то странно меряет мой прибор электролиты (1..2..10мкФ). Показывает период колебаний генератора (и соответсвенно емкость) гораздо меньше расчетной, раз в 10.
У кого есть подобный измеритель на PIC - он меряет электролиты?

Да и керамические кондеры, свыше 2мкФ - та же фигня начинается, только в меньшей степени. Такое впечатление, что частота как-то стабилизируется и "не хочет" уменьшаться.

На индуктивностях до 10мГн (милли) - вроде все в порядке, больше у меня пока нету.

И конечно же, не откажусь от комментариев от уважаемого SWK ;-)

ЗЫ В принципе, прибор мне нужен именно для индуктивностей, но возникает вопрос - не будет ли он врать на больших индуктивностях?
0
SWK
23.06.2011, 17:51 16
Цитата Сообщение от kytikot
Что-то странно меряет мой прибор электролиты (1..2..10мкФ).
Я повторял 3 варианта подобных приборов. Отличались в основном типом индикатора и калибровкой вручную (кнопкой) или автоматически (5v миниатюрное реле). Два на PIC, один на AT89C2051. Просматривал еще с десяток аналогичных. Во всех в описаниях обычно указывался верхний предел порядка 0,1-1,0 мкФ.
Для индуктивностей вроде 10 - 100mH.
Для некоторых было больше (например, до 2мкф и 3гн), но что-то не верится, тем более что схема практически такая же, как и у других.

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

Естественно, колебательный контур, в котором индуктивность 50-200 мкГ, не может нормально работать при емкости в нем порядка микрофарад, особенно электролитическими и пленочными, у которых есть и собственная индуктивность. Также сложно работать генератору при образцовой емкости обычно 1000 пф, если индуктивность порядка единиц или долей генри. У таких индуктивностей собственная межвитковая емкость может оказаться гораздо больше, да и омическое сомпротивление тоже есть.

Так что надо подходить к этому делу разумно. Для моих целей нужны были в основном большая точность на единицах пик и микрогенри (накопилось много конденсаторов без маркировки или с цветными точками), в диапазоне же нанофарад - меня и 10% бы устроило. Тем более что у конденсаторов более 10н обычно уже большой допуск и ТКЕ, и мерять их точно смысла нет. Достаточно такой погреть пальцами, и его емкость заметно уходит.
У меня самые часто измеряемые - от единиц пик до 10-100н, а индуктивности от единиц микрогенри до сотен микрогенри, максимум - единицы милигенри. Больше иеня не интересует.

Если же нужно мерять большие величины (особенно электролитов), есть другие схемы приборов. Или можно также использовать схему с LC и компаратором, но увеличив образцовые емкость и индуктивность на 2-3 порядка. Соответственно, и время измерения.

ЗЫ В принципе, прибор мне нужен именно для индуктивностей, но возникает вопрос - не будет ли он врать на больших индуктивностях?
Все относительно. Я не меряю индуктивности более единиц миллигенри, да и высокая точность там мне не нужна... В импульсных стабилизаторах обычно используют дросселя от единиц до сотен микрогенри. У трансформаторов я не меряю, там другие критерии.
Например, TOP SWITCH прекрасно работают при разности индуктивности в разы, если его не загружать на все 100% его мощности. Также и к зазору они не критичны, - на макете я у нагруженного преобразователя руками раздвигал половинки сердечника, наблюдая при этом выходное напряжение и форму импульса. Пока он способен был удержать нагрузку - просто менялась скважность. При зазоре порядка миллиметров он просто уходил в режим защиты, генерируя короткие импульсы. Так что я потом мотал трансы для TOP "от фонаря", выбирая удобные для рассчетов и намотки количества витков. Всегда можно было для нагрузки 10вт поставить TOP до 15 или 25 вт, при таком запасе ничего рассчитывать не приходилось.
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
23.06.2011, 22:32 17
Спасибо!

Вот как раз для расчета и сборки БП на TOP Switch такой прибор мне и нужен.
Возможно, и для других типов импульсных БП.
Но там в некоторых расчетах я встречал размеры индуктивностей трансформатора/ дросселя порядка 700-800 милли! Генри. Или там описка и нужно читать как "микро" Генри?

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

P.S. А приборчик для измерения больших кондеров (без ESR) у меня есть - <a ctoss="postlink-local" href="http://forum.iosyitistromyss.ru/viewtopys.php?p=75191#p75191">viewtopys.php?p=75191#p75191[/URL]
0
SWK
23.06.2011, 23:51 18
Цитата Сообщение от kytikot
Но там в некоторых расчетах я встречал размеры индуктивностей трансформатора/ дросселя порядка 700-800 милли! Генри. Или там описка и нужно читать как "микро" Генри?
Вот типичные параметры:
http://www.mostirkit.ru/info/magshow.ph ... 4o&seorsh=
http://www.mostirkit.ru/info/magshow.ph ... 4o&seorsh=
http://www.mostirkit.ru/info/magshow.ph ... 4o&seorsh=

Кстати, сколько не гуглил - нигде не нашел подобной схемы генератора на компараторе с колебательным контуром, кроме как в этой известной схеме измерителя. Стандартно попадается схема без контура, и там времязадающим кондером является тот, что между инверсным входом и землей. Может быть, и в этой схеме этот кондер не дает снизить частоту до расчетной частоты контура?
При большой разнице в номиналах емкости и индуктивности добротность LC контура сильно падает, и схема начинает работать как простой релаксатор, на всяких паразитных частотах, где фазовые сдвиги и коэффициент петлевого усиления обратной связи допускают генерацию. Например, у меня при измерении больших емкостей, до долей микрофарады, меряет нормально, пока частота не снизится до единиц герц. При дальнейшем увеличении емкости частота резко подскакивает килогерц до 120 - 150, и независиммо от емкости (например, 10 мкф), показывает, например, 5 нанофарад.
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
25.06.2011, 03:20 19
Я ограничил измерение пределом в 100тыс. "базовых" единиц - для кондеров это 100нФ, для катушек - 100мГн.
Это при опорных элементах в 1500пФ и 56мкГн.
Все вроде получается.
Только поизвращаться пришлось с вычислниями при калибровке.

В-общем, можно сказать, что сделал. Меряет вроде нормально.
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
28.06.2011, 23:08 20
Проект перешел в стадию готового устройства - <a ctoss="postlink-local" href="http://forum.iosyitistromyss.ru/viewtopys.php?f=16&t=6225">viewtopys.php?f=16&t=6225[/URL]

Большая благодарность товарищам SWK и okt.
0
28.06.2011, 23:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2011, 23:08
Помогаю со студенческими работами здесь

Программатор JDM Based Extra PIC+AVR , ATMEGA8 и AVRDUDE
В качестве какого программатора (dasa , dasa3 (с переходником ) , siprog ( глючит ) ; ...

Написать программу управления светодиодом на языке C в AVR Studio 4 для МК ATmega8
Задание: написать программу управления светодиодом на языке C в AVR Studio 4 для МК ATmega8. Для...

Разница между ATMEGA8-16AI и ATMEGA8-16AU
Кто подскажет, в чем разница между ATMEGA8-16AI и ATMEGA8-16AU. Смотрю в Платане цены между ними...

ESR-meter
Добрый день всем !!!!! Подскажите пожалуйста можено ли на AVR собрать ESR-metr. Видел такое чудо...

Стилизация тега <meter>
Подскажите не получается стилизовать тег &lt;meter&gt;, так чтобы все работало. Проблема в том, что...

LCR meter DER EE DE-5000
Забрал сегодня на почте DER EE DE-5000. Купил сразу полный комплект (все переходники и щуп) +...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru