АЦП. Разбор полётов

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25125
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

Угу, ты сейчас нарвешься... И будешь писАть ВЕСЬ код, да еще и под CAVR...
:)))
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение Аlex »

:)))
Под CAVR не смогу. :(
Хотя... если немного покурить матчасть, то можно и написать. Но не буду, пусть просто кот немного тоже головой поразмыслит :)
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

Аlex писал(а):Ну я и привёл простенький пример для простоты понимания :)

Простенький пример такой простенький. . :))) :))) :)))
Аlex писал(а):пусть просто кот немного тоже головой поразмыслит :)

Вот в аналоговой ехнике хемы легко понимаю.Почти все, которые вижу могу быстро разложить на блоки и всё О.К. А в программах торможу -- не понимаю я их ещё. Да и лексику Сишную не особо знаю.
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: АЦП. Разбор полётов

Сообщение Jack_A »

Да в этой Сишной ексике всего-то десятка два ператоров :)
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

Ну лексику я допустим могу в ближайшее время осилить -- еси там 20 слов, то мне ещё чуть-чуть осталось.А вот орфорафию -- правила написания. . .

Я просто НЕ МОГУ сформировать МЫСЛЬ в КОД!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25125
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

Прежде чем писать код, нужно понять архитектуру МК.
Поэтому я всегда рекламирую начало деятельности в этой области с АСМа.
Простота записи в Си очень обманчива.
Чтобы не напороть всякого хлама и быдлокода приходится вникать в структуру компилятора и прогнозировать выходной код. А тут то как раз и нужен АСМ.
Открывайте даташит и читайте. Тем более, что для АТМег на русском писано-переписано уже всего...
Будут КОНКРЕТНЫЕ вопросы по архитектуре, периферии и системе команд - обращайтесь.
Чудес не бывает. Даже для мигания светодиодом на одной ноге требуется курить даташит.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение Аlex »

Я просто НЕ МОГУ сформировать МЫСЛЬ в КОД!
Это всё временно. Через "стадию клетки" все проходили. :)
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

КРАМ писал(а):Чудес не бывает. Даже для мигания светодиодом на одной ноге требуется курить даташит.

Мигалки я уже осилил. Продолжаю развитие!
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: АЦП. Разбор полётов

Сообщение Jack_A »

КРАМ писал(а):Прежде чем писать код, нужно понять архитектуру МК.


Поддерживаю. И как само собой разумеющееся - должен быть детально продуман, а еще лучше прорисован алгоритм функционирования будущего дивайса. Насчет простоты - сам нарывался в прошлом на случаи, когда я понимал работу Сишного оператора не так, как разработчик компилятора :)
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: АЦП. Разбор полётов

Сообщение pokk »

Здравствуйте, решил я тоже разобраться с этим вопросом как избавится от шумов. Правда меня больше интересует алгоритм, а не код
Но пока возникают вопросы.
...
Простейший КИХ ФНЧ - это КОЛЬЦЕВОЙ БУФЕР (прямоугольное окно).
Для его формирования нужно каждое преобразование писать в буфер нужной длины просто по кольцу (инкрементируя указатель по кругу). И ПОСЛЕ КАЖДОГО ИЗМЕРЕНИЯ, после занесения очередного измерения в буфер, находится сумма всех элементов массива-буфера и делится на длину буфера (сдвигом или делением, зависит от выбранной длины).
...

Даже вот тут в самом начале, не как не могу понять каким образом буфер является фильтром. и как будет рассчитать его ачх и параметры. В прошлом семестре был курс цифровая обработка сигналов, но видимо что-то осталось не понятно или пробелы.
По читал ещё раз лекцию "синтез не рекурсивных фильтров методом весовых функций" Глинченко А.C ЦОС . Полагаю, что прямоугольное окно это весовая функция, но тогда что бы произвести фильтрацию сигналов надо взять свёртку сигнала и импульсной характеристики(ИХ)(sinc функции) но здесь об этом не слово или всё таки кольцевой буфер и есть ИХ? Тогда АЧХ фильтра будет выглядеть примерно sinc функцией ?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25125
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

Да, импульсная характеристика ФНЧ КИХ с прямоугольным окном будет sinc функцией.

Изображение

Интеграл в свертке - это СУММИРОВАНИЕ отсчетов с интервалом ЗАДЕРЖКИ (т.е. интервалом преобразования).

Изображение

Оконные коэффициенты будут влиять на соотношение амплитуды основного и боковых лепестков.
В случае единичных коэффициентов получаем прямоугольное окно. Оно и дает обычное скользящее среднее.

Изображение

Кольцевой буфер реализует скользящий во времени массив отсчетов для суммирования.
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: АЦП. Разбор полётов

Сообщение pokk »

h(0),h(1) это я так полагаю что в вашем случае оконные коэффициенты которые равны единице или же ИХ ?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25125
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

Да, это оконные коэффициенты.
Когда они равны (единице), то массив может быть неупорядоченным, т.е. его начало может быть в любом месте. Знчит его заполнение может вестись по кругу без дальнейшего пересчета указателя адреса. При оконных функциях непрямоугольного вида заполнение все равно круговое, а вот обработка уже требует расчета указателя.
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: АЦП. Разбор полётов

Сообщение pokk »

А куда ИХ делать ? Я почему-то понимаю что оконные коэффициенты это и есть их и тогда что бы найти ачх надо взять преобразование Фурье так ?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25125
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

Если оконная функция прямоугольная, то эти коэффициенты никуда девать не нужно, поскольку произведение элементов массива на единицу дает тот же самый массив.
А в случае непрямоугольности нужно умножать каждый элемент массива на свой оконный коэффициент и потом уже находить сумму этих произведений. Только как я уже ранее писАл, массив должен быть упорядоченным. Т.е. нужно умножать последний поступивший отсчет на нулевой коэффициент, предыдущий на первый и т. д.
Преобразование Фурье оперирует ДРУГИМИ коэффициентами. Внешне математика похожа, поскольку математические методы аналогичны.
Но в случае с преобразованием Фурье каждый фильтр требует коэффициентов, которые равны значению базисной функции в точке отсчета.
ЗЫ. Не путайте АЧХ и обработку сигнала. АЧХ - это графическое или аналитическое выражение комплЕксного коэффициента передачи четырехполюсника, а процесс фильтрации - это УМНОЖЕНИЕ этого коэффициента на значения входного сигнала с целью получения выходного.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: АЦП. Разбор полётов

Сообщение просто КОТ »

А можно вернутся к моему непониманию?! :roll:
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25125
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

Можно.
Только нужно не вообще задавать вопросы, а с некоторым усилием по их пониманию...
Скажем, нужно разобраться с тем, какой таймер в АВР запускает АЦП по переполнению. И инициализировать этот таймер, АЦП и их взаимное функционирование.
По поводу расчета тут уже писали...
Так что непонятно?
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: АЦП. Разбор полётов

Сообщение pokk »

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

Это я понял :)
Преобразование Фурье оперирует ДРУГИМИ коэффициентами. Внешне математика похожа, поскольку математические методы аналогичны.
Но в случае с преобразованием Фурье каждый фильтр требует коэффициентов, которые равны значению базисной функции в точке отсчета.

это как-то не сильно понятно.
В общем я вспомнил как АЧХ фильтра найти, надо единичный импульс на вход фильтра подать и то что на выходе будет (ИХ) сделать преобразование Фурье.
ЗЫ. Не путайте АЧХ и обработку сигнала. АЧХ - это графическое или аналитическое выражение комплЕксного коэффициента передачи четырехполюсника, а процесс фильтрации - это УМНОЖЕНИЕ этого коэффициента на значения входного сигнала с целью получения выходного.

Да вроде бы не путаю.
Не много в LabVIEW по баловался на вход подал гауссовский шум со среднеквадратичным отклонением 0.5 и сложил его с цифрой 2 и пропустил его через такой фильтр с N=8 среднеквадратичное отклонение понизилось до 0.17.
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Re: АЦП. Разбор полётов

Сообщение Барсик »

Заинтриговали, блин. Нашёл остатки от своего старого исходника, с помощью которого когда-то мучил АЦП. Оказалось, что я старый садист - заставлял работать АЦП на тактовой частоте 9,6 МГц. На такой частоте вообще нельзя работать!
Сегодня я провёл лабораторную работу в соответствии с собственными рекомендациями: viewtopic.php?p=1372696#p1372696
Файл программы сгенерил с помощью CodeWizardAVR, после чего творчески осмыслил и "доработал напильником" - выкинул лишнее и вставил нужное. Подробности работы в комментариях в файле.
Тактовая частота АЦП - 18,75 кГц. На вход подавал 1,0000 вольт от батарейки. Результат выводил наружу в виде количества импульсов. Импульсы считал частотомером РЧЗ-07-0002.
Оказалось, что не всё так страшно. Если прицепить на вход АЦП RC цепочку (я использовал 10 кОм и 47 мкф), то даже без всякой обработки, результат преобразования АЦП болтается всего на 1 -3 единицы. С любой обработкой - вообще стоИт, как у молодого.

Но если отключить конденсатор, то беда.
без обработки 851 - 986
массив 8 значений 916 - 948
массив 16 значений 925 - 943
тупое суммирование 16 результатов 917 - 943

Странные результаты получились, когда на входе строгий ноль. Без обработки, и с обработкой типа скользящего среднего, на выходе болтается 1 - 2 единцы, т.е. нуля нет. При обработке тупым суммированием, как не странно, на выходе строгий 0. Не могу понять, в чём дело.
Исходники прилагаю. Файл adc8.c - обработка с размером буфера 8. Файл adcsum16.c - обработка тупым суммированием. Он не такой красивый, поскольку сделан из предыдущего.
Вложения
adcsum16.c
(6.89 КБ) 323 скачивания
adc8.c
(6.13 КБ) 298 скачиваний
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25125
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: АЦП. Разбор полётов

Сообщение КРАМ »

pokk писал(а):
Если оконная функция прямоугольная, то эти коэффициенты никуда девать не нужно, поскольку произведение элементов массива на единицу дает тот же самый массив.
А в случае непрямоугольности нужно умножать каждый элемент массива на свой оконный коэффициент и потом уже находить сумму этих произведений. Только как я уже ранее писАл, массив должен быть упорядоченным. Т.е. нужно умножать последний поступивший отсчет на нулевой коэффициент, предыдущий на первый и т. д.

Это я понял :)
Преобразование Фурье оперирует ДРУГИМИ коэффициентами. Внешне математика похожа, поскольку математические методы аналогичны.
Но в случае с преобразованием Фурье каждый фильтр требует коэффициентов, которые равны значению базисной функции в точке отсчета.

это как-то не сильно понятно.
В общем я вспомнил как АЧХ фильтра найти, надо единичный импульс на вход фильтра подать и то что на выходе будет (ИХ) сделать преобразование Фурье.
ЗЫ. Не путайте АЧХ и обработку сигнала. АЧХ - это графическое или аналитическое выражение комплЕксного коэффициента передачи четырехполюсника, а процесс фильтрации - это УМНОЖЕНИЕ этого коэффициента на значения входного сигнала с целью получения выходного.

Да вроде бы не путаю.
Не много в LabVIEW по баловался на вход подал гауссовский шум со среднеквадратичным отклонением 0.5 и сложил его с цифрой 2 и пропустил его через такой фильтр с N=8 среднеквадратичное отклонение понизилось до 0.17.

В том и дело, что путаете.
Вы подаете на вход функцию Дирака, а не реальный сигнал. В результате имеете не фильтрацию сигнала, а АЧХ...
Та же бодяга с шумом.
Ответить

Вернуться в «AVR»