099-Расширенное управление нагрузками при помощи ИК пульта на ATtiny2313.

Автор: | 05.08.2013

Устройство этой статьи является, на самом деле, не совсем новым. Оно было сделано и отлажено довольно много времени назад, но я все никак не мог выбраться набрать статью. И вот теперь, когда в разработке новые устройства с применением ZiChip, в перспективе позволяющие более гибко работать с логикой работы, у меня вообще появились сомнения по поводу необходимости публикации этой статьи. Но раз уж устройство собрано, отлажено и работает, решил его показать в блоге. Тем более будет видна разница между подобными устройствами с и без применения ZiChip. Описание будет кратким без подробностей.

Итак, устройство этой статьи является «старшим братом» подобного устройства на ATtiny13 и было создано в ответ на просьбы пользователей по расширению функционала последнего.


Новое устройство умеет:
— работать с 7-ю цифровыми и 2-мя ШИМ – выходами;
— управлять нагрузками, как с пульта, так и с нескольких клавиш на плате;
— запоминать состояние выходов в энергонезависимой памяти и восстанавливать их;
— управляться и выдавать отчеты о выполненных действиях по UART.


Конструкция устройства
В качестве основы для устройства была задействована плата сенсорного драйвера,

соответственно и схема подобная

Прошивка для микроконтроллера
099-T2313-IR-to-PIN.hex - Прошивка IR управления для ATtiny2313
099-fuse.png - Фьюзы для ATtiny2313
Напоминаю:Для Algorithm Builder и UniProf галочки ставятся как на картинке.

Для PonyProg, AVR Studio, SinaProg галочки ставятся инверсно.
Как программировать микроконтроллеры читаем в FAQ.


Изучение кнопок пульта
— производится аналогично устройству на ATtiny13 – режим обучения включается по длительному зажатию кнопки пульта.


Последовательность изучения кнопок пульта следующая:
1 Увеличение H
2 Уменьшение H
3 Увеличение I
4 Уменьшение I
5 Включение/отключение A
6 Включение/отключение B
7 Включение/отключение C
8 Включение/отключение D
9 Включение/отключение E
10 Включение/отключение F
11 Включение/отключение G
12 Все выключить
13 Все включить
14 Сохранить 1
15 Восстановить 1
16 Сохранить 2
17 Восстановить 2
Если какая-либо из команд не нужна – нужно нажимать уже изученную клавишу.


Устройство имеет расширенный перечень команд и любое действие с выходами можно произвести через UART.

Настройки UART
Скорость передачи – 9600;
Количество бит данных – 8;
Бит четности – нет;
Количество стоп-бит – 1.


Действия по командам UART:
x0 — выключение нагрузки x,
где x может быть от A до G (например «B0» — отключение второй нагрузки);
x1 — включение нагрузки x,
где x может быть от A до G (например «C1» — включение третей нагрузки);
Hy — изменение уровня (ШИМ) на нагрузке Н,
где y может быть (бинарное однобайтовое значение) от 0-(выключено) до 255-(максимум);
Iy — изменение уровня (ШИМ) на нагрузке I,
где у может быть (бинарное однобайтовое значение) от 0-(выключено) до 255-(максимум);
=0 — выключить все;
=1 — включить все;
[0 — запомнить состояние нагрузок в ячейку 1;
[1 — восстановить состояние нагрузок из ячейки 1;
{0 — запомнить состояние нагрузок в ячейку 2;
{1 — восстановить состояние нагрузок из ячейки 2;
? — выдать по UART текущего состояния нагрузок
формат выданной посылки будет иметь вид «A1B0C0D0E1F0HхIх»,
где A1 — включена нагрузка A, A0 — выключена нагрузка A (и так для остальных цифровых выходов)
Hx и Ix — уровень на аналоговых выходах H и I, (x — бинарное однобайтовое значение 0-255).


При выполнении действий с пульта или кнопок, по UART выдаются коды команд:
A G — переключение нагрузок соответственно A – G;
H и h – соответственно, увеличение и уменьшение аналогового канала H;
I и i – соответственно, увеличение и уменьшение аналогового канала I;
1 — все включить;
0 — все выключить;
s — запомнить состояние в ячейку 1;
r — восстановить из ячейки 1;
S — запомнить состояние в ячейку 2;
R — восстановить из ячейки 2.


Данное устройство уже было опробовано в действии пользователем MechanicCDRR – отзывы положительные. Если решите попробовать и Вы – жду обратной связи.


Материалы читателей блога.

1 Платка от Алексея

099_PCB.zip - Плата в диптрейсе от Алексея


Файлы статьи:
099-T2313-IR-to-PIN.hex - Прошивка IR управления для ATtiny2313
099-fuse.png - Фьюзы для ATtiny2313 
099-Tiny2313-IR-to-PIN-schem.spl7 - Схема IR to PIN в Сплане
099-source-T2313-IR-to-PIN.zip - Исходник IR to PIN в Билдере

(Visited 5 497 times, 8 visits today)

099-Расширенное управление нагрузками при помощи ИК пульта на ATtiny2313.: 147 комментариев

  1. sorema

    Уважаемый Евгений, с нетерпением ждем от вас новых проектов, особенно с такой интригующей системой как ZiChip, но управлять отдельно стоящим, без какой-либо сети эффектором системой ZiChip возможно будет просто нерационально. Поэтому простые проекты тоже нужны, особенно для таких популярных сейчас RGB лент. Спасибо за ответы.

  2. GetChiper Автор записи

    Конечно, будем продолжать 🙂

  3. cmak116

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

  4. cmak116

    для подключения использую ft232 usb-com

  5. GetChiper Автор записи

    Попробуйте разное количество стоп-бит установить для UART

  6. cmak116

    @GetChiper
    Спасибо за быстрый ответ.Оказалось что внутренний генератор работает не стабильно и поэтому пришлось тактировать внешним кварцем на 8Мгц с выставлением соответственных фьюзов.Сейчас все работает без проблем.Спасибо Вам большое.

  7. cmak116

    Еще вопрос появился в каком формате отправлять данные чтобы диммировать выхода, а то че то отправляю как сказанно H255 и ничего. а если после H символ из аски то регулируется )

  8. GetChiper Автор записи

    – Hy — изменение уровня (ШИМ) на нагрузке Н,
    где y может быть (бинарное однобайтовое значение) от 0-(выключено) до 255-(максимум)

    y — это один байт.

    в своем терминале посмотрите как передавать бинарные данные. Например в моем терминале бинарные данные передаются как $xx — шестнадцатеричный формат, или #xxx — десятичный.

    Соответственно вышеприведенная команда в терминале будет выглядеть так «H#124»

  9. reanimatolog

    Добрый день, уважаемый GetChiper.
    Возможно ли в прошивку добавить таймер на два часа на отключение всех включеных назрузок если в течении этого времени не было на ИК прииемник воздействия ЛЮБЫМ пультом. Цель перед сном ставлю телек и тюнер на таймер хотелось бы , что бы с них снималось питание через 2 часа (соответсвенно я сплю пультами не клацаю ),чтобы не находились в дежурном режиме всю ночь.

  10. siema

    Евгений как всегда на высоте 🙂
    Один вопрос по программированию кнопок: «Если какая-либо из команд не нужна – нужно нажимать уже изученную клавишу». Первая команда, как ни крути, всегда запрограммируется на какую-нибудь кнопку. Как поступить, если первая команда не нужна, а кнопок не так много? Только путем изменения кода?
    Спасибо!

  11. GetChiper Автор записи

    В этом случае нужно взять другой пульт (который заведомо не будет использоваться рядом с устройством) и изучить с него первую кнопку

  12. zippoge

    работает отменно, респект по всем пунктом!!!!

  13. dimon24

    Уважаемый GetChiper устройство просто класс.У меня есть просьба немного подправить прошивку в плане управления по UART а именно на ШИМ нагрузках H и I вместо бинарных значений мне хотелось бы так: увеличение ШИМ «H»;»I» а уменьшение ШИМ «h»;»i» и быстрое отключение «H0″;»I0» или «h0″;»i0»

  14. dimon24

    Увы нет подходящего для меня.Мне нужен весь функционал этого устройства но вот управление ШИМ по UART нужно как я говорил выше.Причина такой просьбы делаю программу по Windows для этого устройства.

  15. GetChiper Автор записи

    Почему в самой Windows-программе не приращивать бинарное значение?
    Это вроде как правильней — в любой момент времени понятно что там на выходе.
    В противном случае придется подавать определенное количество буковок (а это количество может быть вплоть до 255)

  16. dimon24

    Программу делаю в HiAsm и у меня ни как не получается отправить в com порт такие бинарные значения ШИМ. Можно ли сделать так «H»=10 а «h»=-10.

  17. GetChiper Автор записи

    Достаточно перед элементом ком-порта поставить конвертор и можно слать любые данные.

    Add(Convertor,10416971,399,105)
    {
    Mode=4
    Digits=0
    }

  18. dimon24

    GetChiper можно посмотреть схему для HiAsm,а то я что-то ни как не пойму реализацию данного компонента.

  19. GetChiper Автор записи

    Вот так это реализуется:

    Add(MainForm,2953706,105,77)
    {
    }
    Add(COM,12819120,231,147)
    {
    }
    Add(Convertor,1040357,161,168)
    {
    Mode=4
    link(onResult,12819120:doWrite,[])
    }

    Скопируй код выше и вставь на форме.

  20. idtmark

    Возможно ли перекомпилировать исходник под AT90S2313? А то валяются без дела.

  21. GetChiper Автор записи

    Просто перекомпилировать не получится — слишком много чего не хватает в нем по сравнению с теперешней моделью

  22. idtmark

    PS UART не нужен, выводы 2-3 задействовать как 4-5

  23. Dimch

    Здравствуйте GetChiper меня интересуют не большие изменения в схеме и возможно в прошивке, а именно порт UART мне не нужен, в данную схему нужно задействовать 5 кнопок управления нагрузками на самой плате от А до Е + 2 ШИМ Вывода (и естественно 5 кнопок от А до Е + 2 ШИМ Вывода что бы работали и от пульта) и еще нужно что бы один из выводов работал без фиксации (то есть нажал кнопку на пульте загорелся светодиод отпустил кнопку светодиод погас) Данная схема очень нужна в одном проекте буду очень признателен за помощь!

  24. Dimch

    Увы уже всё перешерстил и ничего подходящего не нашел 🙁

  25. GetChiper Автор записи

    Разберусь с текущими вопросами — попробуем сделать модификацию.

  26. Dimch

    Благодарю, буду очень признателен!

  27. Dimch

    Добрый день Getchiper каковы прогнозы с изменением данной схемы? Есть ли какая то надежда?

  28. admin Автор записи

    Нужна схемка устройства, а то не очень понятно как оно должно работать.
    (ну или более понятное описание). Например я не понял как пятью кнопками управлять пятью выходами +2ШИМ?

  29. Dimch

    Ну вот смотрите, возьмем за основу телевизор им можна управлять как пультом так и кнопками на панеле регулировка громкостью это шим вывод (в схеме должно быть 2 таких вывода) а кнопки переключения каналов и тд.тп это выводы управления нагрузками (их должно быть в данной схеме 5 или 7 из которых 5 каналов работают в режиме фиксации тоесть нажал кнопку уровень высокий 1 нажал кнопку еще раз уровень низкий 0 а остальные 2 вивода работают без фиксации нажал кнопку уровень высокий, отпустил кнопку уровень низкий) выход на UART не требуется. И такие функции как запись данного положения на память или восстановления из памяти и сброс всех положений тоже не требуются исключительно только управление нагрузками. Такую схему можно даже осуществить на Atmega8. Спасибо за понимание.

  30. admin Автор записи

    Значит:
    1 — выход ШИМ
    7 — выходов цифровых
    2 — входа регулировки ШИМ
    7 — входов управления цифрой
    Правильно?

    Тини 2313 — не подходит по выводам.
    Могу сделать на ATmega328 (чтоб на ардуине можно было запустить)
    для дешевизны можно будет пересобрать проект на меге48 или 88
    (на меге8 точно не буду делать — неудобная она)

  31. Dimch

    Да все верно, а принципе можно и на Tiny2313 все это умастить ограничившись 4мя цифровыми выходами (один из них без фиксации, для смены режимов работы RGB ленты) и одним выходом ШИМ. А на все остальные входы установить кнопки управления нагрузками, в итоге будут задействованы 11 выводов МК Tiny2313 и в итоге даже 1 вывод МК без дела останется.

  32. admin Автор записи

    ОК, тогда делаю на тини2313

  33. Dimch

    Дорого времени суток Getchiper можно узнать как там у вас с прогрессом модернизации данного IR модуля? А то без этого девайса не могу завершить свой проект! Спасибо за понимание.

  34. admin Автор записи

    Привет.
    Я не забыл. Более того, на базе этой просьбы родилась идея сделать шаблоны программ под Билдер, чем я активно сейчас и занимаюсь. Эти шаблоны позволят даже начинающему создавать/править проекты.
    Уже почти готова первая версия шаблонов, а вместе с шаблонами будет готово и это устройство (на создание из шаблонов устройства уйдет от силы 5 минут).
    http://www.forum.getchip.net/viewtopic.php?f=18&t=743

  35. Dimch

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

  36. Igor-Nakonechny

    Повторил игрушку Машинка на ИК управлении Attiny2313
    там есть ссылка на Ваш проект, и столкнулся с проблемками. Шим выхода (I,H) не вылючают друг-друга (для Н-моста гибель). Тоже с поворотами: было бы замечательно что б любых два выхода работали только при нажатой кнопке пульта. Не охота разбирать игрушку, не поможете с прошивкой?

  37. Igor-Nakonechny

    Скажите пожалуйста, в чём написан Ваш исходник (lst, alg), я пробовал C++Builder 6 а он открывает cpp, bpg, bpr, bpk. На форуме нашёл (нажал кнопку — лог.1, отпустил — 0). Но он без исходника.
    Мне нужно таких только две кнопки, остальные как в Вашем. И ШИМ хочу подправить: на высокой частоте двигатель пищит но не крутится, включается только на максимуме.
    Спасибо.

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