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

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

Светодиодная гирлянда на микроконтроллере ATiny2313
Развитие микроэлектроники и широкое её применение в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процесс ...

Электроакустика и радиовещание
Произвести необходимую планировку (реконструкцию) помещения с целью использования его в качестве аудитории. Рассчитать требуемую акустическую обработку внут ...

Принципиальная схема усилителя на основе полевых и биполярных транзисторов
Аналоговыми называются устройства, у которых сигналы являются непрерывными функциями времени. К основным классам аналоговых устройств относятся: усилители, ...

Меню сайта