Электроника - это просто Теоретические и практические вопросы для начинающих электронщиков. |
10.02.2012, 21:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Динамическая индикация - загоны.. Нужно понять отчего..
Упростим ситуацию до минимума, расскажу итоги эксперимента.
Дано:
1) устройство динамической индикации. 16 строк 48 столбцов. Проверено подключением к выводам светодиодов, работает четко.
2) Стенд, светодиодный. Соответственно матрица 16 на 48. Итого 768 элементов. Светодиодов 256 потому что RGB - один плюс (анод) и три минуса (катод). Итого 16 на 16 элементов RGB.
3) Обозначения. Аноды обозначаем А1 - А16. Катоды С1 - С48. Для тестов используем одну ячейку. А2-С1.
4) Включаем контроллер и даем ему команду зажечь А2-С1. Загорается второй элемент и - в этом и проблема - вполнакала зажигается первый элемент, на пересечении А1-С1.
5) Отключаем контроллер, даем на А2-С1 просто 12 вольт. Горит, как и положено, только второй элемент - засветки первого нет.
6) Включаем контроллер без стенда, даем команду зажечь А2-С1. Подключаем светодиод на А2-С1 - горит, как и положено. Подключаем светодиод на А1-С1 (ячейка, которая внезапно горит на стенде в полнакала) - ничего не горит, как должно быть.
Соединяем контроллер со стендом, даем А2-С1 - горит вторая как указали командой и вполнакала первая...
Ну и что это блин такое?? Внезапно..
|
|
|
|
10.02.2012, 21:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Динамическая индикация - загоны.. Нужно понять отчего..
Подробнее об устройстве..
Атмега328, 8 сдвиговых регистров 74HC595. Первый два регистра управляют ключами из двух плечей - логический DTC144 NPN, который в свою очередь открывает P-мосфет FR9120. Это аноды, А1-А16. Оставшиеся шесть регистров управляют через 33ома резистор N-мосфетами FR430A. Это катоды.
Алгоритм вывода.
Переменная j - номер текущей строки, от 1 до 16. Вызов по таймеру, частота около 100 гц (итоговая).
В переменную регистров заносим биты так, чтобы включилась строка (анод) j.
Забиваем в переменные для регистров, какие катоды надо включить на этой строке (проверка по массиву data[j][x], где x от 1 до 48, тип булевый).
Отсылаем это в регистры, дергаем защелку - включаем все мосфеты как надо.
Увеличиваем j
Если j больше 16, сбрасываем в 1.
Конец
Таким образом у нас получилась динамическая индикация, где цикл бегает по анодам, одновременно включая нужные для данного анода катоды.
|
|
|
|
10.02.2012, 22:03
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Динамическая индикация - загоны.. Нужно понять отчего..
Если при динамике подсвечиваются сегменты соседних разрядов , значит при переключении разрядов вы не гасите сегменты . Все это "на пальцах" объяснялось в FAQ по протеусу .
Еще здесь можно посмотреть - http://www.kaligraf.narod.ru/nedodellki.html
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 10.02.2012 в 22:07.
|
|
|
|
10.02.2012, 22:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Динамическая индикация - загоны.. Нужно понять отчего..
dosikus, предыдущие гасятся .. как бы объяснить. Смотрите.
Я завожу переменную (массив) byte registers[8] = {B00000000, B00000000, ...B00000000, }
Я меняю только те биты которые мне нужны.
я отсылаю переменные в регистры.
Соответственно одновременно с зажиганием новых гасятся предыдущие. Данные и по строкам и по столбцам отсылаются одновременно. Только потом защелкой активируются.
Есть необходимость все таки именно тушить все перед зажиганием, типа с задержкой? Спасибо за ответ! Пока пойду по вашей ссылке
|
|
|
|
10.02.2012, 22:09
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Динамическая индикация - загоны.. Нужно понять отчего..
Что матрица , что сегменты - одинаково . Главное понять принцип.
Сложного там нет ничего .
__________________
Осторожно , злой кот
|
|
|
|
10.02.2012, 22:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Динамическая индикация - загоны.. Нужно понять отчего..
Прочитал, интересно. Но забыл рассказать еще об одной части эксперимента. Весь этот эффект похоже зависит от длинны проводов до светодиодов. Стенд длиный - и длинна может достигать 10 метров. Если подключить одиночный светодиод в ячейку засветки - он не горит. Как только подтыкаем разъем на стенд - он загорается..
Буду пробовать тушить и ставить задержку.
|
|
|
|
10.02.2012, 22:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Динамическая индикация - загоны.. Нужно понять отчего..
И еще.. подсвечиваются НЕ все сегменты, только те которые висят на первой строке. Возможно - остальные ключи успевают закрываться, а этот нет. Сейчас я вспоминаю, что был коротыш и этот ключ сильно грелся, но после теста был оставлен..
|
|
|
|
10.02.2012, 22:15
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Динамическая индикация - загоны.. Нужно понять отчего..
Если есть подозрения на ключи , проверьте в статике . Поочередно переключая и контролируя свечения . Про инерцию ключей, на такой низкой частоте, это бред.
__________________
Осторожно , злой кот
|
|
|
|
10.02.2012, 22:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Динамическая индикация - загоны.. Нужно понять отчего..
Сообщение от dosikus
|
Если есть подозрения на ключи , проверьте в статике . Поочередно переключая и контролируя свечения . Про инерцию ключей, на такой низкой частоте, это бред.
|
Проверял, отключая от регистра - работают.. Проводочком +5в на него - заводится. Убираю - тухнет.. На глаз - моментально..
первый ключ из за коротыша реально был разогрет - термоклей потек с него. Термоклей надеюсь же то не проводит? )
Других мыслей кроме как инерции - нет. Частота реально низкая - мерцание боковым зрением заметно, да и уменьшал в сотню раз - видно очередность работы строк. Эффект подсвечивания некоторых (пока выявил что все на строке 1) есть. То есть если зажечь на любом столбце светодиод, загорится первый в этом же столбце..
|
|
|
|
10.02.2012, 22:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Динамическая индикация - загоны.. Нужно понять отчего..
Приведу кусок кода, может поможет. Среда - ардуино.
Код:
|
//функция, вызываемая по таймеру
void print() {
//отрисовка матрицы
//цикл по строкам (аноды)
byte registers[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //обнуляем регистры
//задаем нужный анод
if(j ‹ 8) bitSet(registers[0], j);
else bitSet(registers[1], j-8);
for (int k=0; k ‹ _COLUMNS; k++)
//цикл по столбцам (катоды)
if (data[j][k]) {
//задаем катоды
if (k ‹ 8) bitSet(registers[2], k);
else if (k›=8 && k‹16) bitSet(registers[3], k-8);
else if (k›=16 && k‹24) bitSet(registers[4], k-16);
else if (k›=24 && k‹32) bitSet(registers[5], k-24);
else if (k›=32 && k‹40) bitSet(registers[6], k-32);
else if (k›=40 && k‹48) bitSet(registers[7], k-40);
}
//shiftOut
bitClear(PORTB,_latchPORTB);
shiftOut2(_data,_clock,registers[7]);
shiftOut2(_data,_clock,registers[6]);
shiftOut2(_data,_clock,registers[5]);
shiftOut2(_data,_clock,registers[4]);
shiftOut2(_data,_clock,registers[3]);
shiftOut2(_data,_clock,registers[2]);
shiftOut2(_data,_clock,registers[0]);
shiftOut2(_data,_clock,registers[1]);
bitSet(PORTB,_latchPORTB);
//корректировка j
j++;
if (j == _ROWS){
j= 0;
}
} |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:49.
|
|