J'ai un microcontrôleur avec une broche numérique disponible.
Comment puis-je contrôler 25 LED?
microcontroller
led
multiplexer
archgoon
la source
la source
Réponses:
I2C IO Expander : - Une surcharge de protocole, mais il devrait être extensible à un très grand nombre (des milliers) de LED.
Registre à décalage simple - Interface Dead Simple, les LED peuvent scintiller lors de la mise à jour si l'horloge du registre à décalage n'est pas assez rapide. L'utilisation d'un registre à décalage à double tampon résoudra ce problème.
la source
Le registre à décalage et I2C est bon, mais seulement s'il y a au moins 2 broches libres. Je suggère que l'extension de port 1 fil Dallas DS2408 sera une solution optimale. Le code d'accès à un appareil à 1 fil de Dallas n'est pas si compliqué et il existe de nombreux exemples sur le Web.
Vous pouvez utiliser plusieurs DS2408 connectés à une broche ou implémenter plus de logique après un seul DS2408 selon vos besoins.
la source
Avec seulement 1 broche IO, vous pouvez utiliser un extenseur / registre à décalage à 1 fil ou ajouter un autre périphérique à votre bus I2C, comme déjà indiqué. La seule chose qui n'a pas encore été mentionnée est la possibilité d'ajouter un autre esclave à votre port SPI.
SPI est appelé un protocole à 4 fils - Vous avez deux lignes de données, une ligne d'horloge et une ligne de sélection (ainsi qu'une masse commune, mais cela ne compte généralement pas). Cependant, les trois premiers sont partagés entre tous les périphériques sur le bus, donc chaque périphérique après le premier ne prend qu'une seule trace / câble supplémentaire. SPI augmente également votre bus en duplex intégral, mais cela n'aura pas d'importance pour cette application.
la source
Je voudrais simplement enchaîner quelques registres à décalage. (Cela réduit la fréquence à laquelle vous pouvez basculer les LED, bien sûr ..)
la source
Si vous n'avez vraiment qu'une seule broche disponible, le bus 1 fil de Dallas ressemble à la chose la plus évidente. Cependant, comme il s'agit uniquement de sortie, il existe des solutions moins chères. Un bus série PWM qui transporte à la fois des données et une horloge est facile à configurer; voir par exemple la page de Roman Black comme également mentionnée par davidcary. Vous n'avez besoin que de registres à décalage entrée-sortie série comme le 74VHC164 , que vous pouvez mettre en cascade pour autant de sorties que vous le souhaitez (un '164 a 8 sorties).
Dans cette solution, les LED sont pilotées statiquement.
Si vous avez d'autres E / S que vous pouvez partager, comme le SPI d'I2C, vous pouvez opter pour des solutions plus luxueuses, comme le MAX6950 de Maxim . Le MAX6950 dispose d'un contrôle de clignotement et de luminosité et d'une limitation de la vitesse de balayage, pour n'en nommer que quelques-unes. Les LED sont multiplexées, ce qui signifie que vous n'avez besoin que d'un pilote à 16 broches.
la source
La réponse est probablement "une série de registres à décalage", mais pouvez-vous être plus précis dans votre question? Quel microcontrôleur? Qu'entendez-vous par «port numérique»? Une seule broche?
la source
25 LED selon la taille peuvent consommer beaucoup d'énergie pour une seule broche d'E / S numérique sur un microcontrôleur. Plutôt que de les piloter directement, vous devriez probablement utiliser un simple interrupteur FET (donc l'IO est lié à la porte) pour contrôler l'alimentation de la chaîne LED.
Selon votre application, il existe d'autres moyens plus robustes pour y parvenir. Mais jeter un fet vous fera probablement travailler le plus rapidement.
Par exemple, si vous souhaitez transmettre un signal variable, il existe des appareils plus compliqués, parfois appelés relais numériques, qui vous permettent de le commuter numériquement.
Quant au contrôle individuel de 25 LED avec un seul port IO. Comme d'autres l'ont suggéré, vous pouvez utiliser quelques registres à décalage. Il existe des solutions plus compliquées impliquant la communication avec un autre CI à l'aide d'un protocole série (I2C par exemple).
la source
Roman Black décrit le système shift1 qui vous permet de contrôler indépendamment n'importe quel nombre de LED à partir d'une seule broche de microcontrôleur.
@Fake Name, @Tim, @pingswept suggèrent tous de chaîner certains registres à décalage ensemble, la broche de sortie de données DO sur l'une alimentant la broche d'entrée de données DI sur la suivante. Le 74HC595 fonctionnerait bien. (Peut-être qu'une autre puce fonctionnerait un peu mieux ).
(@reemrevnivek, avec ce type de SPI en chaîne, chaque appareil après le premier ne nécessite plus de broches sur le microcontrôleur, contrairement à ce que beaucoup prétendent - pourquoi les écoutez-vous? :-).
Normalement, cela nécessite 4 broches sur le microcontrôleur - MISO, MOSI, SCLK et loquet. Comme vous ne faites que de la sortie, vous n'avez pas besoin d'une broche d'entrée MISO.
Roman Black a compris qu'avec une synchronisation très minutieuse sur une seule sortie de microcontrôleur et avec quelques ajustements minutieux d'un circuit analogique, une seule broche de microcontrôleur peut piloter un circuit analogique simple qui sépare le SCLK commun, le DI broche de la première puce de la chaîne (MOSI) et le signal de verrouillage commun.
Ensuite, ce microcontrôleur peut contrôler 25 LED à partir d'une seule broche.
la source
Vous pouvez connecter un autre microcontrôleur via cette seule broche et lui parler via 1 fil (ou votre propre protocole si vous avez besoin d'une vitesse élevée). Ensuite, cet autre microcontrôleur s'occupe des LED.
la source