И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, которыи позволяет изменять значения ШИМ, это PWM1_LoadDutyValue и PWM2_LoadDutyValue.

Надо только понимать, что их параметр это не процент, а число, в нашем случае число 10 битное, т.е. от 0 до 1023. Выполним некоторый предварительный эксперимент, добавим основной в текст нашей программы (наконец то, че нибудь своими руками напишим) две эти функции и обновим прошивку контроллера.

Перед основным циклом, закомментируем начальные настройки светиков и установим яркость LD1 100% = 1023, а яркость LD2 – 0,19% – этот значение 2. Перепрошьем микроконтроллер. И сразу заметим, что у нас изменились яркости горения светиков.

На фото видно, что первый светик горит на сто 100%, а второй еле “тлеет” ;). Нам теперь остается мелочь придумать корректное управление яркостью.

Сделаем так, при нажатии на кнопку будет изменяться переменная яркости которая будет вызывать функцию PWMх_LoadDutyValue для изменения яркости.

Конечно тыкать 1023 раза будет не интересно, можно сделать, чтобы яркость изменялась значению равном 1%, но сто раз это тоже многовато, сделаем например 10%, это 100/10= 10 шагов. Каждый шаг 1023/10 = 102. Значит так нажимаем на кнопку к значению текущей яркости прибавляется значение 51, нажимает вторую кнопку и от текущего значения вычитается 102.

Какие могут быть подводные камни, нам надо обеспечить, чтобы значение яркости не было больше 1023 и не было меньше 0.


Немного об особенностях настройки ШИМ ПИК-контроллеров

Период или частота задаются таймером Т2. Ширина импульса задается В регистрах PWMхDCL и PWMхDCH, величина ШИМ может быть меньше 10 бит и это будет зависеть от периода ШИМ, более подробно можно прочесть в описании на микроконтроллер. Для нас главное надо понять как формируется длительность.

Для того, чтобы получить сигнал при максимальном значении без импульсов, надо выбирать значение регистра PR2 < 255, если установить значение 255, то при 100% яркости мы получим наличие отрицательных импульсов ШИМ, что иногда совсем не приемлемо.

Для устранения этого нежелательного эффекта измените значение записываемое в регистр PR2, например, на 254.

Теперь при 100% яркости у нас отсутствую нежелательные импульсы. Что необходимо понять, если формируемая длительность (значение) больше значения записанного в регистр периода PR2, то на выходе ШИМ, будет логическая единица (или ноль – это зависит от выбранной полярности на выходе), Если равно или меньше, будет формироваться ШИМю При нуле, будет постоянно низкий уровень.


Для переменной яркости нам надо выбрать типа int со знаком, или в нашем проекте конкретно будет использовать такое описание int_least16_t, это число может принимать значение в диапазоне -32768 до + 32767 (описание можно посмотреть в файле stdint.h).

Первое, что надо будет сделать, мы должны использовать функции PWM в файлах pin_manager, а для этого необходимо их включить в эти файлы, в этом файле объявим и наши переменные яркости

Добавим в файл pin_manager.c описание переменных

Изменим функцию обработки нажатия кнопок.

Скомпилируем проект.

Теперь при помощи кнопок можно управлять яркостью светодиода 1. Для того, чтобы при подаче питания светодиоды не светились изменим начальное значение в MCC для PWM = 0%.


Проект для изучения 

Значок

Проект с использованием MCC часть 08 739.74 KB 75 downloads

И так создадим проект в котором при помощи двух...


Но тыкать пальцем в кнопочки меняя яркость одного светодиода как то не серьезно на современном этапе, стоит сделать управление яркостью одной кнопкой, а также чтобы работали два светика, что и как в следующей статье …


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


  • Система отопления на солнечных коллекторах от Дмитрия (rv3dpi)Система отопления на солнечных коллекторах от Дмитрия (rv3dpi)
    Солнечные коллекторы для отопления в Европе используют в более 50% от общего количества установленных гелиосистем. Однако следует понимать, что гелиосистемы предназначены лишь для поддержки отопления и экономии затрат на основную систему отопления. …
  • Проект с использованием MCC часть 04Проект с использованием MCC часть 04
    Теперь простого горения светиков нам не достаточно, заставим их мигать. Для начала используем первобытно простой способ, но достаточно простой. Используем функции delay, напрягаться откуда они берутся не будем, самое главное , …
  • OLED RET012864E/REX012864JOLED RET012864E/REX012864J
    RET012864E/REX012864J ОЛЕД индикатор производитель Raystar-Optronics приобретался в http://www.microchip.ua/ к сожалению никакой информации на сайте поставщика нет. Поэтому решил работу с этой версией индикатора на драйвере SSD1305 предоставить на своем сайте. Так как есть ошибки …
  • NeoPixel LED и PIC18NeoPixel LED и PIC18
      Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, но это …
  • Проект с использованием MCC часть 01Проект с использованием MCC часть 01
    Для изучения MCC я выбрал простой контроллер PIC16F1509. Выбор его был обусловлен богатой новой периферией которую можно изучить. Для начала была собрана схема на макетной плате Внешний вид собранной схемы …
  • Самый простой индикатор уровня звукового сигналаСамый простой индикатор уровня звукового сигнала
    Демонстрационный проект создания индикаторов уровня с использованием WS2812B. Изучив этот проект вы сможете  самостоятельно изготавливать и конструировать свои индикаторы уровня звукового сигнала. Дополнительно читайте статью Бегущие огни на WS2812B по подключению …
  • Проект с использованием MCC часть 14Проект с использованием MCC часть 14
    С выводом данных на дисплей мы справились (но могу сразу сказать библиотеку графики к этой статьи пришлось доработать, поэтому в этом проекте она обновлена). У нас на текущем этапе имеется …
  • MCC – K42 – настройка модуля DMAMCC – K42 – настройка модуля DMA
    MCC – в версии v.3.95.0 и начиная ядра 4.85.0 конфигуратор предоставляет графический интерфейс для настройки модуля DMA. Для начала: Посмотреть какая версия МСС можно в закладке версии, если у вас …
  • Проект с использованием MCC часть 16Проект с использованием MCC часть 16
    Продолжим изучение EUSART. На этом этапе отработает передачи данных с ПК и получения эха. Для этого в основной цикл программы добавим код

    [crayon-5f0e9cead4f71641609595/]

    Суть его проста постоянно в главном цикле …

  • Проект с использованием MCC часть 03Проект с использованием MCC часть 03
    Первым делом перенастроим регистры конфигурации, следующим образом: Отключим выход генератора (CLKOUT function is disabled. I/O function on the CLKOUT pin) Включим сторожевой таймер (WDT enabled) После этой настройки мы должны …



Tagged with →  
Share →

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Translate »

Copyright © Catcatcat electronics 2013-2020. Все права защищены.
Копирование разрешается только с указанием активной ссылки на правообладателя.

e-mail: catcatcat.electronics@gmail.com