Table des matières:

Le distributeur robotique de filaments pour Arduino : 8 étapes (avec photos)
Le distributeur robotique de filaments pour Arduino : 8 étapes (avec photos)

Vidéo: Le distributeur robotique de filaments pour Arduino : 8 étapes (avec photos)

Vidéo: Le distributeur robotique de filaments pour Arduino : 8 étapes (avec photos)
Vidéo: DIY YEUX ANIMATRONIQUE avec mon matériel d'aéromodélisme !! 👀 #diy #animatronics 2024, Juillet
Anonim
Image
Image

Pourquoi un outil motorisé

Le filament des imprimantes 3D - généralement presque robuste - est tiré par l'extrudeuse tandis que le rouleau est placé à proximité de l'imprimante, libre de tourner. J'ai observé des différences significatives dans le comportement du matériau en fonction du niveau d'utilisation, par rapport aux rouleaux de filaments de 1 kg. Une nouvelle bobine de filament (pleine) coule presque bien mais la force appliquée par l'extrudeur doit être relativement pertinente: le poids est d'au moins 1,5 Kg.

Le moteur de l'extrudeuse (dans la plupart des cas, un moteur pas à pas Nema17) a une puissance suffisante pour faire le travail, mais les deux engrenages de l'extrudeuse poussant le filament vers le côté chaud tout en travaillant collectent les particules du filament en raison des forces appliquées; cela nécessite un entretien fréquent de l'extrudeuse pour éviter le colmatage de la buse. Ces particules ont tendance à se détacher et à se mélanger avec le filament propre pendant son alimentation, ce qui augmente les problèmes de buse et une usure plus fréquente de la buse; cela se produit plus fréquemment avec des buses de 0,3 mm de diamètre.

Lorsque le rouleau de filament est à moitié utilisé ou plus, ses spirales deviennent plus petites et dans certaines conditions environnementales, le filament a tendance à se casser trop fréquemment. Les longs travaux d'impression deviennent moins fiables et stressants; Je ne peux pas laisser l'imprimante fonctionner toute une nuit sans la contrôler. Ainsi, le contrôle de l'alimentation du filament par des figures motrices résout une série de problèmes.

Le kit est disponible sur Tindie.com

Étape 1: Le contenu du kit

Le contenu du kit
Le contenu du kit
Le contenu du kit
Le contenu du kit

Le kit comprend toutes les pièces imprimées en 3D et la mécanique pour assembler le distributeur de filament motorisé. Il y a à la place deux parties optionnelles: le moteur et la carte contrôleur de moteur.

Dans ma configuration, j'ai utilisé un moteur à balais à engrenages McLennan 12 V, mais tout moteur à engrenages de 37 mm de diamètre peut s'adapter correctement à l'intérieur du support du moteur.

Les meilleures performances sont atteintes avec un shield Arduino TLE94112LE d'Infineon (revue complète ici); cette carte contrôleur de moteur à courant continu peut prendre en charge jusqu'à 6 kits de distributeurs robotiques différents en même temps.

J'ai testé l'ensemble du système sur un Arduino UNO R3 et le kit de démarrage XMC1100 de la carte compatible Arduino d'Infineon et le système a très bien réagi avec les deux cartes microcontrôleur.

L'utilisation du blindage TLE94112LE est suggérée mais pas indispensable. N'importe quel contrôleur de moteur à courant continu pour Arduino - y compris votre propre projet ! - peut bien fonctionner avec cet outil

Le kit est divisé en deux ensembles de composants car deux parties sont conçues pour fonctionner ensemble. La plate-forme de base, supportera le rouleau de filament tournant sur les quatre roulements de roue libre. La base est fixée au capteur de poids pour contrôler le mécanisme de rotation déclenchant son activation ainsi que pour surveiller les conditions du filament: poids, mètres et pourcentage. De nombreuses informations ainsi qu'un jeu de commandes complet sont accessibles depuis l'Arduino via un terminal série.

Outils dont vous avez besoin

Pour compléter l'assemblage, vous avez besoin de colle plastique robuste pour certaines pièces, d'un tournevis et d'un jeu de vis Allen.

Étape 2: Le projet et la conception

Le projet et la conception
Le projet et la conception
Le projet et la conception
Le projet et la conception
Le projet et la conception
Le projet et la conception

Ce projet est la troisième évolution de la série de distributeurs de filaments pour imprimante 3D Il y a quelques temps, j'ai créé la base rotative pour optimiser le flux du filament lorsqu'il est tiré par l'extrudeuse de l'imprimante 3D.

Le deuxième modèle comprenait un capteur de poids pour surveiller en temps réel l'utilisation du filament avec une carte Arduino. Ce dernier projet comprend la libération automatisée du filament en fonction des besoins du travail d'impression 3D. Il est basé sur la variation de poids virtuelle lorsque l'extrudeuse commence à tirer le filament. Cet événement déclenche le microcontrôleur via le capteur de poids et le rouleau de filament motorisé commence à libérer quelques centimètres de matériau, puis décélère et s'arrête.

Les composants ont été exportés au format STL et imprimés en 3D, puis affinés et assemblés. J'ai créé un support personnalisé pour aligner la pièce de mouvement sur la base. Le rail en aluminium plus long a également été utilisé pour supporter l'Arduino et le blindage du moteur afin de rendre l'ensemble de l'outil compact et facile à déplacer.

En créant le design, j'ai suivi une série d'hypothèses:

  • Rendre le moteur automatisé presque simple et facile à reproduire
  • Réduisez au maximum le nombre de composants non imprimables en 3D pour le fabriquer
  • Réduisez autant que possible la contrainte appliquée à l'extrudeuse lors de l'impression
  • Utilisez une carte microcontrôleur à faible coût et facile à programmer
  • Utilisez le capteur de charge de poids pour garder sous contrôle la consommation de filament et l'alimentation du filament Gérer le bruit environnemental interférant avec les mesures de poids du filament

C'est le résultat que j'ai atteint.

Étape 3: Assemblage de la base

Assemblage de la base
Assemblage de la base
Assemblage de la base
Assemblage de la base
Assemblage de la base
Assemblage de la base

La première étape consiste à assembler la base avec le capteur de poids.

  1. Insérez le petit tube d'axe de roulement dans le trou de roulement
  2. Placer les deux disques séparateurs sur les côtés du roulement
  3. Introduire les composants à l'intérieur du support de roulement de taille "U" en alignant les trous
  4. insérez la vis Allen d'un côté et la rondelle et l'écrou de l'autre côté en fermant l'écrou sans trop d'effort

Vous devez répéter l'opération sur les quatre supports de roulement. Testez ensuite le montage: les roulements doivent tourner librement.

Fixez maintenant avec les vis Allen les quatre supports de palier sur la base supérieure avec les quatre trous de régulation. Alignez les supports de roulement pour les garder parallèles. Réglez la distance en fonction de la largeur de vos rouleaux de filament.

L'étape suivante consiste à assembler la barre du capteur de poids qui maintient ensemble les bases inférieure et supérieure. Le capteur de poids a deux vis Allen différentes des deux côtés et vous devez l'orienter de sorte que l'étiquette de poids maximum soit lisible lorsque la base est correctement positionnée. La base inférieure a deux trous latéraux supplémentaires pour fixer l'amplificateur A/N du capteur de poids. L'amplificateur basé sur le circuit intégré HX711 sera alimenté et connecté à la carte Arduino via les quatre fils, comme indiqué dans la fiche technique du capteur ci-jointe.

La dernière étape consiste à assembler la base supérieure complète sur le capteur de poids déjà fixé à la partie inférieure.

Le premier composant a été installé !

Étape 4: Assemblage des pièces du moteur Spool Motion

Assemblage des pièces du moteur Spool Motion
Assemblage des pièces du moteur Spool Motion
Assemblage des pièces du moteur Spool Motion
Assemblage des pièces du moteur Spool Motion
Assemblage des pièces du moteur Spool Motion
Assemblage des pièces du moteur Spool Motion

La procédure la plus simple pour assembler le moteur de mouvement de bobine consiste à assembler séparément les quatre composants les plus importants, puis à terminer la construction finale:

Le motoréducteur à courant continu dans la boîte de transmission du moteur

Le moteur à courant continu doit être monté dans la partie centrale du support de structure; avant de visser le moteur, vous devez décider quel sera votre côté préféré où mettre les engrenages pour aligner correctement les deux bras qui maintiennent le moteur et le grand engrenage entraîné.

Le grand engrenage entraîné

Le grand pignon doit être vissé avec le bloc tronconique avec les quatre vis Allen. Cet engrenage sera bloqué sur l'axe de rotation par des écrous; la partie conique tiendra la bobine de filament qui est verrouillée de l'autre côté par des contre-écrous similaires à l'intérieur d'un autre bloc conique tronqué. Cette solution maintient non seulement le mécanisme de déplacement en place, mais dirige tout le poids vers la base et c'est la tare du système.

Le support de verrouillage de bobine

Il s'agit du bloc conique tronqué qui, avec le côté de verrouillage similaire de l'engrenage mené, maintiendra le mécanisme de mouvement sur la bobine de filament. En termes de tact, c'est le rouleau de filament qui complète le bâtiment tandis que le support de mouvement à deux bras est libre de se déplacer de l'autre côté.

Comme le montrent les images, le support de verrouillage de bobine est construit en deux parties. Insérez d'abord l'écrou M4 dans la plus grosse partie du bloc puis collez la deuxième partie (le couvercle) en maintenant les blocs ensemble. L'écrou reste emprisonné à l'intérieur du support de serrure qui sera vissé sur l'axe entraîné fileté.

La boite à roulements

La boîte de roulement a deux fonctions: accorder un bon support aux engrenages de transmission et un mouvement doux et silencieux. Pour assembler la boîte de roulement, suivez ces étapes simples:

  1. Visser le premier écrou M4 à l'une des deux extrémités de l'axe entraîné du porte-bobine fileté
  2. Insérer le premier roulement
  3. Insérer le séparateur
  4. Insérer le deuxième roulement
  5. Visser le deuxième écrou et le bloquer modérément. Le séparateur en plastique interne opposera une force suffisante pour maintenir les choses en place également pour une utilisation à long terme.
  6. Insérez les roulements assemblés dans la boîte de roulement. Cela devrait être fait de force pour obtenir les meilleurs résultats afin de ne pas trop dilater l'intérieur de la boîte lors du raffinage des pièces en plastique.

Nous sommes prêts pour l'assemblage final des composants !

Étape 5: Terminer l'assemblage du moteur de mouvement

Terminer l'assemblage du moteur de mouvement
Terminer l'assemblage du moteur de mouvement
Terminer l'assemblage du moteur de mouvement
Terminer l'assemblage du moteur de mouvement
Terminer l'assemblage du moteur de mouvement
Terminer l'assemblage du moteur de mouvement

Nous sommes sur le point de terminer l'assemblage de la structure, puis nous pouvons passer à l'essai de mouvement. Maintenant, vous avez encore besoin d'un peu de colle. La boîte de roulement - assemblée à l'étape précédente - doit être insérée dans le trou du support de boîte du support moteur à deux bras et éventuellement collée avant de visser le couvercle de boîte.

Attention: ne pas coller le couvercle de la boîte, seulement le visser. Le couvercle est important pour la protection contre la poussière et doit être amovible pour toute opération de maintenance future.

Lorsque cette configuration est terminée avant d'ajouter le pignon mené (le plus gros) ajoutez le petit anneau séparateur: il maintient le grand pignon aligné avec le pignon moteur agissant comme une rondelle pour fixer l'ensemble mobile mené.

Insérez ensuite le pignon d'entraînement (le petit) dans l'arbre du moteur. Notez qu'il y a un côté plat dans le moteur ainsi que dans le trou central de l'engrenage pour maintenir l'engrenage en rotation entraîné par le moteur à courant continu.

Dernière étape, insérez le grand pignon mené comme indiqué sur les images et verrouillez-le sur l'axe fileté avec deux écrous M4.

Le bâtiment de la mécanique est terminé !

Étape 6: Bonus: Comment j'ai personnalisé le support pour gérer le kit

Bonus: Comment j'ai personnalisé le support pour gérer le kit
Bonus: Comment j'ai personnalisé le support pour gérer le kit
Bonus: Comment j'ai personnalisé le support pour gérer le kit
Bonus: Comment j'ai personnalisé le support pour gérer le kit
Bonus: Comment j'ai personnalisé le support pour gérer le kit
Bonus: Comment j'ai personnalisé le support pour gérer le kit

Pour maintenir le kit en place, j'ai réalisé une structure très simple basée sur deux tubes carrés en aluminium pour supporter à la fois la base et la structure de mouvement. La base a été fixée avec quatre vis aux deux rails (environ 25 cm de longueur) et avec quelques petits supports imprimés en 3D, j'ai fixé le moteur de mouvement librement pour faciliter l'insertion et le retrait du rouleau de filament.

Chacun peut choisir sa propre solution en fonction de l'organisation de son établi.

Étape 7: Câblage et connexion à Arduino

Image
Image
Câblage et connexion à Arduino
Câblage et connexion à Arduino

Comme expliqué dans l'étape de contenu du kit, j'ai utilisé un blindage de moteur à courant continu Infineon TLE94112LE pour Arduino et testé le moteur sur Arduino UNO R3 et le kit de démarrage Infineon XMC110.

Si vous contrôlez le moteur (besoin de fonctionnalités PWM) avec une carte contrôleur DC de votre choix, adaptez simplement les instructions aux spécifications techniques de votre shield.

Une note sur le bouclier Arduino TLE04112LE

L'une des limites que j'ai rencontrées avec d'autres blindages de contrôle de moteur pour Arduino est qu'ils utilisent les fonctionnalités du même microcontrôleur (c'est-à-dire les broches PWM et GPIO); cela signifie que votre carte devient dédiée à ces tâches alors que seules quelques autres ressources (MPU et GPIO) sont disponibles pour d'autres usages.

Ayant la possibilité de mettre la main sur le blindage Arduino TLE94122LE pour les tests sur route, l'avantage le plus évident du circuit intégré sur lequel la carte est basée est simplement son exhaustivité. La carte Arduino communique avec le shield via le protocole SPI en utilisant seulement deux broches. Chaque commande que vous envoyez au shield est traitée de manière autonome par le circuit intégré TLE94112LE sans consommer de ressources MPU. Une autre caractéristique remarquable de la carte Infineon est la possibilité de contrôler jusqu'à six moteurs à balais avec trois canaux PWM programmables. Cela signifie qu'Arduino peut configurer un ou plusieurs moteurs, les démarrer et continuer à travailler sur d'autres tâches. Ce shield s'est révélé parfait pour supporter jusqu'à six rouleaux de filaments différents en même temps. Le mouvement n'est que l'une des tâches confiées au MPU. Considérant la possibilité de gérer six bobines de filament différentes avec un seul Arduino + le blindage du microcontrôleur a un impact sur les coûts sur chaque contrôleur de filament pour moins de 5 euros.

Le capteur de poids

Après avoir fait quelques expériences, j'ai vu qu'il était possible de contrôler l'ensemble du système - surveillance et alimentation automatique - avec un seul capteur; une cellule de charge (capteur de poids) est capable de mesurer dynamiquement les variations de poids de la bobine de filament en fournissant toutes les informations dont nous avons besoin.

J'ai utilisé une cellule de charge bon marché dans la plage de 0 à 5 kg avec une petite carte basée sur l'amplificateur HX711 AD, un circuit intégré spécifique pour gérer les capteurs des cellules de charge. Il n'y avait pas de problèmes d'interfaçage car il existe une bibliothèque Arduino qui fonctionne bien.

Trois étapes pour configurer le matériel

  1. Insérez le blindage au-dessus de la carte Arduino ou du kit de démarrage Infineon XMC110
  2. Connecter les fils du moteur aux connecteurs à vis Out1 et Out2 du blindage
  3. Connectez l'alimentation et les signaux de l'amplificateur de capteur de poids HX711 AD aux broches Arduino. Dans ce cas, j'ai utilisé les broches 2 et 3 mais toutes les broches libres vont bien.

Attention: les broches 8 et 10 sont réservées par le shield TLE94113LE pour la connexion SPI

C'est tout! Prêt à installer le logiciel ? Vas-y.

Étape 8: le jeu de commandes de logiciel et de contrôle

L'ensemble de commandes de logiciel et de contrôle
L'ensemble de commandes de logiciel et de contrôle
L'ensemble de commandes de logiciel et de contrôle
L'ensemble de commandes de logiciel et de contrôle
L'ensemble de commandes de logiciel et de contrôle
L'ensemble de commandes de logiciel et de contrôle
L'ensemble de commandes de logiciel et de contrôle
L'ensemble de commandes de logiciel et de contrôle

Le logiciel complet documenté peut être téléchargé à partir du référentiel GitHub 3DPrinterFilamentDispenserAndMonitor

ici, nous ne considérons que les parties les plus significatives et les commandes de contrôle.

Il y a une raison imposée par le nombre de broches disponibles sur l'Arduino UNO J'ai décidé de contrôler le système via le terminal série USB; Comme chaque unité motorisée est basée sur un capteur de poids, le contrôle de six distributeurs de filaments différents nécessite la lecture des données de six capteurs de poids. Chaque cellule de charge « consomme » deux broches, les broches 0 et 1 sont réservées (Tx/Rx) pour la série et les broches 8 et 10 sont réservées au canal SPI reliant le blindage TLE94112LE.

État du système

Le logiciel de contrôle fonctionne à travers quatre états différents, définis dans filament.h:

#define SYS_READY "Prêt" // Système prêt

#define SYS_RUN "Running" // Filament en cours d'utilisation #define SYS_LOAD "Load" // Rouleau chargé #define SYS_STARTED "Started" // Application démarrée // Codes d'état #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Statut: Commencé

Cet état se produit après une réinitialisation matérielle ou lorsque le système est sous tension. La mise sous tension (et l'appel setup() lorsque l'esquisse démarre) initialise les valeurs internes par défaut et doit être démarré sans poids supplémentaire sur la plate-forme dans le cadre de la séquence d'initialisation est l'acquisition de la tare absolue pour atteindre le poids zéro physique.

Statut: Prêt

L'état prêt se produit après une réinitialisation logicielle (envoyée depuis le terminal série). Elle est similaire à la résection physique mais aucune tare n'est calculée; la commande de réinitialisation peut également être lancée lorsque le système est en cours d'exécution.

Statut: Charger

L'état de chargement se produit lorsque la commande de chargement est envoyée par le terminal. Cela signifie que le rouleau de filament a été chargé et que la tare dynamique a été calculée. Le poids exact du filament est obtenu par le type de configuration du rouleau en soustrayant le poids de l'unité motrice et du rouleau vide.

Statut: En cours d'exécution

Ce statut active le calcul automatique du poids et le distributeur automatique de filament.

Messages terminaux

La version actuelle du logiciel renvoie des messages lisibles par l'homme au terminal en fonction des commandes. Les messages de chaîne sont définis dans deux fichiers d'en-tête: commandes.h (messages et réponses liés aux commandes) et filament.h (chaînes utilisées par l'analyseur pour créer des messages composés).

Commandes

Deux fichiers différents sont impliqués dans la gestion des commandes: commandes.h comprenant toutes les commandes et paramètres associés et filament.h comprenant toutes les constantes et définitions utilisées par le système de pondération et par l'analyseur.

Alors que les calculs internes sont effectués automatiquement par un logiciel, j'ai implémenté une série de commandes pour définir le comportement du système et contrôler manuellement certains paramètres.

Les mots-clés de commande sont sensibles à la casse et doivent simplement être envoyés depuis le terminal. Si une commande n'est pas appropriée pour l'état actuel, elle n'est pas reconnue, un message de commande erroné est renvoyé, sinon la commande est exécutée.

Commandes d'état

Modifiez l'état actuel du système et le comportement est également adapté

Commandes de filament

En utilisant des commandes séparées, il est possible de configurer les caractéristiques du filament et du rouleau en fonction du poids et des tailles les plus courants actuellement disponibles sur le marché

Commandes d'unités

Il s'agit de quelques commandes permettant de définir la visualisation des unités de mesure en grammes ou en centimètres. En effet, il est possible d'éliminer ces commandes et de toujours représenter les données dans les deux unités.

Commandes d'informations

Afficher des groupes d'informations en fonction de l'état du système

Commandes moteur

Contrôlez le moteur pour l'alimentation ou la traction du filament.

Toutes les commandes du moteur suivent une trajectoire d'accélération/décélération. Les deux commandes feed et pull exécute une courte séquence telle que définie dans motor.h par la constante FEED_EXTRUDER_DELAY tandis que les commandes feedc et pullc s'exécutent indéfiniment jusqu'à ce qu'une commande d'arrêt ne soit pas reçue.

Commandes de mode d'exécution

L'état de fonctionnement accepte deux modes; en mode man il suffit de lire périodiquement le poids et le moteur se déplace jusqu'à ce qu'une commande de contrôle moteur ne soit pas envoyée. Le mode auto exécute à la place deux commandes d'alimentation lorsque l'extrudeuse a besoin de plus de filament.

Le principe est basé sur les relevés de poids, contextualisés à cet environnement particulier. Nous nous attendons à ce que la consommation de filament soit relativement lente, les imprimantes 3D sont presque lentes et les oscillations de poids normales dépendent de la vibration de l'environnement (mieux si vous ne mettez pas tout le matériel sur l'imprimante 3D)

Lorsque l'extrudeuse tire le filament à la place, la différence de poids augmente considérablement (50 g ou plus) en très peu de temps, généralement entre deux ou trois lectures. Ces informations sont filtrées par le logiciel qui « déduit » qu'un nouveau filament est nécessaire. Pour éviter des lectures erronées, les variations de poids pendant que le moteur tourne sont ignorées du tout.

Logique d'application

La logique de l'application est distribuée dans le.ino main (le sketch Arduino) le long de trois fonctions: setup(), loop() et parseCommand(commandString)

L'esquisse utilise deux classes distinctes: la classe FilamentWeight pour gérer tous les calculs de filament et la lecture du capteur via le HX711 IC et la classe MotorControl interfaçant les méthodes de bas niveau du shield TLE94112LE Arduino.

mettre en place()

Lancé une fois à la mise sous tension ou après une réinitialisation matérielle, initialisez les instances des classes, configurez le matériel et la communication du terminal.

boucle()

La fonction boucle principale gère trois conditions différentes.

Bien qu'il existe deux classes de capteur de poids et de moteurs relativement complexes, il y a l'avantage que le croquis résultant est vraiment facile à comprendre et à gérer.

  1. Vérifiez (en mode auto) si l'extrudeuse a besoin de plus de filament
  2. Si le moteur tourne, vérifiez les erreurs matérielles (renvoyées par le TLE94112LE)
  3. Si des données série sont disponibles, analysez la commande

parseCommand(chaîne de commandes)

La fonction d'analyse vérifie les chaînes provenant de la série et lorsqu'une commande est reconnue, elle est immédiatement traitée.

Chaque commande agit comme une machine à états ayant un impact sur certains paramètres du système; suivant cette logique toutes les commandes sont réduites à trois actions séquentielles:

  1. Envoyer une commande à la classe FilamentWeight (commandes de poids) ou à la classe MotorControl (commandes de moteur)
  2. Exécute un calcul pour mettre à jour les valeurs de poids ou mettre à jour l'un des paramètres internes
  3. Affichage sur le terminal et sortie d'informations lorsque l'exécution est terminée

Installez la bibliothèque Arduino HX711, téléchargez le logiciel depuis GitHub et téléchargez-le sur votre carte Arduino, puis profitez-en !

Conseillé: