PixelPOI

Вниманию начинающим микроконтроллерщикам представляю очень простой 40-пиксельный светопринтер, в народе часто опознаваемого, как pixelpov. Устройство представляет из себя небольшую линейку, на которой с некоторым шагом закреплены светодиоды. Принцип работы светопринтера аналогичен принципам механической развертки часов Боба Блика.

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

Пожалуй, следует сделать небольшое отступление, в котором следовало бы изложить основные принципы работы такой механической развертки.

Данный метод отображения графической информации в пространстве является популярным для многих видов бытовых «примочек» — часы, именуемые «propeller clock», светодиодные 3D глобусы, которые, тоже могут сочетать в себе функцию отображения реального времени. Сам процесс визуального восприятия прост: наше зрение имеет некоторую инерционность, благодаря которой невозможна быстрая смена света. Глаз имеет очень сложное строение, запоминает на некоторое время освещенность определенной зоны, и спустя миллисекунды, воспринимает соответствующую реальному времени освещенность. В телевизорах тоже применяют такую технологию «обмана» зрения, во время которого электронный луч успевает оббежать весь экран, при этом мы видим лишь результат его «пробежки» — само изображение. Ну а что же касается восприятия, того самого времени «торможения» глаза – человеческий глаз уже плохо реагирует на смену кадров частотой 12,5Гц.

Собственно, работа светопринтера основана на том же эффекте: в разные моменты времени, мы зажигаем или гасим определенные светодиоды, и при взмахе линейки этих светодиодов, будет вырисован растр – в данном случае наше изображение.

Поскольку на момент собирания устройства я не располагал микроконтроллером с большим объемом памяти – пришлось ставить то, что было. А именно, Attiny2313. Да, не самый лучший вариант для pixelpoi, ведь картинок хочется сохранить побольше. Но, поскольку микроконтроллеры AVR легко совместимы по коду с небольшими программными доработками, переделать программу можно для любого микроконтроллера. Суть работы светопринтера останется одной и той же, а элементная база может варьироваться в соответствии с желаемыми Вами пределами.

Итак, собственно говоря, моя элементная база состоит из микроконтроллера и сдвиговых регистров 74HC595, в данном устройстве выполняя функцию расширителей портов. Всего используется 40 белых светодиодов. Нетрудными арифметическими операциями можно подсчитать, что для осуществления задуманной цели необходимо 5 таких интегральных схем.

Сначала, после того, как микроконтроллер инициализировался, он считывает первый байт из встроенной памяти EEPROM. Этот байт он разбивает на 8 бит и передает на информационную линию данных сдвиговых регистров. После того, как данные занесены, микроконтроллер снова принимает данные из EEPROM и передает их сдвиговым регистрам. Процесс продолжается, пока данными не заполнятся все 5 регистров. По истечению сего процесса, дается импульс защелки данных – мы фиксируем данные в регистрах и выводим их на светодиоды. Далее в программе предусмотрена задержка, подобранная опытным путем «на глаз», спустя которую микроконтроллер начинает заново исполнять процедуру считывания 5 байт данных EEPROM памяти с последующим занесением их в сдвиговые регистры и их защелкой-отображением на светодиоды.

Поскольку у микроконтроллера Attiny2313 EEPROM память имеет объем 128 байт, пришлось максимально использовать 25 5-байтных слов для отображения на линейке. 3 байта останется в запасе, они не будут использованы. При переполнении счетчика адреса данных EEPROM памяти программой предусмотрен сброс его и соответственно, микроконтроллер заново указывает на данные, начиная с первого байта.
Итак, изготовление самой линейки начинается….. с покупки 50см линейки. Через каждый см пробиваем 2 отверстия под выводы светодиодов. Получается вот такая вот конструкция:

Методом ЛУТ была изготовлена печатная плата сего устройства:

Далее, сам процесс сборки:

Все компоненты, SMD-резисторы, микроконтроллер и сдвиговые регистры, имеют корпус для поверхностного монтажа, дабы уменьшить общие габариты устройства.
А чего это я о габаритах-то? Смотрим:

Да, да, это обычная флешка!

Процесс пайки соединительных проводов – занял около 6 часов (начал работу вечером – закончил днем следующего дня, работал 13 часов).

На утро, была готова вот такая вот конструкция:

Оборачиваем это обычными самоклеющимися обоями и получаем вполне нормальное с виду устройство.

Ну и несколько фотографий работы pixelPOV:

Итак, куда что подсоединять.

Сдвиговые регистры – цепочкой, первый к микроконтроллеру:
PD1 – на вход регистра защелки;
PD0 – вход данных сдвигового регистра;
PD2 – вход синхронизации сдвигового регистра.

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

Скачать исходники и прошивку микроконтроллера вы можете ниже


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

Добавить комментарий

Ваш адрес email не будет опубликован.