Реле Tianbo - ресурс 10 млн переключений

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

В первой части мы познакомились со схемой, с назначением отдельных узлов и элементов, рассмотрели принципы работы устройства.

Программное обеспечение микроконтроллера написано полностью на языке Си, и условно его можно разделить на 4 части.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

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) – скачать

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Real-Time Audio Spectrum Analyser. Part 2. Firmware

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя