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-
Основы построения глобальной системы контроля Эшелон
«Эшелон» - общепринятое название глобальной системы
радиоэлектронной разведки и контроля, представляющей собой многонациональную
сеть электронных прослушива ...
Расчет приемника
- Диапазон принимаемых частот: ДВ, СВ
-
65,7 - 73,7 МГц
87,5 - 108,5 МГц
- Реальная чувствительность: Е=1,5 мкВ
- Выходная мощность: =40
мВт
- ...
Проектирование микроконтроллера
Развитие микроэлектроники и широкое применение ее изделий в
промышленном производстве, в устройствах и системах управления самыми
разнообразными объектами и ...
Меню сайта
2024 © www.informaticspoint.ru