Вниманию начинающим микроконтроллерщикам представляю очень простой 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 – вход синхронизации сдвигового регистра.
Схемы, как и ПП прилагать не имеет смысла, поскольку она будет различаться в зависимости от конструктива и исполнения устройства. Файл прошивки микроконтроллера прилагается.
Скачать исходники и прошивку микроконтроллера вы можете ниже
Прикрепленные файлы:
- led_poi.rar (6 Кб)