Найти тему
Электроника и жизнь

Управление сетевым диммером с помощью ATtiny85

Здравствуйте, уважаемые читатели! В одной из прошлых статей "Модуль сетевого диммера для Ардуино с Aliexpress" мы разбирали подключение сетевого диммера на основе симистора BTA16 к Ардуино. Для работы диммера, мы скачивали и устанавливали библиотеку от производителя данного модуля. Данная библиотека поддерживает множество контроллеров, среди которых вся линейка Ардуино, ESP8266, ESP32 и некоторые другие. Но не поддерживает микроконтроллеры семейства ATtiny.

Список поддерживаемых библиотекой микроконтроллеров и распиновка
Список поддерживаемых библиотекой микроконтроллеров и распиновка

В этой статье мы разберемся, как подключать и управлять сетевым диммером с помощью микроконтроллера ATtiny85. А в качестве примера будем плавно регулировать яркость лампы накаливания 60 Вт с помощью подключенного к ATtiny85 потенциометра на 10 кОм.

Принцип управление сетевым диммером с помощью ATtiny85 и потенциометра
Принцип управление сетевым диммером с помощью ATtiny85 и потенциометра

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

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

Скетч для управления диммером с помощью ATtiny85
Скетч для управления диммером с помощью ATtiny85

Далее можем загружать скетч в ATtiny. Переводим Arduino UNO в режим программатора. В платах выбираем ATtiny85 и загружаем скетч через программатор.

После загрузки скетча, не вынимать ATtiny из программатора и подключаем его к сетевому диммеру и потенциометру согласно схеме.

Схема подключения сетевого диммера и ATtiny85
Схема подключения сетевого диммера и ATtiny85

Пин Z-C (zero-cross) диммера подключаем к 7 пину ATtiny. Пин PWM диммера соединяем со 2 пином ATtiny, а 2 ножку потенциометра с 3 пином ATtiny, которая умеет работать с аналоговый сигналом. И подаем питание на макетную плату, тем самым подключив к питанию потенциометр и диммер.

Собранная схема с ATtiny85 и диммером (Ардуино здесь только как источник питания)
Собранная схема с ATtiny85 и диммером (Ардуино здесь только как источник питания)

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

Слабое свечение лампы при исходных значениях в скетче
Слабое свечение лампы при исходных значениях в скетче

В нашем случае, чем больше будет значение 4-го аргумента функции map(), тем ниже яркость лампы. Вот только при увеличении данного значения, в определенный момент, лампа снова начнет светиться в полную яркость. Т.е. нам нужно установить максимальное значение четвертого аргумента, при котором лампа не начинает светиться снова в полную яркость. Это и будет состояние выключенной лампы.

Опытным путем найдено, что максимальное значение соответствующее нулевой светимости лампы, составляет 147. При 148, лампа то не светится, то включается на полную мощность. Т.е. это пороговое значение которое нас не устраивает. Остановимся на значении 147. Таким образом, получилось, что интервал регулирования от 147 до 2.

Изменение исходных значений в скетче
Изменение исходных значений в скетче

Вот только загрузить данный скетч в ATtiny13 не получится, т.к. в скомпилированном виде занимает 1344 Б.

Размер скетча
Размер скетча

Даже если отказаться от функции map(), а просто делить получаемое от потенциометра значение, то скетч всё равно занимает более 1КБ. Да и если бы нам удалось сократить скетч до размера менее 1 КБ, все равно для таких целей ATtiny13 плохой вариант, т.к. в скетче мы используем прерывание, а у ATtiny13 в отличие от ATtiny25/45/85 всего 1 таймер, который микроконтроллер может использовать под свои нужды. Так что если хочется для работы с диммером использовать микроконтроллер ATtiny, то нужно использовать модель, начиная с ATtiny25.

То, что данный интервал соответствует минимальной и максимальной яркости лампы, легко проверить с помощью ваттметра. Подключаем диммер к сети через ваттметр и видим, что при минимальной яркости, лампа и диммер потребляют 1,1 Вт.

Минимальное потребление в Вт лампы накаливания, подключенной к диммеру
Минимальное потребление в Вт лампы накаливания, подключенной к диммеру

А при максимальной – 66 Вт. Заявленная мощность данной лампы накаливания 60 Вт.

Максимальное потребление в Вт лампы накаливания, подключенной к диммеру
Максимальное потребление в Вт лампы накаливания, подключенной к диммеру

Таким образом, если объединить информацию из позапрошлой статьи Управление яркостью светодиодной ленты с помощью ATtiny13, где мы управляли плавным включением светодиодной ленты, в т.ч. при срабатывании датчика движения и то, о чем я рассказывал в этой статье, то можно создать устройство, плавного включения освещения 220 вольт при срабатывании датчика движения. А управлять всем этим будет микроконтроллер ATtiny85 или даже более младшие модели ATtiny25 или ATtiny45.

Ссылка на скетч из статьи - https://yadi.sk/d/xzxmjvyuKxLMow

Источник скетча -

http://forum.arduino.cc/index.php?topic=314773.0

http://arduino.ru/forum/programmirovanie/attiny85-i-preryvanie

Видео по материалам статьи:

________________________________________________________

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

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