|
|
|
|
Да… так вот пришла мне идея измерять только положительную полуволну синусоидального сигнала - точнее всю амплитуду, что выше нуля за целый период. Выигрыш в том, что нет необходимости в смещении нуля для измерения обеих полуволн. Преобразование Фурье показывает, что рассчитанная таким методом фаза не изменяется, меняется только рассчитанная амплитуда в два раза, но это не беда. Таким образом, мы выигрываем один разряд АЦП, и геморрой с программным преобразованием синуса, т.е. измерения АЦП сразу заносятся в буфер и потом умножаются математически на синус в МК. Амплитуда третей гармоники равна амплитуде первой (основной) гармоники на 1000 отчётов.
Амплитуда третей гармоники равна амплитуде первой (основной) гармоники на 100 отчётов.
Амплитуда третей гармоники в 100раз меньше амплитуды первой (основной) гармоники на 100 отчётов.
Ну, так как идём дальше в этом направлении? |
|
|
Link: Ну, так как идём дальше в этом направлении? У меня следующие соображения насчет только положительной полуволны: 1. Если это связано с вычислениями во время работы АЦП. Дело в том, что 2 АЦП C8051F067 работают одновременно и строго синхронно. Максимальная скорость АЦП – 1 миллион аналого-цифровых преобразований в секунду, т.е. одно аналого-цифровое преобразование длится 1 микросекунду. За эту микросекунду происходит аналого-цифровое преобразование, в память микроконтроллера записываются сразу по 2 байта от каждого АЦП, причем весь этот процесс происходит без участия процессора (хоть он и процессор )с использованием прямого доступа в память (Direct Memory Access – DMA). Так что, если, например, измерение длится 1 миллисекунду, то за это время в памяти микроконтроллера будет записано 2АЦП*2байта*1000=4000 байт. Поскольку процессор в это время может “спокойно выйти на улицу и перекурить ”, т.к. он не сможет одновременно уследить за двумя АЦП, да еще записать в память результат их измерений с такой скоростью, то все программные вещи, связанные с какими-либо преобразованиями во время работы АЦП, - бессмысленны, т.к. они резко (на порядок, а то и на два) снизят скорость. Уже потом, когда есть готовые данные в памяти, можно говорить о каких-то программных вещах, но только не в процессе аналого-цифрового преобразования. Кстати, в памяти будет, естественно, записан полный сигнал, и “выуживать” оттуда только положительную полуволну, по-моему, труд очень неблагодарный. Гораздо проще произвести с ним БПФ, и дело с концом. Чтобы не быть голословным, я рекомендую прочитать описание C8051F067 в русском переводе здесь: www.electrosnab.ru/silabs/Silabs_1_1.htm 2. Если это связано с трудностью схемных решений, т.е. сдвига сигнала на 1.5В. По-моему, сдвинуть уровень сигнала на 1.5В достаточно просто с помощью ОУ. Кстати, я когда-то делал источник стабильного регулируемого напряжения и использовал ОУ OPA735. Очень классный ОУ, с малым дрейфом нуля (Zero Drift), стоит всего около 100 руб., достаточно доступен и выпускается в корпусе SOT23-5 (поэтому такой дешевый). Кроме того, расстояния между выводами у него около 1 мм (точнее 0.95мм), поэтому его легко паять. 3. Впрочем, я могу и ошибаться: можно сконструировать такое схемное решение, которое будет подавать на АЦП только положительную полуволну, а “тупой” микроконтроллер примет все “за чистую монету” и будет производить АЦП с этой положительной полуволной. Правда, что будет с БПФ такого сигнала, предсказать не могу, хотя, похоже, Ваши графики убедили меня, что это вполне реально. В общем, я пока не знаю как лучше.
|
|
|
Alexkuz: можно сконструировать такое схемное решение, которое будет подавать на АЦП только положительную полуволну, Именно об этом я и говорю, схемно проще реализовать подачу на мк одной полуволны. И опять же программно будет проще делать БПФ, просто накопленные измерения умножаются на синус/косинус и всё. А вот если будет смещение на 1,5В мы теряем 1разряд в АЦП плюс получаем усложнение программы для преобразования измеренного синуса (убирать постоянку).
|
|
|
Link: Именно об этом я и говорю, схемно проще реализовать подачу на мк одной полуволны. И опять же программно будет проще делать БПФ, просто накопленные измерения умножаются на синус/косинус и всё. А вот если будет смещение на 1,5В мы теряем 1разряд в АЦП плюс получаем усложнение программы для преобразования измеренного синуса (убирать постоянку). Сомневаюсь, что все так просто. Вот мои сомнения. 1. Если будет подаваться только положительная полуволна, то на графике зависимости напряжения от времени это будет выглядеть как однополупериодное выпрямлениe с помощью одного диода. Такая форма сигнала все равно содержит постоянную составляющую (как среднее значение напряжения). После БПФ, если нам будет нужна только единственная частота F, постоянная составляющая автоматически исчезнет. Аналогичная ситуация будет и с постоянной составляющей, если мы сдвинем синусоиду на 1.5В вверх. Она точно так же автоматически исчезнет, и никакого “геморроя” с ее “убиранием” не потребуется. 2. При подаче на АЦП только положительной полуволны в память будут записываться “нули” между полупериодами (неинформативные, однако все равно требующие вычислений). Кроме того, появятся дополнительные гармоники, поскольку это будет уже не чистый синус частотой F. Эти дополнительные гармоники внесут свой вклад в общий спектр сигнала. В результате амплитуда сигнала на частоте F несколько уменьшится и вот почему. Если рассмотреть спектральную плотность чистой синусоиды, то она будет представлять собой всего один пик на частоте F. Площадь под кривой спектральной плотности (или спектральная функция) при единичной амплитуде синуса всегда равна 1. Если добавятся еще какие-либо гармоники (а они обязательно добавятся при положительной полуволне), то у них, как ни крути, будут все равно какие-либо амплитуды, пусть маленькие (а может и не такие уж маленькие). В любом случае это будут дополнительные пики, которые “отъедят” свою площадь. Поскольку спектральная функция (т.е. площадь под кривой спектральной плотности) всегда равна единице, то для того чтобы эта площадь сохранилась, площадь под пиком на частоте F должна будет уменьшиться на площадь, “отъеденную” дополнительными гармониками. Это приведет к тому, что соответственно УМЕНЬШИТСЯ и АМПЛИТУДА на частоте F. А раз так, то это может привести к погрешности измерений тем большей, чем больше площадь под пиками дополнительных гармоник. Если у нас чистый синус частоты F, пусть даже сдвинутый на 1.5В вверх, ничего подобного не произойдет. Для того чтобы убрать эти дополнительные гармоники программными средствами, их необходимо обсчитать, узнать их площадь, убрать, а амплитуду на частоте F соответственно “нарастить”. Для этого потребуется посчитать БПФ не только на частоте F, но и на других частотах (а на каких именно – зависит от частоты F). Вот это действительно “геморрой”. Поэтому за простоту схемных решений мы потом будем расплачиваться низкой точностью и малым быстродействием. Так что, как мне кажется, “и рыбку съесть и …” не получится. Надо чем-то жертвовать. P.S. Самое отвратительное в том, что обо всем, что я написал, мы узнаем не сейчас, а потом, когда уже сделаем схему, напишем программу, и будем “чесать репу” - откуда же взялась эта гадость? Поэтому у меня следующее предложение. Давайте поступим как китайцы. Известно, что они мастаки “упрощать” готовое работающее изделие путем исключения особенно не влияющих на его работоспособность компонентов. Естественно, это приводит к удешевлению. И исключают до тех пор, пока изделие перестанет работать вообще. Далее делают небольшой “откат” и продают полуработающее изделие по более низкой цене. Давайте вначале сделаем классический вариант, а потом уже будем с ним экспериментировать. Получится - хорошо, нет - возвратимся к первоначальному варианту без особой переделки схемы и программы. |
|
|
Alexkuz: Если добавятся еще какие-либо гармоники (а они обязательно добавятся при положительной полуволне), то у них, как ни крути, будут все равно какие-либо амплитуды, пусть маленькие (а может и не такие уж маленькие). В измерительной цепи будет проходить синус от генератора, а на АЦП будет проходить только положительная полуволна. Гармоники порождаемые генератором, отфильтровываются БПФ, это видно на графиках. А вот гармоники порождаемые АЦП могут, появятся только из-за абсолютной погрешности АЦП, теперь эти гармоники будут присутствовать и при измерении обеих полуволн синуса. Согласны? Если согласны, то считаем дальше оцифровываем, две полуволны синуса с амплитудой 1,5В т.е нам надо оцифровать 3В итого получим абсолютную погрешность при +/-1разряд 2*3В/65536= 0.00009155В, теперь оцифровываем только одну положительную полуволну 2*1,5/65536=0,00004577В. Выигрыш в увеличении разрешающей способности в 2 раза. Убедил или нет?
|
|
|
Alexkuz: Давайте вначале сделаем классический вариант, а потом уже будем с ним экспериментировать. Я не видел серийных измерителей иммитанса на БПФ.
|
|
|
Link: В измерительной цепи будет проходить синус от генератора, а на АЦП будет проходить только положительная полуволна. Вы меня не совсем поняли. АЦП это тупое устройство, которое может только оцифровывать сигнал и все. А вот при расчетах БПФ полезет гадость. Хорошо, обратимся к математике. Если у нас есть функция y=1*sin(x), то ее ряд Фурье можно представить единственным членом, у которого коэффициент А=1 умноженный на то же самый синус, т.е. y=1*sin(x). Другими словами, амплитуда А=1, и частота F=1. Других членов ряда Фурье у нее нет. Если же наша функция – выпрямленный сигнал однополупериодного выпрямления, т.е. только положительная полуволна той же самой синусоиды: y = 1*sin(x) для 0 < x < П (1) y = 0 для П< x < 2П, где П=3.14 то ее разложение в ряд Фурье дает: y = 1/П+(1/2)*sin(x)-(2/П)*[cos(2x)/(1*3)+cos(4x)/(3*5)+cos(6x)/(5*7)+…] (2) (см. любой справочник по математике). Теперь проанализируем. Если мы возьмем чистую синусоиду, подадим ее на АЦП, оцифруем и возьмем БПФ от оцифрованных значений, то в идеале получим А=1 и F=1 (что нам и требуется). Далее, проведя аналогичную процедуру с функцией, заданной уравнением (1), получим для частоты F=1 амплитуду А=1/2, что следует из уравнения (2). Все остальные гармоники (кстати, четные и имеющие не такие большие амплитуды, как основная), нас не волнуют, и мы можем их выкинуть. Но то, что в этом случае А=1/2 (а не 1, как в случае с чистой синусоидой) – это очень плохо. Это означает, что наша измеренная амплитуда на частоте F=1 в два раза меньше (а на самом то деле она та же). Откуда это взялось? А оттого, что мы изменили форму сигнала. Вот мои соображения.
|
|
|
Alexkuz: Но то, что в этом случае А=1/2 (а не 1, как в случае с чистой синусоидой) – это очень плохо. Это означает, что наша измеренная амплитуда на частоте F=1 в два раза меньше (а на самом то деле она та же). АЦП измерять амплитуду сигнала будет от 0 до А т.е. полностью, а вот после БПФ она уменьшится на ½ , но эта математика и точность вычислений обеспечивает АЛУ в МК. Посмотрите последний рисунок который я привёл постами выше. В Маткаде стоит точност (округление) до третьего знака после запятой и амплитуда после БПФ ровно ½ от А, и нет ни каких цифр после запятой. Хорошо, я буду разрисовывать два варианта аналоговой части, смоделирую их в МС9 покажу Вам плюсы и минусы каждой схемы, и мы потом решим что лучше.
|
|
|
Link: Посмотрите последний рисунок который я привёл постами выше. В Маткаде стоит точност (округление) до третьего знака после запятой и амплитуда после БПФ ровно ½ от А, и нет ни каких цифр после запятой. Хорошо, я буду разрисовывать два варианта аналоговой части, смоделирую их в МС9 покажу Вам плюсы и минусы каждой схемы, и мы потом решим что лучше. OK! Вот это деловой разговор. Как я понимаю, MC9 – это MatCad? И еще вопрос: на фазу (фи) совсем не влияют дополнительные четные гармоники?
|
|
|
Alexkuz: И еще вопрос: на фазу (фи) совсем не влияют дополнительные четные гармоники? Влияют, но при генерации синуса чётные гармоники отсутствуют, присутствуют только нечётные гармоники, и тяжелее всего отфильтровать вторую нечётную гармонику (третью гармонику) она максимальная по амплитуде и близко находится к основной (первой гармонике). Спектр гармоник генерируемого синуса я уже выкладывал в этой ветке.
Alexkuz: OK! Вот это деловой разговор. Как я понимаю, MC9 – это MatCad? MC9-MicroCap9 Симулятор аналоговых схем с базой реальных элементов, с возможностью добавления необходимого компонента с помощью spice модели, модели производитель предоставляет бесплатно, русский интерфейс, весит 6МБ. Вещь платная если не найдёте инсталяшку, кинете мне в мыло свой адрес.
|
|
|
|
|