Gérard a écrit :Hello tous,
Temps-X, il n'y a aucune chance que je participe, mon niveau en asm est du genre maternelle.
Non mais Lol quoi Gérard ! et moi alors mais c'est un excellent moyen de progresser, rien de tel que l'immersion forcée , allez viens avec nous.
Bon, à un moment il faut poser les choses:
Comme je l'ai dit je fais çà juste pour m'amuser à faire de la programmation pendant les longues soirées quand je suis sur mon chantier de rénovation loin du domicile familial, alors je ne vais pas construire une vraie cnc mais simplement un banc test 3 axes pour vérifier les routines.
Je pense partir sur une petite machine qui tiendrait sur le bureau sans trop géner, disons X=200mm, Y=200mm et Z=100mm. Les vis-mères en tige filetée M10/150. Pour les essais, la broche pourrait être remplacée par un crayon. Je pense mais çà peut changer que les vis-mères seront en tige filetée M10/150.
Je n'ai pas vraiment trouvé de doc sur la chose mais j'ai observé ce qu'il se passe sur une de mes machines en baissant la vitesse d'accélération au minimum pour y voir plus clair. Je dirai que l'accélération se passe sur environ 15mm, ensuite on prend le régime de croisière, puis vient la décélération sur à peu près 15mm.
Accélération+régime de croisière+ décélération= nbpas imposé par l'instruction gcode.
Un moteur pas à pas NEMA23 ou NEMA16 tel que ceux que j'utilise fait 200 pas par tours, 400 pas en demi-pas ce qui est le réglage le plus courant.
Donc on a dit M10/150 -->1,5mm par tour --> 1,5mm pour 200pas en pas entier --> 1,5mm pour 400pas en demi-pas.
Donc 4000pas pour faire les 15mm d'accélération. Mais 4000 pas çà ne tient pas dans un registre 8bits.
Soit je travaille en variables 16bits mais çà va alourdir le code et lire chaque fois l'octet de poids fort et l'octet de poids faible va pas mal compliquer les choses et au final ralentir l'éxécution des gcodes, soit je prend l'option de faire une accélération/décélération par trains de pulses. Cette seconde méthode me plait plus, avec deux variables 8bits, une pour le nb de pulses par train et une autre pour les différentes valeurs d'accélération je peux faire au max 255 paliers de 255 pulses, ce qui me donne 65025, on est large au dessus des 4000 nécessaires tout en restant en variables 8bits. Sur les captures d'écran on voit que je travaillais avec un pulse par incrément d'accélération, mais je pourrais très bien travailler avec plusieurs pulses par incrément d'accélération, par exemple faire un train de pulses pour la première valeur d'accélération, un autre train pour la deuxième valeur d'accélération, etc.
Comme on a dit plus haut qu'il fallait 4000 pas pour faire les 15mm je peux choisir par exemple 100 trains de 40 pulses, ou bien 200 trains de 20 pulses, ce qui me donne mon accel sur 15mm, pareil pour la décel. Pour résumer si je choisis le deuxième exemple çà fera au démarrage 40 pulses séparés chacun de 200 espaces, puis 40 pulses séparés chacun de 199 espaces, puis 40 pulses séparés chacun de 198 espaces, 40/197, 40/196, etc. etc. en décrémentant tous les 40 pulses jusqu'à arriver à avoir 1 seul espace entre les pulses, et on aura atteint le régime de croisière. On a bien notre accélération.
Je vais revoir mes routines pour qu'elles fonctionnent de cette manière.
En plus il faut tenir le compte en temps réel de la position de la broche dans l'espace de travail, donc 4000/15*10= environ 2666 pas pour 1cm, --> 533333 pour 200mm, trop pour une variable 8 ou 16bits, donc 32bits obligés. Il faudra donc 3 variables sur 32bits qui seront chacune incrémentées ou décrémentées en fonction des déplacements des 3 chariots sur leurs axes respectifs.
Le Gcode. Quand tout cela sera fait, dans un premier temps je commencerai par travailler sur un gcode simplifié, qui ne traite que les lignes horizontales et verticales, donc déplacements des axes X et Y séquentiellement. Pour graver du PCB c'est viable, on n'a pas besoin de tracer des arcs de cercles ou des pentes et çà simplifiera bien le travail.
Je pense avoir à peu près fait le tour pour les grandes lignes, d'avoir posé tout çà le truc parait déjà plus clair. Je ne sais pas si j'irai jusqu'au bout mais il y a déjà moyen de bien s'amuser .