Управление туевой хучей (матрицей) светодиодов

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Управление туевой хучей (матрицей) светодиодов

Сообщение Gudd-Head »

Навеяно микросхемой IS31FL3731 http://www.issi.com/pdf/31FL3731.pdf

Сколькими светодиодами можно управлять с помощью одного 8-ми битного порта микроконтроллера/ПЛИС без применения каких-либо микросхем? 16-ю, скажете вы? Пятьюдесятью шестью, скажу я :)
Если между любыми двумя (из N) портами МК/ПЛИС подключить 2 светодиода встречно-параллельно, то всего получится N·(N-1) = 8·7 = 56 светодиодов. Получится вот такая матрица:
Изображение
Индикация, естественно, динамическая. Коэффициент мультиплексирования 1/8. Изображение может выводится как построчно по схеме с «общим катодом» (ОК), так и по столбцам по схеме с «общим анодом» (ОА).
Для поджига одного светодиода необходимо установить порт, к которому он подключен катодом (строку) на вывод лог. «0», анодом (столбец) — на вывод лог. «1», остальные порты перевести в третье состояние (ввод).
Кстати, нумерация светодиодов на картинке не очень информативна: С1-1 подключен между СА1 и СА2, а светодиод С1-2 между СА1 и СА3. Применительно к МК я бы обозначил светодиоды так:
Изображение
И нумерация от 0 до 7, и видно какой светик куда подключен (первая цифра показывает к какому порту подключен катод, вторая — анод). Коты постарше заметят, что это похоже на индексы элементов квадратной матрицы 8×8, у которой «удалили» главную диагональ и «сдвинули» две половины.
Допустим, мы хотим вывести изображение. Для его хранения хватит 7 байт (хранить по столбцам), однако проще отвести 8 байт и хранить по строкам, дополнив 7 бит не несущим информации, например, старшим «нулём». Итак, у нас есть 8 байт, содержащие 56 бит изображения. Пусть это будет вот такая «рожица»:
Изображение
Соответственно, в памяти хранится:
0b00001000 (№1)
0b00110110 (№2)
0b00100010 (№3)
0b01010101 (№4)
0b01000001 (№5)
0b00101010 (№6)
0b00110110 (№7)
0b00001000 (№8)
Изображение (кадр) выводится за 8 шагов, на каждом i-том шаге только один i-тый порт (i-тая строка) устанавливается на вывод лог. «0», остальные 7 — лог. «1» или третье состояние. Поэтому перед непосредственным выводом изображения в порт его необходимо преобразовать, либо хранить уже готовым для вывода. Второй вариант плох тем, что пропадает возможность «двигать» изображение и хранимая информация «не наглядна». Суть преобразования — вставка «0» (не замена, а именно вставка, т.е. со сдвигом) в i-тый бит информационного байта на i-том шаге.
Гениально (на мой взгляд) компактный код предложил Kavka:

Код: Выделить всё

ldi    mask, 0b11111111; загружаем маску
shift:; цикл
    ld     data, X; загружаем откуда-то (флэш/ОЗУ) инф. байт
    mov    tmp, data; копируем
    and    tmp, mask; делаем лог. «И» копии и маски
    add    data, tmp; складываем инф. байт с его маскированной копией
    st     X+, data; результат сохраняем
    lsl    mask; сдвигаем максу влево
    brne   shift; условие выхода из цикла — обнуление маски!

В результате получим:
0b00010000 (№1)
0b01101100 (№2)
0b01000010 (№3)
0b10100101 (№4)
0b10000001 (№5)
0b01001010 (№6)
0b00110110 (№7)
0b00001000 (№8)
Всё. Это можно выбрасывать в порт (PORTX) и направление порта (DDRX), не забывая устанавливать в «1» соответствующий битик DDR:
Изображение
На выходе должно получиться так:
Изображение
По даташитам AVRки выдерживают суммарный ток 200 мА при максимальном токе на пин 40 мА. 200 мА на 7 одновременно горящих светодиодов будет 28.5 мА, а с учётом мультиплексирования максимальное время горения будет 1/8, т.е. максимальный средний ток через светодиод будет 3.5 мА.
Однако можно умощнить вывод с сохранением третьего состояния. Например, вот такой схемой на четырёх транзисторах и двух диодах, предложенной Goldsmith:
Изображение
Для ограничения тока через светодиод можно использовать параллельно включённые резистор и диод: резистор будет ограничивать вытекающий ток (когда порт будет анодом), а диод будет шунтировать его для втекающего тока (когда порт — общий катод).
Вложения
3StateAmp.gif
(3.96 КБ) 1782 скачивания
05.GIF
(8.97 КБ) 1210 скачиваний
04.GIF
(13.54 КБ) 1144 скачивания
03.GIF
(4.25 КБ) 1033 скачивания
02.GIF
(10.28 КБ) 1210 скачиваний
01.GIF
(34.66 КБ) 1740 скачиваний
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Engineer_Keen »

Gudd-Head писал(а):Сколькими светодиодами можно управлять с помощью одного 8-ми битного порта микроконтроллера/ПЛИС без применения каких-либо микросхем? 16-ю, скажете вы? Пятьюдесятью шестью, скажу я :)

Семьюдесятью двумя, говорят на EE, правда с дополнительными транзисторами, но все же без микросхем :wink:
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Gudd-Head »

Эээ... Вы про это?
Изображение
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Engineer_Keen »

Неее, про это:
Изображение
N=n*(n+1)
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Gudd-Head »

Engineer_Keen писал(а):Неее, про это:

А вы уверены что это прокатит для 8-ми портов? :wink:
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Engineer_Keen »

Не знаю, больше 4х не проверял :oops: :)))
Pe3ucTop
Прорезались зубы
Сообщения: 231
Зарегистрирован: Пт ноя 16, 2007 13:52:44
Откуда: Рига, Латвия

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Pe3ucTop »

Всё конечно прикольно, даже видел реализацию 125 светодиодов на 12 пинов (далеко идти не надо саит марсохода), НО :
- такая реализация почти неподходит для промышленных 8*8 матриц светодиодов, т.к. у всех диодов соединён общий катод или анод. Можно конечно чередовать матрицы, но всё равно получить в таком случает трёхкратное (6-ти кратное) уменьшение количества пинов нереально.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Gudd-Head »

Pe3ucTop писал(а):неподходит для промышленных 8*8 матриц светодиодов

Тут речь про дискретные светодиоды :) Возможно даже использование мощных.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение HHIMERA »

"Не взлетит!"(С) :))
Количество геморроя превышает разумные пределы...
По хорошему... всё легко решается двумя портами, но с двумя портами и стандартные матрицы 8х8 прилепить можно... без головняка... :))
Однако можно умощнить вывод с сохранением третьего состояния. Например, вот такой схемой на четырёх транзисторах и двух диодах, предложенной Goldsmith:

74hc04 с рисунка убрать надобно... а то народ по незнанию его и прилепит... и "не робит, мля!"... :))
Да и... в коллектор Q2 сопротивление ~150 Ом поставить надобно... если типа рулить по схеме ОК...
Последний раз редактировалось HHIMERA Вт фев 26, 2013 12:34:57, всего редактировалось 2 раза.
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Gudd-Head »

Да где ж тут геморрой? :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Engineer_Keen »

Если только в возможности запутаться при сборке :)))
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение HHIMERA »

Gudd-Head писал(а):Да где ж тут геморрой? :)

В количестве навесных элементов... :))
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение ploop »

Опять жмёмся на копеечные 595е? :)))
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Gudd-Head »

ploop писал(а):Опять жмёмся на копеечные 595е?

Ставить 7 микросхем? а к ним ещё 56 транзисторов для увеличения тока? :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение HHIMERA »

ploop писал(а):Опять жмёмся на копеечные 595е? :)))

Угу... Интересно, кто нибудь успел собрать девайс по схеме Goldsmith???
Сколько светодиодов ушло "в мир иной"??? :)))
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
ArtemKuchin
Поставщик валерьянки для Кота
Сообщения: 2277
Зарегистрирован: Вс апр 20, 2008 23:34:26
Откуда: Москва
Контактная информация:

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение ArtemKuchin »

Все бы хорошо, только вот 8*12=96 добавочных элементов выходит. Может быть оно лаже и работает, но хотелось вот такое "умощнение" проводить более компактно. А нет ли в мире готовой чипульки, которая как раз этот тип умощненния и делает?
Долой идиотизм!
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Gudd-Head »

Ну ХЗ :dont_know:
В виде готовой микры я ничего не видел.
Мне видится 2 варианта:
1. Использовать компараторы. Тогда на каждый вывод потребуется 2 резистора, 2 транзистора и 2 компаратора. Компараторы взять неск-ко штук в 1 корпусе.
2. Попробовать "расщепить" каждый вывод на 2: логический сигнал ("0" или "1") и сигнал разрешения (Hi-Z или Push-Pull) и использовать обычные буферы с разрешением.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение ploop »

Так есть же драйверы 8х8 матриц?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение Gudd-Head »

ploop писал(а):Так есть же драйверы 8х8 матриц?

Так там вроде по-другому светодиоды подключены?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Управление туевой хучей (матрицей) светодиодов

Сообщение ploop »

Там обычной матрицей. По сути это расширитель портов с I2C (на 16 штук) с динамикой внутри. Блин, никак не нагуглю, где-то натыкался.
Ответить

Вернуться в «Разные вопросы по МК»