В этой статье я хочу представить проект открытки с механической разверткой (похоже на часы Боба Блика, но здесь нужно махать рукой).
Такая открытка отлично подойдет в роли подарка кому-нибудь либо её можно носить с собой как брелок. Подобные схемы отлично подходят для тех, кто только начал изучать микроконтроллеры и осваивать 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 секунд (устройство «заснёт»), нажимаем кнопку и машем . Если ваш рисунок виден полностью, без пропусков сегментов, то можете себе похлопать. Если же пропуски есть, то стоит проверить плату на наличие «соплей» — перемычек между дорожками — и устранить их.
Если плата исправна, но проблема не устранена, то нужно проверить сначала проблемные светодиоды (возможно вы просто перепутали полярность), а потом только МК. Если проблем «железа» не выявлено, то попробуйте перепрошить МК.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U1 | МК AVR 8-бит | ATmega8A-AU | 1 | |||
HL1-HL8 | Светодиод | ARL2-0805UBC | 8 | 0805 | ||
R1 | Резистор | 10 кОм | 1 | 0805 | ||
Bat.1 | Батарейка | CR2032 | 1 | |||
Батарейный отсек | BH1060 | 1 | ||||
SA1 | Тактовая кнопка | SWT-10 | 1 | |||
C1, C2 | Конденсатор | 100 нФ | 2 | 0805 | ||