Просмотров: 2882 Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы приведем несколько решений на PIC-микроконтроллеров. PIC10F320/322 это идеальное решения для создания всевозможных регуляторов освещения. При этом мы получаем довольно функционально навороченное устройство с минимальной стоимостью …
Читать далее Самый простой диммер для светодиодного освещения
Метка:ШИМ
Широтно-Импульсная модуляция
Просмотров: 3300
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”]
Это может быть интересно
Простой цифровой вольтметр ch-c3200
Просмотров: 2419 В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип …WiFi ESP8266 ESP-202 (ESP-12F)
Просмотров: 7495 Первое знакомство, сначала надо его купить… http://voron.ua/catalog/024404 Схема для подключения и тестирования По схеме ставим две кнопки, сброс и кнопку BT2, для перевода в режим обновления прошивки. Если надо сделать …PIC32MZ – прерывания (заметки)
Просмотров: 428 Виды формирования запоминая контекста при входе в прерывания. Компилятор представляет три варианта AUTO – когда запоминания места возврата из подпрограммы возложено на программу, т.е все создается программно. Этот …JDY-62A Audio bluetooth module
Просмотров: 1471 Простой модуль для простого аудио блютуса. Встроенные подсказки на английском языке. Модуль включён, режим муте – после подачи питания. Контроль разряда батареи предупреждение что батарея разряжена и необходима …NeoPixel LED и PIC18
Просмотров: 1588 Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, …TM1650 драйвер LED семисегментного индикатора
Просмотров: 17388 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd. Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только …REFERENCE CLOCK OUTPUT MODULE
Просмотров: 453 REFERENCE CLOCK OUTPUT MODULE Модуль формирования опорного тактового сигнала Модуль опорного тактового сигнала обеспечивает возможность посылать сигнал синхронизации на тактовый опорный выходной контакт или контакты (CLKR) в зависимости от …MAX7219/21 и 8х8 LED дисплеи
Просмотров: 882 MAX7219, MAX7221 предназначены для вывода информации на 8 разрядов семисегментного индикатора, но на нем легко организовать вывод на светодиодные индикаторы 8х8. продолжение следует…. Это может быть интересно Метки:MAX7219, MAX7221MPLAB® Code Configurator
Просмотров: 1768 MPLAB ® Code конфигуратор (MCC) является свободно распространяемым плагином, это графическая среда программирования, которая генерирует бесшовный, легкий для понимания кода на Cи, чтобы вставить его в свой проект. …Проблемы классической светомузыки
Просмотров: 1942 Светомузыка – что это такое? Определение: Светомузыка (жаргонное: цветомузыка) — вид искусства, основанный на способности человека ассоциировать звуковые ощущения со световыми восприятиями. Такое явление в неврологии получило название …