J'envisage de prendre un projet qui impliquerait d'adresser individuellement 500 LED, de manière optimale avec un support PWM pour chacune.
Je prévois d'utiliser un Arduino car j'en ai déjà un, mais je suis ouvert aux suggestions si quelqu'un pense qu'une plate-forme différente serait mieux adaptée.
Il faudrait utiliser des registres à décalage. Quel est un bon registre à décalage à utiliser dans cette situation? Si PWM rend ce projet beaucoup plus cher, je peux m'en passer. Je veux essayer de dépenser moins de 100 $. J'achèterais en vrac 500 LEDs sur ebay.
Quelle est votre opinion sur la meilleure façon de contrôler un si grand nombre de LED? De plus, comment pourrais-je fournir de l'électricité? J'apprécierais toute aide. Je suis assez expérimenté avec l'électronique, je n'ai jamais rien fait à si grande échelle.
la source
Il suffit de copier :-)
http://www.evilmadscientist.com/article.php/peggy2
la source
Dans quelle disposition voulez-vous les LED? Vous pouvez économiser beaucoup de travail si vous achetez des matrices LED, vous pouvez obtenir des matrices 8x8 LED monochromes (64 LED) pour un dollar ou deux .
Vous n'obtiendrez pas de véritable PWM avec un AVR et des registres à décalage sur ces nombreuses LED, mais vous pourrez peut-être réduire de 2 à 4 niveaux de luminosité. Vous devez exécuter les chiffres et voir ce qui est possible.
Allegro fabrique des registres à décalage à courant constant pratiques spécialement conçus pour contrôler les réseaux de LED, de sorte que vous n'avez pas besoin de résistances supplémentaires, ce qui simplifiera également les choses. Vous ne pourrez peut-être pas piloter les LED directement à partir de la sortie AVR si elle ne peut pas fournir suffisamment de puissance, vous devrez donc utiliser des transistors. Vous pouvez les obtenir dans des tableaux dans un seul circuit intégré , ce qui économise également du travail.
la source
Je n'ai aucune idée de la gamme de PWM dont vous avez besoin pour une LED, mais j'ai travaillé sur un contrôleur PWM à 64 canaux pour une application de servocommande qui peut me donner des impulsions comprises entre 600us et 2,4 ms. Celui-ci utilise les CD74HCT238E (démultiplexeurs 3-8 lignes) pour générer 64 canaux à partir de 8 broches d'E / S sur un ATMega168 et est contrôlable via de simples commandes série. Je suppose que vous pouvez enchaîner plusieurs versions d'une version modifiée de ce contrôleur sur une ligne série et adresser les 500 LED ... Vous pourriez probablement utiliser la version ATTiny2313 du contrôleur car vos exigences de micrologiciel seraient plus simples.
Mon blog contient la source de l'assemblage et les schémas et les détails du processus de conception.
la source
Consultez les circuits intégrés du "pilote LED" sur le mouser / digikey. TI, par exemple, fabrique un tas de pilotes avec une variété d'interfaces (I2C, SPI) qui répondraient certainement à vos besoins. La plupart de ces pilotes sont conçus pour être connectés en guirlande, de sorte que la sortie série de l'un est introduite dans la série de l'autre.
Par exemple, quelque chose comme le TLC5940 offre un contrôle PWM à 16 canaux. Donc, fondamentalement, c'est un registre à décalage à 16 bits à courant constant avec un contrôle PWM en niveaux de gris à 12 bits. Je peux recommander cet IC particulier car j'ai aidé à concevoir un écran 80x16 avec.
la source
Mondomatrix fabrique des cartes de pilotes LED adressables série (rs-485) et est basée sur la plate-forme Arduino: http://www.displayduino.com/ Vous pourrez peut-être assembler un système utilisant ce matériel assez facilement
la source
Si vous ne voulez pas trop de bits de contrôle PWM pour chaque LED, et que vous voulez éviter d'avoir un processeur échappé avec 500 LED à chaque cycle PWM, vous pouvez contrôler 8 LED avec N bits de luminosité en utilisant N 74HC595 ou des puces équivalentes . Câblez les sorties de toutes les puces N ensemble, et câblez l'activation à certains circuits qui ne permettront qu'une seule à la fois avec un timing approprié. Arrangez-vous pour que la première puce soit activée la moitié du temps, la seconde soit activée pour la moitié du reste, etc.
Tout rechargement des registres à décalage doit être synchronisé avec le taux PWM, afin de minimiser les effets de repliement (par exemple, si un niveau de luminosité commutait rapidement entre 0111 et 1000, le point dans le cycle PWM lorsque le commutateur s'est produit pourrait changer momentanément la luminosité apparente ).
Bien que devoir utiliser plusieurs sorties 74HC595 pour chaque LED puisse être gênant, cette approche est probablement la plus simple qui pourrait maintenir différents niveaux de luminosité sans intervention continue du CPU.
la source
Cela ne répond pas directement à la question, mais un autre aspect que vous devrez peut-être prendre en compte est la variabilité possible de l' intensité lumineuse entre les LED de votre lot de 500. Cela est particulièrement important si ces LED sont montées les unes à côté des autres, comme dans une matrice ou dans des écrans à 7 segments. Consultez cette réponse pour plus de détails sur la façon de résoudre ce problème, en particulier, en utilisant la correction de points pour compenser les variations de luminosité des LED.
J'ai rencontré ce problème lorsque j'ai reçu 200 LED rouges de 1 mm pour un ensemble de grands écrans à 7 segments que je construisais. Ma solution bon marché pour résoudre le problème impliquait les éléments suivants:
la source
Je suggère d'utiliser la technique de modulation d'angle binaire décrite dans cet article http://www.artisticlicence.com/WebSiteMaster/App%20Notes/appnote011.pdf
Ou consultez la bibliothèque ShiftPWM http://www.elcojacobs.com/shiftpwm/
la source
XMOS utilise le Macroblock MBI5026 avec ses kits de tuiles LED. Je pense qu'ils sont utilisés dans la plupart des autres systèmes professionnels.
Léon
la source
Les puces de pilotes dédiées avec des interfaces série seront en effet probablement la meilleure voie. Traiter des registres à décalage individuels signifiera probablement un circuit très complexe. Au moins Maxim et TI en font. Je ne me souviens pas si l'un ou l'autre a un modèle particulièrement adapté à cela.
Cela prendra encore beaucoup de matériel.
En ce qui concerne l'alimentation, la programmation et les bus, la fiche technique de chaque pilote contiendra probablement la plupart des informations dont vous aurez besoin.
la source
Dans le domaine logiciel, si le nombre de paramètres de luminosité distincts dont vous avez besoin n'est pas trop grand, il peut être utile de stocker les données au format "bit-planar" (comme décrit dans mon autre réponse matérielle), puis d'avoir les routines de sortie utilisent des opérateurs booléens pour agir sur 8 pixels à la fois. Pour une efficacité maximale, cela nécessitera d'avoir plusieurs routines de sortie distinctes, utilisées pour différentes parties du cycle PWM; par exemple, si l'on souhaite utiliser des valeurs de luminosité 4 bits, on utilisera huit routines de la forme:
On utiliserait différentes combinaisons de IORWF et ANDWF, selon la valeur du comparateur. Notez qu'en utilisant cette approche comme illustré, on peut mettre à jour les valeurs de luminosité des pixels à tout moment dans le cycle PWM sans scintillement à condition que les quatre bits soient écrits entre les appels à la routine de décalage d'affichage, ou en faisant en sorte que la routine de mise à jour des pixels détermine si le le décalage suivant produira un "1" ou un "0" pour le pixel, et soit en définissant ou en effaçant tous les bits du pixel (quelle que soit l'opération qui le fera faire quoi qu'il allait faire de toute façon), puis en écrivant tous les bits dont la valeur devrait être en face. Notez également que l'on peut obtenir des échelles de luminosité non linéaires arbitraires en faisant varier le moment des mises à jour de l'affichage ou en utilisant plusieurs valeurs de comparaison plus d'une fois dans un cycle PWM.
la source
Les FPGA ou CPLD peuvent être utiles pour de telles tâches car ils offrent de nombreuses broches d'E / S. Optez pour le plus simple et le moins cher. Si l'un ne suffit pas, utilisez un couple.
la source
Vous pouvez presque certainement le faire facilement en utilisant un PSoC3 ou PSoC5 .
Les puces PSoC sont des microcontrôleurs qui contiennent du matériel numérique reconfigurable, un peu comme un FPGA ou CPLD. Cela signifie que vous pouvez créer des circuits complexes pour faire des choses inhabituelles comme piloter 500 LED avec PWM. De plus, vous pouvez probablement implémenter le tout à l'aide des blocs numériques reconfigurables, ce qui signifie que la partie CPU de la puce n'a besoin que d'écrire les luminosités LED souhaitées dans un tableau.
504 LED tiennent dans un rectangle 21 x 24. Si vous aviez 24 canaux PWM et 21 GPIO, alors vous pourriez faire fonctionner cela. Devine quoi? Le PSoC a plus que cela.
Vous pouvez facilement configurer 24 canaux PWM sur un PSoC et configurer 21 autres broches pour faire partie d'un registre à décalage. Ensuite, configurez certains canaux DMA pour pomper des octets de la mémoire dans les sorties PWM, et vous riez. Tout ce que le CPU doit faire maintenant est de générer les graphiques. Le PSoC3 a un cœur 8051 8 bits, tandis que le PSoC5 a un ARM 32 bits. Faites votre choix. Les seuls circuits intégrés externes dont vous aurez besoin sont certains ULN2803 pour fournir le courant de commande élevé pour les lignes. Les sorties PWM doivent avoir suffisamment de courant pour les LED simples.
la source
Profitez des économies d'échelle. Des sites chinois comme Aliexpress vendent des brins de LED basés sur WS2811 pour environ 15 $ par 50 LED. Ils sont adressables individuellement, lumineux, généralement étanches et disposent d'un PWM pour la luminosité. Pas de soudure ou de registres à décalage pour jouer avec. Faire tout cela vous-même, je parie, vous coûtera plus cher, prendra beaucoup plus de temps et sera très frustrant. De plus, vous êtes à Oz, donc l'expédition depuis la Chine ne sera pas trop chère.
Ceux-ci sont faits pour faire des écrans LED géants, donc ils ont tendance à être assez bon marché. Assurez-vous simplement de réinjecter de la puissance toutes les 50 LED environ pour des performances optimales.
Il existe également des bibliothèques Arduino pour les rendre faciles à utiliser.
la source