Статья познакомит Вас с созданием интересного проекта, который при большом желании и небольшом умении Вы сможете воссоздать и модернизировать! Основная идея данной статьи была взята из этого источника, однако концепция и принципиальная схема были переработаны. Так же хочется отметить, что данная статья (в моих позитивных планах) будет иметь продолжение и рассказывать о создании полноценного дисплея, способного отображать разные изображения.
Началось все с того, что мне захотелось приятно порадовать свою девушку необычным подарком. Найдя желаемое (электронную открытку) я загорелся идеей сделать что-то свое, но самое главное разобраться в том, как это работает. А именно понять как же работает эта таинственная вещь, называемая динамической индикацией и применяемая в том числе и в светодиодной рекламе.
Во – первых, немного о наших глазах. Наверное, ни для кого не секрет, что человек воспринимает всю окружающую среду, использую органы чувств. Одним из таких является зрение. А видит человек тоже довольно замысловато: мы можем различить 24 – 25 кадров минуту. А все остальное нам видится либо как медленно передвигающееся или меняющееся либо наоборот, передвигающиеся очень быстро, что пространственная координата меняется скачком. Именно на принципе того, что человеческий глаз и не может отследить быстроменяющиеся картинки, построен данный дисплей. Программа и взаимное включение светодиодов сконфигурированы таким образом, что человеку кажется, что изображение статично. Однако, смена горящих светодиодов в столбцах матрицы происходит слишком быстро, для корректного детектирования. Так что ошибки природы не всегда идут во вред!
Теперь поподробнее о схеме:
Для опытных радиолюбителей схема не требует пояснений, для новичков поясню. Основным элементом управления является микроконтроллер ATmega8, компании Atmel. Именно он, в совокупности с загруженной программой, и позволяет реализовывать эффекты динамического отображения изображений на дисплее. В качестве питания схемы используется гальванический элемент типа «крона» на 9В. Элемент питания подключается к основной схеме через стабилизатор напряжения LM7805 (отечественный аналог КР142ЕН5). Конденсаторы C1 и С2 необходимы для сглаживания пульсаций и помех (фильтры). Резистор R1 необходим для установления логического состояния 1 на линии reset, с целью запуска микроконтроллера. Резисторы R2 – R8, номиналами по 100 Ом каждый, являются токоограничивающими, т.е. предотвращают протекание большого тока через светодиоды. Резисторы R9 – R15 служат для задания необходимого напряжения на затворах транзисторов VT1 – VT7. Светодиоды HL1 – HL49 являются элементами дисплея. В моем девайсе я использовал красные светодиоды (напряжение 3 В, размер 3 мм). Но тут уж как говорится дело вкуса…
Дальше идем к процессу и особенностям сборки:
Для платы используется фольгированный двусторонний текстолит FR4, габаритными размерами 50 * 50 мм. В виду особенностей конструкции таких заготовок понадобится 2 штуки. Далее стандартная процедура:
1. Обработка и чистка текстолита. В начале механическая – обрабатываем мелкозернистой наждачной бумагой, затем химическая – тщательно моем столовой содой или чистящим средством для посуды.
2. Печатаем трафарет на лазерном принтере, используя в лучшем случае фотобумагу (рекомендую) или обычный журнальный глянец. На данном этапе изготовления главное не ошибиться с выбором стороны, которую необходимо отзеркалить при печати (зеркалить необходимо сторону с МК, другую оставляем как есть).
3. Далее чистую плату кладем на салфетку или лист бумаги оборачиваем другой стороной и немного прогреваем утюгом (10 – 15 секунд). После чего кладем трафарет на текстолит и тщательно прижимаем утюгом (в таком состоянии ждем 25 – 30 секунд).
4. Затем бумажный трафарет аккуратно удаляем под проточной струей воды (необходимо, чтобы рисунок печатной платы не стерся). Используя иглу удаляем оставшиеся кусочки бумаги.
5. Используя любой сверлильный инструмент (коловорот, маленькая самодельная дрель, сверлильный станок и т.д.) проделываем несколько контрольных отверстий, которые послужат метками для нанесения рисунка второй стороны (это необходимо для идеального совмещения рисунков с обоих сторон).
6. После чего повторяем вышеописанные процедуры для второй стороны.
7. Точно таким же путем делаем заготовку второй платы.
8. Далее отправляем обе платы в емкость с хлорным железом или персульфатом аммония для травления. Водичку лучше постоянно подогревать на водяной бане с целью уменьшения времени травления. После чего лудим заготовки (я предпочитаю покрывать печатные платы сплавом Вуда. Вторую плату не лудил в виду отсутствия времени).
9. Затем наступает самое интересное – монтаж компонентов. Для металлизации отверстий используются металлические проволочки, которые с лихвой остаются после монтажа светодиодов. Сами светодиоды монтируются с отступом 5 – 7 мм от платы (связано с особенностями конструкции).
10. Припаяв и подключив наш девайс к программатору загружаем прошивку. Фьюз биты оставляем заводскими – они вполне устраивают.
11. Ну и наконец проверяем работу устройства. Если все получилось правильно, тогда должно получится в точности как на видео.
К особенностям сборки добавлю то, что платы вставляются друг в друга посредством штырей PLS и их ответных частей. Крепеж довольно надежный. Оформлять коробочку – тоже дело творческое и к электронике мало относится.
Дерзайте, господа! Успехов в этом нелегком деле…
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
CPU1 | МК AVR 8-бит | ATmega8A-AU | 1 | Поиск в магазине Отрон | ||
DD1 | Линейный регулятор | LM7805 | 1 | Поиск в магазине Отрон | ||
VT1-VT7 | MOSFET-транзистор | 2N7002 | 7 | Поиск в магазине Отрон | ||
C1 | Конденсатор | 0.1 мкФ | 1 | SMD 1206 | Поиск в магазине Отрон | |
C2 | Конденсатор | 1 мкФ | 1 | SMD 1206 | Поиск в магазине Отрон | |
R1 | Резистор | 10 кОм | 1 | SMD 1206 | Поиск в магазине Отрон | |
R2-R8 | Резистор | 100 Ом | 7 | SMD 1206 | Поиск в магазине Отрон | |
R9-R15 | Резистор | 4.7 кОм | 7 | SMD 1206 | Поиск в магазине Отрон | |
SA1 | Кнопка (с фиксацией) | 1 | Поиск в магазине Отрон | |||
HL1-HL49 | Светодиод | 3 мм, 3В | 49 | Поиск в магазине Отрон | ||
BUS1-BUS14 | Штыри | PLS07 | 2 | Поиск в магазине Отрон | ||
BUS1-BUS14 | Ответная часть штырей | PBS07 | 2 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- led_display.rar (47 Кб)
Комментарии (22) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
[Автор]
{
if (a == 1) PORTD.2 = 1;
else PORTD.2 = 0;
if (b == 1) PORTD.1 = 1;
else PORTD.1 = 0;
if (c == 1) PORTD.0 = 1;
else PORTD.0 = 0;
if (d == 1) PORTC.5 = 1;
else PORTC.5 = 0;
if (e == 1) PORTC.4 = 1;
else PORTC.4 = 0;
if (f == 1) PORTC.2 = 1;
else PORTC.2 = 0;
if (g == 1) PORTC.3 = 1;
else PORTC.3 = 0;
return 0;
};
Аналогично для столбцов:
int Stolbec(int a, int b, int c, int d, int e, int f, int g)
{
if (a == 1) PORTB.0 = 1;
else PORTB.0 = 0;
if (b == 1) PORTB.7 = 1;
else PORTB.7 = 0;
if (c == 1) PORTB.6 = 1;
else PORTB.6 = 0;
if (d == 1) PORTB.1 = 1;
else PORTB.1 = 0;
if (e == 1) PORTD.7 = 1;
else PORTD.7 = 0;
if (f == 1) PORTD.6 = 1;
else PORTD.6 = 0;
if (g == 1) PORTD.5 = 1;
else PORTD.5 = 0;
return 0;
};
Далее пишем в теле программы функции с необходимыми параметрами:
int Serdce(int time)
{
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
Stolbec(1,0,0,0,0,0,0);
Stroka(0,0,1,1,0,0,0);
delay_ms(time);
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
Stolbec(0,1,0,0,0,0,0);
Stroka(0,1,0,0,1,0,0);
delay_ms(time);
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
Stolbec(0,0,1,0,0,0,0);
Stroka(0,1,0,0,0,1,0);
delay_ms(time);
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
Stolbec(0,0,0,1,0,0,0);
Stroka(0,0,1,0,0,0,1);
delay_ms(time);
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
Stolbec(0,0,0,0,1,0,0);
Stroka(0,1,0,0,0,1,0);
delay_ms(time);
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
Stolbec(0,0,0,0,0,1,0);
Stroka(0,1,0,0,1,0,0);
delay_ms(time);
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
Stolbec(0,0,0,0,0,0,1);
Stroka(0,0,1,1,0,0,0);
delay_ms(time);
PORTB=0x00;
PORTC=0x00;
PORTD=0x00;
return 0;
};
Отключение портов необходимо для устранения светового дребезга, а функции задержки для "синхронизации" с глазами)))
PORTC=0b0000001;
PORTB=0b11000011
PORTC=0b0000010;
..............
[Автор]
(uchar*)&PORT_bus_4, (uchar*)&PORT_bus_5, (uchar*)&PORT_bus_6, (uchar*)&PORT_bus_7};
uchar data_bus_pin[8]={PIN_bus_0, PIN_bus_1, PIN_bus_2, PIN_bus_3, PIN_bus_4, PIN_bus_5, PIN_bus_6, PIN_bus_7};
Эт так, для примера. А то, что ваш программный продукт затачивался под схему-изучайте программирование. Мало того, что не очень приятный глазу код написали, так ещё и жадничаете выложить исходник. Нехорошо, сударь
[Автор]
2. Ссылки мне знакомы, только я не совсем понял смысл их использования - результат один и тот же получается.
3. На счет изучения программирования - я это делаю постоянно на протяжении последних 5 лет (твердо знаю 3 языка программирования и никак не могу освоить ассемблер, времени никак не хватает!).
4. Код глазу не приглянулся потому что никакому человеку или программисту в частности не нравится чужой код! Это закон такой неписанный. Мне проще переписать код, чем в чужом разбираться
Спасибо за коммент
[Автор]
1. На счет программного кода - как я уже говорил "любому программисту проще переписать код". Точно так же и Вам проще использовать свой код.
2. Память в данном случае меня мало интересует - ее хватает с избытком
3. Если Вы думаете, что в СВОЕМ коде я не использую функции или другие прелести Сей или что я буду выкладывать СВОЙ код, то ОЧЕНЬ сильно заблуждаетесь!
4. Статья направлена на людей с желанием творить, так же как и здесь. Моя только чуть интереснее
[Автор]
[Автор]
[Автор]
[Автор]
http://vk.com/video?z=video167448095_166927385%2F29cfa28d9b5d7842d1%2Fpl_updates