Я хочу разработать очень маленький проект для портативного счетчика очков. Он состоит из использования одного микроконтроллера для управления 4 наборами/группами светодиодов на небольшой печатной плате. Это очень небольшой проект (3,5 х 1,5 дюйма). 2 из 4 наборов будут состоять из 4 светодиодов каждый, а остальные 2 будут состоять из 7 светодиодов каждый. Всего 22 светодиода, но мне нужно будет только 4 светодиода, чтобы они горели одновременно. Я хотел бы использовать кнопки для увеличения и уменьшения счета, который загорится светодиодом. Светодиоды будут помечены баллами. Меньший набор будет игровым счетом, а больший набор будет сетовым счетом.
Мне было интересно, возможно ли это и как мне это сделать? Есть ли достаточно маленький микроконтроллер, чтобы иметь 8 кнопочных входов для управления 4 отдельными наборами/группами из нескольких светодиодов?
На данный момент я планирую использовать обычные батарейки типа «таблетка» на 3 В, но рассмотрю небольшие перезаряжаемые блоки питания. Я сделал очень простой прототип DIP-переключателя, используя очень крошечные светодиоды для поверхностного монтажа на тонкой печатной плате с батарейкой типа «таблетка». DIP-переключатель был громоздким и занимал много места. Я хотел бы уменьшить его и сделать более гладким с меньшим количеством переключателей, реализовав эти идеи, если они возможны.
Любые слова совета и помощи будут оценены. Большое спасибо: Д
Оли дал хороший ответ, но подождите, мой будет лучше! :-)
Оли прокомментировал ограниченный ток от монетной ячейки, и это действительно то, за чем нужно следить. Эта ячейка CR2430 выдает максимальный непрерывный ток 5 мА. Посмотрим, сможем ли мы с этим справиться.
Хорошо, что вам нужен только один светодиод за раз, иначе я бы даже рассмотрел батарейку-таблетку. Это похоже на хороший светодиод: обычно 15 мкд при 2 мА.
Оли выбрал сдвиговый регистр SIPO (последовательный вход, параллельный выход) для светодиодов и PISO (параллельный вход, последовательный выход) для кнопок. Это экономит много операций ввода-вывода, но требует дополнительных компонентов. Разве мы не можем напрямую использовать ввод-вывод микроконтроллера? 22 светодиода и 8 кнопок — это 30 входов/выходов, это не проблема, но мы можем сделать это немного дешевле, если мультиплексируем светодиоды в матрицу 4 x 5. Обычно это уменьшает яркость светодиодов на 75 %, но, поскольку нам нужно зажечь только один светодиод за раз, мы можем статически выбрать одну строку и один столбец. Итак, нам нужно 4 + 5 + 8 = 17 операций ввода-вывода.
Обычными подозреваемыми для микроконтроллера являются Atmel AVR и Microchop PIC. Обычно я бы избегал PIC для управления светодиодами, потому что он не может подавать или потреблять 20 мА, но у нас низкий ток светодиода, поэтому проблем нет. PIC также дешевле, чем AVR. PIC16F57 имеет 20 входов /выходов, так что этого достаточно. В техническом описании указано, что максимум 22,5 мкА для тактовой частоты 32,768 кГц при 2 В, поэтому при 3 В это все равно будет ниже 50 мкА.
Вот и все. Микроконтроллер, дешевый кварц, 22 светодиода, 8 кнопок и 12 резисторов (4 для светодиодов и 8 для кнопок. У PIC16F57, похоже, нет внутренних подтяжек). Не нужны сдвиговые регистры.
Это, безусловно, возможно практически с любым небольшим микропроцессором. Вы можете либо получить один с достаточным количеством контактов, либо сделать мультиплексирование для кнопок и управлять светодиодами с помощью сдвиговых регистров.
Для 4 светодиодов плюс микро-таблетка на самом деле не годится, у них очень высокий внутренний импеданс, как правило, они могут подавать только несколько мА, прежде чем напряжение упадет ниже «полезного» уровня. Несколько AAA/AA/Li-Ion были бы более эффективны.
Если вы запустите светодиоды с очень низким током, а микро, например, с частотой 32 кГц, тогда его можно заставить работать, но если нет острой необходимости использовать батарейки-таблетки, я бы их избегал.
Что-то вроде 20-контактного PIC16F1828 , нескольких кнопок и нескольких регистров сдвига было бы дешевым и простым способом сделать это. Очевидно, что если вы предпочитаете другую марку микро, то есть много эквивалентов.
РЕДАКТИРОВАТЬ - некоторые детали:
Сдвиговые регистры
Сдвиговый регистр в основном превращает последовательные данные в параллельные данные или наоборот. Вам понадобится последовательно-параллельный сдвиговый регистр, такой как 74HC595. У вас есть 3 основных входа управления, вход часов, вход данных и вход защелки. 595 имеет 8 триггеров в цепочке (триггеры хранят 1 или 0), как показано на рисунке (показано 4):
Когда часы переключаются, любое значение на контакте Data In (1 или 0) смещается в IC, а последнее значение смещается (либо забывается, либо отправляется на другой 595, если цепочка вместе). Таким образом, вы «сдвигаете» данные в один бит за раз, пока вы не установите все 8 триггеров на желаемое значение.
Затем, чтобы вывести эти данные, вы устанавливаете защелку, и данные появляются на 8 выходных контактах. Таким образом, 3 контакта можно использовать для управления 8 контактами (или 16, 24, 32 и т. д.)
. Вот изображение 2 595, соединенных вместе и управляемых Arduino:
Существует множество учебных пособий, в которых содержится гораздо больше деталей, чем указано выше, погуглите «учебник по сдвиговым регистрам», и вы получите такие вещи, как:
Учебное пособие по сдвиговому регистру PIC Учебное пособие
по Arduino 74HC595
Еще одно учебное пособие по 74HC595
Кнопки
Вы можете использовать мультиплексор, как я упоминал выше (посмотрите на такие устройства, как 74HC4051 , 4052 и 4053), но, поскольку мы говорим о регистрах сдвига, стоит упомянуть, что мы можем использовать сдвиговый регистр с параллельным входом и последовательным выходом для считывания кнопок. Те же соединения, только наоборот — мы фиксируем состояния кнопок в триггерах, затем синхронизируем данные по битам на вывод вашего микроконтроллера (т.е. считываем на каждом такте и сохраняем, чтобы в итоге вы получили 8 двоичных значений).
Вот пример:
Последние мысли
Судя по комментариям и имея некоторое время на размышления, я склоняюсь к тому, чтобы просто использовать микро с достаточным количеством контактов, чтобы иметь по 1 на светодиод и кнопку. Это займет меньше места, чем регистры сдвига, и потребует самой простой прошивки. Я бы пошел на это, по крайней мере, для начала во время прототипирования.
Стивен дал очень хороший ответ, и мультиплексирование с использованием выводов ввода-вывода является распространенным способом ведения дел (см. Чарлиплексирование для очень экономичного метода мультиплексирования), и, безусловно, его стоит изучить.
Как уже упоминалось, привод монетной ячейки, безусловно, возможен. Для приблизительного представления у меня есть прототип проекта, использующий один из упомянутых выше PIC16F1828, управляющий 7-сегментным дисплеем, 2 кнопками (у 16F1828 есть внутренние подтяжки, поэтому резисторы не нужны) и 2 светодиода, которые работают от монетоприемника и спит между операциями - ячейки хватает до года при нормальном использовании. Так что это, безусловно, возможно, просто добавляет сложности, которые вы, возможно, захотите сохранить на потом.
Итак, в целом, есть много способов сделать это - если у вас есть макет, почему бы не взять компоненты для опций, которые вы хотите попробовать (используйте версии с погружением, затем, если возможно, переключитесь на SMD для окончательной версии) и поэкспериментируйте на досуге.
Оли Глейзер
Стивенвх
Оли Глейзер