Informatics Point

Информатика и проектирование

Обработка сигнала

Микроконвертор ADuC842 хорошо подходит для решения задач обработки сигнала. Он обладает быстрым 12-разрядным АЦП и другими встроенными высокопроизводительными аналоговыми периферийными устройствами, имеет быстрое ядро типа 8052, 62 кбайт встроенной флэш-памяти программ и еще некоторые полезные функциональные узла (рис. 4).

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

Рис. 4. Структурная схема ADuC842.

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

На рис. 5 показана иллюстрация эффективности микроконверторов. На верхней кривой показан сигнал на выходе инструментального усилителя, поданный на вход АЦП. На средней кривой показан предварительный результат, полученный с помощью фильтра, реализованного на C, а на нижнем графике показан окончательный результат после обработки множества отсчетов, алгоритм которой написан на ассемблере.

Кривые на экране осциллографа

Алгоритм фильтра, написанный на C

Полученный сигнал обрабатывается с помощью цифрового фильтра в микроконверторе. Для разрабатываемого нами устройства мы применили два фильтра с бесконечной импульсной характеристикой (IIR), рассчитанной для частоты дискретизации 500 Гц. Режекторный фильтр предназначен для подавления сигнала с частотой 50 Гц. Выбранный нами алгоритм разработки фильтра - это метод размещения нулей и полюсов, частота подавления - 50 Гц, полоса задержания шириной 10 Гц. Полученная в результате получим алгоритм:

= NInk - 1.618NInk-1 + NInk-2 + 1.5164NOutk-1 - 0.8783NOutk-2

В данном уравнении индекс k означает текущий отсчет, k-1 означает значение величины в предыдущий момент времени и т. д. Теперь нам нужно преобразовать приведенное уравнение в код. Программирование на C- наиболее рациональный метод для написания алгоритмов ресурсоемкой математической обработки в подобных случаях; программирование на ассемблере заняло бы слишком много времени. Но напрямую написать уравнения фильтра было бы неэффективно для процессора типа ADuC842, так как этот процессор не оптимизирован для операций с плавающей точкой. К счастью, мы можем масштабировать коэффициенты (умножив их на 4096) и получить код фильтра:

iNOut = (4096L X iNIn - 6627L X iNIn1 + 4096L X iNIn2 + 6211L X iNOut1 - 3598L X iNOut2)/4096;

Таким образом, реализован фильтр второго порядка. Хотя мы можем рассчитать фильтр и более высокого порядка, на практике вполне можно каскадировать фильтры второго порядка.

Второй фильтр - это полосовой фильтр Баттерворта с частотами среза 0,05 Гц снизу и 100 Гц сверху. Рекурсивный алгоритм:= 0.4206BInk - 0.4206BInk-2 +

.1582BOutk-1 - 0.1582BOutk-2

На языке C эти уравнения будут выглядеть следующим образом:

iBOut = (1723L*iBIn-1723L*iBIn2+4745L*iBOut1-650L*iBOut2)/4096;

Обратите внимание, что величину выходного сигнала можно масштабировать, изменяя коэффициенты на входе. Также заметьте, что если все сигналы положительны, деление на 4096 - это, в сущности, сдвиг двоичного числа вправо на 12 разрядов. Реализация алгоритма показана на рис. 6 в виде каскада из 5 полосовых фильтров и 2 режекторных фильтров.

(1)

{(c25ms<64); //Ждем, когда будет произведено 64 измерения= iAdc0>>3; //Сохраняем накопленное значение= 0; //Сбрасываем переменную для накапливания новых отсчетовms = 0; //Сбрасываем таймер синхронизации

// Полосовой фильтр 0.05 - 100Hz

//Fs=500= (6891L*lBIn-6891L*lBIn2+4745L*iBOut1-

L*iBOut2)>>12L; iBO10 = (6891L*iBOut-

L*iBOut2+4745L*iBO11- 650L*iBO12)>>12L; iBO20 =

(1723L*iBO10-1723L*iBO12+4745L*iBO21- 650L*iBO22)>>12L;= (1723L*iBO20-1723L*iBO22+4745L*iBO31-

L*iBO32)>>12L; iNIn = (1723L*iBO30-

L*iBO32+4745L*iNIn1-650L*iNIn2)>>12L; // 2 notch filters.= (4096L*iNIn-6627L*iNIn1+4096L*iNIn2+6211L*iNOut1-

Перейти на страницу: 1 2

Лучшие статьи по информатике

Проектирование автоматизированного реабилитационного устройства, предназначенного для реабилитации кистевого сустава человека
В современном мире нас повсюду окружают новейшие достижения техники. Невозможно представить ни одну из сфер деятельности человека без использования мехатрон ...

Проектирование микропроцессорного устройства
Спроектировать микропроцессорное устройство содержащее МП, системный контроллер, адресные буферы, ОЗУ, ПЗУ, порт ввода/вывода, адресный дешифратор. ...

Разработка принципиальной схемы 16 разрядного счетчика с использованием программы Electron ics Workbench 5.12
Подсчет импульсов является одной из наиболее распространенных операций, выполняемых в устройствах дискретной обработки информации. Такая операция в циф ...

Меню сайта