AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
20.02.2019, 18:42
|
|
Прописка
Регистрация: 30.07.2006
Адрес: Фрязино, М.О.
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 20 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Сообщение от makakus
|
потому что есть DSPIC.
|
Кстати, чтобы эффективно использовать DSP-ядро этого контроллера, нужно писать саму фильтрацию на АСМе. Либо прямо на АСМе, либо через АСМ-макросы встроенные в XC16. Разрядность аккумуляторов DSP-ядра в этом МК не является нативной для этой платформы (40-разрядов), что не дает шансов заставить компилятор превратить Си код фильтра в короткие несколько строк do-mac-sftac.
|
|
|
|
21.02.2019, 20:37
|
|
Вид на жительство
Регистрация: 10.04.2010
Сообщений: 301
Сказал спасибо: 25
Сказали Спасибо 136 раз(а) в 79 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Что за народ... Был конкретный вопрос, для данного случая достаточно простой. Кончилось тем что даже антиальясинг приплели, видимо от избытка ума, и заметьте - никакой реальной реализации, только бла-бла-бла
|
|
|
|
21.02.2019, 21:00
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,759
Сказал спасибо: 2,529
Сказали Спасибо 11,747 раз(а) в 5,885 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Сообщение от dkm
|
заметьте - никакой реальной реализации, только бла-бла-бла
|
dkm, Вы от ТС получили гонорар? У Вас есть лицензия на адвокатскую деятельность?
У ТС свои мозги есть, а потому, раз от него нет вопросов, он впитывает и переваривает сам. А если у Вас есть вопросы, то надо не буром переть, а нормально спрашивать.
Может, коты борзых любят? Попробуйте с такими манерами пройтись по форумам - авось где не пошлют...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
21.02.2019, 22:52
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Сообщение от dkm
|
Что за народ... Был конкретный вопрос, для данного случая достаточно простой. Кончилось тем что даже антиальясинг приплели, видимо от избытка ума, и заметьте - никакой реальной реализации, только бла-бла-бла
|
Полностью согласен. Там даже фильтра будут вредные (добавляют постоянную составляющую). Сигнал представляет собой обрезанную, сбоку, полуволну синусоиды. Всего навсего синхронизировать, и посчитать true rms одного полупериода. И не надо в сплошную это делать. Просто частоту дискретизации задать, чтобы была приемлемая точность.
|
|
|
|
21.02.2019, 23:36
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,759
Сказал спасибо: 2,529
Сказали Спасибо 11,747 раз(а) в 5,885 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Сообщение от МВА
|
Всего навсего синхронизировать, и посчитать true rms одного полупериода. И не надо в сплошную это делать. Просто частоту дискретизации задать, чтобы была приемлемая точность.
|
Все очень просто. Можно с этого начинать. А когда появятся неудовлетворение и вопросы - можно и глубже копнуть.
Сразу глубоко копать - только вызывать недовольство тех, кому все просто.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
22.02.2019, 05:54
|
|
Прописка
Регистрация: 30.07.2006
Адрес: Фрязино, М.О.
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 20 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Сообщение от МВА
|
Всего навсего синхронизировать, и посчитать true rms одного полупериода. И не надо в сплошную это делать. Просто частоту дискретизации задать, чтобы была приемлемая точность.
|
Это типа предлагается измерять синус путем прямой подачи его на вход АЦП без сдвига уровня?
Для среднестатистической по качеству сети точность лучше 5% не получить.
Для тех кто в танке. Обилие примитивных потребителей с однополупериодным и емкостным характером нагрузки приводит к подмагничиванию трансформаторов на ТП и искажению синусоиды как симметричному, так и не симметричному.
Из чего следует, что при измерении сетевой синусоиды без внешнего выпрямителя потребуется внешняя схема сдвига уровня.
Поскольку сдвиг уровня добавляет дрейф этого самого уровня, нужно этот самый уровень (постоянную составляющую) непрерывно считать и вычитать из сигнала, преобразуя сигнал в знаковую форму.
Собственно это означает наличие в обработке сильно инерционного ФНЧ (примерно с полосой в 0,5 и менее Гц).
Итого, прежде чем выпрямлять сигнал и считать RMS нужно:
1. Пропустить входной сигнал через компаратор и захватить его выход Input Capture с целью определения периода (тоже потребует накопления).
2. Вычислить из измеренного периода частоту квантования сигнала (путем деления на целое).
И параллельно с этим процессом вычислять RMS либо временным, либо частотным методом. Кому что нравится.
И все это не отменяет антиалиасинг. Его легко сделать на схеме сдвига уровня.
ЗЫ.
Кстати, для измерения RMS временным методом никакой синхронизации не требуется. Достаточно простого равенства (или цельнократности) периода входного сигнала и длины буфера накопления этого сигнала. Допустим даже дрейф фазы между буфером и сигналом из-за неточности вычисления периода и аппаратных проскоков фазы.
Последний раз редактировалось my504; 22.02.2019 в 06:00.
|
|
|
|
22.02.2019, 20:06
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Ох, как все сложно. Среднеквадратичное значение рассчитывается для любой формы сигнала, и является действительным значением. Не надо, для синхронизации, ничего особенно мудрить. Даже, если подать через резистор и диод входное фазное напряжение прямо на вход МК, то на входе будет меандр положительной полуволны амплитудой около пяти вольт. Конечно это не кошерно, но можно это развязать и через оптрон. По переднему фронту меандра начинаем суммировать квадраты АЦП (достаточно тип int), а по отрицательному заканчиваем. Для индикатора высокая скорость обновления показания не нужна, по этому можем 10 - 20 периодов пропустить и времени для окончания вычисления в типе float будет выше крыши.
Последний раз редактировалось МВА; 22.02.2019 в 20:09.
|
|
|
|
23.02.2019, 11:12
|
|
Прописка
Регистрация: 30.07.2006
Адрес: Фрязино, М.О.
Сообщений: 116
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 20 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Сообщение от МВА
|
Ох, как все сложно.
|
Просто только кошки родятся.
Вы видимо невнимательно прочли мое сообщение.
Синус в сети, КАК ПРАВИЛО, НЕСИММЕТРИЧЕН. С Вашим "методом" измерения одного полупериода можно просто измерить амплитуду и умножить на 0,71. Получится примерно такая же точность.
Ну и попутно.
Преобразовывать результат накопления во флоат нет никакого смысла.
Флоат - это не про дроби. Флоат - это про динамический диапазон.
|
|
|
|
23.02.2019, 13:26
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Наверное я что-то не так рассказал. Я не говорил об измерении синуса. Из входного синуса просто получаем меандр для определения начала и конца полуволны, а сигнал на АЦП подается непосредственно с шунта. Результат работы АЦП - всегда целое число (integer), а следовательно его квадрат и сумма квадратов - тоже целое число. И не стоит нагружать прерывание вычислениями с плавающей точкой. А float этот тип данных с плавающей точкой. Перевести его можно не явно, разделив на дробное число, или явно записав (float)variable. Хотя, в функции sqrt() и sqrtl() принимается и возвращается тип double или long double и переводить нужно в эти типы.
|
|
|
|
23.02.2019, 13:36
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,759
Сказал спасибо: 2,529
Сказали Спасибо 11,747 раз(а) в 5,885 сообщении(ях)
|
Re: Амперметр Atmega. Как устаканить??
Сообщение от МВА
|
Перевести его можно неявно
|
Не стоит надеяться на неявные преобразования - шишек на этом набито предостаточно.
Рекомендую только явные преобразования - так надежней и предсказуемей. Да и проще искать свои косяки.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:00.
|
|