130-Многоканальный автомат управления нагрузками на ATtiny2313

Автор: | 05.05.2016

Многоканальный автомат управления нагрузками собран на ATtiny2313 и позволяет в автоматическом режиме управлять состояниями 8-ми каналов (Out_0 — Out_7). На каждом из каналов формируется ШИМ-сигнал, скважность которого можно изменять по прописанному Вами алгоритму (программе). В устройстве можно использовать до 8-ми программ каналов. Программу можно зациклить (бесконечное воспроизведение) или можно воспроизвести только один раз. Программу можно запустить ИК-пультом, по команде UART или выбрать следующую программу нажатием кнопки Next Prog на устройстве. Устройство имеет 3 выходные линии Prog Numb, на которых двоичным кодом отображается, номер текущей программы. Кроме того, в момент воспроизведения программы устанавливается логическая единица на выводе Cycle. После старта устройства автоматически запускается на воспроизведение первая (00_prog.txt) программа.

traffic_light_scheme

На схеме не показаны защитные резисторы в выходных линиях (по 300 Ом). Их желательно установить, а для случая подключения светодиодов напрямую к ножкам МК – они обязательны.

UART
Автомат управления сделан таким образом, чтобы его можно было включить в комплекс устройств, управляемых по UART (9600, 8, 1stop, noparity). Для совместимости с устройствами блога, программы запускаются по факту прихода в UART соответствующего символа заглавной буквы латиницы (А – программа 0, B — 1, C — 2, … H — 7). При запуске программы соответствующая буква будет передана на выход UART.

Программы изменения сигнала на выходах
— записываются во Flash память микроконтроллера при программировании и в дальнейшем изменяться не могут (только при повторном программировании). Каждая из восьми программ, для удобства, прописана в отдельном файле. Файлы расположены в папке исходника traffic_light_source\progs\. Имена файлов программ имеют вид: 00_prog.txt, 01_prog.txt, … 07_prog.txt (8 файлов).

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

Вот так выглядит содержимое файла программы-изменения:

// ПРОГРАММА-ИЗМЕНЕНИЯ КАНАЛОВ
// — каналы обновляются покадрово с заданным периодом между кадрами
// — кадр состоит из заданного количества значений-уровней каналов
// — значения лежат в пределах 0-255 (0-нет сигнала 255-максимум)
// — количество кадров может быть произвольным
// — программа должна заканчиваться одним из значений-меток:
// 253 — остановить программу (разовое воспроизведение)
// 254 — зациклить программу (непрерывное воспроизведение)
// соответственно, значения 253 и 254 запрещено использовать в кадрах

// ПАРАМЕТРЫ ВОСПРОИЗВЕДЕНИЯ:
100  // — период межу кадрами в сотых миллисекунды (1-255) 35 = 0,35 Сек
8    // — количество линий, участвующих в программе (1-8)

// КАДРЫ ЗНАЧЕНИЙ НА ВЫХОДНЫХ ЛИНИЯХ
// Далее прописываются кадры значений на линиях
//Out_0, Out_1, Out_2, Out_3, Out_4, Out_5, Out_6, Out_7
// количество значений в каждом кадре должно соответствовать
// значению заданному в параметрах воспроизведения

// Кадр 0
000, 000, 000, 000, 000, 000, 000, 000 // все линии выключены
// Кадр 1
128, 128, 128, 128, 128, 128, 128, 128 // средняя яркость на линиях
// и так далее столько, сколько нужно кадров
255, 255, 255, 255, 255, 255, 255, 255 // все линии на максимум
000, 000, 000, 000, 000, 000, 000, 000
010, 020, 030, 040, 050, 060, 070, 080
000, 255, 000, 255, 000, 255, 000, 255
// ….

// МЕТКА КОНЦА ФАЙЛА
// 253 — остановить программу (разовое воспроизведение)
// 254 — зациклить программу (непрерывное воспроизведение)
254

Каждая программа может иметь произвольное количество кадров и используемых выходных линий.
Всего, для всех программ, суммарно можно использовать до 1024 ШИМ-значения.
Если нужно меньше восьми программ, то лишние файлы описания нужно очистить (сохранить пустыми). Сами файлы должны остаться, иначе компилятор будет выдавать ошибку.

 Алгоритм создания устройства, со своими программами изменения каналов следующий:
1 прописываем свои 8 программ в соответствующих файлах 00_prog.txt, 01_prog.txt, … 07_prog.txt в папке исходника traffic_light_source\progs\
2 запускаем среду программирования Algorithm Builder (algrom.net)
3 открываем исходник traffic_light_source\ traffic_light.alp
4 компилируем исходник (Ctrl+F9)
5 в папке исходника забираем файл прошивки traffic_light_source\ traffic_light.hex
6 прошиваем полученным HEX-файлом ATtiny2313
7 устанавливаем фьюзы (внутренний задающий генератор на 8МГц) Low:0xE4 High:0xDF Ext:0x01
— готово!

ИК-пульт
Для того чтобы использовать ИК-пульт, его кнопки необходимо предварительно изучить. В пульте используется 9 кнопок. Первые 8 выбирают соответствующую программу, 9-я – переключает следующую программу.

Процедура изучение пульта стандартна для моих устройств:
1 –нажать (и удерживать)  кнопку «Learn»
2 – сбросить устройство либо передернуть питание (при этом индикаторный светодиод должен несколько раз моргнуть)
3 – отпустить кнопку «Learn»
4 – последовательно нажать на пульту 9 кнопок
5 – после этого устройство автоматически начинает работать в штатном режиме

Каждое нажатие кнопки на пульте будет подтверждаться индикаторным светодиодом.
Если какая либо кнопка не нужна в устройстве, то в процессе ее изучения нужно нажать ранее изученную клавишу.

traffic_light.zip (1592 Загрузки)

Заключение
Вообще, устройство создавалось для формирования сигналов модели светофора в различных режимах, но использовать данное устройство можно гораздо шире. Например, светодиодные рекламные стенды с несложной анимацией, устройства автоматики, устройства управляемые ИК-пультом…
В планах сделать модификацию данного устройства выкинув UART, IR,  Prog Numb взамен использовать освободившиеся линии как ключи для запуска отдельных программ – по моему это должно быть востребовано.

(Visited 11 319 times, 1 visits today)