Views: 3156 Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы приведем несколько решений на PIC-микроконтроллеров. PIC10F320/322 это идеальное решения для создания всевозможных регуляторов освещения. При этом мы получаем довольно функционально навороченное устройство с минимальной стоимостью …
Читать далее Самый простой диммер для светодиодного освещения
Метка:ШИМ
Широтно-Импульсная модуляция
Views: 3482
PIC-контроллеры имеют на своем борту несколько CCP и ECCP модулей которые позволяют удовлетворить практически все варианты по применению ШИМ. В этом примере показано как реализовать простой одноканальный ШИМ и как оперативно управлять длительностью импульса.
Схема платы ИЛЛИССИ-4B где можно получить выход ШИМ.
Для реализации ШИМ необходимо использовать CCPх модуль и таймер TIMER2(4/6). Блок схема реализации ШИМ.
Таймер предназначен для задания периода (частоты) работы ШИМ. CCP модуль для задания длительности импульса и формирование на выходе контроллера сигнала ШИМ.
Создание стандартного одноканального ШИМ.
Стандартный режим ШИМ позволяет генерировать Широтно-импульсное модуляцию (ШИМ) на контакте CCPx с разрешением до 10 разрядов. Период, рабочий цикл, и разрешение формируются при использовании следующих регистров:
• Регистр PRx
• Регистр TxCON
• Регистр CCPRxL
• Регистр CCPxCON
Последовательность настройки модуля CCP для формирования ШИМ следующая:
- Отключите выходной драйвер контакта CCPx, установив бит TRIS для соответствующего контакта.
- Выбрать соответствующий 8-разрядный таймер TimerX, (Timer2, Timer4 или Timer6), чтобы использоваться для генерации ШИМ устанавливая биты CxTSEL <1:0> в регистре Регистр CCPTMRSx.
- Загрузить регистр PRx для выбранного TimerX со значением периода ШИМ.
- Сконфигурируйте модуль CCP для режима ШИМ загружая в регистр CCPxCON соответствующее значение.
- Загрузите регистр CCPRxL и биты DCxB <1:0> регистра CCPxCON, значением рабочего цикла ШИМ.
- Соответственно настроить и включить 8-разрядный таймер TimerX: Если предполагается использовать прерывания от таймера – очистите бит флага прерывания TMRxIF в регистрах PIR2 или PIR4. Настройте предделитель (и если необходимо постделитель) таймера TxCON используя биты TxCKPS.
- Включить таймер, установив бит TMRxON в регистре TxCON. Активировать выходной контакт ШИМ: Ожидайте, пока будет установлен бит TMRxIF в регистре PIR2 или PIR4, а затем активировать выход ШИМ очистив соответствующий бит в регистре TRIS.
Период сигнала ШИМ можно рассчитать по формуле
PWM Period = [(PRx) + 1] * 4 * TOSC * (TMRx значение предделителя).
где, TOSC=1/Fosc.
Для нашей платы с тактовой 64 мГц мы получим PWM Period = (255+1)*4*(1/64000000)*16 = 0,000256 сек. Или 256 микросекунд. Для расчета можно загрузить файл в формате ME Setting_the_frequency_of_the_timer_TMP2.
Длительность импульса ШИМ можно рассчитать по формуле:
Pulse Width = (CCPRxL:CCPxCON<5:4>)* TOSC * (TMRx Prescale Value)
Примечание: обратите внимание на разрешение ШИМ, для этого необходимо обратиться к техническому описанию используемого контроллера, но хотелось бы сказать, что это актуально если необходимо использовать ШИМ для работы на более высоких частотах.
Программная реализация.
В нашем примере мы получим 10 разрядный ШИМ, это значит, что значение будет меняться в пределах от 0 до 1023 для периода от 0 до 100%. При “0” будет на выходе низкий уровень, при 1023 будет только высокий.
Настройка модуля ECCP1 в стандартном режиме.
CCP1CON=0b00001100; // настройка модуля в режиме шим T2CON=0b01111110; // настройка таймера PR2=255; // задание периода ШИМ CCPR1L=0; // очистка регистра длительности = 0
Для формирование длительности выберем две переменные основная в которой будем задавать длительность импульса
int pwm_reg; // основной регистр для формирования длительности
Дополнительный для организации обработки данных для загрузки в регистры CCP модуля
char pwm_reg2; // дополнительный регистр для обработки
Значение ширины импульса должна быть от 0-1023. Для загрузки в модуль CCP необходимо старшие 8 бит значения ШИМ загружать в регистр CCPR1L. Младшие два бита необходимо загрузить в биты 4 и 5 регистра CCP1CON. Один из вариантов как это можно сделать:
pwm_reg2=pwm_reg<<6; // pwm_reg2=pwm_reg2>>2; // CCP1CON &= 0b11001111; // CCP1CON |= pwm_reg2; // CCPR1L=pwm_reg>>2; //
Для тестирования модуля ШИМ будем использовать кнопки управления платы ИЛЛИССИ-4С. Они подключены к выводам Порта B RB4 – RB7.
Для индикации подключим к выходу CCP1 светодиод, для демонстрации работы ШИМ (это восьмой контакт на вернем дополнительном разъеме).
Демонстрация работы
Кнопка 2 используется для переключения режима демонстрации с ручного на автоматический. Кнопка 3 и 4 для ручного увеличения или уменьшения длительности.
Загрузка демонстрационного проекта.
Версия – 1.1[wpdm_file id=71 template=”link-template-calltoaction3.php”]
Это может быть интересно
Контроллер управления светодиодным освещением с дистанционным управлением
Views: 2037 Все активнее светодиоды входят в нашу жизнь. Всё эффективнее становится светодиодное освещение. Всё ниже опускаются цены. Всё больше появляется возможностей получения сочных цветов, простоты в управлении. Всё чаще …Тестирование модуля генератора
Views: 920 Тестирование модуля генератора Настройка, запуск и проверка рабочей частоты на примере PIC18F26K40. PIC18F26K40 Чтобы понять из-за чего зависит производительность микроконтроллера просто надо понять как работает его задающий тактовый …УКВ – радиоприем, часть 1
Views: 9731 Музыкальная тема к статье, слушаем: Первый мой радиоприемник, выглядел так. Использовал исключительно в школе на уроках, держась за одно ухо и преданно смотря на училку и сладко улыбаясь. …NeoPixel LED and PIC24
Views: 688 Популярность однопроводной шины для управления светодиода типа WS2812 не ослабевает, а новые типы светодиодов в корпусах 3,5*3,5мм, 2,0*2,0мм становяться все больше привлекательными. Построение дисплеев для анимации требуют все …Проект с использованием MCC часть 06
Views: 1403 Изменим схему следующим образом добавим две тактовые кнопки BT1 и BT2. Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module. …REFERENCE CLOCK OUTPUT MODULE
Views: 528 REFERENCE CLOCK OUTPUT MODULE Модуль формирования опорного тактового сигнала Модуль опорного тактового сигнала обеспечивает возможность посылать сигнал синхронизации на тактовый опорный выходной контакт или контакты (CLKR) в зависимости от …Development Boards PIC18F47Q84
Views: 5612 Microchip тішить новими мікроконтролерами. Особливістю цього MCU – це багата інтелектуальна периферія, що дозволяє вирішувати такі завдання на 8 бітних MCU, які неможливо реалізувати на деяких навіть 32 …TDA7294 part 1
Views: 379 TDA7294 має унікальні дані для створення підсилювачів звукової частоти HI-FI класу. Варіант застосування є конфігурація BRIDGE (мостова схема включення), де використовуються два TDA7294, як показано на схематичній діаграмі …WiFi ESP8266 – AT команды связанные с функцией TCP/IP (v.1.6.1)
Views: 5226 AT команды связанные с функцией TCP/IP В этом разделе описаны команды которые позволяют устанавливать соединения между серверами и клиентами в сети. Приведено описание команд и примеры их выполнения. …Проект с использованием MCC часть 10
Views: 995 Алгоритм управления освещением от нажатия кнопки. Обработка удержания кнопки: Мы должны проверить кнопка в настоящий момент нажата и флаг удержания установлен, если да Проверить таймер удержания “отработал” – …