image041

Управление 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

Отправить ответ

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

avatar
Сортировать:   Новые вначале | Старые вначале | По голосам
Сергей
Гость

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

wpDiscuz