Свежие обсуждения
Измерения

Дизайн народного RLC-метра (RLC-3)

1 26 174

Вот еще какой момент не вполне понятен (мне) - и в "RLC USB", и в конструкции из Circuit Cellar (http://www.circuitcellar.com/microchip2007/winners/third.html) используется синхронное семплирование (без отдельных синхронных детекторов). И перед ADC ставится ФНЧ, причем высоких порядков. Зачем он там ? Если можно чисто программно отфильтровать - так нет же. Так зачем ? Причем в описании второй схемы утверждается, что "This family of dsPIC family was chosen because of the fast 10bit ADC; higher resolution would have required un-realistic anitalising filter attenuation (e.g. 12bits requires 74dB). ". И фильтр там стоит шестого порядка даже для 10-битного ADC. При том, что там качественный DDS. В чем суть проблемы ?

А что до блок-схемы - если речь проголосовать, за или против варианта с одним опорником и 24-битным ADC, то лично мое мнение - НЕПРИЕМЛЕМО, потому что результат _заведомо_ хуже уже реализованной конструкции (RLC-2). Или переключением опорника (не нравится 4052 - пожалуйста, DG409 имеет гораздо более впечатляющие характеристики, и это правильнее. BTW, схема этого узла в RLC-2 - это почти без изменений схема из BK precision 878, довольно известный, хоть и старенький, прибор). Или - коммутировать усиление AD620 (потому как 8253 и аналогичные все ж совсем экзотика, свежачок) - так, как сделано в схеме на dsPIC. Но 24 бита динамического диапазона - МАЛО, даже если совместить размах генератора и ADC идеально ! Да, и хотелось бы все ж поставить точку в обсуждении "однополярное vs двухполярное" питание. Пока будут выползать такие тонкости, блок-схему придется дорабатывать не то что напильником, а рашпилем и кувалдой...

 

Сами-то вы какое решение предлагаете? Или только критиковать?

 

Предлагаю на выбор - переключаемый токовый опорник (и сразу - с DG409) или управление усилением AD620. Переключаемый опорник лучше, потому как можно будет без проблем оценить реальность предложения с одним номиналом шунта. А чтобы что-то предложить - я хотел бы получить ответы на свои вопросы. Потому как не понимая этих тонкостей, затрудняюсь предложить что-то конкретное. Вот, например, в чем я сразу уверен - не надо в генераторе работать от встроенного опорника DAC - это ухудшает функциональность (имея управление опорой, бонусом будет генератор как таковой).
Я предложил не зацикливаться на однополярном питании - получил возражение, которое, однако, не было подтверждено выкладками. Трудно обсуждать "в одни ворота". Я как раз не склонен заниматься критикой - есть очевидные вещи (типа невозможности работы усилителя при однополярном питании при переменке на входе или оценки сопротивления утечки аналогового ключа), на которых считаю должным заострить внимание, потому как налицо непонимание "с другой стороны". "На это я пойтить не могу" (c). Вместе с тем, я тоже многое не понимаю, и _прошу_ объяснить мне эти моменты. Иначе в этой области я не смогу ничего предложить, а не то что покритиковать. И помочь в реализации тоже не смогу. И еще я предлагаю глянуть на схемку по моей ссылке - там, собственно, реализовано почти то же самое (с одним опорным резистором, но с PGA перед ADC). Но чего я в ней не понимаю - зачем _такой_ антиалиасный фильтр, что он фильтрует - гармоники DDS или внешнюю асинхронную помеху ? И в чем сакральный смысл симметричной запитки DUT (BTW, так же сделано в "RLC USB").

 

1. По поводу ЦАП.
В качестве ЦАП попробовал P89LPC935(3$,PLCC28,2ЦАП) и P89LPC904(1.2$,DIP8,1 ЦАП). Можно взять любой из серии P89LPC9XX, у которого есть ЦАП. Это двухтактные микроконтроллеры; время выполнения 1 команды при F=20 МГц – 0.1 мкс.
ЦАП – 8-разрядный, время 1 ЦАП - 1.25 микросекунд вместе с обращением к кодовой памяти с табличным значением синуса при Fкв=22 МГц.
“Облагородить” ЦАП можно: питать от любого опорника на 3В (потребление P89LPCXX – 3-4 мА) – точность по вертикали, настроить генератор (с внешним кварцем) микроконтроллера до 1 Гц триммером – точность по горизонтали. Выход ЦАП пропустить через операционник OPA735 (SOT23-5,3$), я с ним работал. Операционник идеальный, хорошо держит “0”.
Синусоида из 64 точек (F=12 кГц) – идеальная, из 32 точек (F=25 кГц) – неплохая, из 16 точек (F=50 кГц) – удовлетворительная (осциллограммы смотрел прямо с микроконтроллера). Операционник (его можно включить как НЧ-фильтр) сгладит острые углы. Программа элементарная, поэтому очень быстрая (см. файл *.pdf). Если интересно, могу снять и показать осциллограммы.
Для сравнения с TLV5638: время 1 ЦАП – 1 мкс, время передачи 2 байт (при 20 МГц SPI) – 20 МГц/16=1.25 МГц (0.8 мкс). Итого: 1.8 мкс. Добавить к нему время чтения SIN_TAB[] – будет около 3 мкс, а то и более. Цена около 10-12$. Т.е. – в 3 раза медленнее и более чем в 4 раза дороже.
Кроме того, SPI будет все время “зудеть” на этой частоте.
2. По поводу индикатора. Около 2 лет назад купил графический индикатор Epson S1D15605 (15$,65*132 точки, интерфейс SPI – напрямую подключается к любому микроконтроллеру). В качестве шрифта взят готовый шрифт от драйвера монитора и клавиатуры DOS (keyrus) и “повернул” все буквы на 90 градусов. В keyrus, кстати, можно редактировать шрифт.
3. По поводу FFT. На сайте www.silabs.com есть несколько готовых программ с массой прибамбасов.

187712.pdf

 

GM: Прошу высказываться строго по существу.
1.Стоимость превышает RLC2.
2. Прогнозируемая точность измерений одинакова.
3. Нет чётких расчетов, которые показывают, что данная топология построения RLC3 даст ожидаемый результат.

Я не понимаю почему отошли от главной идеи генерации DDS синуса МК. Когда генерирует синус МК то не составляет трудности выводить чёткие импульсы, определяющие фазу генерируемого синуса.
Имея квадратурные импульсы как опору для начала преобразования уже усиленного сигнала, отпадает необходимость в синхронном выпрямителе. Нет необходимости накапливать массив измерений в нутрии МК.

 

2. Прогнозируемая точность измерений одинакова.
Если бы... На самом деле, _заведомо_ хуже (при 24-битном ADC и одном токовом резисторе).
Я не понимаю почему отошли от главной идеи генерации DDS синуса МК. Когда генерирует синус МК то не составляет трудности выводить чёткие импульсы, определяющие фазу генерируемого синуса.
Имея квадратурные импульсы как опору для начала преобразования уже усиленного сигнала, отпадает необходимость в синхронном выпрямителе. Нет необходимости накапливать массив измерений в нутрии МК.

Как раз квадратурные сигналы нужны только для варианта с синхронными детекторами. GM предлагал (если я правильно понимаю) не накапливать массив, а множить на sin/cos, и накапливать результат (а не массив), а потом обсчитывать четыре готовых суммы. А вот привязывать старт ADC к квадратурным сигналам, IMHO, неудобно, тем более что генератор и так синхронный относительно хоста, и нетрудно подогнать по тактам период семплирования. Однако я вот по-прежнему сомневаюсь в перспективности такого подхода (в первую очередь из-за недостаточной разрядности). С самого начала (в ветке RLC-2) обсуждался и вариант с генератором на DDS. Так вот, посидев-прикинув, у меня получается генератор 100-1000-10000 Hz с квадратурными сигналами на связке mega8+MCP4921, частота дискретизации 400 kHz. Не то, чтобы это было существенно дешевле этого узла в RLC-2, но менее "развесисто", а уровень гармоник д.б. менее -80 dB (что явно лучше варианта с MAX293). Дальше - сохранив узел I->U, но разменяв два копеечных TL084 на пару дорогих AD620, радикально упрощаем (удорожая) вход. Для "полного счастья" вместо 4052 - DG409, с заведомо лучшими характеристиками. Убираем два каскада x10, и заменяем ICL7135 на MCP3553 (еще более радикально - на пару MCP3553, все будет вдвое шустрее). Коммутатор в синхронном детекторе - тоже DG409. Вот, чтобы не было претензий, что "критикую"...

 

rx3apf: С самого начала (в ветке RLC-2) обсуждался и вариант с генератором на DDS. Так вот, посидев-прикинув, у меня получается генератор 100-1000-10000 Hz с квадратурными сигналами на связке mega8+MCP4921, частота дискретизации 320 kHz выходит заведомо, но, похоже, и 400 kHz тоже выйдет. Не то, чтобы это было существенно дешевле этого узла в RLC-2, но менее "развесисто", а уровень гармоник д.б. менее -80 dB (что явно лучше варианта с MAX293).

DDS ЦАП порождает гармоники которые надо дополнительно отфильтровывать т.к. гармоники попадают в полосу пропускания фильтра. Сижу, читаю книгу про ЦАП, и в ней как пример приведён ЦАП с широтно-импульсной модуляцией. Данный ЦАП успешно был реализован chav1961 исходник программы и принципиальная схема ЦАП на 17 листе форума. Книга пишет, что данный тип ЦАПов обеспечивает практически идеальную линейность преобразования. Я попытался перевести код для Атмеги8 чтобы в Протеусе построить АЧХ, ничего не получилось (недостаток знаний). Так вот я думаю, что ШИМ-ЦАП на Атмеге 8 да ещё и с квадратурными сигналами, очень сильно упростит схему RLC3.

rx3apf: Дальше - сохранив узел I->U, но разменяв два копеечных TL084 на пару дорогих AD620
Я так и не понял чем AD8231 не угодили. Они вроде и дешевле в два раза.

rx3apf: Коммутатор в синхронном детекторе - тоже DG409.
От внешнего пикового детектора и интегратора предлагаю вообще отказаться.
Если мы будем синхронизировать запуск АЦП от квадратурных сигналов (выдаваемые МК который генерирует синус), устройство выборки хранения которое стоит в МК и будет служить пиковым детектором. Алгоритм усреднения полученных результатов от АЦП будет служить интегратором. Имея квадратурный сигнал от генератора синуса, мы можем обрабатывать первый полученный результат измерения (интегрировать, усреднять и т.п.) после обработки первого измерения запустить второе измерение АЦП после замера опять обрабатывать (интегрировать) второй результат измерений, между измерениями может пройти хоть 10 периодов синуса это уже не важно главное начинать измерение в стабильный момент времени, при таком алгоритме нет нужды в быстродействии ядра процессора.

Так что я за ШИМ ЦАП и реализацию пикового детектора и интегратора на втором МК, который будет обрабатывать замеры и выводить на дисплей. Итого два МК два ОУ резистор и дисплей, что может быть ещё более народным изделием

To chav1961 . Если ещё следите за темой. Если не затруднит, преобразуйте свою программу под Атмегу 8 с выдачей квадратурных сигналов на любые свободные порты МК. Я загоню этот генератор в Протеус и построю его АЧХ.

 

DDS ЦАП порождает гармоники которые надо дополнительно отфильтровывать т.к. гармоники попадают в полосу пропускания фильтра.
Так любой генератор порождает гармоники. И усилитель. И фильтр (линейного ничего в природе нет). Когда обсуждали этот узел в RLC-2, Олег говорил, что нужно иметь не хуже -70 dB. DDS с 12-битным DAC дает лучше -80 (это лучше, чем у примененного цифрового фильтра MAX293).
Так вот я думаю, что ШИМ-ЦАП на Атмеге 8 да ещё и с квадратурными сигналами, очень сильно упростит схему RLC3.
А я вот очень сильно сомневаюсь. Потому как PWM-реализация требует хорошего фильтра. 8-битный R-2R тоже имеет неприлично большой коэффициент гармоник.
Дальше - сохранив узел I->U, но разменяв два копеечных TL084 на пару дорогих AD620
Я так и не понял чем AD8231 не угодили. Они вроде и дешевле в два раза.

Да все просто - нет их тут у меня рядом в продаже, а с заказом бесплатных семплов - проще пойти и купить. Кроме того, корпус QFN требует качественной платы, макеткой тут не обойтись. И еще они ESD-чувствительны. 8253 в этом плане лучше, но их тоже нет, и корпус, опять же, неудобный, "антинародный". А AD620 - "классика, проверенная временем". Дорогая только...
От внешнего пикового детектора и интегратора предлагаю вообще отказаться.
Все ж в RLC-2 - не пиковый детектор, там усрединение.
устройство выборки хранения которое стоит в МК и будет служить пиковым детектором.
"Которое в МК" - это всего лишь 10 бит. Значит, нужен PGA (ну да, или 8231 или 8253, только не задирать усиление - а тогда мало, "бюджет" будет 17 бит). Кроме того, там не синхронное семплирование, а мультиплексер, так что либо надо все время переключать, или переключать, обработав пачку семплов. GM предлагал синхронно, внешними, 24-битными. Я _почти_ согласен...

 

А, я глянул реализацию от chav1961- красиво. Но - это работоспособно только на микроконтроллере с умножением частоты для PWM, на мегу это принципиально не переносимо. И подбор резисторов для 16-битного разрешения - тоже не самое приятное дело (это все в теории гладко, реально 16 бит так не получить, я 100% уверен). А вот 12 бит с ширпотребным сериальным DAC - легко, и по гармоникам проходит. И, что приятно - ничего прецизионного не надо (даже опорник не так уж и важен). Стоимость решения - $3.

 

GM: Прошу высказываться строго по существу.
rx3apf: Так любой генератор порождает гармоники. И усилитель. И фильтр (линейного ничего в природе нет). Когда обсуждали этот узел в RLC-2, Олег говорил, что нужно иметь не хуже -70 dB. DDS с 12-битным DAC дает лучше -80 (это лучше, чем у примененного цифрового фильтра MAX293).
rx3apf: А вот 12 бит с ширпотребным сериальным DAC - легко, и по гармоникам проходит.

Вот здесь наверно и есть подводный камень. У Вас 24 разрядный АЦП который в идеале способен оцифровать идеальный сигнал на уровне SNR = 6.02*N+1.76=146,26(дБ) итого можно оцифровать сигнал с 24 разрядной точностью если сам опорный сигнал имеет уровень шума ниже 146,26дБ. А при 12 битном ЦАП добиться 146,26дБ я не знаю можно ли? Вероятней всего, поэтому и стоят элептические фильтры 8 порядка после DDS.