Стробоскопическая открытка с POV-эффектом на ATmega8

 В этой статье я хочу представить проект открытки с механической разверткой (похоже на часы Боба Блика, но здесь нужно махать рукой).   

Такая открытка отлично подойдет в роли подарка кому-нибудь либо её можно носить с собой как брелок. Подобные схемы отлично подходят для тех, кто только начал изучать микроконтроллеры и осваивать smd-монтаж.



В основе стробоскопического эффекта лежит персистенция (инерционность) человеческого зрения — особенность зрительного восприятия дискретных последовательных событий, которые кажутся непрерывными. Так, например, когда крутят горящий факел, глаз видит огненный круг вместо нескольких положений одного и того же горящего факела.

Таким образом, персистенция — это способность глаза соединять быстро сменяющиеся изображения в одно — неподвижное. Именно на этом принципе устроен кинематограф, поскольку любое изображение (в кино или на экране монитора) представляет собой множество быстро сменяющихся изображений.

В нашем случае сменяется порядок свечения светодиодов. Но обо всё по порядку.

1.Хардварная часть.

1.1 Схема

ВНИМАНИЕ!!!
Номера выводов микроконтроллера подписаны для ATmega8 в корпусе TQFP32. Если будете делать для DIP или на бредборде, то вам нужно ориентироваться на названия портов.

"Мозгом" устройства стал восьмибитный микроконтроллер ATmega8 от AVR с 8КБайтами памяти на борту.
Микроконтроллер способен работать от низкого напряжения, отличается малым потреблением энергии.
Так как выводы МК имею высокое входное сопротивление, они могут работать как антенны и принимать наводки от внешних источников.
Самым критичным с этом плане является вывод RESET. Колебания на этом выводе могут приводить с нестабильности выполнения программы микроконтроллером.Для предотвращения этого вывод RESET имеет подтяжку через резистор 10 килоом к плюсу питания.
Индикация осуществляется 8 (по одному на бит) светодиодами 0805 (Можно ставить любые, главное чтобы это не приводило к превышению максимального для микроконтроллера тока). Светодиоды висят без резисторов, т.к. вмешивается внутреннее сопротивление батарейки + светодиоды работают в импульсном режиме.
Запуск микроконтроллера происходит при замыкании вывода RESET на минус питания. Программа выполняется в течение 30 секунд (настраивается программно) и после этого микроконтроллер засыпает.
Питание от батарейки CR2023.

Про изготовление платы и пайку smd-компонентов смотрите в видео в конце статьи.

2. Софтварная часть

Немного расскажу о реализации изображения на примере простого рисунка.

Поле можно представить как сетку 8(количество светодиодов)х7(оптимальное количество столбцов на 1 символ с учётом пробела)
В прошивке назначено время работы одного столбца в 1мс. 
#define LINETIME 1   //Время работы линии в миллисекундах
#define WORKTIME 30   //Время работы в секундах
То есть светодиоды мигают таким образом:
1мс - 678
2мс - 567
3мс - 456
4мс - 345
5мс - 234
6мс - 123
7мс - 12
Можно сделать свой рисунок, изменив исходники кода.
Памяти МК в идеале должно хватить на 
65536 (бит в 8КБайтах)/7строк*8столбцов(бит)=1170 символов (но придется очень широко размахивать руками)

Правильность своей прошивки можно проверить в протеусе с помощью виртуального осциллографа.

Если на это мигание смотреть неподвижно, то мигание в 150Гц будет еле заметно. Но если изображение "развернуть", то за счет инерционности зрения изображение станет видимым.

3. Прошивка МК

1. Подпаиваем проводки к плате (в .lay-файле указаны места где удобнее всего подпаяться)

2. Подключаем их к программатору (у меня USBASP. Если у вас тоже,то рисунок с распайкой ISP10 вам в помощь).

3. Подключаем программатор + микроконтроллер в компьютеру

4. Включаем на своём компьютере программу для прошивки

.

4.1 Выбираем тип микроконтроллера (в данном случае - ATmega8).

4.2 Находим на компьютере .hex-файл. Если чип ранее использовался, то его необходимо очистить.

4.3 Устанавливаем фьюз-биты. Фьюз-быты стандартные.

ВНИМАНИЕ!!! Здесь фьюз-биты прямые т.е. если галочки нет, то бит установлен.

5.Нажимаем кнопку ПРОГРАММИРОВАНИЕ.

И либо получаем ошибку (битый МК, плохой контакт МК и программатора, отпал джампер питания (USBASP) замыкание сигнала с программатора, непропай выводов МК и прочее)
либо всё прошивается и устройство сразу начинает мигать.
После этого отсоединяем МК от программатора, ставим батарейку (устройство при этом "проснётся"), ждем 30 секунд (устройство "заснёт"), нажимаем кнопку и машем . Если ваш рисунок виден полностью, без пропусков сегментов, то можете себе похлопать. Если же пропуски есть, то стоит проверить плату на наличие  "соплей"  - перемычек между дорожками - и устранить их.
Если плата исправна, но проблема не устранена, то нужно проверить сначала проблемные светодиоды (возможно вы просто перепутали полярность), а потом только МК. Если проблем "железа" не выявлено, то попробуйте перепрошить МК.

Прикрепленные файлы:

Отправить комментарий

0 Комментарии