Программа Сервисный Центр
0

Анализатор спектра в реальном времени на PIC18F4550. Часть 2. ПО микроконтроллера


В первой части мы познакомились со схемой, с назначением отдельных узлов и элементов, рассмотрели принципы работы устройства. Программное обеспечение микроконтроллера написано полностью на языке Си, и условно его можно разделить на 4 части. 1. Выборки данных АЦП (сэмплирование) Осуществление выборок аналого-цифровым преобразователем ведется по каналу RA0 каждые 50 мкс. Это дает нам частоту дискретизации 20 кГц (20000 раз в секунду). Для преобразования Фурье очень важно, чтобы выборки были равномерными и точными. С этой целью в подпрограмме получения данных с АЦП введена короткая временная задержка, которая калибровалась с использованием осциллографа подключенного к контрольной точке W4 на плате. Период прямоугольных импульсов при измерении в этой контрольной точке должен составлять точно 50 мкс. АЦП работает с полным 10-битным разрешением и результаты смещаются вниз на 512 для реализации «виртуальной земли» входного сигнала. Это означает, что результирующие данные будут лежать в диапазоне от –512 до +512, как и требуется для математических преобразований FFT. Процедура получения выборок займет по времени немного более 32 мс (64×50 мкс) для каждого цикла. 2. 16-битное быстрое преобразование Фурье Подпрограмма, реализующая вычисление алгоритма FFT, была найдена на просторах всемирной сети (ссылка на оригинальный код имеется в исходном коде в конце статьи). Математика FFT достаточно сложна и трудна для понимания. Код был немного упрощен и адаптирован для PIC18F4550. Так как микроконтроллер имеет аппаратный перемножитель 8×8 в составе своего арифметико-логического устройства, были оптимизированы вычисления, позволяя компилятору корректно использовать возможности микроконтроллера. 3. Вычисление абсолютных значений Результат вычислений по алгоритму Быстрого Преобразования Фурье – это комплексные числа, которые состоят из действительной и мнимой части, представленных двумя массивами. Чтобы получить результат в значащей форме, нам необходимо вычислить абсолютную величину комплексного числа, которое мы получаем с использованием вычислений Пифагора для комплексных чисел. Это подразумевает извлечение квадратного корня из чисел, поэтому мы реализуем быстрое целочисленное вычисление SQRT(), так как любые вычисления с плавающей точкой значительно замедляют процесс обработки. Алгоритм FFT и вычисление абсолютных величин комплексных чисел занимают примерно 70 мс для каждого цикла. 4. Обновление ЖК дисплея ЖК дисплей с разрешением 128×64 точки должен обновляться настолько быстро, насколько это возможно. С этой целью был использован простой алгоритм прорисовки диаграммы в виде столбиков, который требует минимальное количество команд дисплея. Два переключателя установленных на плате позволяют изменить масштаб отображения (1×, 8×) и режим отображения (линейный, логарифмический). Подпрограмма обслуживания дисплея занимает по времени 45 мс. Приблизительная скорость работы дисплея анализатора спектра 1 кадр за 150 мс, т.е. мы получаем в итоге 6.5 кадров в секунду (или приблизительно 10 кадров в секунду без использования ЖК дисплея). Пользователи могут увеличить быстродействие, сократив количество необходимых для анализа частот (это ведет к сокращению времени получения выборок и вычислений по алгоритму FFT) или применив быстродействующий дисплей. Кроме того, пользователи могут переделать устройство для использования его совместно со светодиодами. Предельная частота для преобразования Фурье (частота Найквиста, Nyquist frequency) – 10 кГц. Устройство анализирует 32 диапазона частот (Гц): 1 : 312.5 - 625 2 : 625 - 937.5 3 : 937.5 - 1250 4 : 1250 - 1562.5 5 : 1562.5 - 1875 6 : 1875 - 2187.5 7 : 2187.5 - 2500 8 : 2500 - 2812.5 9 : 2812.5 - 3125 10 : 3125 - 3437.5 11 : 3437.5 - 3750 12 : 3750 - 4062.5 13 : 4062.5 - 4375 14 : 4375 - 4687.5 15 : 4687.5 - 5000 16 : 5000 - 5312.5 17 : 5312.5 - 5625 18 : 5625 - 5937.5 19 : 5937.5 - 6250 20 : 6250 - 6562.5 21 : 6562.5 - 6875 22 : 6875 - 7187.5 23 : 7187.5 - 7500 24 : 7500 - 7812.5 25 : 7812.5 - 8125 26 : 8125 - 8437.5 27 : 8437.5 - 8750 28 : 8750 - 9062.5 29 : 9062.5 - 9375 30 : 9375 - 9687.5 31 : 9687.5 - 10000 Примечание: Частота Найквиста - частота дискретизации аналогового сигнала, обеспечивающая его корректное преобразование в цифровую форму. В теореме о выборках Найквиста доказывалось, что частота дискретизации должна быть, по крайней мере, вдвое выше самой высокой частоты обрабатываемого сигнала, чтобы можно было восстановить исходный сигнал – так, для дискретизации голосового сигнала, имеющего полосу 4 кГц, необходима частота 8 кГц, в противном случае неизбежны искажения при воспроизведении этого сигнала в цифровом виде. Загрузки Исходный код программы микроконтроллера (компилятор HiTech C18) – скачатьНа английском языке: Real-Time Audio Spectrum Analyser. Part 2. FirmwareПеревод: Vadim по заказу РадиоЛоцман

По материалам сайта www.rlocman.ru

 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
 
Обратная связь

Наши партнеры

 

Опросы

Есть ли справедливость в жизни?
Конечно есть, уверен!
Вроде как должна быть, но...
Затрудняюсь ответить...
Какая справедливость? О чем Вы?
Эх.., нет правды на свете!

 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Показать все теги
 

Календарь публикаций

«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 

Архив новостей

Декабрь 2016 (7)
Ноябрь 2016 (42)
Октябрь 2016 (34)
Сентябрь 2016 (38)
Август 2016 (34)
Июль 2016 (36)
 
Наверх Сервисные мануалы Даташиты Ремонт LCD, ЖК телевизоров LG Samsung Скрипт программы "Сервисный центр"