Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Еще раз про бегущие строки
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
skn
На форуме было много обсуждений бегущих строк, но всех ответов для себя я там не нашел. И, на мой взгляд, темы там исчерпаны. Поэтому решил открыть новую. Проблема такая - не могу побороть паразитное утолщение вертикальных линий при движении. Строка собрана на 74HC595. Управление полностью статическое. Т.е. собран один большой сдвиговый регистр. Разрешение 8 х 64. Расстояние между диодами 10мм. Диоды овальные 30/60. Широким углом ориентированы по горизонтали. Запустил движение вертикальной линии. Визуально кажется, что бежит полоса шириной в два диода. Впечатление такое, что диод гаснет не сразу. Пробовал гасить всю панель перед выводом очередного шага. Помогло только при больших паузах (>15мс) и больших скоростях движения, но яркость естественно упала, и при медленном движении сильно мерцает. Пробовал зажигать через диод, т.е. увеличил программно шаг между пикселами, линия стала толще.
Коллеги, помогите понять природу эффекта, и поделитесь пожалуйста опытом, как побороть его.
Черчилль
Мож не в точку, но у меня была балига, когда строчный КТ818 не успевал переключиться на новую строку, на предыдущей был виден след от новой строки. Лечилось введением задержки после отключения всех строк, выдерживания паузы 50 мкс и только после этого включением следующей строки
skn
Цитата(Черчилль @ Jul 31 2007, 10:59) *
Мож не в точку, но у меня была балига, когда строчный КТ818 не успевал переключиться на новую строку, на предыдущей был виден след от новой строки. Лечилось введением задержки после отключения всех строк, выдерживания паузы 50 мкс и только после этого включением следующей строки

У Вас очевидно динамический срособ развертки, у меня статический. Случай не тот.
IEC
Цитата(skn @ Jul 31 2007, 09:45) *
Управление полностью статическое. Т.е. собран один большой сдвиговый регистр. Разрешение 8 х 64. Расстояние между диодами 10мм. Диоды овальные 30/60. Широким углом ориентированы по горизонтали. Запустил движение вертикальной линии. Визуально кажется, что бежит полоса шириной в два диода. Впечатление такое, что диод гаснет не сразу. Пробовал гасить всю панель перед выводом очередного шага. Помогло только при больших паузах (>15мс) и больших скоростях движения, но яркость естественно упала, и при медленном движении сильно мерцает. Пробовал зажигать через диод, т.е. увеличил программно шаг между пикселами, линия стала толще.
Коллеги, помогите понять природу эффекта, и поделитесь пожалуйста опытом, как побороть его.


С какой частотой производится смещение вертикального столбца? Возможно, что ваш глаз не может уловить разницы (если частота более 24 герц). Посмотрите осцилографом - производится переключение или нет.

ЗЫ: А что имеется в виду под "статическим" методом управления?
skn
Цитата(IEC @ Jul 31 2007, 11:05) *
С какой частотой производится смещение вертикального столбца? Возможно, что ваш глаз не может уловить разницы (если частота более 24 герц). Посмотрите осцилографом - производится переключение или нет.

ЗЫ: А что имеется в виду под "статическим" методом управления?

Осциллографом смотрел прямо на диодах, переключение есть. Между соседними переключениями столбцов сейчас около 60мс, это как бы медленно. Хорошая картинка получилась при 20мс, но при паузе около 15мс. Соответственно сильно потерял в яркости. Статическое управление. в моем понимании, это когда в один момент времени можно засветить все диоды одновременно. Я просто загоняю в сдвиговые регистры данные, даю сигнал защелки и все диоды одновременно сменили свое состояние.
demaven
вообще то статический режим индикации - это когда горит постоянно, а динамический - это когда в любой момент времени горит ТОЛЬКО ОДНА (ОДИН) точка, или столбец, или строка, в зависимости от схемы. В Вашем случае - это скорее всего паразитная засветка от не успевшего закрыться транзистора
GDI
Человек зажигает весь кадр целиком, все 512 светодиодов управляются одновременно, а рисунок меняется от кадра к кадру, но опять же для всех 512 светодиодов одновременно. Однако тогда становится непонятны следующие слова автора топика
Цитата
Между соседними переключениями столбцов сейчас около 60мс

Может стоит увеличить частоту кадров? до 100Гц и выше как это делают в современных телевизорах как раз для улучшения движущегося изображения, и/или придумать какие то решения по уменьшению фронтов и спадов сигнала управления светодиодами.
demaven
Цитата(GDI @ Jul 31 2007, 18:10) *
Человек зажигает весь кадр целиком, все 512 светодиодов управляются одновременно, а рисунок меняется от кадра к кадру, но опять же для всех 512 светодиодов одновременно.


это что, у него 512 ключей, на каждый светодиод по ключу? Интересненько, куда он эти ключики засунул.
Картинка на строке меняется относительно медленно, и неизменная картинка пусть называется кадром. Во время одного кадра засвечивание светодиодов в строке может происходить либо столбцом либо строкой, без разницы. Мне, как-то приятнее засвечивать столбцом в каждой матрице и переключать столбцы.
=GM=
Цитата(skn @ Jul 31 2007, 05:45) *
Проблема такая - не могу побороть паразитное утолщение вертикальных линий при движении. Коллеги, помогите понять природу эффекта

Теория такая. Известно, что при частоте кадров более 12 Гц глаз человека не видит мерцаний, хотя помните кадры из старых фильмов, как там фигурки людей не плавно идут, а как бы подпрыгивают, там частота была что-то порядка 16 Гц. Поэтому пусть минимальная допустимая частота кадров будет 25 Гц, как в современных ТВ, т.е. 50 мс на один кадр.

Что у вас? Вы пытаетесь вывести кадры с изменениями в 50 Гц (20 мс), т.е. примерно в два раза выше минимальной частоты кадров (50 мс). Естественно, глаз съинтегрирует изображение, и вы увидите линию как на первой позиции, так и на второй.

Не пытайтесь обмануть биофизику глаза, скорость изменения картинки не должна быть выше 25 Гц, т.е. не быстрее, чем 50 мс. Можно ещё поиграться частотой кадров (50-100 Гц и более), как вам уже советовали.
skn
Цитата(GDI @ Jul 31 2007, 16:10) *
Человек зажигает весь кадр целиком, все 512 светодиодов управляются одновременно, а рисунок меняется от кадра к кадру, но опять же для всех 512 светодиодов одновременно. Однако тогда становится непонятны следующие слова автора топика

Может стоит увеличить частоту кадров? до 100Гц и выше как это делают в современных телевизорах как раз для улучшения движущегося изображения, и/или придумать какие то решения по уменьшению фронтов и спадов сигнала управления светодиодами.


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

Цитата(demaven @ Jul 31 2007, 16:34) *
это что, у него 512 ключей, на каждый светодиод по ключу? Интересненько, куда он эти ключики засунул.
Картинка на строке меняется относительно медленно, и неизменная картинка пусть называется кадром. Во время одного кадра засвечивание светодиодов в строке может происходить либо столбцом либо строкой, без разницы. Мне, как-то приятнее засвечивать столбцом в каждой матрице и переключать столбцы.


Строка выполнена в виде модульной конструкции. Один модуль 8 х 32. Сейчас включил два модуля. В одном модуле 32-е штуки 74hc595 + резистор на каждый диод. Диод с резистором подключен прямо на выход регистра. Я не засвечиваю ни солбцы, ни строки. Я засвечиваю все сразу.

Цитата(=GM= @ Jul 31 2007, 17:13) *
Не пытайтесь обмануть биофизику глаза, скорость изменения картинки не должна быть выше 25 Гц, т.е. 50 мс. Можно улучшить разрешение, увеличив частоту кадров, как вам уже советовали.


Не очень понял о какой частоте кадров в моем случае идет речь. Скорость изменения картинки ставил низкую, около 60мс, лучше не стало.

В общем проблема осталась.
CD_Eater
Как тут правильно заметили, "виновато" интегрирующее свойство глаза. Только добавлю, что оно не зависит от частоты кадров - даже при 10 кадрах в секунду каждый "переходный" момент будет сопровождаться утолщением букв. Хотите, чтобы линии были нормальной толщины - делайте свечение кратковременным. Иначе никак. Так устроен глаз, а электроника здесь не при чём.

Статическая индикация позволяет работать диодам в "правильном" режиме, это, конечно, плюс. Но обо всех красивых эффектах бегущих строк придётся забыть.

Чтобы понять, почему система "глаз + мозг" именно так воспринимает статическую индикацию, проведите мысленный эксперимент. Сначала пусть индикация будет динамической. Это эквивалентно тому, что буквы движутся РАВНОМЕРНО, но мы их видим лишь при кратковременных вспышках света, и мозг сам успешно достраивает промежуточные положения букв. Пусть теперь индикация будет статической. Это эквивалентно тому, что буквы видны постоянно, но движутся СКАЧКАМИ. Понятно, что мозг, пытаясь это интерпретировать как равномерное движение, вынужден "размазывать" буквы по горизонтали, делая их толще (и одновременно уменьшая яркость вертикальных палочек).

Поэтому в бегущих строках стараются не использовать статическую индикацию, если нужно отображать движущийся текст. А вот для просмотра видео (или для отображения недвижущегося текста) статическая индикация - это то, что надо.

Хотите красоты - ставьте ваши диоды в неприятный для них импульсный режим. smile.gif
SasaVitebsk
По моим скромным наблюдениям если бы бежал не текст или текст был незнаком (китайские буквы к примеру smile.gif ) то возможно мозг тоже бы нормально воспринимал. Он видимо именно на текст так поступает.
Кстати, пользуясь случаем хочу спасибо высказать CD_Eaterу.
Сделал всё как вы сказали - теперь картинка идеальная.

Несколько примеров: (Индикация динамическая 60Гц, картинку могу изменять от 1 раза за кадр)

1) Если при движении текста я его сдвигаю не на 1 точку а на 4 (к примеру), то с точки зрения зрителя текст движется совершенно плавно (размывается само изображение табло).
2) Если вывожу видеоролик даже при 4 отображениях на кадр - картинка совершенно не размывается. А вот при выводе текста таким образом наблюдается дёрганность и некоторая некрасивость изображения.
smk
Цитата
и все диоды одновременно сменили свое состояние


вот корень проблемы, на мой взгляд. глаз не успел "стереть" старое изображение, как на него воздействует новое. Нужно включать "пустой" кадр на время более 1/24 с.
GrayCat
Думаю, наилучшим способом был бы "субпиксельный" сдвиг, т.е. когда картинка не "прыгает" на 1 пиксел, а плавно "переезжает" с ряда на ряд. Но это потребует плавного управления яркостью светодиодов, плюс на порядок бОльшая вычислительная мощность.
CD_Eater
Цитата
Думаю, наилучшим способом был бы "субпиксельный" сдвиг

Будет такая же хрень - вертикальные палочки удвоенной толщины и уполовиненной яркости.
Здесь, как с часами - лучше глядеть дважды в сутки на стоящие часы и видеть правильное время, чем постоянно смотреть на неправильное время на спещащих часах. smile.gif
GDI
Цитата
Кстати, пользуясь случаем хочу спасибо высказать CD_Eaterу.
Сделал всё как вы сказали - теперь картинка идеальная.

Непонятно, что же все таки конкретно сделано, чтоб картинка стала идеальной.
SasaVitebsk
Всего что сделано уже и не упомнишь. Попробую основное обозначить. Но надо помнить что речь идёт о динамической индикации. Практически всё уже упоминалось, просто разрозненно.

1) За счёт подключения большого количества светодиодов на строках, при переключении наблюдается послесвечение. Казалось бы простое решение выключить-поменять-включить(дешифратор) не работает. Делаю по другому. Строка всегда засвечена. Гашу светодиоды-переключаю строку-включаю новое значение. Паузу подбирал.
2) Использую две страницы видеоозу. Одну отображаю - во второй обновляю изображение. (чтобы избежать снега)
3) Переключаю страницы в начале кадра. (чтобы избежать ломающегося изображения)
4) (Что указал CD_Eater) Меняю изображение каждый кадр. Иными словами движущийся текст сдвигается каждый кадр.

У меня, конечно всё это задаётся командами. Для ускорения движения изменяется величина сдвига, для замедления сдвиг осуществляется один раз за N кадров. Так вот при N>1 картинка смотрится хуже. При N=1, с точки зрения наблюдателя, негорящие светодиоды сливаются в размытую черту, а движущийся текст "едет на колёсиках" без единого рывка. Теоретически я могу и плавно скорость подстраивать. Даже командами, но мне кажется это лишним.

Что посоветовать Вам - я не знаю. Наверное действительно временами гасить изображение. И подобрать частоту мерцания и соотношение пауза-засветка. А изображение перерисовывать в паузе. Если так не получается, то я бы попробовал значительно ускорить текст. Короче надо пробовать обмануть мозги. smile.gif
GDI
Вы меня перепутали с автором топика, как впрочем и я вас smile.gif
skn
Кое-что получилось.
Сделал так:
Перед каждым выводом текста гашу все на время от от 5 до 10мс. Если делать больше,то сильно заметно мерцание, меньше-слишком большая скорость движения.
Пока пауза загоняю в регистры кадр.
Включаю засветку диодов на время от 1 до 4 мс. При меньшем значении заметно падает яркость, при большем начинается видно размытие. Оптимальным показалось 4мс.
Повторяю все для следующего смещения текста.

Как результат - получилось плавное движение, без размытий, дерганий. Скорость движения хорошо регулируется длительностью паузы, но яркость на разных скоростях разная. Это плохо, буду пробовать другие варианты регулировки скорости.
SasaVitebsk
Цитата(skn @ Aug 1 2007, 16:52) *
Перед каждым выводом текста гашу все на время от от 5 до 10мс. Если делать больше,то сильно заметно мерцание, меньше-слишком большая скорость движения.
.....
Включаю засветку диодов на время от 1 до 4 мс. При меньшем значении заметно падает яркость, при большем начинается видно размытие. Оптимальным показалось 4мс.
Повторяю все для следующего смещения текста.

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


Не понимаю какое влияние имеет длительность паузы на скорость. Вы должны одновременно менять и то и другое. А скорость должна определятся частотой. Тогда яркость, по идее, должна быть одинаковая при разных скоростях. Правда при соотношении 1:1 яркость у вас упадёт в 2 раза. Фактически получается динамическая индикация со скважностью 2. Надо ток увеличить в 2 раза.
skn
Согласен, скорость определяется частотой. Но в моей программе я сделал независимую регулировку времени паузы и времени засвечивания кадра, что бы поиграццо. Соответственно скорость движения определяется суммой этих времен. Выяснилось, что при засвечивании >4мс и при любых паузах текст "толстится". При паузах от 5мс до 15мс движущийся текст выглядит нормально. Засветку меньше 4мс ставить невыгодно - падает яркость. Получается, что для регулировки частоты вывода можно изменять только паузу, но при неизменной засветке меняется скважность и соответственно яркость. Ток через диоды увеличивать сильно не могу - ограничен максимальным током регистра.
SasaVitebsk
Единственное что я могу предложить в данной ситуации это следующее.
1) поставить транзисторы. Можно полевые.
2) Менять ток путём изменения напряжения на светодиодах.

Таким образом и автоматич рег яркости можно сделать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.