Добавить в корзинуПозвонить
Найти в Дзене
Электроника и жизнь

Как работать с ШИМ на ATtiny13/25/45/85

Сегодня поговорим о работе с широтно-импульсной модуляцией (ШИМ) на микроконтроллерах семейства ATtiny (ATtiny13, ATtiny25, ATtiny45, ATtiny85).
Оглавление

Здравствуйте уважаемые читатели! Сегодня поговорим о работе с Широтно-импульсной модуляцией (сокращенно ШИМ) на микроконтроллерах семейства ATtiny.

Как работать с ШИМ на ATtiny13/25/45/85
Как работать с ШИМ на ATtiny13/25/45/85

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

Например, плавно регулировать яркость светодиода мы можем с помощью потенциометра, увеличивая подаваемое на него значение от 0 до 5 вольт.

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

Дело в том, ни ATtiny, ни Arduino, ни абсолютное большинство других микроконтроллеров, не могут плавно менять напряжение на выходе своих пинов.

В этом случае нам на помощь придет технология Широтно-импульсной модуляции. Основана она на том, что можно изменять длину импульса (скважность), при сохранении постоянной частоты сигнала. Т.е. если рассматривать пример со светодиодом, чем больше будет длина импульса, тем ярче будет гореть светодиод.

Принцип работы ШИМ
Принцип работы ШИМ

Для работы с ШИМ-сигналом в Arduino IDE служит специальная функция analogWrite (pin, value).

Описание функции  analogWrite() для работы с ШИМ в Arduino IDE
Описание функции analogWrite() для работы с ШИМ в Arduino IDE

Первый ее аргумент определяет номер пина, в который мы будем передавать ШИМ-сигнал. У Arduino UNO это пины 3, 5, 6, 9, 10 и 11. Эти пины на плате Arduino UNO выделены размещенной рядом с ними волнистой чертой «~». У ATtiny13 это пины 5 и 6. У ATtiny25/45/85 - пины 5, 6 и 3.

Второй аргумент – определяет длину импульса ШИМ-сигнала. Его значения находятся в диапазоне от 0 до 255. Чем больше значение, тем меньше промежутки между импульсами (выше скважность), что в случае светодиода будет означать большую его яркость, а в случае электродвигателя – большую скорость его вращения.

Работа с ШИМ на примере Arduino UNO

Вначале возьмем для примера Arduino UNO. Берем светодиод и соединяем его короткую ножку с уже припаянным резистором на 220 ом с землей, а длинную ножку соединяем с 11 пином Ардуино.

Напишем небольшой скетч в котором, вначале будем в течение 5 секунд увеличивать длину импульса от 0 до 100% (т.е. значение второго аргумента функции analogWrite от 0 до 255), тем самым увеличивая яркость светодиода. Затем установим задержку в 1 секунду, чтобы светодиод горел на максимальной яркости. А после будем так же плавно в течение 5 секунд снижать его яркость.

Скетч для плавного изменения яркости светодиода с помощью ШИМ на Arduino UNO
Скетч для плавного изменения яркости светодиода с помощью ШИМ на Arduino UNO

Загружаем скетч в Ардуино и видим плавное изменение яркости светодиода.

Работа с ШИМ на примере ATtiny13

Теперь перейдем к ATtiny. Переведем Arduino UNO в режим программатора. Изменим пин светодиода в нашем скетче на нулевой, что соответствует пятой ножке ATtiny.

Скетч для плавного изменения яркости светодиода с помощью ШИМ на ATtiny13/25/45/85
Скетч для плавного изменения яркости светодиода с помощью ШИМ на ATtiny13/25/45/85

Установим на Ардуино наш самодельный модуль для прошивки. Подробности его создания и схема есть в статье - Создаем удобный модуль для программирования микроконтроллеров ATtiny. И разместим в гнездо модуля АTtiny13.

Переходим в Arduino IDE. В инструментах меняем плату на АTtiny13. Загружаем загрузчик, если до этого его не загружали. Напоминаю, это делается только один раз. Подробно о прошивке микроконтроллеров АTtiny13 и АTtiny85 я рассказывал в статье ATtiny13 и ATtiny85. Обзор и программирование с помощью Arduino. И далее, загружаем наш скетч в ATtiny, выбрав в меню «Скетч» - «Загрузить через программатор».

Подключаем светодиод с резистором к 4 и 5 ножке ATtiny13. И видим, как все работает, светодиод плавно разгорается и плавно гаснет.

-6

Работа с ШИМ на примере ATtiny85

Теперь вместо ATtiny13 установим ATtiny85 и попробуем снова прошить микроконтроллер тем же скетчем.

В инструментах меняем плату, на ATtiny25/45/85, процессор - ATtiny85 и Clock - 16 МГц.

И далее загружаем скетч в ATtiny. Всё прекрасно работает.

-7

Вообще согласно описанию к ATtiny25/45/85 с ШИМ сигналом у нас могут работать еще 6 пин и 3 пин.

А у ATtiny13, всего 1 таймер и работать он может только на 5 или на 6 пину. OC0A и OC0B, соответственно.

-8

В этой статье мы разобрались как ATtiny работает с ШИМ-сигналом. А в следующей перейдем к практическому применению данной информации и создадим устройство для плавной регулировки освещения. В качестве примера светового прибора, работающего от постоянного тока у нас будет светодиодная лента, а от переменного тока - лампа накаливания и светодиодная лампа.

Ниже размещено видео по материалам данной статьи.


_________________________________________________________

Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!

Другие публикации по теме:

  • ATtiny13 и ATtiny85. Обзор и программирование с помощью Arduino.
  • Что такое фоторезистор? Подключение фоторезистора к ATtiny13 и управление светодиодом.
  • Создаем удобный модуль для программирования микроконтроллеров ATtiny.
  • Регулируемое фотореле для уличного освещения на ATtiny13 своими руками.