Самый простой индикатор уровня звукового сигнала

Visits: 6176


Демонстрационный проект создания индикаторов уровня с использованием WS2812B. Изучив этот проект вы сможете  самостоятельно изготавливать и конструировать свои индикаторы уровня звукового сигнала. Дополнительно читайте статью Бегущие огни на WS2812B по подключению и работе с WS2812B. Видео проекта.

 


Примечание, демонстрационное видео на PIC18F26K22 этап разработки, видео на PIC12 в конце статьи

Индикатор выполнена на микроконтроллера PIC12F1822. Количество светодиодов WS2812B не более 23 шт. Можно меньше изменив значение в проекте.


Схема индикатора

catcatcat_vu-metr-02

Внимание, обратите внимание, С13 неправильно нарисована полярность! Необходимо изменить на противоположную.


Сигнал поступает на комбинированный сумматор и и фильтр низких частот на резисторах R3, R8, R4, R7 и  конденсаторах C6, C4, C5. Далее сигнал поступает на аналоговый вход AN4. Уровень сигнала должен быть в пределах стандарта 0,7 вольта. Если вы желаете использовать более высокие уровни входного сигнала, то необходимо на входе поставить резистентный делитель или использовать спаренный потенциометр.

Контроллер преобразовывает данные АЦП и формирует эффекты для индикации на светодиодах со встроенными драйверами WS2812B. В связи с тем, что в этом контроллере память ограничена, всего 2 кБ. памяти программ и 128 ОЗУ сильно разойтись с эффектами индикации нет места. Поэтому максимальное количество светиков всего 23 шт (последовательное включение, параллельно можно подключить несколько ленточек.). При изменении программы если возникнет необходимость количество светиков можно уменьшить, тем самым высвободить место для данных участвующих в обработке в программе.

Схема в формате PDF

Значок

Самый простой индикатор уровня звукового сигнала - схема 63.40 KB 1144 downloads

Самый простой индикатор уровня звукового сигнала...


Создание программы индикатора

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

#define _XTAL_FREQ 	32000000    // задаем тактовую частоту
#define LEDC    23  // количество светодиодов ws2812b используемых в индикаторе

void loadWS2812B (void);    // функция загрузки данных в светодиоды ws2812b
void pointred (char LED,char brig); // функция управления красным цветом
void pointgreen (char LED,char brig);// функция управления зеленым цветом
void pointblue (char LED,char brig);// функция управления синим цветом
void sound_level (char volume);// функция формирования светового индикатора

char ledred[LEDC];// массив красных где 0 - яркость в формате 0-255
char ledblue[LEDC];// массив синих
char ledgreen[LEDC];//массив зеленых

int ccirlz;// переменная таймера переключателя эффектов
char regim,vreg; // переменный выбора эффектов и цвета индикации

int audi, audiMAX;// переменные данные для обработки аудио данных
char timint;

// константы и переменные для обработки функции вычисления среднего значения аудио данных
// для сглаживания индикации
#define INTEG 70                // глубина интеграции для вычисление среднего
unsigned int staroe,aru_ups,novoe;

Конфигурация контроллера проходи в два этапа на этапе программирования

// конфигурирование контроллера

 #pragma config FOSC = INTOSC       // INTOSC oscillator: I/O function on CLKIN pin
 #pragma config WDTE = ON           // WDT disabled
 #pragma config PWRTE = ON          // PWRT enabled
 #pragma config MCLRE = OFF         // MCLR/VPP pin function is digital input
 #pragma config CP = ON             // Program memory code protection is enabled
 #pragma config CPD = ON            // Data memory code protection is enabled
 #pragma config BOREN = ON          // Brown-out Reset enabled
 #pragma config CLKOUTEN = OFF      // CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin
 #pragma config IESO = OFF          // Internal/External Switchover mode is disabled
 #pragma config FCMEN = OFF         // Fail-Safe Clock Monitor is disabled

#pragma config WRT = ALL            // 000h to 7FFh write protected, no addresses may be modified by EECON control
#pragma config PLLEN = ON           // 4x PLL enabled
#pragma config STVREN = OFF         // Stack Overflow or Underflow will not cause a Reset
#pragma config BORV = HI            // Brown-out Reset Voltage (VBOR) set to 2.7V
#pragma config LVP = OFF          // High-voltage on MCLR/VPP must be used for programming

и на этапе включения

//--------------------------------------------------------------------
	CLRWDT(); 					//сброс сторожевого таймера +++++++++++++++++++++- 
// настройка генератора 8 * 4 = 32 МГц.
	OSCCON=0b11110000;
/*		 ||||| ++---Clock determined by FOSC<2:0> in Configuration Word 1
                 |++++------8 MHz or 32 MHz HF(see Section 5.2.2.1 “HFINTOSC”)
                 +----------Clock determined by FOSC<2:0> in Configuration Word 1
*/
// настройка портов	
	//WDTCON=0b00010111;//01010 = 1:32768 (Interval 1s typ)

	PORTA	=	0;
	LATA	=	0;
	ANSELA	=	0b00010000;
	TRISA	=	0b00010000;
	WPUA	=	0;
// настройка АЦП
        ADCON1=0b01110000; // ADC ref = Vdd,Vss/Left justified,
        ADCON0=0b00001101; // включить АЦП/00011 = AN4

 Обработка аудио данных

//-----------------------------------------------------------------------
        ADCON0,GO=1;        // запуск конвертирования
        while(ADCON0,GO);   // ожидания окончания преобразования
        audi=ADRESH;

        audi=audi-127;      // установка нуля
        if(audi<0)          // выпрямитель программный
        {
            audi=~audi;
            audi++;
        }

        if(audi>audiMAX)    // определение максимума сигнала
        {
            audiMAX=audi;
        }
        else if(audiMAX>0)  // интеграция максимума, возврат "столбика"
        {
            if(--timint==0)
            {
                timint=9;   // скорость возврата, чем больше число тем медленнее.
                audiMAX--;
            }
        }
        // усреднение сигнала, сглаживание
        novoe=audiMAX*90;   // усиление сигнала 3*30 (в три раза)
        if(novoe>staroe)staroe=(staroe-staroe/INTEG)+(novoe/INTEG);
        else if(novoe<staroe)staroe=(staroe-staroe/INTEG)-(novoe/INTEG);
        aru_ups=staroe/30;  // преобразование к нормальному виду
        if(aru_ups>255)aru_ups=255; // ограничение в диапазоне 0 - 255

Это все далее необходимо по полученному значению aru_ups которое в диапазоне 0 – 255 сформировать индикатор уровня для визуализации.


Воспроизводимые эффекты

В память контроллера влезло 7 эффектов:

  1. Синий столбик и с верней точкой красного цвета
  2. Двухцветный столбик пропорциональный с верней точкой другого цвета, цвета меняются от режима работы
  3. Двухцветный столбик одного цвета, от 60% высоты индикация максимума другого цвета, цвета меняются от режима работы
  4. Движущие три точки, по краям одинакового цвета
  5. Одна точка
  6. Столбик и точка другого цвета + динамическая разметка сверху, яркость разметки пропорциональна уровню сигнала
  7. Столбик и с точками другого цвета – эффект резинки 

Построение эффекта визуализации.

Сама функция может состоять из дух частей:

  • Часть первая это медленная анимация самого вида изображения
  • Часть вторая основная работа

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

Пример функции:

/*Синий столбик и с верней точкой красного цвета*/
    if(pusk)// анимация 
    {
      for (a=0;a<=level_L;a++)
        {
            pointred (a-1,0);
            pointblue (a-1,50);
            pointred (a,150);
            for (b=0;b<5;b++)__delay_ms (10);
            loadWS2812B();  // загрузка данных
        }
      for (b=0;b<80;b++)__delay_ms (10);
      pusk=0;

    }

    for (a=0;a<number_LEDs;a++) // основной режим работы
    {
        if(a<level_L)color1=50;
        else color1=0;
        if(a==level_L)color2=150;
        else color2=0;
        //        pointgreen (a,255,0);
        pointred (a,color2);
        pointblue (a,color1);
    }

Для макетирования была использована плата от Контроллер управления светодиодным освещением с дистанционным управлением.

 


Видео демонстрация работы

  


Все вопросы на форуме http://musiccolor.d-lan.dp.ua/index.php?topic=175.msg3010;topicseen#new


catcatcat_vu-metr-08


Комплектующие необходимые для сборки

Наименование Тип Номинал Количество Обозначение
Микроконтроллер PIC12F1822 1 шт PIC1
Ленточка с WS2812B WS2812B 23 шт WS1 – WS23
Конденсатор 0805 0.1х50v 7 шт C7, C3, C5, C1, C2, C4, C6
Конденсатор 100,0x6v 1 шт C13
Резистор 0805 10k 1 шт R5
Резистор 0805 1k 5 шт R6, R11, R10, R4, R7
Резистор 0805 51k 2 шт R3, R8
Резистор 0805 330 1 шт R9
Стабилизатор SOT223 LD1117-3,3v 1 шт ST1

Описание функции переключателя для версии 1.10. Переключатели в зависимости от положения отключает несколько эффектов, когда все замкнуты активен только первый эффект индикации. Режимы отключения смотри в таблице, 1-замкнут,0-разомкнут:

DJ0
RA0
DJ1
RA1
Описание
0 0 все 7 эффектов активны
1 0 с 1 по 4
0 1 с 1 по 2
1 1 только первый эффект

Файлы для загрузки

Схема в формате PDF

Значок

Самый простой индикатор уровня звукового сигнала - схема 63.40 KB 1144 downloads

Самый простой индикатор уровня звукового сигнала...
Проект в MPLAB X IDE v1.95 v 1.0
Значок

Самый простой индикатор уровня звукового сигнала - проект 295.92 KB 58 downloads

Самый простой индикатор уровня звукового сигнала...
Login Required Message:
Прошивка проекта v 1.0
Значок

Самый простой индикатор уровня звукового сигнала - прошивка 3.14 KB 437 downloads

Самый простой индикатор уровня звукового сигнала...


Самый простой индикатор уровня звукового сигнала – проект v 1.01. Добавлена функция переключения цветов по максимуму сигнала.

Значок

Самый простой индикатор уровня звукового сигнала - проект v 1.01 300.84 KB 46 downloads

Самый простой индикатор уровня звукового сигнала...
Login Required Message:
Прошивка версия 1.01 
Значок

Самый простой индикатор уровня звукового сигнала - прошивка v 1.01 3.19 KB 368 downloads

Самый простой индикатор уровня звукового сигнала...


Прошивка версия 1.10, добавлена функция отключения эффектов, с помощью дип переключателя. 

Значок

Самый простой индикатор уровня звукового сигнала - прошивка V1.10 3.26 KB 351 downloads

Самый простой индикатор уровня звукового сигнала....


Итоговая версия v 1.11 Проект+прошивка, доработана функция переключения цвета и отключена функция смены режима когда выбран один эффект. Только для тех кто реально реализовал проект.

Значок

Самый простой индикатор уровня звукового сигнала - итоговая версия 1.11 154.07 KB 33 downloads

Самый простой индикатор уровня звукового сигнала...


Прошивка v 1.20. Убраны эффекты смены режимов, считаю, что для такого простого варианта они ненужны.

Значок

Самый простой индикатор уровня звукового сигнала - прошивка v 1.20 2.38 KB 418 downloads

Самый простой индикатор уровня звукового сигнала...


Видео работы прототипа стерео индикатора проект на PIC18F26k22.

 


Это может быть интересно


  • Униполярный шаговый двигатель – часть 2Униполярный шаговый двигатель – часть 2
    Visits: 757 В этой части только итог и версия 2.0 универсальной, которая позволяет управлять шаговым двигателем во всех трех режимах и 3.0 специальной библиотеки только для одного полушагового режима. В …
  • Ссылки на интересные источникиСсылки на интересные источники
    Visits: 800 Сбор 3D моделей от André L’Hérault конденсаторы, резисторы, индуктивности dropbox IPC-SM-782 Surface Mount Design and Land Pattern Standard Видео уроки по Altium designer Alexey Sabunin https://www.youtube.com/channel/UCG7N5CqXpyK8nQjr1EmMgng Сергей Булавинов https://www.youtube.com/channel/UCISAMXRnN_Qw9UTjUwZI1Jw Robert Feranec https://www.youtube.com/user/matarofe …
  • MPLAB® Code ConfiguratorMPLAB® Code Configurator
    Visits: 1768 MPLAB ® Code конфигуратор (MCC) является свободно распространяемым плагином, это графическая среда программирования, которая генерирует бесшовный, легкий для понимания кода на Cи, чтобы вставить его в свой проект. …
  • Самый простой диммер для светодиодного освещенияСамый простой диммер для светодиодного освещения
    Visits: 2945 Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы …
  • Одноканальный емкостной сенсор – AT42QT1012Одноканальный емкостной сенсор – AT42QT1012
    Visits: 2307 Описание сенсора [wpdm_file id=242] Незаконченный проект, так-как сенсор не оправдал своего назначения, не рекомендую, просто выброшенные деньги. Особенности. • Количество сенсоров – один, режим переключения ( touch-on/touch-off ), а также программируемая …
  • Проект с использованием MCC часть 16Проект с использованием MCC часть 16
    Visits: 1030 Продолжим изучение EUSART. На этом этапе отработает передачи данных с ПК и получения эха. Для этого в основной цикл программы добавим код if(EUSART_DataReady) // проверим флаг готовности данных …
  • Проект с использованием MCC часть 12-1Проект с использованием MCC часть 12-1
    Visits: 884 В настоящее время без визуализации информации уже не интересно. Поэтому научимся выводить информацию на дисплей. Для это возьмет простенький OLED RET012864E/REX012864J я такой приобретал в фирме “Гамма-Украина”, описание можно …
  • Часы-кухонный таймерЧасы-кухонный таймер
    Visits: 3855 Каждая кухня должна иметь кухонный таймер, который позволяет напоминать хозяйке когда проходить определенный промежуток времени. Например, печем пирог, варим яйца… , чтобы не смотреть постоянно на часы, установим таймер и …
  • Стабилизатор тока для светодиодов SN3350Стабилизатор тока для светодиодов SN3350
    Visits: 2568 SN3350 ближайший аналог ZXLD1350 Как собрать готовый вариант, читайте во второй части – http://catcatcat.d-lan.dp.ua/stabilizator-toka-na-sn3350-chast-2/ 40V  драйвер светодиодов с внутренним ключом  SN3350 – импульсный понижающий преобразователь, разработанный для того, чтобы эффективно управлять одним или …
  • Altium Designer my Libraries, Project templates, System settings by Catcatcat V24.0 PROAltium Designer my Libraries, Project templates, System settings by Catcatcat V24.0 PRO
    Visits: 90 Назвемо цей варіант поновлення для професіоналів і не тільки. Що нового? 1. Повністю змінено структуру параметрів бази даних компонента. Це дозволило повноцінної роботи Актив ВОМ. Ви відразу отримуєте …




 

Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее