Управление LED индикатором.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Renych
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс окт 03, 2010 16:11:36
Откуда: Москва
Контактная информация:

Управление LED индикатором.

Сообщение Renych »

Всем привет.
Имеется вопрос по управлению матрицей светодиодов.
А именно - формирование символов, текст бегущей строкой,
с возможностью в последствии по USB редактировать текст бегущей строки.
Опыт работы с МК минимальный, посему такие вопросы:

1. достаточно ли будет ATmega8 для этих целей?
2. нужен ли какой модуль сопряжения с USB или достаточно будет возможностей МК?
3. хватит ли ПЗУ МК для хранения "битмапа" алфавита или понадобится внешняя память?

спасибо )
Атеист, научи меня верить...
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Управление LED индикатором.

Сообщение uk8amk »

1,3 - зависит от размеров символов(ширина*высота в точках). В общем случае Mega8 достаточна для хранения 2-х шрифтов 8*8. Atmega64 - 6 шрифтов 32*24.
2 - FT232, CP2102, PL2303. Или шнурок от телефона. Чтобы обойтись без внешней микросхемы, нужно использовать MK со встроенным USB - Atmega32U4, AT91SAM7S64 и т.д.
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Re: Управление LED индикатором.

Сообщение balmer »

Можно и ATMega8 использовать с USB 1. Пример использования можно посмотреть в usbasp http://www.fischl.de/usbasp/ программаторе. Но там ужиматься надо. Хардварный USB таки круче.

STM32F1xx рулез :)
Аватара пользователя
Renych
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс окт 03, 2010 16:11:36
Откуда: Москва
Контактная информация:

Re: Управление LED индикатором.

Сообщение Renych »

В общем случае Mega8 достаточна для хранения 2-х шрифтов 8*8.

что Вы называете шрифтом? Как я понимаю, мне нужно будет закодировать каждую из букв алфавита
в массив точек. Размер буквы 16х16 точек. Таким образом мне понадобится ~ 40 символов (буквы + символы).
И того 16х16 = 256 бит (32 байта) на букву. 40 букв = 1280 байт.
Т.е. уже за килобайт переваливает. ПЗУ у Mega8 512, у Mega32 1Кб.
Или я неправильно считаю?
Атеист, научи меня верить...
Аватара пользователя
Renych
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс окт 03, 2010 16:11:36
Откуда: Москва
Контактная информация:

Re: Управление LED индикатором.

Сообщение Renych »

перефразирую вопрос:

помогите подобрать МК для следующих целей:

1. DIP корпус
2. объём ПЗУ для хранения шрифта ~ 40 символов 16х16
3. встроенный USB
4. недорогой :)

или хотя бы ткните в таблицу сравнения МК - в интернет не получилось найти.
Атеист, научи меня верить...
Аватара пользователя
alex2103
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт сен 18, 2007 16:41:16
Откуда: Украина, г. Запорожье
Контактная информация:

Re: Управление LED индикатором.

Сообщение alex2103 »

Renych писал(а):
ПЗУ у Mega8 512, у Mega32 1Кб.
Или я неправильно считаю?

это вы про еепром наверное. Правильные цифры 8 и 32 соответственно.
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Re: Управление LED индикатором.

Сообщение balmer »

Еще чутка оффтопа :))

DIP корпуса сейчас редко встречаются.
Их паять тяжело. Дырочек сверлить много надо.

Скажем ATMega8 в SMD исполнении без проблем можно запаять за 5 минут, причем большую часть времени бездельничать.

А вот аналогичную микросхему с 32 выводами в DIP корпусе паять надо вместе со сверлением минут 20. Еще и припоя в 10 раз больше уйдет.
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Управление LED индикатором.

Сообщение uk8amk »

что Вы называете шрифтом?


Кодовая таблица СР1251 имеет 256 символов. Она стандартна для ПК, поэтому разумно принять и там и там одинаковую кодировку. Так вот, допустим рисуем 256 символов обычным стилем = шрифт №1, 256 символов жирным стилем = шрифт №2, 256 символов курсивом = шрифт №3 и т.д. В реальности для экономии памяти конечно можно выбросить неиспользуемые знаки.

помогите подобрать МК


Из самых простых при разумном кодинге думаю это должно подойти: Atmega16U2(может быть 8U2), STM32F103C4T6, PIC18F2550(единственное что есть в DIP).

или хотя бы ткните в таблицу сравнения МК


Для Атмел: http://www.atmel.com/ru/ru/ Внизу нажать "Выбор микроконтроллера". У других производителей примерно также.

Вообще, если речь не про крупную серию, то я бы советовал внешний USB, особенно с учетом этого:

Опыт работы с МК минимальный
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Управление LED индикатором.

Сообщение uk8amk »

Сейчас попробовал сохранить шрифт и посмотреть размер.
Шрифт Arial кириллический, 16 пикселей, пропорциональный. Все символы кодировки кроме первых 32-х.
Получилось 5933 байта. Так что вполне и в М8 вместе с программой влезет.
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Управление LED индикатором.

Сообщение Kavka »

А если ещё и сжатие применить. А при прорисовке распаковывать.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: Управление LED индикатором.

Сообщение uk8amk »

Распаковка быстро и налету - RLE. Более эффективные алгоритмы будут сильно грузить контроллер. А я как понял автор симпатизирует восновном мелким 8-битникам.

Но здесь все равно растр недостаточно большой и эффективность сжатия тоже невелика будет.
Например, А - нифига не ужмется, Е или ПРОБЕЛ - хорошо.
Изображение
Поэтому в целом для одного шрифта и несжатый можно оставить. Я как-то хотел ужать чтоб диапазон юникода в мегу уместился. Чтоб сразу писать можно было на русском, армянском, короче по всякому. Потом плюнул, нафиг оно надо.

Еще в табло могут быть графические эффекты. Ну типа текст выплывает сверху, наезжает на другой или как-то вертится.
Они тоже жрут ОЗУ. Так как нужен дополнительный буфер экрана.
И от размера экрана тоже зависит. Например на большом экране может быть трудно в реалтайме даже просто бегущую строку вывести. Всмысле не просто буфер вывести, а успеть его перерисовать к началу следующего цикла регенерации с приемлемой частотой(>100Гц). Полностью победить все дефекты удалось только двойной буферизацией изображения. Это для табло больше 64*16 светодиодов. Так что число буферов тоже надо считать чтоб оно не оказалось больше размера ОЗУ и на стек чуток осталось.
Аватара пользователя
Renych
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс окт 03, 2010 16:11:36
Откуда: Москва
Контактная информация:

Re: Управление LED индикатором.

Сообщение Renych »

Спасибо за подробные комментарии.
Вернусь после покупки МК :)
Атеист, научи меня верить...
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Управление LED индикатором.

Сообщение Alexeyslav »

Собственно, символы у вас 16x16 а сколько символов вообще собираетесь отобразить в одну строку? Надо иметь в виду что одной только меги8 едва хватит на матрицу 8x8 дальнейшее увеличение надо делать за счет расширителей - обычных регистров сдвига с драйверами под светодиоды(простой регистр сдвига едва ли потянет светодиоды, тем более в динамике с её пиковыми токами).

Есть еще другой вариант - на EBay продаются готовые светодиодные модули в виде матриц 16x24 - их можно соединять последовательно увеличивая разрядность, поддерживают отображение аппаратно и группируются по 4 таких модуля на одну шину. Да, модули поддерживают аппаратно 4 уровня яркости для каждого пикселя! т.е. можно реализовать алгоритмы сглаживания для шрифтов.

В целом, разработка бегущей строки требует так же знаний в области аналоговой электроники - при большом количестве светодиодов получаются огромные значения токов по шинам - их надо будет уметь правильно развести чтобы ваша бегущая строка 1) заработала и 2) не являлась мощным источником радиопомех.
Аватара пользователя
Renych
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс окт 03, 2010 16:11:36
Откуда: Москва
Контактная информация:

Re: Управление LED индикатором.

Сообщение Renych »

дальнейшее увеличение надо делать за счет расширителей - обычных регистров сдвига


Как раз по этому поводу возник вопрос.
Первоначально планировал использовать регистры SN74HC595N (и даже приобрёл десяток),
но потом вычитал, что понадобятся транзисторные ключи для включения такого кол-ва
светодиодов. Но затем узнал про LED-драйвер Max6960. Вот только в продаже их не нашёл
ни в одном магазине. Может это устаревшая микросхема и существует более свежий аналог?

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

Re: Управление LED индикатором.

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

Какая же она старая, последняя ревизия ДШ в ноябре прошлого года!
Просто слишком специфическая, наверняка доступна под заказ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Управление LED индикатором.

Сообщение Alexeyslav »

TB62725FN - 8 каналов со встроенными драйверами светодиодов 2...80мА на каждый канал.
stp16cp05 - 16 каналов со встроенными драйверами светодиодов 5...100мА на каждый канал с регулировкой тока на все каналы всего одним резистором.

Есть еще какие-то модификации усиленные для 595-регистра которые позволяют выходной ток до 150мА в импульсе, но недостаток регистра без драйвера - на каждый канал надо еще токоограничивающее сопротивление и напряжение на диоде не может превысить напряжение питания микросхемы - а это 5 ввольт.

Искать лучше всего на EBay.
Аватара пользователя
Renych
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс окт 03, 2010 16:11:36
Откуда: Москва
Контактная информация:

Re: Управление LED индикатором.

Сообщение Renych »

И так, был куплен МК ATmega32u4. Получилось поиграться с ним - загрузить простую прошивку, помигать светодиодом.
Теперь встал вопрос по LED-драйверу. Был куплен STP16CP05.
Вот кусок даташита:

Изображение

Изображение

И вот кусок описания:

Когда на входе LE (вывод 4) высокий уровень, регистр-защёлка захватывает данные,
которые проходят через регистр сдвига, и удерживает (хранит) их, когда на этом входе низкий потенциал.
Низкий уровень на входе OE (21) разрешает прохождение данных
с регистра-защёлки на выходные каскады (стабилизаторы тока) микросхемы.
Высокий уровень на этом входе запирает выходные каскады.


Помогите составить примерный алгоритм действий:

Допустим я подключил к выходам микросхемы 8 светодиодов (как на схеме)
и хочу зажечь их все. Как я понимаю, мне нужно
1. на вход SDI (2) отправить байт 0b00000000
2. на вход CLK (3) передавать импульсы синхронизации
3. на вход OE (21) подать 0
4. а вот со входом LE (4) не совсем понятно. Во время передачи байта подавать 1,
а после передачи 0?

Подсобите )
Атеист, научи меня верить...
Аватара пользователя
Martin76
Друг Кота
Сообщения: 20167
Зарегистрирован: Пт фев 04, 2011 17:57:51
Откуда: Рыбинск

Re: Управление LED индикатором.

Сообщение Martin76 »

Во время передачи байта держать на LE " 0", чтобы сегменты не мерцали. После загрузки байта в регистр нужно на LE подать высокий уровень для записи в регистр- защелку.
Alexeyslav писал(а):напряжение на диоде не может превысить напряжение питания микросхемы - а это 5 ввольт.
А если даташиты смотреть, а не на ходу придумывать? TPIC6(A-D)595 - напряжение на стоках ключей до 20-50В.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Управление LED индикатором.

Сообщение Alexeyslav »

Это уже несколько другая микросхема.
Аватара пользователя
Renych
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс окт 03, 2010 16:11:36
Откуда: Москва
Контактная информация:

Re: Управление LED индикатором.

Сообщение Renych »

Собрал такую схему:

STP16CP05
Подключил к выводам 5-12 светодиоды.
К выводу 23 (R-EXT) резистор 1 кОм.
Вывод 21 (OE) замкнул на "землю".
Вывод 2 (SDI) к MOSI МК.
Вывод 3 (CLK) к CLK МК.
Вывод 4 (LE) к сконфигурированному на выход порту PC6 МК.
Питание 5 V

Код прошивки:

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

.def  TEMP = R16

.equ CS   = PB0
.equ MOSI   = PB2
.equ MISO   = PB3
.equ SCK   = PB1 ;разряды порта В, используемые интерфейсом SPI.

;=================
Start:   rjmp    Init;
       

Init:      ldi     TEMP, 0b11111111   ; порт C на выход
         out     DDRC,TEMP         

         ; включаю SPI, говорю, что устройство будет Master и выборка по переднему фронту                                         
         ldi TEMP, (1<<SPE) + (1<<MSTR) + (1<<CPHA)
         out SPCR, TEMP

         ;SCK,MOSI,CS, SS - выходы
         ldi TEMP, (1<<SCK) + (1<<MOSI) + (1<<CS) + (1<<PB4)
         out DDRB, TEMP   
         

         cbi PORTC, PC6      ; на вход LE драйвера 0

                               
DoLed:      ;запись-чтение SPI,
         ldi     TEMP, 0b01010101   ;
         out SPDR, TEMP ;начать передачу
         wait_spi:
         ;ожидаем конца передачи
         lds R20, SPSR
         sbrs R20, SPIF
         rjmp wait_spi
                              
            
         sbi PORTC, PC6      ; на вход LE драйвера 1            
                           


End:


При включении ничего не происходит.
Пробовал на LE (4) подавать 1 во время записи и 0 после - без результата.
Подскажите в чём моя ошибка, куда копать?

PS
Насколько я понял из этой диаграммы, драйвер считывает данные по нарастающему переднему фронту:

Изображение

PS2
К МК (Mega32U4) подключен внешний кварц на 8 MHz
Атеист, научи меня верить...
Ответить

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