Управление RGB светодиодом по CAN шине на микроконтроллере ATtiny13

Данный девайс я собрал для управления RGB подсветкой выключателей.

Каждое устройство имеет свой адрес, для управления подсветкой выключателя не зависимо, таким образом можно отображать подсветкой состояние как  самого выключателя так и некоторых режимов работы умного дома. При выборе элементной базы я исходил из конечной цены устройства. В качестве драйвера CAN шины выбрал микросхему TJA1040. В качестве микроконтроллера выбрал ATtiny13. Микроконтроллер ATtiny13 не имеет аппаратного UART, и у него всего два аппаратных PWM (ШИМ). Пришлось реализовывать все программно. Программный UART работает на скорости 19200. Трехканальный ШИМ также программный и его скорости вполне хватает для поставленной задачи, визуально, мерцания не видно даже на минимальной яркости (скважности).

По цене устройство выходит в районе 100 руб. из них 35 р. микросхема TJA1040, 27 р. микроконтроллер Attiny13, RGB светодиод я беру из светодиодной ленты, цена за 1 метр ленты начинается от 100 р. и выше, на одном метре ленты, 60 светодиодов.

Для управления устройством используется CAN шина, выполненная на микросхеме TJA1040. Команда управления имеет следующий вид:

01R150G12B70 , где 01 — адрес устройства. R150, G12 и B70 — уровень красного, зеленого и синего соответственно.

Для отправки команды сразу на все устройства используется адрес 99 (99R150G12B70).

Для записи в память устройства значения цвета, по умолчанию, т.е. при включении устройства после подачи на него питания, необходимо отправить команду с адресом 88 (88R150G12B70) и данный цвет будет записан в энергонезависимую память EEPROM микроконтроллера.

 

Принципиальная схема управления RGB светодиодом по CAN шине на микроконтроллере ATtiny13
Принципиальная схема управления RGB светодиодом по CAN шине на микроконтроллере ATtiny13
Размеры платы
Размеры платы
3D модель платы, вид снизу
3D модель платы, вид снизу
3D модель платы, вид сверху
3D модель платы, вид сверху

Перед заливкой HEXа в память микроконтроллера необходимо выставить фьюзы:

-U lfuse:w:0x5a:m -U hfuse:w:0xff:m

  • Int. RC Osc. 9.6 MHz; Start-up time: 14 CK + 64 ms; [CKSEL=10 SUT=10] (МК тактируется от встроенной RC цепочки с частотой 9,6 Мгц. Пред делитель на 8 отключен)
  •  Watch-dog Timer always on; [WDTON=0] (Watch-dog всегда включен)
  • Serial program downloading (SPI) enabled; [SPIEN=0] (разрешает загрузку программы через SPI интерефейс)

High Fuse 0xFF, Low Fuse 0x5A

Фьюзы attiny13
Фьюзы attiny13

Микроконтроллер Attiny13 имеет всего 1Кбайт памяти для программ. Код написан в среде Atmel AVR Studio на языке С. Код можно посмотреть внизу под спойлером, а так же на моей странице GitHub.

После компиляции с оптимизацией (-O1) видим, что код занимает в памяти микроконтроллера  1022 байта памяти из 1024.
Program Memory Usage : 1022 bytes 99,8 % Full
Data Memory Usage : 37 bytes 57,8 % Full

Подписаться
Уведомлять
guest

15 комментариев
Старые вначале
Новые вначале По голосам
Межтекстовые Отзывы
Посмотреть все комментарии
Сергей
Сергей
7 лет назад

Здравствуйте. А зачем столько лишних элементов (R5-R10, Q1-Q3)?
При токе в несколько миллиампер вывод контроллера не будет испытывать серьезной нагрузки.

Сергей
Сергей
7 лет назад
Ответить на  instalator

Согласен. При более мощной нагрузке, с коррекцией ограничительных сопротивлений, такое решение оправдано.
Но этой схеме ток светодиода ограничен последовательным сопротивлением 1 кОм на уровне в несколько мА (зависит от падения на светодиоде). В этом случае «лишние» элементы особо не нужны, т.к. занимают драгоценное место на плате.
Надо только про-инвертировать выходы изменив программу или команды по шине.

Дмитрий
Дмитрий
6 лет назад

А зачем микроконтроллер в каждой розетке, если можно, например, использовать светодиоды WS2812B? И управлять ими одним контроллером, находящимся в щитке.

Я планирую попробовать именно такой подход, но меня смущают расстояния, до самых дальних выключателей по 20 метров витой пары.

А какую максимальную длину может иметь CAN шина?

captain
captain
5 лет назад

А возможно выложить гербер файлы для заказа платы

Alexander Mextner
4 лет назад

а где такие выключетели нашёл с площадками для светодиодов?

Alexander Mextner
4 лет назад

Как запитал? У тебя в выключетеле есть 0?

Alexander Mextner
4 лет назад
Ответить на  Alexander Mextner

вижу ответ в другом посте:
>
К каждому выключателю подведена витая пара + кабель ВВГ 3×1.5
Выключатели коммутируют 12 Вольт. Площадки под пружины нужны для переделанной подсветки, они с противоположной стороны от заводских, к которым подведено 220В.

а не думали об управлении сигналом по силовым проводам со сплиттерами или наоборот о питании по витой паре через PoE?

Alexander Mextner
4 лет назад
Ответить на  instalator

спасибо, почитал, но похоже это 1) дорого 2) очень не надёжно и 3) супер медленно

грустно, наверн обеспроводной wi-fi и то лучше

а zigbee встраивать дорого, для wi-fi есть дешёвые esp, а для зигби ничего такого не знаю

sierra
sierra
1 год назад

Спасибо за uart, наконец то удалось всё впихнуть в atinny13)
Для себя оставил только отправку данных(TX) а принимать уже будет другой контроллер, там уже не проблема.

15
0
Поделиться своими мыслямиx