Оглавление:

Матрица светодиодного дисплея 5x4 с использованием Basic Stamp 2 (bs2) и Charlieplexing: 7 шагов
Матрица светодиодного дисплея 5x4 с использованием Basic Stamp 2 (bs2) и Charlieplexing: 7 шагов

Видео: Матрица светодиодного дисплея 5x4 с использованием Basic Stamp 2 (bs2) и Charlieplexing: 7 шагов

Видео: Матрица светодиодного дисплея 5x4 с использованием Basic Stamp 2 (bs2) и Charlieplexing: 7 шагов
Видео: Charlie-plex persistence of vision 56 LEDs 2024, Июль
Anonim
Матричный светодиодный экран 5x4 с использованием Basic Stamp 2 (bs2) и Charlieplexing
Матричный светодиодный экран 5x4 с использованием Basic Stamp 2 (bs2) и Charlieplexing

У вас есть Basic Stamp 2 и несколько дополнительных светодиодов? Почему бы не поиграть с концепцией charlieplexing и не создать вывод, используя всего 5 контактов.

Для этого я буду использовать BS2e, но любой член семейства BS2 должен работать.

Шаг 1: Charlieplexing: что, почему и как

Давайте сначала разберемся, почему. Зачем использовать Charlieplexing с Basic Stamp 2? --- Подтверждение концепции: узнайте, как работает Charlieplexing, и узнайте кое-что о BS2. Это может пригодиться мне позже, если я использую более быстрые 8-контактные микросхемы (только 5 из них будут ввода-вывода). --- Полезная причина: в основном их нет. BS2 слишком медленный для отображения без заметного мерцания. Что такое Charlieplexing? --- Charlieplexing - это метод управления большим количеством светодиодов с помощью небольшого количества контактов ввода-вывода микропроцессора. Я узнал о charlieplexing на сайте www.instructables.com, и вы тоже можете: Charlieplexing LEDs - теория Как управлять множеством светодиодов с нескольких выводов микроконтроллера. Также в википедии: Charlieplexing Как я могу управлять 20 светодиодами с помощью 5 контактов ввода-вывода? --- Пожалуйста, прочтите три ссылки в разделе «Что такое charlieplexing?». Это объясняет это лучше, чем я когда-либо мог. Чарлиплексирование отличается от традиционного мультиплексирования, для которого требуется один вывод ввода-вывода для каждой строки и каждого столбца (всего 9 выводов ввода-вывода для дисплея 5/4).

Шаг 2: оборудование и схема

Оборудование и схема
Оборудование и схема

Список материалов: 1x - Basic Stamp 220x - светоизлучающие диоды (светодиоды) одного типа (цвет и падение напряжения) 5x - резисторы (номинал резистора см. Ниже) Вспомогательный / дополнительный: метод программирования кнопки BS2Momentary как переключателя сброса 6v -9v Источник питания в зависимости от вашей версии BS2 (прочтите руководство) Схема: Эта схема составлена с учетом механической схемы. Слева вы увидите сетку светодиодов, это ориентация, для которой был написан код BS2. Обратите внимание, что каждая пара светодиодов имеет анод, подключенный к катоду другого. Затем они подключаются к одному из пяти контактов ввода / вывода. Значения резистора: вам следует рассчитать свои собственные значения резистора. Проверьте технические характеристики своих светодиодов или используйте настройку светодиодов на вашем цифровом мультиметре, чтобы найти падение напряжения на ваших светодиодах. Давайте сделаем некоторые вычисления: Напряжение питания - Падение напряжения / Желаемый ток = Значение резистора BS2 обеспечивает регулируемое питание 5 В и может выдавать 20 мА. тока. Мои светодиоды имеют падение напряжения 1,6 В и работают при 20 мА, 5 В - 1,6 В / 0,02 А = 155 Ом Чтобы защитить BS2, вы должны использовать резистор следующего более высокого значения из того, что вы получите при расчетах, в этом случае я считаю, что это будет 180 Ом. Я использовал 220 Ом, потому что моя плата разработки имеет встроенное сопротивление резистора для каждого контакта ввода-вывода. ПРИМЕЧАНИЕ: я считаю, что, поскольку на каждом контакте есть резистор, это эффективно удваивает сопротивление на каждом светодиодах, так как один контакт V +, а другой - Gnd. В этом случае следует уменьшить номиналы резисторов наполовину. Неблагоприятным эффектом слишком высокого сопротивления резистора является уменьшение яркости светодиода. Может ли кто-нибудь проверить это и оставить мне сообщение или комментарий, чтобы я мог обновить эту информацию? Программирование: я использовал плату разработки с разъемом DB9 для программирования чипа прямо на плате. Я также использую этот чип на своей беспаечной макетной плате и включил заголовок In Circuit Serial Programming (ICSP). Разъем состоит из 5 контактов, контакты с 2 по 5 подключаются к контактам 2-5 последовательного кабеля DB9 (контакт 1 не используется). Обратите внимание, что для использования этого заголовка ICSP контакты 6 и 7 кабеля DB9 должны быть соединены друг с другом. Сброс: кнопка мгновенного сброса не является обязательной. Это просто подтягивает штифт 22 к земле при нажатии.

Шаг 3: макетирование

Макетирование
Макетирование
Макетирование
Макетирование

Теперь пришло время построить матрицу на макетной плате. Я использовал клеммную колодку, чтобы соединить одну ножку от каждой пары светодиодов вместе, и небольшую перемычку, чтобы соединить другие ножки. Это подробно описано на фотографии крупным планом и подробно объясняется здесь: 1. Сориентируйте макетную плату так, чтобы она соответствовала большему изображению 2. Поместите светодиод 1 так, чтобы анод (+) был к вам, а катод (-) - от вас. Поместите светодиод 2 в той же ориентации, что и анод (+) в соединительной клеммной колодке катода светодиода 1. 4. Используйте небольшую перемычку, чтобы соединить анод светодиода 1 с катодом светодиода 2.5. Повторяйте, пока каждая пара светодиодов не будет добавлена к плате. Я использую то, что обычно является полосками шины питания макетной платы, в качестве шинных полос для контактов ввода / вывода BS2. Поскольку всего 4 шины, я использую клеммную колодку для P4 (пятое соединение ввода / вывода). Это можно увидеть на большом изображении ниже. Подключите клеммную колодку катода светодиода 1 к шине P0. Повторите эти действия для каждого светодиода с нечетным номером, заменяя правильную букву P * для каждой пары (см. Схему).7. Подключите клеммную колодку катода светодиода 2 к шине P1. Повторите эти действия для каждого светодиода с нечетным номером, заменяя правильную букву P * для каждой пары (см. Схему).8. Подключите каждую шинную планку к соответствующему контакту ввода-вывода на BS2 (P0-P4). 9. Проверьте все соединения, чтобы убедиться, что они соответствуют схеме 10. ПРИМЕЧАНИЕ. При увеличении масштаба вы увидите, что не похоже, что я выполнил шаг 7, поскольку соединение со вторым выводом ввода / вывода находится на аноде светодиодов с нечетными номерами. Помните, что катод светодиодов с четными номерами подключен к анодам светодиодов с нечетными номерами, поэтому соединение в любом случае будет одинаковым. Если эта заметка вас смущает, просто проигнорируйте ее.

Шаг 4: Основы программирования

Чтобы Charlieplexing работал, вы включаете только один светодиод за раз. Чтобы это работало с нашим BS2, нам нужно два основных шага: 1. Установите режимы вывода для контактов с помощью команды OUTS 2. Сообщите BS2, какие контакты использовать в качестве выходов, с помощью команды DIRS Это работает, потому что BS2 может сказать, какие контакты использовать для высокого и низкого уровня, и будет ждать, пока вы не укажете, какие контакты являются выходными. Давайте посмотрим, правильно ли все подключено с помощью просто пытаюсь мигать светодиодом 1. Если вы посмотрите на схему, вы увидите, что P0 подключен к катоду (-) светодиода 1, а P1 подключен к аноду того же светодиода. Это означает, что мы хотим, чтобы P0 был низким, а P1 - высоким. Это можно сделать так: «OUTS =% 11110», который устанавливает высокий уровень P4-P1 и низкий уровень P0. (% Указывает, что следует двоичное число. Младший двоичный разряд всегда находится справа. 0 = LOW, 1 = HIGH BS2 хранит эту информацию, но не будет действовать, пока мы не объявим, какие контакты являются выходами. Этот шаг является ключевым, поскольку одновременно должны выводиться только два контакта. Остальные должны быть входами, что устанавливает эти контакты в режим высокого импеданса, чтобы они не потребляли ток. Нам нужно управлять P0 и P1, поэтому мы установим их на выходы, а остальные на входы следующим образом: «DIRS =% 00011». (% Указывает, что двоичное число должно следовать. Младшая двоичная цифра всегда справа. 0 = INPUT, 1 = OUTPUT) Давайте объединим это в некоторый полезный код: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OUTS =% 11110 'Привод P0 низкий и P1-P4 высокий DIRS =% 00011' Установить P0- P1 как выходы и P2-P4 как входы PAUSE 250 'Пауза, чтобы светодиод оставался включенным DIRS = 0' Установите все контакты на вход. Это выключит светодиодный индикатор PAUSE 250 'Пауза, пока светодиод останется выключенным.

Шаг 5: цикл разработки

Теперь, когда мы увидели время работы одного вывода, чтобы убедиться, что все они работают. 20led_Zig-Zag.bse Этот прикрепленный код должен загореться каждым из 20 светодиодов зигзагообразно. Вы заметите, что после того, как каждый вывод загорится, я использую «DIRS = 0», чтобы снова превратить все выводы во входы. Если вы измените OUTS, не выключая выходные контакты, вы можете получить некоторую "паразитную" реакцию, когда светодиод, который не должен гореть, может мигать между циклами. Если вы измените переменную W1 в начале этого кода на "W1 = 1" там будет пауза всего в 1 миллисекунду между каждым миганием светодиода. Это вызовет эффект постоянного зрения (POV), который будет выглядеть так, как будто все светодиоды горят. Это действительно приводит к уменьшению яркости светодиодов, но это суть того, как мы будем отображать символы на этой матрице. Светодиоды в пригодный для использования узор. Этот файл - моя первая попытка. Вы увидите, что в нижней части файла символы хранятся в четырех строках пятизначного двоичного кода. Каждая строка считывается, анализируется, и каждый раз, когда необходимо зажечь светодиод, вызывается подпрограмма. Этот код работает, циклически меняя цифры 1-0. Если вы все же попытаетесь запустить его, обратите внимание, что он страдает из-за очень низкой частоты обновления, из-за чего символы мигают слишком медленно, чтобы их можно было распознать. Этот код плох по многим причинам. Во-первых, пять цифр двоичного кода занимают в EEPROM столько же места, сколько 8 цифр двоичного кода, поскольку вся информация хранится в группах по четыре разряда. Во-вторых, SELECT CASE, используемый для определения того, какой вывод необходимо осветить, требует 20 случаев. BS2 ограничен 16 случаями на операцию SELECT. Это означает, что мне пришлось обойти это ограничение с помощью оператора IF-THEN-ELSE. Должен быть способ лучше. После нескольких часов почесывания головы я обнаружил это.

Шаг 6: лучший переводчик

Каждая строка нашей матрицы состоит из 4 светодиодов, каждый из которых может быть включен или выключен. BS2 хранит информацию в своей EEPROM группами по четыре бита. Эта корреляция должна значительно облегчить нам задачу. В дополнение к этому факту, четыре бита соответствуют десятичным числам от 0 до 15, всего 16 возможных вариантов. Это значительно упрощает или ВЫБРАТЬ СЛУЧАЙ. Вот цифра 7, хранящаяся в EEPROM: '7% 1111,% 1001,% 0010,% 0100,% 0100, Каждая строка имеет десятичное значение, равное 0-15, поэтому мы читаем строку из памяти и передать ее непосредственно в функцию SELECT CASE. Это означает, что читаемая человеком двоичная матрица, используемая для создания каждого символа (1 = светодиод горит, 0 = светодиод не горит), является ключом для интерпретатора. Чтобы использовать один и тот же вариант выбора для каждой из 5 строк, я использовал другой вариант выбора. чтобы установить DIRS и OUTS как переменные. Сначала я прочитал в каждой из пяти строк символа переменные ROW1-ROW5. Затем основная программа вызывает подпрограмму для отображения символа. Эта подпрограмма берет первую строку и назначает четыре возможных комбинации OUTS переменной outp1-outp4 и две возможные комбинации DIRS для direc1 и direc2. Светодиоды мигают, счетчик строк увеличивается, и тот же процесс выполняется для каждой из четырех других строк. Это намного быстрее, чем первая программа-интерпретатор. При этом все еще есть заметное мерцание. Посмотрите видео, камера делает мерцание намного хуже, но вы поняли. Перенос этой концепции на гораздо более быстрый чип, такой как picMicro или AVR, позволит отображать эти символы без заметного мерцания.

Шаг 7: что делать дальше

У меня нет станка с ЧПУ или травильных принадлежностей для изготовления печатных плат, поэтому я не буду монтировать этот проект. Если у вас есть мельница и вы заинтересованы в сотрудничестве, чтобы двигаться дальше, отправьте мне сообщение. Я был бы счастлив заплатить за материалы и доставку, еще счастливее показать что-нибудь из готового продукта для этого проекта.

Другие возможности: 1. Перенести это на другой чип. Эта матричная конструкция может использоваться с любым чипом, имеющим 5 доступных выводов ввода-вывода, поддерживающих три состояния (выводы, которые могут быть высокими, низкими или входными (высокий импеданс)). 2. Используя более быстрый чип (например, AVR или picMicro), вы можете увеличить масштаб. С 20-контактным чипом вы можете использовать 14 контактов для уплотнения дисплея 8x22 и использовать оставшиеся контакты для получения последовательных команд от компьютера или другого контроллера. Используйте еще три 20-контактных микросхемы, и вы можете получить прокручиваемый дисплей размером 8x88 для одновременного размещения 11 символов (конечно, в зависимости от ширины каждого символа). Удачи повеселиться!

Рекомендуемые: