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

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

1 36 174

Link, не тратьте зря время на экономию 1 бита с полсинусом. Можно пойти дальше и 1000 периодов синуса предсказать по 3 точкам, но как говорится, Моня, зачем нам эти шутки?

Вам Alexkuz посчитал стоимость варианта в 4 раза дешевле, чем Е7-22, а вы ни гу-гу.

 

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

Основная операция, пожирающая ресурсы процессора, как свинья апельсины, а именно, перемножение выборок с косинусом или синусом и суммирование произведения, это т.н. МАС (multiply and accumulate).

Чтобы достичь требуемых параметров прибора, вам необходимо получать выборки шириной не менее 19-20 бит, следовательно, вам надо перемножать 24-битные данные (минимум 3 байта) на 24-битные синусы и косинусы (чтобы не растерять точность), получая 48-битный результат. Далее их надо суммировать, скажем 1000 периодов, 40 точек на период, ещё 16-бит, в итоге мы имеем четыре 64-битных числа.

В выбранном вами процессоре нет аппаратного пермножителя, есть один аккумулятор и один DPTR, да ещё сегментированная память. Попробуйте реализовать МАС, и вам станет ясно, что выбор проца неудачен.

На мой взгляд, стоит обратить внимание на атмеловские АТмеги, с непревзойдённой скоростью 20 мипс, многие из которых имеют аппаратный умножитель. За два такта перемножаются два 8-битных числа. 32-битный МАС, т.е. sum(16х16) выполняется за 20 МС, или за 1 мкс на тактовой 20 МГц. Ожидаю, что МАС sum(24х24) будет выполняться за 1,5 мкс, т.е. можно выполнять МАС непосредственно в цикле считывания выборок.

 

GM: Link, не тратьте зря время на экономию 1 бита с полсинусом.
Да я вот и хочу спасти один разряд для 10разрядного АЦП в Атмеге.
GM: Вам Alexkuz посчитал стоимость варианта в 4 раза дешевле, чем Е7-22, а вы ни гу-гу.
Ну, зачем так строго, я ведь не обещал что сию минуту. Вот сижу и симулирую в МС9 аналоговую часть, однополюсное питание ОУ накладывает свои ограничения на максимальный размах амплитуды синуса на выходе усилителя. Я любитель, а не профессионал. И время на самообразования у меня только после 17:00.

 

Народ,

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

Надо бы нарисовать, но под рукой нет сканера, а отличия от в/у схемы минимальные, так что опишу на словах. К выходам двух инструментальных усилителей, подключается несколько ОУ с разными Ку. Ну скажем 1 и 100, если их два, или 2, 8, 32, 128, если их четыре. Выходы ОУ подключаются к двум АЦП 12-14-16 бит через встроенный в АЦП мультиплексер.

Скрепя сердце, упоминаю вариант, когда ИУ можно подключить через мультиплексер к одному АЦП. Этот вариант предполагает последовательное измерение напряжений на опорном резисторе и на неизвестном импедансе. Ну не очень страшно, будем считать, что все шумы у нас стационарные, и даже где-то эргодические .

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

Выбрано второе. Калибровка состоит в подаче на оба ИУ одинакового напряжения, для чего необходимо нижний по схеме вывод ИУ2 отключить от Zx и подключить в верхнему выводу ИА1. Подключение можно делать вручную с помощью тумблера или автоматически контактами реле. После нажатия на кнопку калибровка микроконтроллер измерит Кпередачи каждого плеча и запишет корректирующие коэффициенты в еепром. Прибор можно калибровать при каждом включении или перед выполнением особо точных измерений. С таким подходом, вся точность прибора обеспечивается одним-единственным опорным резистором плюс опорный кварц для L/C.

Для затравки предлагаю АЦП AD7949, 14-бит, 250 квыб/с, вх. полоса 1,7 Мгц, питание 2.3-5.5 В, на входе 8-канальный мультиплексер, т.о. понадобится всего один АЦП. Ну надо сообща поискать наиболее подходящий АЦП с точки зрения народности и с похожими параметрами.

По оценке, с данным АЦП и двумя-четырьмя ОУ можно выйти на диапазон импедансов 1 миллиом-820 МОм, емкости можно измерять, начиная от 0,025 пФ.

 

Link, я примерно понял, что Вы хотите сделать. Вот мои соображения.
1. Для того чтобы увеличить точность на 1 разряд, надо синусоиду, полученную после ЦАП (U[В]=1.5*sin(2Пft)+1.5), привязать к “земле”, т.е. убрать постоянную составляющую (+1.5В) и увеличить амплитуду в два раза, т.е. получить U=3*sin(2Пt). Только так можно увеличить точность (если же усилить в два раза положительную полуволну, снятую с Zx, то точности это абсолютно не прибавит; думаю, это понятно).
Для этого необходимо использовать двуполярное питание, т.е. иметь еще, как минимум,
-3.3В и операционник с коэффициентом усиления 2. Что касается -3.3В, то это, конечно, не “фонтан”, но другого выхода я не вижу. Здесь, на мой взгляд, единственная сложность – точно отцентрировать синусоиду относительно нуля, поскольку в сверхвысокой точности коэффициента 2 нет необходимости, т.к. мы измеряем напряжение (на Zx) и ток (на Ro) и в дальнейшем делим одно на другое (т.е. неточность коэффициета 2 сократится).
2. Подать эту синусоиду на Zx и Ro. Далее, с помощью двух операционников – повторителей с диодом (с малым падением напряжения, например, Шоттки) в обратной связи получить две положительных полуволны для Zx и Ro.
3. Далее. Если Zx – малая индуктивность, то абсолютное значение напряжения на Zx мало и его надо усиливать. Если Zx-малая емкость, то мал ток, и, естественно, мало падение напряжения на Ro, следовательно его тоже надо усиливать. В итоге надо брать 2 ОУ AD8231 (хорошо, что я, на всякий случай, купил 3 шт.).
4. Далее выход каждого AD8231 подать на вход каждого АЦП микроконтроллера.
5. Вычислить БПФ каждого АЦП, каждую амплитуду умножить на два, а фазы не трогать.
Вы это хотите сделать?

Link: Alexkuz: И еще вопрос: на фазу (фи) совсем не влияют дополнительные четные гармоники?
Влияют, но при генерации синуса чётные гармоники отсутствуют, присутствуют только нечётные гармоники, и тяжелее всего отфильтровать вторую нечётную гармонику (третью гармонику) она максимальная по амплитуде и близко находится к основной (первой гармонике).

И еще вопрос.
Как видно из разложения (2) в ряд Фурье выпрямленной синусоиды (см. пост на стр.35 от 13 апреля):

y = 1/П+(1/2)*sin(x)-(2/П)*[cos(2x)/(1*3)+cos(4x)/(3*5)+cos(6x)/(5*7)+…] (2)

в нем присутствует член (1/2)*sin(x). В этом члене фаза равна нулю, т.е. та же самая, что и в исходной синусоиде y=sin(x).
А Вы говорили, что на фазу влияют гармоники. Где это влияние?

 

GM: В выбранном вами процессоре нет аппаратного пермножителя, есть один аккумулятор и один DPTR, да ещё сегментированная память. Попробуйте реализовать МАС, и вам станет ясно, что выбор проца неудачен.

По поводу расчетов БПФ.
Я, признаться, тоже над этим думал: где производить расчет – в микроконтроллере и передавать в компьютер результат, или в компьютере, тогда туда нужно передать результаты измерений АЦП. Согласен, что C8051F067 хиловат для расчетов БПФ, но меня его процессор особенно не волнует, мне интересны два его крутых АЦП (миллион двух строго синхронизированных по времени аналого-цифровых преобразований в секунду). Да и вообще, связываться с расчетами на допотопном Си мне не особенно интересно. Для расчетов я использую Clarion v.6.0 для Windows, на котором я работаю на компьютере. Ваше замечание окончательно избавило меня от раздумий.

 

Ну передать 4000 байт в писюк тоже займёт приличное время. А если 40000, то вообще умереть...

 

GM: Ну передать 4000 байт в писюк тоже займёт приличное время. А если 40000, то вообще умереть...

Если передавать по RS232 на скорости 115200 бод, то передача 4000 байт займет 0.4 секунды.

 

Alexkuz: Я, признаться, тоже над этим думал: где производить расчет – в микроконтроллере и передавать в компьютер результат, или в компьютере, тогда туда нужно передать результаты измерений АЦП. Согласен, что C8051F067 хиловат для расчетов БПФ, но меня его процессор особенно не волнует, мне интересны два его крутых АЦП
Если Вы хотите использовать компьютер, зачем ставить такой дорогой МК?
В компьютере уже есть 16разрядный ЦАП и 16р АЦП, это звуковая карта.
Обратите внимание на эту статью.

Если поставить обыкновенный МК с 10р АЦП который измерял бы (грубо) амплитуды на опорном сопротивлении и измеряемом имметансе, автоматически выбирал бы коэффициенты усиления на инструментальных ОУ, а звуковая карта производила бы уже точные измерения. Экономии валом, не надо ЦАП не надо АЦП.

Alexkuz: Как видно из разложения (2) в ряд Фурье выпрямленной синусоиды (см. пост на стр.35 от 13 апреля):
y = 1/П+(1/2)*sin(x)-(2/П)*[cos(2x)/(1*3)+cos(4x)/(3*5)+cos(6x)/(5*7)+…] (2)
в нем присутствует член (1/2)*sin(x). В этом члене фаза равна нулю, т.е. та же самая, что и в исходной синусоиде y=sin(x).
А Вы говорили, что на фазу влияют гармоники. Где это влияние?

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

Alexkuz: если же усилить в два раза положительную полуволну, снятую с Zx, то точности это абсолютно не прибавит; думаю, это понятно
Если честно то нет, если на АЦП подавать 1,5В то точность измерений одна, если усилить с помощью ОУ до трёх и подать на АЦП то точность измерений будет выше.
А в общем идею вы поняли правильно.

 

4000 байт - это всего 50 периодов, по 40 точек на период. По-честному, надо бы накапливать не менее 1000 периодов, это 80000 байт, да удвоить для Ux и Uo, это уже 160000 байт, время на передачу - 36 секунд, ну и кому нужен такой измеритель?