Comment contrôler trois LED avec deux broches uC en utilisant uniquement des composants passifs?

8

Je n'ai que 2 broches (3 états) disponibles sur un microcontrôleur et j'ai besoin de contrôler 3 LED rouges, uC fonctionne sur 5V. Je ne peux utiliser que des composants passifs en plus.

Cano64
la source
Définissez le "contrôle". Avez-vous besoin que toutes les LED soient entièrement éclairées en même temps, ou juste une à la fois, ou autre chose? Pourquoi dites-vous que vous ne pouvez utiliser que des composants passifs?
Joe Hass
Google "charlieplexing".
John U
1
@JohnU: Charlieplexing ne fait rien d'utile avec moins de trois broches. Deux broches vous donnent juste deux LED.
Dave Tweed
Évidemment, un extenseur de port I2C ou même quelques simples registres à décalage vous permettraient de contrôler un nombre arbitraire de LED. Pourquoi sont-ils exclus?
Dave Tweed
1
@DaveTweed - L'acte de googler est très susceptible d'être informatif cependant;)
John U

Réponses:

10

Pour contrôler quatre LED:

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

Pour allumer les deux LED sur une broche particulière, basculez la broche à quelques centaines de Hz.

Notez que cette configuration nécessite que la tension directe des LED soit inférieure à Vcc / 2.

Notez également que les résistances consomment de l'énergie tout le temps, pas seulement lorsque les LED sont allumées.

Dave Tweed
la source
Le fait que R1 se connecte uniquement à D1 et R2 uniquement à D2, etc. réduira considérablement la consommation de courant de repos lorsque la LED est éteinte, à condition que les baisses de tension de la LED se combinent à VDD.
supercat
@supercat: Oui, mais c'est rarement le cas des LED rouges spécifiées par l'OP. Voir le diagramme de Will .
Dave Tweed
Ajoutez une LED supplémentaire entre les nœuds R1-D1 et D2-D2 et cachez-la quelque part.
supercat
@supercat: Voir la réponse de Spehro .
Dave Tweed
6

Cette solution dépend du fait que 5V n'allumera pas les trois LED en série. Si nécessaire, vous pouvez ajouter une diode au silicium en série avec une ou plusieurs LED afin d'augmenter la chute de tension directe totale.

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

  • Si les broches A et B sont à trois états, toutes les LED sont éteintes.
  • Si la broche A est enfoncée, D1 est activée.
  • Si la broche A est enfoncée vers le haut et la broche B est enfoncée vers le bas, D2 est allumé.
  • si la broche B est enfoncée, D3 est allumée.

Pour avoir plus d'une LED allumée à la fois, vous devrez multiplexer: allumez-les une à la fois, assez rapidement pour qu'elles semblent être allumées en continu.

Dave Tweed
la source
Y a-t-il un avantage à cela par rapport à la méthode de Michael Karas?
Will
Celui-ci fonctionne avec une baisse de tension directe plus faible sur les LED. Sa solution n'est que deux copies de la version à une broche / deux LED.
Dave Tweed
Ahh donc avec cela si vous avez 2 résistances, vous perdez une tension à travers 1 et certaines dans l'autre, et vous devez brûler moins de résistances?
Will
1
@Will: Hum, non. Avec ce schéma, une seule LED est allumée à la fois, et une seule résistance à la fois baisse la tension. Lorsque les deux broches sont à trois états, aucun courant ne circule du tout, car il est bloqué par la chute cumulée vers l'avant des trois LED en série.
Dave Tweed
Si vous tristatez la broche b, vous pouvez piloter 2 LED avec votre schéma, non?
Will
3

Avec deux broches, vous pouvez réellement contrôler quatre LED. Pour contrôler deux LED, mettez une résistance à partir de la broche MCU pour limiter le courant et reliez-la à deux LED - la cathode d'une LED et l'anode de l'autre LED. L'extrémité d'anode libre de la première LED est connectée au VCC de la carte MCU via une autre résistance. L'extrémité libre de la cathode de la deuxième LED est connectée à GND (via une autre résistance). Maintenant, les LED s'allument alternativement lorsque la broche MCU est réglée sur haut ou bas. Câblez la deuxième broche MCU de la même manière et vous avez maintenant le contrôle sur un total de quatre LED.

Pour donner l'apparence d'un contrôle indépendant de chaque LED de la paire, l'une des broches du port nécessite un petit travail logiciel comme suit.

Si LED1 est celui avec l'anode sur la broche du port et LED2 est celui avec la cathode sur la broche du port, procédez comme suit pour établir les quatre états pour deux LED.

LED2  LED1    Action
OFF   OFF     Set the port pin to tristate level.
OFF   ON      Set the port pin low.
ON    OFF     Set the port pin high.
ON    ON      Toggle the port pin high and low at a frequency over about 120 Hz. 

Répétez les mêmes actions pour l'autre broche de port et vous aurez l'air d'avoir quatre LED indépendantes sur deux broches de port.

Ce schéma fonctionne bien pour les LED dont la chute de tension directe est supérieure à la moitié du niveau VCC. Les LED rouges avec un VF 2.1 ne fonctionneront pas si bien si le VCC est de 5V par exemple. D'un autre côté, une LED verte avec un VF de 2,5 V fonctionnera très bien sur un système avec un VCC de 3,3 V.

Michael Karas
la source
3
Mais est-ce un contrôle total? Comment les activez-vous ou les désactivez-vous tous?
stanri
Une LED est allumée lorsque le courant sort de la broche, l'autre LED est allumée lorsque le courant circule dans la broche. Donc, éteignez-les tous les deux, il vous suffit de tripler l'état de la broche du port, aucun courant n'entrera ou n'en sortira, donc pas de LED. Le courant ne peut pas entrer et sortir en même temps, vous ne pouvez donc pas allumer les deux LED exactement au même moment. Mais vous pouvez créer l'effet de les deux étant en conduisant le haut dpuis bas puis haut puis bas puis haut puis bas etc
Will
2

2 leds une broche, mal tirée

Donc, comme ça, aucun courant ne circule lorsqu'ils sont éteints, et vous pouvez piloter autant / peu de tension directe que nécessaire

Volonté
la source
C'est la même chose que la solution de Michael Karas. Cela nécessite que la V_f des LED soit supérieure à Vcc / 2, sinon vous ne pouvez pas les éteindre complètement.
Dave Tweed
+1 pour avoir pris la peine de présenter la solution de Michael Karas en copiant les schémas CircuitLabs de Dave Tweed et en y dessinant des lignes à main levée avec MS Paint (ou similaire).
Ricardo
Et c'était en peinture :)
Will
1
Ah je vois de quoi tu parles maintenant Dave. Le courant passe r1 d1 d2 r2 et rien ne doit entrer / notre broche
sera le
2

EDN a publié quelques idées de design connexes ici

En voici un: -

entrez la description de l'image ici

Pour les valeurs typiques avec D1 une LED jaune (2,2 V allumée), D2 une LED rouge (1,9 V allumée) et des tensions éteintes de 1,2 V et 1,1 V respectivement, et des courants de 8 mA chacun, Vcc = 5,0 V, l'optimum les valeurs sont

R1 = 300 ohms R2 = 330 ohms R3 = 1,2 K ohms

Le courant de repos est de 2,7 mA. Pour que les deux LED semblent allumées, basculez la broche de sortie à 100 Hz ou plus.

J'ai utilisé le solveur Excel dans l'article d'origine, le code peut être encore disponible auprès d'EDN.

Le degré de liberté supplémentaire offert par la résistance R3 peut éviter les limitations des circuits de Dave Tweed et Michael Karas, bien que pour le cas spécifique de 2 LED rouges fonctionnant à partir d'une alimentation 5V, le circuit de Dave Tweed est probablement acceptable, mais vérifiez le Vf soigneusement, ce n'est pas bien pour certaines LED rouges, et peut être marginal pour d'autres si la broche du port ne tire pas complètement vers le bas ou vers le haut.

Spehro Pefhany
la source
Remarque: OP demande un circuit entièrement passif . De plus, si la broche MCU est à haut Z, l'onduleur est forcé dans un mode de fonctionnement linéaire, qui va généralement gaspiller de l'énergie.
Dave Tweed
@DaveTweed Oui, mon message d'origine spécifiait un onduleur ST, j'ai donc modifié pour que cela soit clair. Ce n'est pas tout passif, mais c'est simple et zéro Iq. Le deuxième circuit a un Iq plus élevé mais tout passif. Merci pour les commentaires.
Spehro Pefhany
Je ne vois pas en quoi une entrée de déclenchement Schmitt aide; au lieu de cela, je pense que cela forcerait le circuit à osciller. Certes, les LED seront éteintes, mais l'onduleur lui-même consommera une puissance importante.
Dave Tweed
Eh bien, comme il ne répond pas à l'exigence d'origine de l'absence de pièces actives, je vais le supprimer, mais je pense que cela fonctionne bien.
Spehro Pefhany
+1 pour R3, pourrait être une astuce utile. Et un bon marché à cela
Will