Анализатор спектра в реальном времени на PIC18F4550 » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

На каком языке программирования вы пишите программы?


Ассемблер
Си
Бейсик
Паскаль
Другой


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Анализатор спектра в реальном времени на PIC18F4550
    Автор публикации: alex Просмотров: 15413 Добавлен: 11-03-2013, 09:41 Комментарии: 1

         Проект демонстрирует реализацию анализатора спектра звуковых частот на 8-разрядном микроконтроллере PIC18F4550 производства компании Microchip. Анализ спектра выполняется при помощи оптимизированного алгоритма быстрого преобразования Фурье (Fast Fourier Transformation, FFT), написанного полностью на языке Си. Визуализация данных (спектра) в реальном времени осуществляется на графическом ЖК дисплее с разрешением 128×64 точки.
    Анализатор спектра на PIC18F4550

    Основные характеристики:
    • частота дискретизации 20 кГц;
    • диапазон частот 312 Гц – 10 кГц;
    • скорость отображения 10 кадров в секунду;
    • разрешение дисплея 128×64 точки;

    Аппаратная часть
    Принципиальная схема устройства

    Анализатор спектра в реальном времени на PIC18F4550

         Для вычисления значений по алгоритму быстрого преобразования Фурье в диапазоне звуковых частот необходимо должным образом подготовить сигнал для дальнейшей обработки микроконтроллером. PIC18F4550 имеет встроенный многоканальный АЦП, который может использоваться для измерения напряжения в диапазоне 0 В – 5 В с 10-битным разрешением (0-1023).
    Основные характеристики микроконтроллера:
    • ядро PIC18, рабочая частота до 48 МГц;
    • 32 КБайт Flash-память программ;
    • 2 КБайт RAM;
    • один 8-разрядный таймер, три 16-разрядных таймера;
    • USB интерфейс, SPI интерфейс;
    • 13-канальный 10-битный АЦП;
    • до 35 линий ввода/вывода общего назначения.

         Звуковой сигнал с линейного выхода аудиоустройства представляет собой переменный сигнал, волну с амплитудой около 1 В. Осциллограмма ниже наглядно отображает звуковой сигнал синусоидальной формы частотой 5 кГц (контрольная точка на схеме W2).

    Осциллограмма синусоидального сигнала 5 кГц

         Если такой сигал подать непосредственно на вход АЦП микроконтроллера, мы получим лишь малый диапазон значений входного напряжения (0 В – 0.5 В), т.е. мы получим значения лишь верхней волны и вычисление алгоритма FFT будет неверным.
         Для того, чтобы получить верные вычисления, нам необходимо над исходным сигналом проделать некоторые действия. Сперва необходимо усилить сигнал с целью использования всего рабочего диапазона АЦП микроконтроллера (0 В – 5 В). На втором этапе нам необходимо сместить сигнал на 2.5 В («виртуальный» 0), чтобы АЦП мог захватить все значения аналогового сигнала. Таким образом микроконтроллер сможет делать выборки положительной и отрицательной полуволны сигнала.
         С этой целью в устройстве применен простой усилитель на микросхеме LM386-1 – решаем первое условие – усиление сигнала. Питание усилителя осуществляется напряжением +5 В, и благодаря этому, мы выполняем второе условие – положительное смещение сигнала. С этой же целью допустимо использование rail-to-rail операционного усилителя (ОУ c размахом выходного сигнала, равным напряжению питания).
         Осциллограмма ниже демонстрирует форму сигнала после усилителя LM386-1 (контрольная точка на схеме W3).

    Осциллограмма смещенного синусоидального сигнала 5 кГц

         Устройство имеет стерео вход J4, однако при помощи двух резисторов (R1, R2) номиналом 10 кОм проводится смешивание двух сигналов. С помощью потенциометра R3 возможно регулирование амплитуды сигнала. Выходной сигнал с усилителя проходит через простой RC фильтр 10 кГц, и результирующий сигнал поступает на вход АЦП микроконтроллера.
         RC фильтр 10 кГц в нашем случае применен в качестве фильтра «сглаживания» для FFT, который не может корректно обнаружить сигнал с частотой выше 10 кГц. Стоит отметить: RC фильтр – самый простой фильтр и очень неэффективный, но данный тип фильтра был выбран из-за простоты реализации, т.к. требуется все два пассивных элемента. Пользователи могут самостоятельно заменить данную часть схемы, например на фильтр с использованием операционного усилителя.
         Для отображения данных используется графический ЖК дисплей ATM12864D, выполненный на базе контроллеров KS0108B и KS0107B. Дисплей подключается непосредственно к микроконтроллеру по 8-битной шине. Дополнительно имеются три светодиода, которые используются в тестовом режиме преобразования «музыка-свет». Две кнопки SW1 и SW2 предназначены для переключения режимов отображения. Второй разъем J5 предназначен для реализации сквозного канала (например, для подключения наушников). Разъем J2 предназначен для подключения программатора и внутрисхемного программирования микроконтроллера. Для питания схемы применен регулятор напряжения LM7805.
         Разработанная односторонняя печатная плата рассчитана на применение и установку компонентов со штыревыми выводами.

    Печатная плата: анализатор спектра на PIC18F4550

         Однако принципиальная схема устройства не сложная и позволяет собрать ее на макетной плате. Возможно применение другого микроконтроллера, программно совместимого с PIC18F4550 (например, PIC18F2550).

    Демонстрация работы анализатора спектра на микроконтроллере PIC18F4550



    Программное обеспечение
    Программное обеспечение микроконтроллера написано полностью на языке Си, и условно его можно разделить на 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 кГц, в противном случае неизбежны искажения при воспроизведении этого сигнала в цифровом виде.

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

    В архиве: Принципиальная схема и печатная плата (формат expressSCH и expressPCB) и Исходный код программы микроконтроллера (компилятор HiTech C18)

    analizatorspektranapic18f4550.rar [85,97 Kb] (cкачиваний: 1043)

    Комментарии
    maxx3001 24 января 2014 18:50 Группа: Посетители
    Доброго времени суток!
    Проект очень понравился, но с компилировать ПО не получается, помогите пожалуйста!)
    Я в программировании не силён, а железо любое склепать могу.