Последовательное управление 25 светодиодами от одного контакта

8

У меня есть микроконтроллер с одним доступным цифровым контактом.

Как я могу контролировать 25 светодиодов?

archgoon
источник
2
Являются ли светодиоды отдельно адресуемыми или вы хотите включить их все одновременно?
Винсент Ван Ден Берге
Светодиоды предназначены для отдельного доступа. Микроконтроллер не предназначен для их питания, а просто определяет их состояние. Кроме того, под «цифровым портом» я имею в виду контакт.
архунгун

Ответы:

11

I2C IO Expander : - Некоторые издержки протокола, но они должны быть расширены до очень большого (тысячи) светодиодов.

Простой сдвиговый регистр - Dead Simple интерфейс, светодиоды могут мигать при обновлении, если часы сдвигового регистра не достаточно быстрые. Использование сдвигового регистра с двойной буферизацией исправит это.

Коннор Вольф
источник
Спасибо, это именно то, что я искал, но не знал, как они назывались.
архунгун
2
Это потребует, по крайней мере, один штифт, хотя. Разве сдвиговые регистры не требуют по крайней мере двух контактов для синхронизации и данных?
blalor 27.10.10
@blalor - Да, но эти два контакта предназначены для совместного использования несколькими устройствами I2C.
Кевин Вермеер
I2C это тоже две строчки.
XTL
2
1-проводному Далласу нужен только один контакт, расширяется до N устройств.
Тим Уиллискрофт
16

Shift Register и I2C это хорошо, но только если есть хотя бы 2 свободных контакта. Я предлагаю Dallas 1-проводной удлинитель порта DS2408 будет оптимальным решением. Код для доступа к 1-проводному устройству в Далласе не так сложен, и в Интернете есть множество примеров.

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

x4mer
источник
2
I2C можно использовать, если нет свободных нулевых контактов, при условии, что ваша шина I2C используется как таковая и нет конфликтов адресов.
Кевин Вермеер
5

Имея только 1 вывод IO, вы можете использовать 1-проводной регистр расширения / сдвига или добавить другое устройство к вашей шине I2C, как уже указывалось. Единственное, что еще не было упомянуто, - это возможность добавить еще одно ведомое устройство к вашему порту SPI.

SPI называется 4-проводным протоколом - у вас есть две линии данных, линия синхронизации и линия выбора (а также общее заземление, но это обычно не считается). Тем не менее, первые три являются общими для всех устройств на шине, поэтому каждое устройство после первого берет только еще одну трассировку / провод. SPI также увеличивает вашу шину до полного дуплекса, но это не имеет значения для этого приложения.

Кевин Вермеер
источник
1

Я просто собрал несколько сдвиговых регистров. (Это уменьшает частоту, с которой вы можете переключать светодиоды, конечно ..)

Тим
источник
1

Если у вас на самом деле есть только один контакт, то однопроводная шина Далласа выглядит наиболее очевидной вещью. Однако, поскольку это только для вывода, существуют более дешевые решения. Последовательная шина PWM, которая передает и данные, и часы, проста в настройке; см., например , страницу Романа Блэка, также упоминаемую Дэвидкари. Вам нужны только сдвиговые регистры с последовательным входом и параллельным выходом, такие как 74VHC164 , которые можно каскадировать для любого количества выходов (один '164 имеет 8 выходов).
В этом решении светодиоды работают статически.

Если у вас есть другие входы / выходы, которыми вы можете поделиться, например, SPI I2C, вы можете пойти на более роскошные решения, такие как Maxim MAX6950 . MAX6950 имеет мерцание и регулировку яркости, а также ограничение скорости нарастания, чтобы назвать несколько функций. Светодиоды мультиплексированы, что означает, что вам нужен только один 16-контактный драйвер.

stevenvh
источник
0

Ответ, вероятно, «серия сменных регистров», но можете ли вы быть более конкретным в своем вопросе? Какой микроконтроллер? Что вы подразумеваете под «цифровым портом»? Один пин?

pingswept
источник
Спасибо, я сделал разъяснение, и регистры смены - это то, что я ищу. Спасибо.
архунгун
0

25 светодиодов в зависимости от размера могут потреблять много энергии для одного цифрового вывода ввода-вывода на микроконтроллере. Вместо того, чтобы управлять ими напрямую, вам, вероятно, следует использовать простой переключатель FET (чтобы ввод-вывод был привязан к шлюзу) для управления питанием цепи светодиодов.

В зависимости от вашего приложения, есть и другие, более надежные способы сделать это. Но если вы добавите фета, вы, вероятно, будете работать быстрее всех.

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

Что касается индивидуального управления 25 светодиодами с одним портом ввода-вывода. Как и предполагали другие, вы можете использовать несколько сменных регистров. Существуют более сложные решения, включающие связь с другой микросхемой с использованием последовательного протокола (например, I2C).

crasic
источник
0

Роман Блэк описывает систему shift1, которая позволяет независимо управлять любым количеством светодиодов с одного вывода микроконтроллера.

@Fake Name, @Tim, @pingswept все предлагают объединить несколько сдвиговых регистров, вывод вывода данных DO на один, а на следующий ввод ввода данных DI. 74HC595 будет работать нормально. (Возможно, какой-то другой чип будет работать чуть лучше ).

(@reemrevnivek, с этим видом SPI с последовательным подключением, каждое устройство после первого не требует больше контактов на микроконтроллере, в отличие от того, что многие утверждают - почему вы их слушаете? :-).

Обычно для этого требуется 4 контакта на микроконтроллере - MISO, MOSI, SCLK и защелка. Поскольку вы только делаете вывод, вам не нужен входной контакт MISO.

Роман Блэк выяснил, что при некоторой очень тщательной синхронизации на одном выходе микроконтроллера и при некоторой осторожной настройке аналоговой цепи один вывод микроконтроллера может управлять простой на вид аналоговой схемой, которая отделяет общий SCLK, DI контакт первой микросхемы в цепи (MOSI) и общий сигнал защелки.

Затем этот микроконтроллер может управлять 25 светодиодами с одного контакта.

davidcary
источник
0

Вы можете подключить другой микроконтроллер через этот единственный контакт и общаться с ним через 1wire (или ваш собственный протокол, если вам нужна высокая скорость). Тогда этот другой микроконтроллер имеет дело со светодиодами.

Avra
источник