Comment utiliser et interfacer des LED WS2812B

Créé: Août 24, 2017
Mise à jour: December 16, 2020

LED de couleurs différentes

 

 

Voulez-vous rire de mes mésaventures ? Voici une anecdote qui m'est arrivée il y a quelques temps. J'ai des dizaines d'années d'expérience en tant qu'ingénieur de conception, mais je me suis arraché les cheveux sur un projet contenant des LED. Jusque-là, je pensais qu'il suffisait de connecter les diodes électroluminescentes à une résistance de limitation et à une source d'alimentation. N'est-ce pas ?

C'était ce que je pensais en commençant à travailler sur un projet d’éclairage de modèle architectural il y a quelques années. Sur ce projet, les bâtiments et les paysages étaient éclairés par une LED WS2812B, un type de LED intégrée novateur et déjà populaire. Cependant, contrairement aux LED classiques, il ne suffit pas d'activer l'alimentation pour les faire fonctionner. En vérité, ces LED s'interfacent avec le microcontrôleur d'une façon unique. L’interface de communication entre le microcontrôleur et la LED tient en un seul fil, mais contrairement à une interface série UART standard, le timing est très important. Les LED WS2812B sont utiles pour les projets qui nécessitent des LED rouges, vertes et bleues (RVB) en grandes quantités. Les LED WS2812B n'ont que trois connexions, quel que soit le nombre de LED dans un ruban, ce qui évite les câblages désordonnés.

Les différences entre les LED WS2812B et les LED classiques

Pour les ingénieurs en électronique, le mot LED évoque souvent le symbole d'une diode, assortie de flèches indiquant qu'il s'agit d'une diode électroluminescente. Dans la conception électronique, la plupart des ingénieurs sont familiers des LED à double broche, pourvues d'une connexion à l'anode et à la cathode. Dans les conceptions de systèmes embarqués, ces LED sont simples à contrôler et servent souvent d'indicateurs visuels.

La WS2812B ne ressemble pas tout à fait à une LED classique. C'est une LED RVB dotée d’une puce de contrôle intelligente dans un seul facteur de forme 5050. Elle prend en charge un protocole de transmission à ligne unique, où les signaux d’horloge et de données sont envoyés à la WS2812B à une vitesse minimale de 400 Kb par seconde pour contrôler la valeur RVB de la LED. Les LED WS2812B peuvent être installées en cascade en reliant la broche de sortie de données d’une LED à l'entrée de l'autre.

 

Cela signifie que pour allumer une LED WS2812B, il ne suffit pas de la brancher sur une alimentation à 5 V CC comme vous le feriez pour une LED classique. Si vous essayez, vous remarquerez qu'il ne se passe rien. Pour faire fonctionner une LED WS2812B, il faut que son contrôleur lui envoie une commande valide. Il suffit d’une seule commande pour modifier la couleur de la LED WS2812B, mais transmettre un paquet de données est plus difficile. L'interface repose sur le timing, et les commandes logiques 0 et 1 sont définies par leurs longueurs d'impulsion carrées respectives. Ce tutoriel propose un exemple visuel des longueurs respectives de chaque impulsion. À l’inverse, une LED RVB classique nécessite simplement un signal constant à largeur d’impulsion modulée (PWM) pour maintenir sa luminosité et la couleur.

La nécessité de moduler les paramètres des données sur un signal d’horloge poussera votre capacité de codage et votre compréhension du microcontrôleur dans ses derniers retranchements.  Cette étape devient encore plus compliquée avec plusieurs LED sur le même ruban. Pour vous donner une idée, un rouleau standard de LED WS2812B mesure 5 mètres de long et renferme un total de 150 LED. Usant de toute mon expérience, j’ai fini par connecter plusieurs rouleaux de LED à un seul point de contrôle. Alors, comment dompter ces LED rebelles ? Tout d'abord, il va vous falloir le contrôleur adéquat.

Les clefs pour concevoir un contrôleur de LED WS2812B fiable

Concevoir un contrôleur fonctionnel est essentiel pour utiliser un ruban de LED WS2812B. Deux aspects importants doivent être pris en compte : la LED WS2812B ne peut partager qu'une seule ligne d’horloge et de données, et doit prendre en charge un débit de transmission minimal de 400 kb par seconde. Voilà un beau défi de développement pour le concepteur hardware et le développeur firmware.

 

 

LED WS2812B en ruban

Rubans de LED WS2812B
 

 

Étant donné que les données de paramètres RVB sont modulées dans le signal d’horloge lui-même, le microcontrôleur (MCU) doit faire preuve de précision pour commander la LED. Les développeurs de firmware sont alors confrontés à un dilemme. Ils peuvent utiliser un microcontrôleur 32 bits haut de gamme avec une puissance de calcul immense, ou opter pour un microcontrôleur 8 bits à petit prix. Le microcontrôleur 32 bits simplifiera le développement du firmware, mais il est beaucoup plus cher. D'un autre côté, le microcontrôleur 8 bits ne parviendra peut-être pas à générer avec précision le paquet de données de la LED WS2812B. Le timing est crucial pour ces LED, et une différence d’une microseconde pourrait afficher une couleur différente.  Il existe pourtant un moyen de contourner ce problème : écrire le pilote LED en assembleur. Cela dit, préparez-vous à vous embarquer dans un développement de firmware complexe et coûteux.

Misant sur mon expérience, j’ai opté pour le microcontrôleur 8 bits. Le coût de développement était évidemment bien plus bas que si j'avais d'acheté un microcontrôleur 32 bits pour chaque contrôleur LED à utiliser. Bien sûr, j'ai dû passer par une programmation préliminaire difficile en assembleur. Au final, le choix vous appartient.

Une fois le microcontrôleur choisi, il faut garder à l’esprit que le signal de la LED WS2812B est sensible aux interférences extérieures. Des erreurs de conception peuvent se solder par des signaux de données WS2812B corrompus. Assurez-vous donc de respecter soigneusement les meilleures pratiques, comme d'isoler les données WS2812B des autres signaux haute vitesse, et de conserver des traces courtes.

Ces informations sur les LED WS2812B vous aideront à éviter bien des problèmes

Vous imaginez peut-être qu'il suffit d'un microcontrôleur LED fonctionnel pour programmer des LED WS2812B. Loin de là... sur des projets où plusieurs rubans de WS2812B sont connectés, il y a quelques détails essentiels que l’équipe technique de montage de LED doit connaître.

 

 

Technicien occupé à souder un fil

Une erreur suffit à ruiner votre projet à LED WS2812B

 

 

Les rubans de LED WS2812B transportent un courant élevé et provoquent une chute de tension de 2.0 V pour 150 LED. Cela signifie que la LED nécessite une alimentation avec une sortie courant suffisante. Pour assurer une tension de service stable, les rubans de LED ont besoin d’un pôle positif 5 V - 7 V toutes les 150 LED. Sans cela, vous finirez immanquablement avec des couleurs de LED déformées et des clients insatisfaits.

Lorsque les rubans de LED WS2812B sont détachés et positionnés manuellement, la soudure doit être effectuée avec la plus grande précision car la ligne de données est extrêmement sensible aux interférences et aux défauts de soudure. Un WS2812B mal connecté peut mener les LED à afficher des couleurs aléatoires. C'est inacceptable dans le cadre de votre projet.

Que vous le vouliez ou non, l’industrie de l’éclairage LED est en pleine révolution. Que ce soit pour les WS2812B ou des LED similaires, il faudra garder à l’esprit qu’il ne suffit plus de raccorder les bandes de LED à une source d’alimentation en espérant que ça marche. Le concepteur de circuit imprimés doit travailler en équipe, car ses efforts ne suffisent plus.

Vous êtes prêt(e) à concevoir votre propre contrôleur de LED WS2812B ? Vous vous demandez peut-être comment router le signal haute vitesse WS2812B ? Vous ne voulez pas manquer les meilleures pratiques pour la conception de circuits imprimés, en particulier sur un projet comme le vôtre ? Les logiciels de conception professionnels comme CircuitStudio peuvent vous aider à démarrer.

Vous avez des questions au sujet des LED ? Contactez un expert Altium.

 
 

Ressources associées

Retournez à la Page d'Accueil
Thank you, you are now subscribed to updates.