Table des matières:

LED Charlieplexing - la théorie: 7 étapes (avec photos)
LED Charlieplexing - la théorie: 7 étapes (avec photos)

Vidéo: LED Charlieplexing - la théorie: 7 étapes (avec photos)

Vidéo: LED Charlieplexing - la théorie: 7 étapes (avec photos)
Vidéo: Высокоинтеллектуальный осмотр почти инопланетной техники 2024, Juin
Anonim
LED Charlieplexing - la théorie
LED Charlieplexing - la théorie
LED Charlieplexing - la théorie
LED Charlieplexing - la théorie

Cette instructable est moins une construction que vous êtes propre projet et plus une description de la théorie du charlieplexing. Il convient aux personnes ayant les bases de l'électronique, mais pas aux débutants complets. Je l'ai écrit en réponse aux nombreuses questions que j'ai reçues dans mes Instructables précédemment publiés.

Qu'est-ce que le « Charlieplexing » ? Il pilote de nombreuses LED avec seulement quelques broches. Au cas où vous vous poseriez la question, Charlieplexing porte le nom de Charles Allen de Maxim qui a développé la technique. Cela peut être utile pour beaucoup de choses. Vous devrez peut-être afficher des informations d'état sur un petit microcontrôleur, mais ne disposez que de quelques broches de rechange. Vous souhaiterez peut-être afficher une matrice de points ou un affichage d'horloge sophistiqué, mais ne souhaitez pas utiliser beaucoup de composants. Certains autres projets démontrant le charlieplexing que vous voudrez peut-être examiner sont: Comment piloter un grand nombre de LED à partir de quelques broches de microcontrôleur. par Westfw:- https://www.instructables.com/id/ED0NCY0UVWEP287ISO/ Et quelques-uns de mes propres projets, La montre Microdot:- https://www.instructables.com/id/EWM2OIT78OERWHR38Z/ L'horloge Minidot 2: - https://www.instructables.com/id/E11GKKELKAEZ7BFZAK/ Un autre exemple intéressant de l'utilisation du charlieplexing se trouve sur: https://www.jsdesign.co.uk/charlie/ L'horloge Minidot 2 présente un schéma de charlieplexing avancé pour décoloration/gradation qui ne sera pas abordée ici. UPDATE 19 août 2008: J'ai ajouté un fichier zip avec un circuit qui peut être capable d'exploiter la matrice charliplexing pour les LED haute puissance discuté (longuement:)) dans la section commentaires. Il dispose d'un bouton-poussoir + encodeur de position pour créer une interface utilisateur, ainsi que d'un circuit pour le contrôle informatique USB ou RS232. Chacun des rails haute tension peut être réglé sur l'une des deux tensions, disons 2,2 V pour les LED ROUGES et 3,4 V pour le vert/bleu/blanc. La tension pour les rails latéraux hauts peut être réglée par trimpot. J'envisagerais qu'un câble plat IDC à 20 fils soit branché sur la carte et que des connecteurs IDC à 20 broches soient ajoutés le long du ruban, chaque carte LED ayant des liens avec les fils souhaités de la matrice. Le circuit est en Eagle Cad et rendu dans la sous-image ci-dessous. Le circuit côté haut est mis en œuvre en utilisant des optocoupleurs qui, je pense, pourraient convenir. Je n'ai pas réellement testé ce circuit ni écrit de logiciel par manque de temps, mais je l'ai mis en commentaire, je suis particulièrement intéressé par la mise en œuvre de l'optocoupleur. Quiconque est assez courageux pour tenter le coup… s'il vous plaît, publiez vos résultats. MISE À JOUR 27 août 2008: Pour ceux qui n'utilisent pas EagleCad….ajouté ci-dessous est un pdf du schéma

Étape 1: Un peu de théorie LED

Un peu de théorie LED
Un peu de théorie LED
Un peu de théorie LED
Un peu de théorie LED

Charlieplexing repose sur un certain nombre d'aspects utiles des LED et des microcontrôleurs modernes.

Tout d'abord que se passe-t-il lorsque vous connectez une LED à l'électricité. Le diagramme principal ci-dessous montre ce que l'on appelle la courbe If v Vf d'une LED basse consommation typique de 5 mm. Si signifie "courant direct", Vf signifie "tension directe". Cela fonctionne également dans l'autre sens, si vous mesurez que le courant a une certaine valeur, vous pouvez regarder vers l'axe horizontal et voir la tension que la LED présentera à ses bornes. Le deuxième diagramme montre une représentation schématique d'une LED avec If et Vf étiquetés. À partir du diagramme principal, j'ai également étiqueté les zones du graphique qui présentent un intérêt. - La première zone est celle où la LED est « éteinte ». Plus précisément, la LED émet de la lumière si faiblement que vous ne pourrez pas la voir à moins d'avoir une sorte d'intensificateur d'image super-duper. - La deuxième zone a la LED émettant juste une faible lueur. - La troisième zone est l'endroit où une LED est généralement utilisée et émet de la lumière selon la classification du fabricant. - La quatrième zone est l'endroit où une LED est actionnée au-delà de ses limites de fonctionnement, brille probablement très intensément mais hélas seulement pendant une courte période avant que la fumée magique à l'intérieur ne s'échappe et elle ne fonctionnera plus… c'est-à-dire dans cette zone, elle brûle parce que trop de courant le traverse. Notez que la courbe If/Vf ou la courbe de fonctionnement de la LED est une courbe « non linéaire ». C'est-à-dire que ce n'est pas une ligne droite… il y a un coude ou un pli. Enfin, ce schéma concerne une LED rouge typique de 5 mm conçue pour fonctionner à 20 mA. Différentes LED de différents fabricants ont des courbes de fonctionnement différentes. Par exemple dans ce schéma à 20mA la tension directe de la LED sera d'environ 1,9V. Pour une LED bleue de 5 mm à 20 mA, la tension directe peut être de 3,4 V. Pour une LED luxeon blanche haute puissance à 350 mA, la tension directe peut être d'environ 3,2 V. Certains packages de LED peuvent contenir plusieurs LED en série ou en parallèle, modifiant à nouveau la courbe Vf/If. En règle générale, un fabricant spécifiera un courant de fonctionnement auquel la LED peut être utilisée en toute sécurité et la tension directe à ce courant. Habituellement (mais pas toujours), vous obtenez un graphique similaire à celui ci-dessous dans la fiche technique. Vous devez consulter la fiche technique de la LED pour déterminer quelle est la tension directe à différents courants de fonctionnement. Pourquoi ce graphique est-il si important ? Parce qu'il montre que lorsqu'une tension traverse la LED, le courant qui circulera sera conforme au graphique. Abaissez la tension et moins de courant circulera… et la LED sera « éteinte ». Cela fait partie de la théorie du charlieplexing, que nous aborderons dans la prochaine étape.

Étape 2: Les lois (de l'électronique)

Les lois (de l'électronique)
Les lois (de l'électronique)
Les lois (de l'électronique)
Les lois (de l'électronique)
Les lois (de l'électronique)
Les lois (de l'électronique)

Toujours pas encore à la magie du charlieplexing… nous devons passer à quelques bases des lois de l'électronique. La première loi d'intérêt stipule que la tension totale à travers toute série de composants connectés dans un circuit électrique est égale à la somme de l'individu tensions aux bornes des composants. Ceci est montré dans le diagramme principal ci-dessous. Ceci est utile lorsque vous utilisez des LED car votre broche de sortie moyenne de batterie ou de microcontrôleur ne sera jamais exactement la bonne tension pour faire fonctionner votre LED au courant recommandé. Par exemple, un microcontrôleur fonctionnera généralement à 5 V et ses broches de sortie seront à 5 V lorsqu'elles sont allumées. Si vous connectez simplement une LED à la broche de sortie du micro, vous verrez à partir de la courbe de fonctionnement de la page précédente trop de courant circulera dans la LED et elle deviendra chaude et grillera (probablement endommageant également le micro). Cependant, si nous introduisons un deuxième composant en série avec la LED, nous pouvons soustraire une partie du 5V afin que la tension à gauche soit juste pour faire fonctionner la LED au courant de fonctionnement approprié. Il s'agit généralement d'une résistance et, lorsqu'elle est utilisée de cette manière, elle est appelée résistance de limitation de courant. Cette méthode est très couramment utilisée et conduit à ce qu'on appelle la «loi d'ohms»… ainsi nommée d'après M. Ohm. La loi d'Ohm suit l'équation V = I * R où V est la tension qui apparaîtra aux bornes d'une résistance R lorsqu'un courant I traverse la résistance. V est en volts, I est en ampères et R est en ohms. Donc, si nous avons 5 V à dépenser et que nous voulons 1,9 V à travers la LED pour la faire fonctionner à 20 mA, nous voulons que la résistance ait 5-1,9 = 3,1 V à travers elle. Nous pouvons le voir dans le deuxième schéma. Comme la résistance est en série avec la LED, le même courant traversera la résistance que la LED, c'est-à-dire 20mA. Donc, en réorganisant l'équation, nous pouvons trouver la résistance dont nous avons besoin pour que cela fonctionne. V = I * RsoR = V / Isubstituting les valeurs dans notre exemple, nous obtenons: R = 3.1 / 0.02 = 155ohms (note 20mA = 0.02Amps) Toujours avec moi pour l'instant… cool. Maintenant, regardez le schéma 3. Il a la LED prise en sandwich entre deux résistances. D'après la première loi mentionnée ci-dessus, nous avons la même situation au deuxième diagramme. Nous avons 1,9 V à travers la LED, donc elle fonctionne conformément à sa fiche technique. Nous avons également chaque résistance soustrayant 1,55V chacune (pour un total de 3,1). En additionnant les tensions, nous avons 5V (la broche du microcontrôleur) = 1,55V (R1) + 1,9V (la LED) + 1,55V (R2) et tout s'équilibre. En utilisant la loi des ohms, nous trouvons que les résistances doivent être de 77,5 ohms chacune, qui est la moitié du montant calculé à partir du deuxième diagramme. Bien sûr, dans la pratique, vous auriez du mal à trouver une résistance de 77,5 ohms, vous devez donc simplement substituer la valeur disponible la plus proche, disons 75 ohms et vous retrouver avec un peu plus de courant dans la LED ou 82ohms pour être en sécurité et en avoir un peu moins. Pourquoi diable devrions-nous faire cette résistance pour piloter une simple LED… et c'est pratique pour la prochaine étape.

Étape 3: Présentation du « Drive complémentaire »

Présentation du « Drive complémentaire »
Présentation du « Drive complémentaire »

Un autre nom qui est plus précis pour décrire « charlieplexing » est « entraînement complémentaire ».

Dans votre microcontrôleur moyen, vous pouvez dans le micrologiciel dire au micro de définir une broche de sortie sur un « 0 » ou un « 1 », ou de présenter une tension de 0 V à la sortie ou une tension de 5 V à la sortie. Le schéma ci-dessous montre maintenant la LED prise en sandwich avec un partenaire inversé….ou une LED complémentaire, donc un entraînement complémentaire. Dans la première moitié du diagramme, le micro délivre 5V à la broche A et 0V à la broche B. Le courant passera donc de A à B. Parce que LED2 est orienté vers l'arrière de LED1, aucun courant ne la traversera et il ne lueur. C'est ce qu'on appelle la polarisation inverse. Nous avons l'équivalent de la situation de la page précédente. Nous pouvons fondamentalement ignorer LED2. Les flèches indiquent le flux actuel. Une LED est essentiellement une diode (d'où Light Emitting Diode). Une diode est un dispositif qui permet au courant de circuler dans un sens, mais pas dans l'autre. Le schéma d'une LED le montre en quelque sorte, le courant circulera dans le sens de la flèche… mais est bloqué dans l'autre sens. Si nous demandons au micro de sortir maintenant 5V sur la broche B et 0V sur la broche A, nous avons le contraire. Maintenant, la LED1 est polarisée en inverse, la LED2 est polarisée en direct et permettra la circulation du courant. La LED2 s'allumera et la LED1 s'éteindra. Il serait peut-être bon maintenant de regarder les schémas des différents projets mentionnés dans l'introduction. Vous devriez voir beaucoup de ces paires complémentaires dans une matrice. Bien sûr, dans l'exemple ci-dessous, nous pilotons deux LED avec deux broches de microcontrôleur… vous pourriez dire pourquoi s'embêter. Eh bien, la section suivante est celle où nous abordons les entrailles du charlieplexing et comment il utilise efficacement les broches de sortie d'un microcontrôleur.

Étape 4: Enfin… une matrice Charlieplex

Enfin….une matrice Charlieplex
Enfin….une matrice Charlieplex
Enfin….une matrice Charlieplex
Enfin….une matrice Charlieplex

Comme mentionné dans l'introduction, le charliplexing est un moyen pratique de piloter de nombreuses LED avec seulement quelques broches sur un microcontrôleur. Cependant, dans les pages précédentes, nous n'avons pas vraiment enregistré de broches, pilotant deux LED avec deux broches….grand cri !

Eh bien, nous pouvons étendre l'idée de lecteur complémentaire dans une matrice charlieplex. Le schéma ci-dessous montre la matrice charlieplex minimale composée de trois résistances et six LED et n'utilisant que trois broches de microcontrôleur. Voyez-vous maintenant à quel point cette méthode est pratique? Si vous vouliez piloter six LED de manière normale… vous auriez besoin de six broches de microcontrôleur. En fait avec N broches d'un microcontrôleur vous pouvez potentiellement piloter N * (N - 1) LED. Pour 3 broches, c'est 3 * (3-1) = 3 * 2 = 6 LED. Les choses s'empilent rapidement avec plus d'épingles. Avec 6 broches, vous pouvez piloter 6 * (6 - 1) = 6 * 5 = 30 LED….wow ! Passons maintenant au charlieplexing. Regardez le schéma ci-dessous. Nous avons trois paires complémentaires, une paire entre chaque combinaison de broches de sortie micro. Une paire entre A-B, une paire entre B-C et une paire entre A-C. Si vous déconnectiez la broche C pour l'instant, nous aurions la même situation qu'avant. Avec 5V sur la broche A et 0V sur la broche B, la LED1 s'allumera, la LED2 est polarisée en inverse et ne conduira pas de courant. Avec 5V sur la broche B et 0V sur la broche A, la LED2 s'allumera et la LED1 est polarisée en inverse. Ceci suit pour les autres broches micro. Si nous déconnections la broche B et réglions la broche A sur 5V et la broche C sur 0V, la LED5 s'allumerait. En inversant pour que la broche A soit à 0 V et la broche C à 5 V, la LED6 s'allumerait. Idem pour la paire complémentaire entre les broches B-C. Attends, je t'entends dire. Regardons le deuxième cas d'un peu plus près. Nous avons 5V sur la broche A et 0V sur la broche C. Nous avons déconnecté la broche B (celle du milieu). OK, donc un courant traverse LED5, le courant ne traverse pas LED6 car il est polarisé en inverse (et donc LED2 et LED4)… mais il y a aussi un chemin pour le courant à prendre de la broche A, à travers LED1 et LED3 n'est-ce pas ? Pourquoi ces LED ne brillent-elles pas aussi. Voici le cœur du schéma charlieplexing. En effet, un courant circule à la fois sur LED1 et LED3, mais la tension aux bornes de ces deux combinés ne sera égale qu'à la tension aux bornes de LED5. En règle générale, ils auraient la moitié de la tension à leurs bornes que LED5. Donc, si nous avons 1,9 V sur LED5, alors seulement 0,95 V sur LED1 et 0,95 V sur LED3. À partir de la courbe If/Vf mentionnée au début de cet article, nous pouvons voir que le courant à cette demi-tension est bien inférieur à 20mA…..et ces LED ne brilleront pas visiblement. C'est ce qu'on appelle le vol de courant. Ainsi, la majeure partie du courant passera par la LED que nous voulons, le chemin le plus direct à travers le moins de LED (c'est-à-dire une LED), plutôt que toute combinaison en série de LED. Si vous regardez le flux de courant pour n'importe quelle combinaison de mise 5V et 0V sur deux broches d'entraînement de la matrice charlieplex, vous verrez la même chose. Une seule LED s'allumera à la fois. Comme exercice, regardez la première situation. 5 V sur la broche A et 0 V sur la broche B, déconnectez la broche C. La LED1 est le chemin le plus court pour le courant et la LED 1 s'allumera. Un petit courant passera également par la LED5, puis sauvegardera la LED4 sur la broche B…..mais encore une fois, ces deux LED en série ne pourront pas siphonner suffisamment de courant par rapport à la LED 1 pour briller intensément. Ainsi, le pouvoir du charlieplexing est réalisé. Voir le deuxième schéma qui est le schéma de ma montre Microdot…..30 LED, avec seulement 6 broches. Mon horloge Minidot 2 est essentiellement une version étendue du Microdot… les mêmes 30 LED disposées en un tableau. Pour faire un motif dans le tableau, chaque LED à éclairer est brièvement allumée, puis le micro passe à la suivante. S'il est prévu qu'il s'allume, il est à nouveau allumé pendant une brève période. En balayant assez rapidement les LED, un principe appelé « persistance de la vision » permettra à un ensemble de LED d'afficher un motif statique. L'article Minidot 2 a un peu d'explication sur ce principe. Mais attendez… J'ai apparemment glissé un peu dans la description ci-dessus. C'est quoi cette affaire de "déconnecter la broche B", de "déconnecter la broche C". Section suivante s'il vous plaît.

Étape 5: Tri-états (pas les tricycles)

Tri-états (pas les tricycles)
Tri-états (pas les tricycles)
Tri-états (pas les tricycles)
Tri-états (pas les tricycles)

Dans l'étape précédente, nous avons mentionné qu'un microcontrôleur peut être programmé pour produire une tension de 5 V ou une tension de 0 V. Pour faire fonctionner la matrice charlieplex, nous sélectionnons deux broches dans la matrice et déconnectons toutes les autres broches.

Bien sûr, déconnecter manuellement les broches est un peu difficile à faire, surtout si nous numérisons les choses très rapidement pour utiliser l'effet de persistance de la vision pour montrer un motif. Cependant, les broches de sortie d'un microcontrôleur peuvent également être programmées pour être également des broches d'entrée. Lorsqu'une micro broche est programmée pour être une entrée, elle passe dans ce qu'on appelle « haute impédance » ou « tri-état ». C'est-à-dire qu'il présente une résistance très élevée (de l'ordre du mégaohm, ou des millions d'ohms) à la broche. S'il y a une résistance très élevée (voir schéma), alors nous pouvons essentiellement considérer la broche comme étant déconnectée, et donc le schéma charliplex fonctionne. Le deuxième schéma montre les broches de la matrice pour chaque combinaison possible pour éclairer chacune des 6 LED de notre exemple. En règle générale, un trois états est indiqué par un « X », 5 V est indiqué par un « 1 » (pour le 1) logique et 0 V par un « 0 ». Dans le micrologiciel pour un « 0 » ou « 1 », vous programmeriez les broches pour qu’elles soient une sortie et son état est bien défini. Pour les trois états, vous le programmez pour qu'il s'agisse d'une entrée, et parce que c'est une entrée, nous ne savons pas réellement quel peut être l'état… d'où le « X » pour inconnu. Bien que nous puissions attribuer une broche à trois états ou à une entrée, nous n'avons pas besoin de la lire. Nous profitons simplement du fait qu'une broche d'entrée sur un microcontrôleur est à haute impédance.

Étape 6: Quelques questions pratiques

La magie du charlieplexing repose sur le fait que la tension individuelle présentée sur plusieurs LED en série sera toujours inférieure à celle sur une seule LED lorsque la seule LED est en parallèle avec la combinaison en série. Si la tension est inférieure, le courant est inférieur et, espérons-le, le courant dans la combinaison en série sera si faible que la LED ne s'allumera pas. Cependant, ce n'est pas toujours le cas. Disons que vous aviez deux LED rouges avec un une tension directe de 1,9 V dans votre matrice et une LED bleue avec une tension directe de 3,5 V (disons LED1=rouge, LED3=rouge, LED5=bleu dans notre exemple à 6 LED). Si vous allumiez la LED bleue, vous vous retrouveriez avec 3,5/2 = 1,75V pour chacune des LED rouges. Cela peut être très proche de la zone de fonctionnement faible de la LED. Vous constaterez peut-être que les LED rouges brilleront faiblement lorsque le bleu est allumé. C'est donc une bonne idée de s'assurer que la tension directe de toutes les LED de couleurs différentes dans votre matrice est à peu près la même au courant de fonctionnement, ou bien utilisez la même couleur LED dans une matrice. Dans mes projets Microdot/Minidot, je n'ai pas eu à m'inquiéter à ce sujet, j'ai utilisé des LED SMD bleu/vert à haute efficacité qui ont heureusement à peu près la même tension directe que les rouges/jaunes. Cependant, si j'implémentais la même chose avec des LED de 5 mm, le résultat serait plus problématique. Dans ce cas, j'aurais implémenté séparément une matrice charlieplex bleu/vert et un matix rouge/jaune. J'aurais eu besoin d'utiliser plus de broches… mais voilà. Un autre problème est de regarder votre tirage actuel du micro et la luminosité que vous voulez pour la LED. Si vous avez une grande matrice et que vous la scannez rapidement, alors chaque LED n'est allumée que brièvement. Cela apparaîtra relativement faible par rapport à un affichage statique. Vous pouvez tricher en augmentant le courant à travers la LED en réduisant les résistances de limitation de courant, mais seulement jusqu'à un certain point. Si vous tirez trop de courant du micro pendant trop longtemps, vous endommagerez les broches de sortie. Si vous avez une matrice qui se déplace lentement, disons un affichage d'état ou de cyclone, vous pouvez maintenir le courant à un niveau sûr tout en ayant un affichage LED lumineux car chaque LED est allumée plus longtemps, éventuellement statique (dans le cas d'un indicateur d'état). Quelques avantages du charlieplexing: - n'utilise que quelques broches sur un microcontrôleur pour contrôler de nombreuses LED - réduit le nombre de composants car vous n'avez pas besoin de beaucoup de puces/résistances de pilote, etc. Quelques inconvénients: - votre micro firmware devra gérer le réglage à la fois l'état de tension et l'état d'entrée/sortie des broches - il faut faire attention au mélange de différentes couleurs - La disposition du PCB est difficile, car la matrice LED est plus complexe.

Étape 7: Références

Il existe de nombreuses références sur charlieplexing sur le Web. En plus des liens au début de l'article, certains d'entre eux sont: https://www.maxim-ic.com/appnotes.cfm/appnote_number/1880A entrée wikihttps://en.wikipedia.org/wiki/Charlieplexing

Conseillé: