FORUMAMONTRES › Forums › Forum de discussions sur les montres vintages et sujets techniques › fabrication d’une fraiseuse cnc home made
- Ce sujet contient 249 réponses, 16 participants et a été mis à jour pour la dernière fois par
Torzio, le il y a 1 année et 10 mois.
-
AuteurMessages
-
27 août 2024 à 9h54 #420004925997
Cadrature
MembreBonjour JC
Merci de ne pas copier-coller des résultats de prompts IA. Nous pouvons le faire nous même, et puis
l’IA répète parfois des choses erronées comme ici.
Je répète qu’un microcontrôleur est suffisant pour avoir tout ce qui est nécessaire ici.
Je fais avec des microcontrôleurs des mécanismes complexes avec chauffage régulé, moteurs régulés, moteurs pap, interface tactile,
lecteurs SD, etc.
RasberryPi, que je connais bien, permet d’aller plus loin, par exemple faire un serveur web de la machine, ou héberger des programmes complexes,
mais ici, ça me semble inutile. RaspberryPi peut faire tourner aussi LinuxCNC; c’est une bonne alternative à la mienne, mais un peu plus couteuse.
Dans la solution que je propose et qui est archi-classique, une communication UART se fait entre deux
microcontrôleurs: l’un déchiffre le Code G, l’autre le produit. C’est simple et les programmes sont séparés. On gère n’importe quelle machine ainsi.
Comme dit Vir, on peut faire communiquer avec un ordi pour n’avoir que la partie réceptrice du G-code. Ce n’est pas incompatible avec
une interface de commande (pour faire bouger la machine par exemple).
C’est simple, peu coûteux et surtout ça existe déjà.
Le programme en Basic me parait difficile à maintenir, à faire évoluer et à interfacer avec des bibliothèques récentes. Le mieux est de reprendre en C++
dans les règles à mon avis.@Vir,
C’est quoi la partie électronique/informatique de votre projet ?
Vous utilisez GRBL ? Marlin ?
Autre ?Cadrature
27 août 2024 à 10h38 #420004925998Torzio
Membre- Cadrature a écrit:
- Bonjour JC
Merci de ne pas copier-coller des résultats de prompts IA. Nous pouvons le faire nous même, et puis
l’IA répète parfois des choses erronées comme ici.
Je répète qu’un microcontrôleur est suffisant pour avoir tout ce qui est nécessaire ici.
Je fais avec des microcontrôleurs des mécanismes complexes avec chauffage régulé, moteurs régulés, moteurs pap, interface tactile,
lecteurs SD, etc.
RasberryPi, que je connais bien, permet d’aller plus loin, par exemple faire un serveur web de la machine, ou héberger des programmes complexes,
mais ici, ça me semble inutile. RaspberryPi peut faire tourner aussi LinuxCNC; c’est une bonne alternative à la mienne, mais un peu plus couteuse.
Dans la solution que je propose et qui est archi-classique, une communication UART se fait entre deux
microcontrôleurs: l’un déchiffre le Code G, l’autre le produit. C’est simple et les programmes sont séparés. On gère n’importe quelle machine ainsi.
Comme dit Vir, on peut faire communiquer avec un ordi pour n’avoir que la partie réceptrice du G-code. Ce n’est pas incompatible avec
une interface de commande (pour faire bouger la machine par exemple).
C’est simple, peu coûteux et surtout ça existe déjà.
Le programme en Basic me parait difficile à maintenir, à faire évoluer et à interfacer avec des bibliothèques récentes. Le mieux est de reprendre en C++
dans les règles à mon avis.Cadrature
Merci Cadrature pour votre sympathique réponse dont je vais m’empresser de ne pas tenir compte, je n’ai d’ordre à recevoir que de moi même, désolé. L’IA va devenir incontournable, ce qui est grave c’est de ne pas indiquer que c’est de l’IA. Lorsque j’ai réalisé mon premier diviseur, il y a plus de 20 ans, ni Arduino, ni Raspberry existaient. J’ai réalisé l’interface avec un PIC 16F84, programmé avec un émulateur Basic. Cette façon de faire m’a permis de sauver de nombreux garde temps, par exemple :
Il y en a d’autres sur ma chaîne YouTube.
Nous sommes sur ce forum pour échanger des idées, plus il y en aura de différentes, plus le lecteur aura le choix. Contrairement à certains, je n’impose rien, je montre ce que je fais et comment je le fais et les résultats, sans obliger personne à faire comme moi. Maintenant, si quelqu’un me fait un beau totu pour m’aider à faire très simplement une méthode pour piloter mon diviseur avec Arduino, je suis preneur ! J’ai BAC moins 5, mais je comprends vite, si on m’explique longtemps !
Pour info, j’ai un ami, grand spécialiste en Arduino, m’a fait un sketch pour mon diviseur, c’est un peu plus compliqué à gérer que mon système avec un vieux PC et une interface à PIC.Mais chacun fait comme il veut, nous sommes encore en république, à la bonne heure !
@+
JC27 août 2024 à 10h48 #420004925999Arno
Membre- Cadrature a écrit:
- Bonjour JC
Merci de ne pas copier-coller des résultats de prompts IA. Nous pouvons le faire nous même, et puis
l’IA répète parfois des choses erronées comme ici.
Alors la réponse qui claque dans les dents, c’est comment ??
Comment, mais comment oses tu t’immiscer dans le domaine de Monsieur ?
N’as tu point honte ?
Pxtain, parfois il y a du lourd, du super lourd …
__________________________________
« Je ne sais pas comment sera la troisième guerre mondiale, mais ce dont je suis sûr, c´est que la quatrième guerre mondiale se résoudra à coups de bâtons et de silex » A. Einstein27 août 2024 à 12h16 #420004926000Cadrature
MembreJC, voici un tuto simple. Il peut servir à ceux qui font des fraiseuses comme Vir
– électronique: arduino mega + ramps 1,6. Ceci permet de commander au plus 5 axes PAP, un moteur DC pour la fraiseuse
et d’avoir des pins analogiques ou digitaux dispos pour les fins de course et autres gadgets (ventilateurs, lampes, boutons, capteurs, etc)– informatique: télécharger GRBL (https://github.com/fra589/grbl-Mega-5X)
– configurer le programme selon les spécifications de la machine
Comme ça, pas besoin de savoir l’informatique et pas une ligne de codage à faire si on reste dans les choses basiques !
Ce machin pourra se connecter à un vieux PC pour recevoir du code G.
@+
Cadrature27 août 2024 à 13h13 #420004926001Torzio
MembrePour remettre l’église au milieu de village et son horloge à l’heure, je tiens à préciser que je n’ai rien contre le Gcode, mais c’est du volapuk, pour moi. Si, comme Vir, je souhaitais faire une fraiseuse 3D à CN, je pense que je m’y mettrais, que ce serait certainement la meilleure solution.
Toutefois, ma « fraiseuse » à CN est avant tout un diviseur. Sur ma machine, je donne simplement le nombre de dents, ( par exemple 71 ) il y a en mémoire les données pour diviser de 2 à 100 ( mais je peux en mettre plus). J’engage la fraise et je lance le cycle, en appuyant sur « o » et je vais vaquer à d’autres occupations. Plus simple tu meurs ! Je ne pense pas que dans ma situation, le Gcode serait un plus. Ma machine à tailler fonctionne parfaitement depuis plus de 20 ans et je la connais parfaitement. Je peux aussi facilement tailler des cames ou des chaperons. Ici une roue de compte taillée avec ma première machine réalisée avec un tour Lorch et une table croisée Proxxon 70, au début de ce siècle, avant Arduino : http://sulka.fr/rcompte/
Je suis très fier de ce bricolage qui rivalise avec un Schaublin à plusieurs dizaines de milliers d’€uros, avec les accessoires, pour tailler les engrenages.@+
JC27 août 2024 à 13h35 #420004926002Cadrature
MembreG-Code c’est juste des commandes pour faire marcher les machines. C’est très
répandu et partagé. Ce n’est absolument pas incompatible avec le type d’interface
que vous voulez, y compris pour un diviseur (qui est une sorte de fraiseuse 4 axes).Je passe maintenant coté de celui qui émet le G-Code, cela donne:
Électronique: Un BigTreeTech TFT35 qui se branchera au Ramps via un port UART.
Écran tactile, bouton encodeur (pour régler) et un buzzer qui fait bip bip.Informatique: télécharger https://github.com/bigtreetech/BIGTREETECH-TFT35-V3.0
– Faire quelques images avec un logiciel de DAO pour avoir des icônes correspondant à une machine à diviser plutôt qu’à une imprimante 3D.
– Coder quelques fichiers pour faire un diviseur (nombre de dents, caractéristiques de la roue ou du pignon, etc). Il faut savoir écrire un peu de C++, mais c’est à la portée d’un collégien avec les fichiers existants.Avec ce montage, le BigTreeTech envoie du G-Code à l’Arduino pour fixer X, Y, Z, A et pour lancer la fraiseuse.
On peut même ajouter une pompe à lubrifiant.
Il reçoit les codes des limiteurs de course et autres capteurs.C’est ce que je ferais de plus simple et de moins couteux actuellement si je devais faire l’électronique d’un diviseur CNC from scratch.
Cadrature
27 août 2024 à 13h43 #420004926003Torzio
MembreMerci pour ces intéressantes infos, que je vais étudier.
Petite question : si je comprends bien, le G-code se fait à partir d’un dessin DXF ou un fichier 3D ?@+
JC27 août 2024 à 14h23 #420004926004Cadrature
MembrePas directement.
Certains logiciels de CAO produisent du G-Code à partir de dessins 3D pour les imprimante ou les fraiseuses ou les tours.
C’est le cas des « slicers » comme Cura qui réalisent les tranches à imprimer pour imprimantes 3D. Une imprimante 3D reçoit minimalement du G-Code et rien d’autre via une communication ou une carte SD ou une clef USB.
Cura (ou autre) produit les fichiers « G-Code » à partir d’images 3D.Un fichier G-code ressemble à ça :
- Code:
-
M140 S60
M105
M190 S60
M104 S200
M105
M109 S200
M82 ;absolute extrusion mode
G28 ; home all axes
M117 Purge extruder
G92 E0 ; reset extruder
G1 Z1.0 F3000 ; move z up little to prevent scratching of surface
G1 X2 Y20 Z0.3 F5000.0 ; move to start-line position
G1 X2 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line
G1 X2 Y200.0 Z0.4 F5000.0 ; move to side a little
G1 X2 Y20 Z0.4 F1500.0 E30 ; draw 2nd line
G92 E0 ; reset extruder
G1 Z1.0 F3000 ; move z up little to prevent scratching of surface
G92 E0
G92 E0
G1 F1500 E-2
;LAYER_COUNT:100
;LAYER:0
M107
G1 F300 Z0.4
G0 F6000 X114.901 Y114.249 Z0.4
;TYPE:SKIRT
G1 F300 Z0.2
G1 F1500 E0
G1 F1200 X116.129 Y113.084 E0.06193
G1 X117.382 Y111.974 E0.12317
G1 X118.691 Y110.886 E0.18545
G1 X120.013 Y109.863 E0.2466
G1 X121.367 Y108.888 E0.30765
…
Chaque ligne commence par un code suivi d’éléments de réglage
par exemple- Code:
-
G1 F1200 X116.129 Y113.084 E0.06193
qui veut dire: Mouvement linéaire contrôlé (G1) de 1200mm/min déplacement XY à 116,129mm x 113,084, avance de l’extrudeur de 0,06193mm.
On peut par exemple créer pour un diviseur un truc du genre:
- Code:
-
…
;Déplacement rapide X de 10 mm
G0 X10;Déplacement rapide Z de 10 mm
G0 Z10; Déplacement A de 1/32 de tour (≈ 11.25°)
G0 A11.25;Mise en route moteur / broche
M3 S10000 ; M3 = broche CW, S10000 = vitesse; Déplacement lent Z de -10 mm
G1 Z-10 F500; Déplacement lent X de -10 mm
G1 X-10 F500
…
Vir m’apprend que Fusion 360 produit du G-Code pour fraiseuse.
Il est vrai qu’il y a du boulot pour réaliser un programme BigTreeTech qui produit du G-Code pour un diviseur très complet.
Je l’ai fait pour réaliser une machine à laver les montres, c’était un peu long.
Il y a peut-être des choses existantes pour les diviseurs, pour gagner du temps, je ne sais pas.Cadrature
27 août 2024 à 17h10 #420004926005Torzio
MembreMerci pour la réponse Cadrature,
C’est bien ce que je pensais et c’est sûrement pour cela que j’ai fait le choix de piloter mon diviseur en Basic, il y a plus de 20 ans.
Je reste donc persuadé que c’est la solution la plus simple, pour un diviseur numérique.
J’ai une imprimante résine 3D Elegoo, pour la fabrication de bijoux, mais tout est transparent. Je rentre mon fichier STL slicé sur un clé USB et l’imprimante fait le travail. Pour info, je suis nul en CAO ! Je travaille avec des prestataires étrangers qui pratiquent des prix défiants toutes concurrences avec une qualité au top, dans un délai de 48 heures !Maintenant, pour Vir, il est possible que le G-RBL soit incontournable. Mais ça risque de devenir compliqué pour le taillage d’engrenages, il va certainement falloir qu’il devienne expert en G-RBL !
Ou, pour faire simple, il adopte ma solution !
Avec mon système, pas besoin de fichier DXF ou 3D, j’ai juste à renseigner le nombre de dents souhaité !@+
JC27 août 2024 à 17h26 #420004926006Cadrature
MembreJe vois que Vir avait répondu sur le type d’électronique qu’il envisage, et j’avais oublié:
- Vir a écrit:
- Concernant la modélisation et écriture du G code, j’utiliserai fusion 360.
Oui j’utiliserai une arduino uno et cnc shield.Logiciel ide arduino pour programmer la carte
Programme Grbl.
Cncjs pour piloter la cnc.
@Vir:
Un conseil: remplacez le logiciel IDE Arduino par Visual Studio Code (avec PratformIO). Le code sera plus simple à écrire et à maintenir. Il y a 1000 tutos sur le net pour expliquer ça. Le mieux à mon avis est celui d’un prof de techno qui explique bien ces trucs: Eric Peronnin (Débuter en C++ avec Arduino).Pour le G-code d’une machine à tailler, il n’y a rien à faire sinon de considérer que c’est comme une fraiseuse 4 axes ; trois linéaires: XYZ, un rotatif: A.
Programmer le code pour les spécifications d’une roue ou d’un pignon ne pose pas de problème particulier.Cadrature
27 août 2024 à 17h32 #420004926007Torzio
Membre- Cadrature a écrit:
- Pour le G-code d’une machine à tailler, il n’y a rien à faire sinon de considérer que c’est comme une fraiseuse 4 axes ; trois linéaires: XYZ, un rotatif: A.
Cadrature
Certes, mais il faut faire un fichier 3D, lalalère !
Moi, pas besoin !@+
JC27 août 2024 à 17h36 #420004926008Cadrature
Membrenon non il y a confusion. G-Code n’a rien à voir avec un fichier 3D.
@+
Désolé Vir
27 août 2024 à 17h38 #420004926009Torzio
MembreJ’avais cru comprendre que le G-code était généré à partir d’un fichier 3D.
J’ai faux ?27 août 2024 à 18h44 #420004926010Cadrature
MembreJe développe car ça intéresse aussi la fraiseuse de Vir 😉
C’est faux si on pense que c’est systématique. Il est possible de générer du code G avec des outils de CAO, comme veut faire Vir
pour sa machine, mais ce n’est pas toujours le cas.
En mécatronique ou autres machins qui n’ont rien à voir avec une image, on peut aussi utiliser du G-Code.G-code c’est un langage ultra-simple pour commander une machine électromécanique quelle qu’elle soit. Pour la
robotique c’est insuffisant, mais pour une machine CNC c’est bien.L’intérêt de ce langage pour la machine de Vir, c’est qu’il n’a rien à faire en informatique car les logiciels qui produisent du G-code
et ceux qui le lisent existent déjà.Dans le cas qui vous intéresse, c’est moins sûr, mais le logiciel qui traite le G-Code existe déjà, ça simplifie un peu le process.
Disons que l’intérêt de G-Code est de bien séparer deux choses et de faire une communication asynchrone via un fichier ou réseau
entre deux machines séparées qui font ces deux choses:a) La conception de l’impression 3D par dépôt, la gravure 2D, le fraisage multi-axes, les spécifications d’une roue à tailler, etc.
Matériel: Un ordi, une interface de commande, etc.b) Le fonctionnement d’une fraiseuse, d’une imprimante 3D, d’un graveur laser, d’une machine à tailler les roues, etc.
Matériel: un microcontrôleur, des dispositifs électroniques et mécaniques.Dans le cas de Vir, a) est confié à un logiciel de CAO (Fusion 360) qui contient la fabrication en fraisage, b) est confié à GRBL.
Désolé si j’ai été un peu long…
@Vir: On remplit bien ton post !
@+
Cadrature27 août 2024 à 20h51 #420004926011Torzio
MembreJ’ai demandé à l’IA de me concocter du G-CODE pour ma machine à tailler, Cadrature va être content, je cite la réponse :
————Début de la réponse IA (Gemini)
Pour tailler un engrenage de 11 dents avec ton diviseur, chaque rotation du moteur de la broche doit être de 3436,36 pas. Pour éviter les erreurs d’arrondi dans le G-Code, la meilleure approche est d’utiliser une incrémentation de position ou une boucle qui assure que la position totale de 37800 pas est atteinte en 11 étapes.Calcul de l’incrément
Le calcul est basé sur le rapport de ton diviseur :
Increˊment=1137800≈3436,3636
Ceci représente le nombre de pas que ton moteur PAP doit faire pour indexer chaque dent. Cependant, comme le G-Code ne gère pas les valeurs décimales, il faut ruser pour que la machine effectue 11 rotations complètes qui correspondent à 1 tour de 37800 pas.G-Code pour 11 dents
Voici un exemple de G-Code pour un contrôleur CNC standard. Cet exemple utilise une variable pour accumuler les pas et garantir une précision sur le long terme. On suppose que ton diviseur est sur l’axe A.
G-Code
(Programme de taillage d’engrenage – 11 dents)
(Axe diviseur = A)
(Nombre de dents = 11)
(Pas total pour un tour = 37800)
G21 (Unités en mm)
G90 (Coordonnées absolues)
G00 A0. (Position de départ)
M03 S2000 (Démarrage de la broche à 2000 tr/min)
M08 (Démarrage de l’arrosage)
(Définition des variables)
#1=0. (Variable pour le nombre de dents taillées)
#2=3436.3636 (Nombre de pas par dent)
#3=0. (Variable pour le pas cumulé)(Boucle de taillage)
N100 (Début de la boucle)
#1=#1+1 (Incrémente le compteur de dents)(Calcul de la position de la prochaine dent)
#3=#3+#2 (Ajoute le nombre de pas à la position cumulée)(Rotation vers la position calculée)
G00 A#3 (Mouvement du diviseur)(Mouvement de coupe – à insérer ici)
(Exemple de G-Code pour une coupe)
G01 Z-5. F100. (Avance de l’outil de -5 mm)
G00 Z5. (Remontée de l’outil)IF [#1 EQ 11] GOTO 200 (Si 11 dents ont été taillées, aller à la fin)
GOTO 100 (Retour au début de la boucle pour la prochaine dent)N200 (Fin du programme)
M05 (Arrêt de la broche)
M09 (Arrêt de l’arrosage)
G00 A0. (Retour à la position de départ)
M30 (Fin du programme)
Pourquoi cette méthode est la meilleure ?
La méthode ci-dessus évite l’erreur d’arrondi cumulée. Si tu avais un G-Code qui incrémentait de 3436 pas à chaque tour, le résultat final après 11 tours serait de 11times3436=37796 pas. Il manquerait 4 pas pour compléter un tour exact, ce qui provoquerait une erreur sur l’alignement de la dernière dent.
En utilisant une variable qui accumule la valeur exacte (même si la machine ne peut bouger que des pas entiers), le contrôleur calculera la position finale de manière plus précise. Le contrôleur déplacera le moteur de 3436 pas, puis 3436, puis 3436, etc. puis le dernier déplacement sera de 37800−(10times3436,3636)approx3436,3636. Cette méthode garantit que le dernier mouvement indexera la pièce précisément à 37800 pas, c’est-à-dire à 0 degré.
———Fin de la réponse IACe n’est pas très simple, à mon goût ! Le truc que j’ai bricolé en Basic, il y a 20 ans ,est beaucoup plus simple, AMHA. Dans le dossier qui contient le programme Basic, il y a 99 fichiers pour les nombres de dents de 2 à 100. Voici ce que contient le fichier D11, pour tailler 11 dents :
3437
3436
3437
3436
3436
3437
3436
3436
3437
3436
3436Lorsque je lance mon programme, le PC me demande combien de dents ? Si je répond 11, il va chercher le fichier D11, il me demande ensuite la profondeur de pénétration de la fraise, et l’avance, pour les roues épaisses, comme un barillet de pendule, je tape ensuite sur O (oui) pour continuer et je vais faire autre chose.
Pourquoi faire simple quand on peut faire compliqué?
Mais chacun fait comme il veut, nous sommes encore en république. Avec Arduino, je pense pas que cela soit possible simplement.L’esprit horloger d’autrefois était de faire des grandes choses avec peu de moyens, l’inventivité était le but. Un excellent de H. Belmont, créateur des montres Yéma, a fait un excellent livre sur la montre à cylindre où on ressent cet esprit horloger. Aujourd’hui, avec les moyens modernes, les choses ont changées, ce qui compte, ce sont les marges !
@+
JC -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.