Installer une bande de leds RGB sur votre imprimante 3D

Ce post contient un petit tutoriel pour décrire comment installer une bande de leds RGB(W) (typiquement WS2812B) sur votre imprimante. Si vous ne savez pas ce qu'est une bande de leds, voici à quoi ça ressemble :

Bande de LED RGB allumée avec des couleurs arc-en-ciel

Il s'agit d'un long circuit imprimé flexible sur lequel sont soudées de nombreuses LED RGBW (rouge/vert/bleu/blanc) (et une puce d'accompagnement). Il est généralement très bon marché (30 leds coûtent 2 $). Vous pouvez les installer sur n'importe quel système à condition de disposer d'une alimentation électrique suffisante et d'un processeur rapide.

Chaque LED est configurable pour que vous puissiez avoir, comme sur la photo ci-dessus, un effet d'arc-en-ciel, un système d'éclairage blanc graduable, un système de signalement des erreurs : votre créativité sera la limite.

C'est ce qui m'intéressait :

  1. Utiliser les LED comme un rapport d'état de l'imprimante. Elle passe du vert au rouge lorsqu'elle chauffe. Elle clignote en cas de problème (comme un filament qui s'épuise)
  2. Éclairage de la pièce à imprimer diffus
  3. Synchronisation de la capture d'image (lors de la prise de vue à intervalles réguliers) avec la pleine luminosité. Mieux encore, une légère désynchronisation pour créer un (faux) effet de lumière mobile dans le timelapse, ce qui est très agréable.

Exigences

Pour installer un tel système sur votre imprimante 3D, vous devez donc

  1. Une bande LED (~ 2 $). Les plus courantes sont basées sur la puce LED WS2812B. Dans ce tutoriel, j'utilise ce type de puce, mais d'autres types fonctionneront probablement aussi. Si votre imprimante est noire, sélectionnez une bande de LED noire.
  2. Une alimentation de 5V (~10$). Habituellement, la carte mère de votre imprimante 3D ne permet pas d'alimenter la bande directement sur sa rampe de 5V. Vous devez donc acheter un convertisseur de la sortie haute tension DC vers 5V (soit une alimentation de 12V ou de 24V à 5V). Si votre imprimante utilise habituellement du 12V, achetez une version de 12V à 5V ; sinon, achetez une version de 24V à 5V. Vous devez choisir un convertisseur capable de dissiper l'énergie thermique (via son boîtier), ne prenez pas le premier prix. Voir ci-dessous pour quelques calculs
  3. Une carte mère suffisamment puissante pour envoyer les bons signaux aux diodes. Une carte avec une puce ARM avec une fréquence CPU d'au moins 48MHz devrait suffire.
  4. Le logiciel de Marlin. Il pourrait être possible d'utiliser un autre logiciel sur la carte mère, mais ce tutoriel utilise Marlin

Electronique

Pour éviter de vous tromper, vous devez comprendre quelques règles pour choisir l'alimentation et la bande. Lorsque vous achetez une barrette de LED, le fournisseur vous indique la puissance maximale que cette barrette consommera à pleine charge. Par exemple, une bande de 30 LED typique avec WS2812b consommera 9W, sur une alimentation de 5V. Cela signifie qu'un peu moins de 2A passeront dans les fils.

Alimentation électrique

Habituellement, le 5V de la carte mère de l'imprimante est fait pour quelques watts, donc vous ne pouvez pas conduire 9W sans déclencher les protections de la carte mère (s'il y en a) ou la brûler. Vous ne voulez pas cela, donc vous devrez fournir 5V par vous-même, en utilisant une alimentation externe.

Cependant, vous devez prendre certaines marges lors de la sélection d'une telle alimentation. Ne croyez pas le système d'unité chinois ici, et surallouer votre budget Ampère. L'alimentation 2A d'un Chinois ne suffira donc pas. Achetez au moins 4A ici (ou, comme moi, 5A).

Une alimentation électrique n'est pas parfaite, disons qu'elle a un rendement de 80%. Cela signifie qu'en alimentant une bande de 9W, elle consomme 11,25W, donc 2,25W doivent être dissipés dans l'environnement. Si vous achetez un convertisseur DC/DC nu, vous devez faire circuler de l'air pour dissiper l'énergie, ce qui oblige d'utiliser un ventilateur supplémentaire. Au lieu de cela, achetez une version avec un grand châssis en aluminium et vous le relieriez au châssis de l'imprimante comme dissipateur de chaleur.

Mon alimentation électrique est comme ça, une version de 24V à 5V 25W :

Alimentation

J'ai d'abord placé l'alimentation dans le châssis pour m'assurer que la longueur des fils est suffisante pour se connecter à l'alimentation principale, et j'ai marqué la position des vis comme ceci : Placer le PS en position pour assurer la longueur du fil

Puis j'ai gratté la peinture du châssis pour exposer le métal nu. J'ai essayé de souder sur le métal nu, mais mon flux n'était pas assez bon pour désoxyder le métal et ça n'a pas marché. À la place, j'ai collé les vis à l'envers avec de l'époxy :

Collage de la vis

L'installation finale ressemble à ceci :

Installation finale de l'alimentation électrique

Bande

Vous devez préparer l'endroit où vous installerez la bande de LED. Sur mon imprimante, comme c'est un Core XY, j'ai eu la chance que la tête d'impression soit au même niveau que les poutres latérales, donc je n'ai eu qu'à ajouter la poutre du dernier côté au dos. J'ai découpé un morceau de pin, je l'ai routé pour y insérer la bande de LED et je l'ai peint en noir.

Câblage

Le câblage est un peu plus complexe ici. Je ne peux pas vous dire exactement où vous devrez brancher la ligne de signal, car cela dépend de votre carte mère. Vous devez chercher un GPIO contrôlable à haute vitesse (800 kHz) au moins. En fonction de votre processeur, vous pouvez rechercher les broches de sortie du timer (parfois appelé Timer's Channel) pour obtenir de meilleures performances. Sur les microcontrôleurs STM32 courants, vous pouvez piloter la bande de LED à partir de n'importe quelle pin, mais c'est moins performant, le processeur doit compter inutilement les cycles et ne permet pas d'imprimer. Sur une pin spécifique du timer, ce sera plus rapide puisqu'il utilisera un DMA et un timer au lieu du CPU.

J'ai un Robin Nano V1.2 de MKS, et dans mon cas, j'ai le choix de brancher la ligne de données de la bande sur le PA2 (pour un contrôle basé sur un timer) ou le PB2 pour un contrôle GPIO à changement de bit. Ce dernier cas est la solution la plus compatible pour l'instant, même si elle est loin d'être optimale.

Vous devrez souder à la fois le GND de votre carte mère et celui de l'alimentation électrique afin que cette dernière ne flotte plus.

Le câblage ressemblera alors à ceci :

Câblage de la bande LED

Attention cependant, les fils 5V et GND doivent être de gros fils, car ils font passer 2A. Utilisez donc au moins un fil AWG20 (c'est-à-dire 0,5 mm2). Ces fils ne bougent pas, donc il est possible de les souder et de les protéger dans un isolant thermorétractable.

Logiciel

Le bon fonctionnement de la ligne de données de la bande LED dépend de la capacité de votre microcontrôleur à générer des signaux avec le bon timing. Comme il existe de nombreux contrôleurs de LED sur le marché, Adafruit a écrit une bibliothèque qui fait l'abstraction des différences. Elle s'appelle [NeoPixel] (https://github.com/adafruit/Adafruit_NeoPixel) et elle est incluse dans Marlin.

Malheureusement, jusqu'au 4 février 2021, il n'était pas possible d'utiliser un STM32 pour piloter une telle bibliothèque, donc la fonction a été désactivée dans Marlin. Le principal problème était que les STM32 (et de nombreux autres processeurs ARM) ne généraient pas des durées correctes pour les bits hauts et bas, de sorte que les pixels ne comprenaient pas la bonne valeur de bit.

J'ai soumis une pull request pour corriger les mauvais délais et elle a été acceptée et fusionnée dans la branche bugfix-2.0.x.

Il apparaîtra dans la prochaine version de Marlin avec, espérons-le, un support complet pour les Neopixels. En attendant, vous pouvez aller chercher la branche "bugfix" et compiler votre firmware comme d'habitude et vous aurez un support complet pour Neopixels même sur un processeur STM32.

Une fois que vous aurez activé et configuré les broches de sortie (dans Configuration.h), vous pourrez soumettre des commandes aux bandes pour obtenir la couleur que vous voulez via le G-Code M150.

Par exemple, en envoyant M150 I0 P255 B0 R0 U255 vous obtiendrez : Pixels verts

La syntaxe est simple (dans la commande ci-dessus) :

  • Ix x est l'index de la LED à contrôler (sans le "I", vous pilotez toutes les LED de la même manière)
  • Px x est la luminosité à utiliser. Réglé sur 255 pour la pleine luminosité, 0 pour le noir
  • Rx x est la quantité de couleur rouge à utiliser (dans l'intervalle 0-255)
  • Ux x est la quantité de couleur verte à utiliser (dans l'intervalle 0-255)
  • Bx x est la quantité de couleur bleue à utiliser (dans la gamme 0-255)

Nouveautés attendues pour les nouvelles versions de Marlin

Si vous avez un écran MKS TFT35, comme celui de l'imprimante Sapphire Plus, alors ma PR devrait vous convenir.

Elle ajoute un écran de contrôle du bandeau de LED.

Résultat

Une fois monté sur l'imprimante, vous obtiendrez ceci:

Imprimante avec le bandeau

Le passage de câble peut être optimisé en réutilisant les piliers:

Passage des câbles

Avec les nouvelles versions de Marlin incluant mes changements, vous aurez ce menu:

Écran de contrôle du bandeau

Et vous contrôlerez votre imprimante directement:

Contrôle de l'imprimante

Article précédent Article suivant

Liens sponsorisés

Afin de m'aider à financer l'infrastructure de ce blog, je liste à la fin des billets les liens affiliés sur le matériel évoqué ci-dessus.

Articles en relation