Table des matières:
- Étape 1: Le circuit
- Étape 2: L'entraînement linéaire
- Étape 3: Le tambour
- Étape 4: Conseils de construction
- Étape 5: Algorithme de dessin au trait de Bresenham
- Étape 6: le code
- Étape 7: Menu
- Étape 8: Étalonnage
- Étape 9: Prétraitement du Gcode
- Étape 10: Résultats
- Étape 11: Mise à jour du code
- Étape 12: Drum_plotter_v3.ino
- Étape 13: Drum_plotter_plotter_v4.ino
Vidéo: Traceur à tambour CNC : 13 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Cette instructable décrit un traceur A4/A3 fabriqué à partir d'une section de tuyau en plastique, deux moteurs pas à pas BYJ-48 et un servo SG-90. Il s'agit essentiellement d'un traceur à plat enroulé dans un tambour.
Un moteur fait tourner le tambour tandis que l'autre déplace la tête d'impression. Le servo est utilisé pour élever et abaisser le stylo.
Ce traceur présente un certain nombre d'avantages par rapport à un traceur à plat traditionnel:
- empreinte nettement plus petite
- ne nécessite qu'un seul rail de guidage linéaire
- simple à construire
- pas cher
Un interpréteur embarqué accepte la sortie gcode d'Inkscape.
La communication avec le traceur se fait via une liaison bluetooth.
Le traceur est compatible avec la tablette graphique CNC décrite dans mon instructable
Bien qu'il ne s'agisse pas d'un instrument de précision, la précision de ce traceur est satisfaisante pour son objectif de transférer des contours à l'aquarelle sur du papier.
Étape 1: Le circuit
Le circuit comprend un microcontrôleur Arduino UNO R3 et un blindage personnalisé sur lequel sont montés les composants discrets. L'alimentation est appliquée via un régulateur externe 5 volts 1 ampère. Le courant moyen est d'environ 500mA.
Les moteurs pas à pas BYJ-48 sont connectés à PORTB (broches D8, D9, D10, D11) et PORTC (broches A0, A1, A2, A3). Le servo de levage du stylo SG-90 est fixé à la broche D3.
Les résistances de 560 ohms, qui peuvent être omises, fournissent une mesure de protection contre les courts-circuits à l'arduino en cas de problème. Ils facilitent également le câblage du blindage car ils agissent comme des "cavaliers" sur les rails d'alimentation.
Les résistances 1k2 et 2K2 évitent d'endommager le module bluetooth HC-06 [1] en réduisant la sortie 5 volts de l'arduino à 3,3 volts.
[1] Débranchez le module Bluetooth HC-06 lors du téléchargement du code sur l'arduino via le port USB. Cela évitera tout conflit de port série.
Étape 2: L'entraînement linéaire
L'entraînement linéaire est composé d'une longueur de barre d'aluminium de 3 mm x 32 mm, d'une bande de tôle d'aluminium et de quatre petites poulies à roulement à billes.
L'aluminium est disponible dans la plupart des quincailleries. Les poulies à rainure en U U624ZZ 4x13x7mm sont disponibles sur
Des outils à main simples sont tout ce dont vous avez besoin. Coupez la barre d'aluminium en fonction des dimensions de votre traceur.
L'ensemble moteur
Montez le moteur pas à pas BJY-48 à travers la barre à une extrémité et fixez une poulie GT2 20 dents, alésage 5 mm, à l'arbre du moteur. Montez maintenant une autre poulie GT2 à l'autre extrémité de votre barre de manière à ce que la poulie puisse tourner librement. J'ai utilisé une entretoise tubulaire (radio) de 5 mm de diamètre et un boulon de 3 mm pour y parvenir.
Enroulez maintenant une longueur de courroie de distribution GT2 autour des poulies. Joindre les extrémités de la courroie de distribution au moyen d'une demi-torsion de telle sorte que les dents s'entrelacent et se fixent avec un serre-câble.
Enfin, fixez l'ensemble chariot à la courroie de distribution à l'aide d'un serre-câble.
L'ensemble du chariot
L'ensemble chariot est constitué d'une bande de tôle d'aluminium [1] sur laquelle sont boulonnées les poulies U624ZZ. Si nécessaire utiliser une rondelle de 4 mm pour espacer les poulies de la tôle d'aluminium.
Les poulies, qui ont une rainure de 4 mm, chevauchent le haut et le bas de la barre en aluminium de sorte qu'il n'y ait pas de mouvement vertical, mais la bande en aluminium se déplace librement à gauche et à droite.
Pour s'assurer que le chariot tourne librement, montez d'abord les deux poulies supérieures puis, avec les poulies posées sur la barre, marquez les positions des deux poulies inférieures. Les trous pour ces deux poulies peuvent maintenant être percés. Utilisez d'abord un petit foret "pilote" pour éviter que le plus gros foret de 4 mm ne dérive.
Avant de plier la bande d'aluminium en un "U", percez un trou en haut et en bas en fonction du diamètre de votre stylo. Terminez maintenant les virages.
Fixez la courroie de distribution au chariot à l'aide d'un serre-câble et d'un boulon de 3 mm entre les deux poulies supérieures.
L'ensemble stylo-élévateur
Fixez un servo SG-90 au sommet du chariot à l'aide d'un ou deux serre-câbles.
Déposez votre stylo dans les deux trous que vous avez percés. Assurez-vous que le stylet glisse librement de haut en bas.
Attachez un "collier" à votre stylo de telle sorte que le stylo soit juste à l'écart du tambour lorsque le servo est en position de stylo vers le haut.
[1] L'aluminium peut être coupé en marquant les deux côtés de la feuille avec un couteau pointu (cutter) puis en fléchissant la coupe sur le bord d'une table. Quelques ondulations et la feuille se fracturera en laissant une cassure droite. Contrairement aux cisailles, cette méthode ne tord pas l'aluminium.
Étape 3: Le tambour
Le tambour est constitué d'un tronçon de tube plastique avec deux bouchons en bois [1].
Utilisez une boussole, réglée sur le rayon intérieur de votre tuyau, pour dessiner les contours du bouchon d'extrémité. Découpez maintenant le contour de chaque contour à l'aide d'une scie à lame fine ("chape", "fret") puis ajustez sur mesure chaque embout à l'aide d'une râpe à bois. Fixez les bouchons d'extrémité à l'aide de petites vis à bois fraisées.
Un boulon d'ingénierie de 6 mm traversant le centre de chaque bouchon d'extrémité forme l'essieu.
Dimensions du tambour
Les dimensions du tambour sont déterminées par le format de votre papier. Un diamètre de tambour de 100 mm prend en charge le format A4 portrait et A3 paysage. Un diamètre de tambour de 80 mm ne prend en charge que le format A4 paysage. Utilisez un diamètre de tambour aussi petit que possible pour réduire l'inertie… les moteurs BYJ-48 ne sont que petits.
Un diamètre de tambour de 90 mm est idéal pour le papier A4 portrait et A3 paysage car les bords opposés, lorsqu'ils sont enroulés autour du tambour, se chevauchent d'environ 10 mm, ce qui signifie que vous n'avez qu'une seule couture à coller en place.
Rotation du tambour
Chaque axe passe par un support d'extrémité en aluminium de sorte que le tambour puisse tourner librement. Le flottement d'extrémité est empêché au moyen d'une poulie GT-2, 20 dents, alésage 6 mm, fixée à l'axe à une extrémité. Une courroie de distribution continue GT-2 relie le moteur pas à pas à engrenages BJY-48 au tambour. Le moteur nécessite une poulie avec un alésage de 5 mm.
[1] Des bouchons d'extrémité en plastique sont disponibles pour la plupart des diamètres de tuyaux mais ont été rejetés car ils s'adaptent sur le tuyau plutôt qu'à l'intérieur et le plastique a tendance à fléchir. Ils seraient probablement acceptables si un essieu continu était utilisé à la place des boulons… mais vous avez alors besoin d'une méthode de fixation de l'essieu aux bouchons d'extrémité.
Étape 4: Conseils de construction
Assurez-vous que le stylo se déplace le long du centre du tambour. Ceci peut être réalisé en coupant les coins des supports en bois. Si le stylo est décentré, il aura tendance à glisser sur le côté du tambour.
Le perçage précis des deux trous du stylo est important. Toute oscillation dans le guide du stylet ou l'assemblage du chariot provoquera des oscillations le long de l'axe X.
Ne serrez pas trop les courroies de distribution GT-2… elles ont juste besoin d'être tendues. Les moteurs pas à pas BYJ-48 n'ont pas beaucoup de couple.
Les moteurs pas à pas BJY-48 présentent souvent de petites quantités de jeu qui sont insignifiantes le long de l'axe X, mais qui sont préoccupantes en ce qui concerne l'axe Y. La raison en est qu'une rotation du moteur de l'axe Y équivaut à une rotation du tambour, alors que le porte-stylo nécessite plusieurs tours du moteur de l'axe X pour parcourir la longueur du tambour. Tout jeu sur l'axe Y peut être éliminé en maintenant un couple constant sur le tambour. Une méthode simple consiste à attacher un petit poids à une corde en nylon enroulée autour du tambour.
Étape 5: Algorithme de dessin au trait de Bresenham
Ce traceur utilise une version optimisée [1] de l'algorithme de dessin au trait de Bresenham. Malheureusement, cet algorithme n'est valable que pour des pentes de ligne inférieures ou égales à 45 degrés (c'est-à-dire un octant de cercle).
Pour contourner cette limitation, je "mappe" toutes les entrées XY sur le premier "octant", puis je les "démapper" lorsqu'il est temps de tracer. Les fonctions de mappage d'entrée et de sortie pour y parvenir sont illustrées dans le diagramme ci-dessus.
Dérivation
Le reste de cette étape peut être omis si vous connaissez l'algorithme de Bresenham.
Traçons une ligne de (0, 0) à (x1, y1) où:
- x1=8=distance horizontale
- y1=6=distance verticale
L'équation d'une droite passant par l'origine (0, 0) est donnée par l'équation y=m*x où:
m=y1/x1=6/8=0.75=pente
Algorithme simple
Un algorithme simple pour tracer cette ligne est:
- entier x1=8;
- entier y1=6;
- flottant m=y1/x1;
- tracé (0, 0);
- pour (int x=1; x<=x1; x++) {
- int y=rond(m*x);
- tracer (x, y);
- }
Tableau 1: Algorithme simple
X | m | m*x | oui |
---|---|---|---|
0 | 0.75 | 0 | 0 |
1 | 0.75 | 0.75 | 1 |
2 | 0.75 | 1.5 | 2 |
3 | 0.75 | 2.25 | 2 |
4 | 0.75 | 3 | 3 |
5 | 0.75 | 3.75 | 4 |
6 | 0.75 | 4.5 | 5 |
7 | 0.75 | 5.25 | 5 |
8 | 0.75 | 6 | 6 |
Il y a deux problèmes avec cet algorithme simple:
- la boucle principale contient une multiplication qui est lente
- il utilise des nombres à virgule flottante qui est également lent
Un graphique de y en fonction de x pour cette ligne est présenté ci-dessus.
L'algorithme de Bresenham
Bresenham a introduit le concept d'un terme d'erreur « e » qui est initialisé à zéro. Il s'est rendu compte que les valeurs m*x indiquées dans le tableau 1 peuvent être obtenues en ajoutant successivement « m » à « e ». Il s'est en outre rendu compte que y n'est incrémenté que si la partie fractionnaire de m*x est supérieure à 0,5. Pour garder sa comparaison dans la plage 0<=0,5<=1, il soustrait 1 de 'e' chaque fois que y est incrémenté.
- entier x1=8;
- entier y1=6;
- flottant m=y1/x1;
- entier y=0;
- flotteur e=0;
- tracé (0, 0);
- pour (int x=1; x<=x1; x++) {
- e+= m;
- si (e>= 0,5) {
- e -= 1;
- y++;
- }
- tracer (x, y);
- }
Tableau 2: Algorithme de Bresenham
X | m | e | e-1 | oui |
---|---|---|---|---|
0 | 0.75 | 0 | 0 | 0 |
1 | 0.75 | 0.75 | -0.25 | 1 |
2 | 0.75 | 0.5 | -0.5 | 2 |
3 | 0.75 | 0.25 | 2 | |
4 | 0.75 | 1 | 0 | 3 |
5 | 0.75 | 0.75 | -0.25 | 4 |
6 | 0.75 | 0.5 | -0.5 | 5 |
7 | 0.75 | 0.25 | 5 | |
8 | 0.75 | 1 | 0 | 6 |
Si vous examinez l'algorithme et le tableau 2, vous constaterez cela;
- la boucle principale n'utilise que l'addition et la soustraction… il n'y a pas de multiplication
- le motif pour y est le même que pour le tableau 1.
Mais nous utilisons toujours des nombres à virgule flottante… corrigeons cela.
Algorithme (optimisé) de Bresenham
L'algorithme à virgule flottante de Bresenham peut être converti en une forme entière si nous mettons 'm' et 'e' à l'échelle de 2*x1 auquel cas m=(y1/x1)*2*x1=2*y1
Mis à part la mise à l'échelle 'm' et 'e', l'algorithme est similaire à celui ci-dessus sauf:
- nous ajoutons 2*y1 à 'e' chaque fois que nous incrémentons 'x"
- on incrémente y si e est égal ou supérieur à x1.
- on soustrait 2*x1 de 'e' au lieu de 1
- x1 est utilisé pour la comparaison au lieu de 0.5
La vitesse de l'algorithme peut être encore augmentée si la boucle utilise zéro pour le test. Pour ce faire, nous devons ajouter un décalage au terme d'erreur « e ».
- entier x1=8;
- entier y1=6;
- entier m=(y1<<1); //constante: pente mise à l'échelle de 2*x1
- entier E=(x1<<1); //constante: 2*x1 à utiliser en boucle
- entier e = -x1; //offset de -E/2: test maintenant fait à zéro
- tracé (0, 0);
- entier y=0;
- pour (x=1; x<=x1; x++) {
- e += m;
- si (e>=x1) {
- e -= E
- y++;
- }
- tracer (x, y);
- }
Tableau 3: Algorithme (optimisé) de Bresenham
X | m | E | e | e - E | oui |
---|---|---|---|---|---|
0 | 12 | 16 | -8 | 0 | |
1 | 12 | 16 | 4 | -12 | 1 |
2 | 12 | 16 | 0 | -16 | 2 |
3 | 12 | 16 | -4 | 2 | |
4 | 12 | 16 | 8 | -8 | 3 |
5 | 12 | 16 | 4 | -12 | 4 |
6 | 12 | 16 | 0 | -16 | 5 |
7 | 12 | 16 | -4 | 5 | |
8 | 12 | 16 | 8 | -8 | 6 |
Encore une fois, le modèle pour y est le même que dans les autres tableaux. Il est intéressant de noter que le tableau 3 ne contient que des entiers et que le rapport m/E=12/16=0,75 qui est la pente 'm' de la droite.
Cet algorithme est extrêmement rapide car la boucle principale n'implique que l'addition, la soustraction et une comparaison avec zéro. La multiplication n'est pas utilisée sauf lorsque nous initialisons les valeurs de 'E' et 'm' en utilisant un "décalage à gauche" pour doubler les valeurs de x1 et y1.
[1] Cette version optimisée de l'algorithme de Bresenham est tirée d'un article "Bresenham Line and Circle Drawing", copyright © 1994-2006, W Randolph Franklin (WRF). Son matériel peut être utilisé pour la recherche et l'éducation à but non lucratif, à condition que vous le créditiez et que vous renvoyiez à sa page d'accueil,
Étape 6: le code
Téléchargez le fichier joint dans un dossier du même nom, puis chargez-le sur le traceur à l'aide de votre IDE Arduino (environnement de développement intégré).
Débranchez le module bluetoorh HC-06 avant de tenter le téléchargement. Ceci est nécessaire pour éviter un conflit de port série avec le câble USB.
Code tiers
En plus du code.ino ci-dessus, vous aurez besoin des progiciels suivants qui sont gratuits / donation-ware:
- Teraterm qui est disponible sur
- Inkscape qui est disponible sur
Les instructions d'installation et d'utilisation de chacun des packages tiers ci-dessus se trouvent dans mon article
Étape 7: Menu
Établissez une connexion Bluetooth avec votre traceur en utilisant "Teraterm".
Activez votre "caps lock" car toutes les commandes sont en majuscules.
Tapez la lettre « M » et un menu devrait apparaître comme indiqué ci-dessus.
Le menu est assez explicite:
- M (ou M0) fait apparaître le menu
- G0 vous permet d'envoyer le stylo à une coordonnée XY spécifique avec le stylo relevé.
- G1 vous permet d'envoyer le stylo à une coordonnée XY spécifique avec le stylo abaissé.
- T1 vous permet de positionner votre stylo sur votre coordonnée 0, 0. Tapez « E » pour quitter.
- T2 vous permet de mettre votre dessin à l'échelle. Par exemple, "T2 S2.5" mettra votre dessin à l'échelle à 250%. L'échelle par défaut est 100 %
- T3 et T4 vous permettent de lever ou d'abaisser le stylo.
- T5 dessine un motif de test "ABC".
- T6 dessine une "cible".
- T7 dessine un ensemble de lignes radiales, dont le but est de vérifier que l'algorithme de Bresenham fonctionne dans chacun des huit "octants"
Remarques:
- tous les mouvements du stylo utilisent l'échelle de dessin définie à l'aide de l'option de menu T2
- les nombres « 17: » et « 19: » sont les codes de prise de contact du terminal « Xon » et « Xoff » de l’interpréteur arduino.
Étape 8: Étalonnage
Les valeurs pour X_STEPS_PER_MM et Y_STEPS_PER_MM sont pour un tambour de 90 mm de diamètre.
Les valeurs pour d'autres diamètres de tambour peuvent être calculées à l'aide des relations suivantes:
- la circonférence du tambour est PI*diamètre
- 2048 pas équivaut à un tour de chaque arbre moteur
- un tour d'une poulie GT-2 équivaut à un mouvement linéaire de 40 millimètres d'une courroie de distribution
Une autre méthode consiste à entrer les commandes suivantes,
- G1 X0 Y100
- G1 X100 Y100
puis mesurez la longueur des lignes résultantes et "redimensionnez" les valeurs pour X-STEPS_PER_MM et Y_STEPS_PER_MM
Étape 9: Prétraitement du Gcode
Ce traceur ne nécessite que quatre des gcodes d'Inkscape (à savoir: G0, G1, G2, G3). Le code s'exécutera beaucoup plus rapidement si nous supprimons tous les gcodes et commentaires inutiles.
Pour ce faire, vous avez besoin d'une copie de "Notepad++". Cet éditeur de texte gratuit contient un moteur de recherche « expression régulière » pour rechercher et supprimer du texte indésirable. Notepad++ est disponible sur
Ouvrez le fichier à modifier avec Notepad++ et positionnez votre curseur en haut du fichier.
Sélectionnez « Afficher/Afficher le symbole/Tous les caractères » suivi de « Rechercher/Remplacer… » dans la barre de menu supérieure.
Cliquez sur la case à cocher « Expression régulière » (voir la 1ère image) et entrez chacune des séquences de code suivantes dans la zone de recherche.
Cliquez sur « Remplacer tout » après chaque entrée:
- %
- (.*)
- ^M.*$
- Z.*$
Les expressions régulières ci-dessus suppriment tous les symboles %, tous les commentaires entre parenthèses, tous les codes M, tous les codes Z et les codes qui suivent.
Cliquez maintenant sur la case à cocher "Extension étendue" (voir 2ème image) et entrez la séquence de code suivante:
r\n\r\n\r\n
Cette expression supprime les retours chariot et les sauts de ligne indésirables créés par la première séquence.
Enregistrez votre fichier sous un nom différent en utilisant "Enregistrer sous".
Terminé.
Étape 10: Résultats
Ce traceur a été construit comme une « preuve de concept » et n'a jamais eu l'intention d'être parfait. Cela dit, les résultats ne sont pas trop mauvais. Ils répondent définitivement à mon objectif de conception de transférer des contours à l'aquarelle sur du papier.
Les trois premières images sont les motifs de test intégrés T5, T6, T7 respectivement.
Le "Bonjour le monde !" motif a été envoyé au traceur via Bluetooth. Une copie "pré-traitée" de ce fichier est jointe.
Étape 11: Mise à jour du code
Le code de ce traceur a été mis à jour vers Drum_Plotter_V2.ino.
Les changements par rapport au Drum_Plotter.ino d'origine incluent:
- positionnement plus fluide du stylet
- reconnaît maintenant les instructions gcode G02 (arcs dans le sens des aiguilles d'une montre)
- reconnaît maintenant les instructions gcode G03 (arcs dans le sens inverse des aiguilles d'une montre)
Le diagramme ci-joint décrit ma méthode de calcul de l'angle de l'arc.
Étape 12: Drum_plotter_v3.ino
Une mise à jour du code pour "CNC Drum Plotter" est jointe.
"drum_plotter_v3.ino" corrige un bug mineur qui affectait la précision du traceur.
Historique des modifications
Version 2:
Courbes bi-arc ajoutées
Version 3:
Les fonctions suivantes ont été réécrites pour corriger un bug mineur qui affectait la précision du traceur.
- (int) remplacé par round() dans la fonction move_to().
- algorithme de recherche "octant" de la fonction draw_line() amélioré
- L'interpréteur utilise désormais des fonctions de chaîne plutôt que des pointeurs, ce qui simplifie la conception. Par exemple, nous pouvons maintenant rechercher "MENU" plutôt que rechercher la lettre "M" puis extraire le nombre entier qui suit. Cela vous permet de personnaliser le traceur avec vos propres commandes.
Étape 13: Drum_plotter_plotter_v4.ino
16 janvier 2017:
Le code de ce traceur à tambour a été encore optimisé. Des fonctionnalités supplémentaires ont été ajoutées.
Les changements comprennent:
- algorithme draw_line() plus rapide
- correspondant à la fonction move_to()
- compteurs de pas
- correction de bug mineur
Pour plus de détails, lisez les commentaires dans "drum_plotter_v4.ino" ci-joint.
Cliquez ici pour voir mes autres instructables.
Conseillé:
TRACEUR DE BOUTEILLES ROTATIF CNC : 9 étapes (avec photos)
TRACEUR DE BOUTEILLE ROTATIF CNC : J'ai ramassé des rouleaux, qui sont probablement utilisés dans l'imprimante. J'ai eu l'idée de les transformer en axe de rotation du traceur de bouteilles CNC. Aujourd'hui, j'aimerais partager comment construire un traceur de bouteilles CNC à partir de ces rouleaux et d'autres chutes. Pour d
Traceur d'œufs basé sur Arduino : 17 étapes (avec photos)
Traceur d'oeufs basé sur Arduino : Un traceur d'oeufs est un robot d'art qui peut dessiner sur des objets de forme sphérique tels que des oeufs. Vous pouvez également utiliser cette machine pour dessiner sur des balles de ping-pong et des balles de golf. Vous pouvez utiliser votre imagination avec les dessins que vous mettez dessus, vous pourriez par exemple faire
Traceur de robot CNC : 11 étapes (avec photos)
Traceur de robot CNC : a.articles {taille de la police : 110,0 % ; font-weight : gras ; style de police : italique ; texte-décoration : aucun; background-color: red;} a.articles:hover {background-color: black;} Cette instructable décrit un traceur de robot contrôlé par CNC. Le robot comprend
Traceur CNC Arduino (MACHINE À DESSIN): 10 étapes (avec photos)
Traceur CNC Arduino (MACHINE À DESSIN) : Hé les gars ! J'espère que vous avez déjà apprécié mon précédent instructable "Comment créer votre propre plate-forme de formation Arduino" et vous êtes prêt pour un nouveau, comme d'habitude j'ai fait ce tutoriel pour vous guider pas à pas tout en faisant ce genre de super incroyable
Mini traceur CNC Arduino (avec projet Proteus et PCB): 3 étapes (avec photos)
Mini traceur CNC Arduino (avec projet Proteus et PCB): Ce mini traceur arduino CNC ou XY peut écrire et créer des conceptions dans la plage de 40x40 mm.Oui, cette plage est courte, mais c'est un bon début pour se lancer dans le monde arduino. [J'ai tout donné dans ce projet, même PCB, Proteus File, Example design a