questions firmware grbl pour stm32

  • Auteur de la discussion 01power
  • Date de début
01power
01power
Ouvrier
Salut a tous

mes questions sont lié au firmware, tout en bas du message

c'est pour ma graveuse laser, j'espère avoir posé au bon endroit

je place le contexte
il y a un certain temps j'ai acheter a un très bon prix un kit mks robin V1.2 qui intègre une puce stm32f103vet6 au départ car je l'ai trouver a un très prix raisonnable (25€ il me semble) avec : 5 driver tmc2209, écran tactile 3.5", puce wifi,
je me suis dis on verra pour un future projet (avantage pas besoins de créer une carte fille)
carte mks
mks robin nano.png


carte stm32
STM32-Blue-Pill-Development-Board-Pinout.jpg


sur le pin map pour grbl

sur son equivalent marlin pour la carte mks

dans grbl ils définissent le port et le pin séparément alors que dans marlin c'est directement le pin

mon problème est que sur la carte mks le X dir et le Y dir (et d'autres) ne sont pas sur le même port donc pas évident de replacer correctement l'attribution des pin GRBL pour la MKS

mes questions :

Pour quoi dans grbl ils utilise pas directement les pin ? (je sais on est pas dans la tête du codeur mais quelqu'un aurais une idée ?)
Et peut on faire en sorte de se passer de l'attribution des ports pour directement utiliser la définition du pin?
 
01power
01power
Ouvrier
petites précisions
le lien vers le code source grbl stm32 : https://github.com/MoonCactus/grbl-STM32F103
il y a aussi la carte MKS DLC (carte MKS pour usage CNC sur base de stm32f103c8t6, a peine plus large que le 328p mais en 32bit) mais je ne veux pas faire de nouveaux achats pour l'instant
 
coredump
coredump
Compagnon
GRBL attaque directement les périphériques stm32, alors que marlin utilise la couche d'adaptation arduino. Plus simple a comprendre mais moins performante.
 
01power
01power
Ouvrier
Salut merci pour cette réponse rapide
Donc a moins de retravailler entièrement le code de grbl je ne pourrais pas utiliser les assignations des pin de ma carte mks avec grbl

Donc il ne me reste que a prendre une carte stm32f103c8t6 ou un autre compatible et lui faire une interface pour s'adapter à mon shield cnc si je souhaite passer a du 32bit si je veux limiter mon investissement
 
coredump
coredump
Compagnon
Bien sûr que tu peux, il faut juste traduire l'assignement Arduino vers le nom du port et son numéro de pin. C'est pas sorcier mais demande de se pencher sur la documentation du microprocesseur.
 
coredump
coredump
Compagnon
Par exemple PE4 c'est la pin 4 du port GPIOE, ainsi de suite.
La limite de grbl c'est que les pins de step doivent être sur le même port GPIO.
 
S
speedjf37
Compagnon
#ifdef CPU_MAP_STM32F103

// Define step pulse output pins. NOTE: All step bit pins must be on the same port.
#define STEP_PORT GPIOA
#define RCC_STEP_PORT RCC_APB2Periph_GPIOA
#define X_STEP_BIT 0
#define Y_STEP_BIT 1
#define Z_STEP_BIT 2
#define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits


mon problème est que sur la carte mks le X dir et le Y dir (et d'autres) ne sont pas sur le même port donc pas évident de replacer correctement l'attribution des pin GRBL pour la MKS

Bonjour,

Effectivement ces 2 informations sont incompatibles et impose de fortement modifier le code en perdant la rapidité de commutation sur un seul port .

Edit: sur le site officiel il n'évoquent que Marlin

JF
 
Dernière édition:
01power
01power
Ouvrier
Par exemple PE4 c'est la pin 4 du port GPIOE, ainsi de suite.
La limite de grbl c'est que les pins de step doivent être sur le même port GPIO.
Ça je l'avais compris c'est pour ça que j'avais mis les photos et bouts de code pour bien clarifier la question

#ifdef CPU_MAP_STM32F103

// Define step pulse output pins. NOTE: All step bit pins must be on the same port.
#define STEP_PORT GPIOA
#define RCC_STEP_PORT RCC_APB2Periph_GPIOA
#define X_STEP_BIT 0
#define Y_STEP_BIT 1
#define Z_STEP_BIT 2
#define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits




Bonjour,

Effectivement ces 2 informations sont incompatibles et impose de fortement modifier le code en perdant la rapidité de commutation sur un seul port .

Edit: sur le site officiel il n'évoquent que Marlin

JF
C'est justement due à toutes les info collecté que j'ai poser la question

La perte doit être relativement faible pour l'avoir abandonné sur marlin et autres firmware 3d

Perso je ne me vois retravailler tout le firmware grbl pour changer la façon de faire

Je sais que grbl a été super optimisé pour rentrer sur un at328 et profiter des meilleur perf possible pour cette puce

Mais sur les puces 32bit on est bien plus libre sur les performances possibles
 
coredump
coredump
Compagnon
En lisant le code j'ai compris, c'est sur les DIR qu'il y a le soucis.
Techniquement le changement n'est pas énorme et ne touche qu'un fichier (stepper.c) pour les steps/dir, a voir pour le reste.
 
01power
01power
Ouvrier
Je vais verrifier mais il me semble qu'il y a un peu plus que ça, pour les fin de courses aussi de mémoire, et quelques autre elements

Si non j'aurais bien aimer trouver le code source mks de la carte mks robin (j'ai énormément chercher, le marlin est différent) que j'ai pour le comparer a celui de la mks dlc pour mettre la sortie laser et d'autres fonctions a la place de step et dir du 2 ème extrudeur
 
coredump
coredump
Compagnon
MKS n'est pas réputé pour son respect de l'opensource, tu risques fort de le chercher longtemps...
 
01power
01power
Ouvrier
Je ne leur ai pas demandé et j'ai pas de point de comparaison car j'ai pas chercher pour toutes leurs autres cartes ni comparer avec leur concurent qui de ce que j'ai lu ne fournissent pas le code source mais juste le firmware compiler
 
D
Doctor_itchy
Compagnon
yop , pour ta carte il faut un soft "3d printer" celui de repetier a l'avantage d’être configurable en "ligne" facilement puis une fois prêt tu down le firmware puis tu le programme avec l'ide arduino :)

il a aussi l'avantage d’être configurable en cnc fraisage , laser ou imprimante :)


le soft est aussi plus performant que marlin :wink:
 
D
Doctor_itchy
Compagnon
dans la configuration on peu choisir gravure laser :) , apres je ne l'ai pas tester , mais comme sa carte est adaptée pour une imprimante 3D le firmaware sera peu etre plus simple a configuré :wink:

sinon oui grbl va bien , avec lightburn c'est le top :)
 
01power
01power
Ouvrier
dans la configuration on peu choisir gravure laser :) , apres je ne l'ai pas tester , mais comme sa carte est adaptée pour une imprimante 3D le firmaware sera peu etre plus simple a configuré :wink:

sinon oui grbl va bien , avec lightburn c'est le top :)
Salut

J'ai essayé d'aller jusqu'au bout mais on ne peux pas modifier l'attribution des pin, car pour moi Je souhaite faire sortir le pwm pour le laser a la place d'un extrudeur
 
D
Doctor_itchy
Compagnon
si il faut changer le niveau de programmation ( au début et choisir "expert" )

cela dit votre laser c'est quoi ? car une diode laser a besoin d'un drivers spécifique pour fonctionner correctement et avec une durée de vie maximale , si diode en direct sur une sortie de puissance de la carte , durée de vie 3 seconde ....

si il y a un drivers intégrer dans le boitier de la diode MAIS qu'il n'y a que l'alim ( et donc controlé sont allumage/modulation par un gros mosfet comme vous voulez le faire , ça va fonctionner mais pas longtemps de plus le drivers ne s'allume pas rapidement , vous aurez une latence et donc votre gravure ne sera pas belle ! et avec le risque que le diode crame apres quelque heures de ce traitement non adapté ! )

pour etre safe coté durée de vie et avoir une bonne gravure je recommande un laser equipé d'un drivers AVEC pilotage PWM (donc une entrée +5/12V et une entrée "modulation" qui elle se pilote en 0/5Vttl depuis n'importe quelle sortie logique en direct du µcontroleur :) ) et ne pas utiliser le mosfet de puissance prévu pour la cartouche de chauffe :wink:

donc un drivers ttl AVEC modulation , soit séparé de la diode soit inclus dans le module de la diodes (y a du choix ! ) branché l'alim principale sur le 12V continus de l'alim de la machine et brancher un seul fil modulation sur une des sortie libre de la carte sans passer par la puissance :) (limite une sortie optocouplée si il y en a une )
 
D
Doctor_itchy
Compagnon
et si vraiment tu veut du "sur mesure" tu ne choisi pas de carte mais tu choisi le mode tout en bas dans la liste des carte et tu prend le dernier avec userpin.h , mais tu devras editer le fichier userpin.h par apres pour définir tes besoin :wink:

le truc cool avec ce site c'est que la configuration est simplifiée pour les fonction complexe :) , bien sur apres tu peu modifier le code avec l'ide arduino a ta guise si avec la préconfiguration ça ne suffit pas :wink:

ce firmware fonctionne mieux que marlin et grbl (gestion moteur plus fluide , ect ect )
 
01power
01power
Ouvrier
et si vraiment tu veut du "sur mesure" tu ne choisi pas de carte mais tu choisi le mode tout en bas dans la liste des carte et tu prend le dernier avec userpin.h , mais tu devras editer le fichier userpin.h par apres pour définir tes besoin :wink:

le truc cool avec ce site c'est que la configuration est simplifiée pour les fonction complexe :) , bien sur apres tu peu modifier le code avec l'ide arduino a ta guise si avec la préconfiguration ça ne suffit pas :wink:

ce firmware fonctionne mieux que marlin et grbl (gestion moteur plus fluide , ect ect )
Je vais regarder pour ce userpin.h, je ne l'avais pas vu

Mon laser a sa propre alimentation, il a juste besoins su signal TTL, je me suis trompé quand j'ai écris pwm, même si il accepte aussi le pwm
 
D
Doctor_itchy
Compagnon
oki , donc tu doit brancher le signal TTL sur la sortie prévue pour (mais pas sur la sortie mosfet car tu est en 12V et le ttl c'est 5V tu va flingué l'entrée du drivers ! ) tu peu mesuré le signal en entrée du mosfet sur son gate ça devrais etre du 5V ttl pwm (il faut un oscillo au testeur tu auras quelque chose comme 4.5/4.8V dc avec le pwm a 100% ) si c'est dans ses eau la tu peu soudé le fil du signal ttl du drivers directement sur la pin gate du mosfet :) (et si tu hesite tu pose un optocoupleur par exemple :) )
 
01power
01power
Ouvrier
Salut

@Doctor_itchy
Je crois que tu as besoins d'un peu de repos, tu as mal interpreté ce que j'écris et ce que je souhaite

Je souhaite modifier le userpin.h (que je n'avais pas vue quand je cherchais pour ma carte, et que j'ai pas eu le temps de chercher depuis que tu me l'as nommer hier)
La configuration de pin out d'origine me fais utiliser les commandes M106/M108 pour piloter le laser, mais ça sort sur la sortie fan de la carte qui est en pwm 12v
Je souhaite le modifier pour ne pas utilisé la sortie fan, je veux utiliser les sortie step et dir (sorties ttl) qui sont a l'origine pour l'extrudeur E1 pour piloter le driver de mon laser et utiliser les fonctions M6/M8 pour activer l'extraction de fumée de mon caisson laser

Pour toute la partie cablage carte d'interface et autre t'inquiète pas si tu lis mes autres sujet tu saura que je sais ce que je fais
 
D
Doctor_itchy
Compagnon
oki , donc oui il faut juste modifié le userpin pour changer cela :)
 

Sujets similaires

01power
Réponses
3
Affichages
8 907
01power
01power
S
Réponses
10
Affichages
326
sweex59
S
D
Réponses
9
Affichages
1 548
David80
D
taratata
Réponses
4
Affichages
1 904
taratata
taratata
jpbbricole
Réponses
18
Affichages
3 539
jpbbricole
jpbbricole
B
Réponses
0
Affichages
1 550
basilic
B
J
Réponses
14
Affichages
6 476
jejeaudio
J
Haut