Alternative à GRBL comme Interpréteur de GCode pour arduino mega + Ramp 1.4
Posté : mer. févr. 21, 2018 7:29 pm
J'ai repris aujourd'hui le développement d'un programme similaire à GRBL mais spécialement orienté pour une machine de découpe au fil chaud (4 axes, vitesse constante, chauffe réglable) (alors que GRBL est plus orienté CNC).
Ce programme est beaucoup plus simple que GRBL car il ne gère pas les accélérations.
Je ne pense pas que cela soit un problème pour une machine à fil chaud avec des nema 17 car la vitesse atteinte sans accélération est largement suffisante.
Par contre, cela a comme avantage d'avoir une vitesse du fil plus constante et ce même si les points sont plus rapprochés les uns des autres.
Ce programme a aussi pour avantage de ne pas nécessité de carte intermédiaire entre l'arduino et la ramp. On peut directement enficher la ramp dans l'arduino car le programme permet de choisir librement les pins utilisées pour commander les moteurs.
La configuration actuelle dans le programme a été choisie pour être compatible avec celle utilisée par Aeroden.
De par sa simplicité (relative), ce programme peut facilement être adapté par d'autres personnes.
Le programme a été prévu pour gérer (en option) des fins de course et permettre facilement un retour automatique à une position de référence.
Si les fins de course MIN sont utilisés, le principe est le suivant: On lance une commande avec de grands déplacements. Les moteurs se mettent en route.
Indépendamment les uns des autres, chaque moteur cesse de fonctionner dès que le fin de course correspondant à son axe est activé. Donc les 4 moteurs retournent à leur position de référence.
Même si un fin de course est activé, on peut envoyer (et faire exécuter) des commandes de déplacement dans la direction opposée.
On peut donc lancer une découpe immédiatement après un retour à la position de référence.
La chauffe est gérée de sorte que les commandes de changement de chauffe sont exécutées non pas immédiatement (comme GRBL) mais en respectant leur position par rapport aux commandes de déplacement.
Je n'ai pas de machine actuellement pour tester le programme.
Si certains d'entre vous veulent le tester, je peux fournir le code et donner quelques explications supplémentaires.
A noter que de nombreuses améliorations sont encore possibles:
- permettre d'utiliser des inters pour par exemple arrêter la chauffe, la forcer au max (nettoyage du fil)
- paramétrer les sens de rotation des moteurs, la position des fins de course MIN
- mémoriser une vitesse pour les commandes G0 (déplacement rapide)
- supporter des commandes permettant de modifier les paramètres de la machine (nbr de pas, micropas, mm/tour, ...) et pouvoir les sauver en eeprom
- supporter des fins de course MAX (qui provoquerait l'arrêt de la machine)
- gérer des fins de courses logicielles (lorsque les fins de course matérielles ne sont pas implémentées)
- ....
Ce programme est beaucoup plus simple que GRBL car il ne gère pas les accélérations.
Je ne pense pas que cela soit un problème pour une machine à fil chaud avec des nema 17 car la vitesse atteinte sans accélération est largement suffisante.
Par contre, cela a comme avantage d'avoir une vitesse du fil plus constante et ce même si les points sont plus rapprochés les uns des autres.
Ce programme a aussi pour avantage de ne pas nécessité de carte intermédiaire entre l'arduino et la ramp. On peut directement enficher la ramp dans l'arduino car le programme permet de choisir librement les pins utilisées pour commander les moteurs.
La configuration actuelle dans le programme a été choisie pour être compatible avec celle utilisée par Aeroden.
De par sa simplicité (relative), ce programme peut facilement être adapté par d'autres personnes.
Le programme a été prévu pour gérer (en option) des fins de course et permettre facilement un retour automatique à une position de référence.
Si les fins de course MIN sont utilisés, le principe est le suivant: On lance une commande avec de grands déplacements. Les moteurs se mettent en route.
Indépendamment les uns des autres, chaque moteur cesse de fonctionner dès que le fin de course correspondant à son axe est activé. Donc les 4 moteurs retournent à leur position de référence.
Même si un fin de course est activé, on peut envoyer (et faire exécuter) des commandes de déplacement dans la direction opposée.
On peut donc lancer une découpe immédiatement après un retour à la position de référence.
La chauffe est gérée de sorte que les commandes de changement de chauffe sont exécutées non pas immédiatement (comme GRBL) mais en respectant leur position par rapport aux commandes de déplacement.
Je n'ai pas de machine actuellement pour tester le programme.
Si certains d'entre vous veulent le tester, je peux fournir le code et donner quelques explications supplémentaires.
A noter que de nombreuses améliorations sont encore possibles:
- permettre d'utiliser des inters pour par exemple arrêter la chauffe, la forcer au max (nettoyage du fil)
- paramétrer les sens de rotation des moteurs, la position des fins de course MIN
- mémoriser une vitesse pour les commandes G0 (déplacement rapide)
- supporter des commandes permettant de modifier les paramètres de la machine (nbr de pas, micropas, mm/tour, ...) et pouvoir les sauver en eeprom
- supporter des fins de course MAX (qui provoquerait l'arrêt de la machine)
- gérer des fins de courses logicielles (lorsque les fins de course matérielles ne sont pas implémentées)
- ....