Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
Soft de commande CNC en asm
je viens de tomber sur cette page qui m'a bien plue. Peut-être intéressera-t-elle aussi. C'est sérieux (IREM = institut de recherche sur l'enseignement des mathématiques) et facile à lire. C'est vrai que c'est pour un écran, mais je veux bien t'adapter l'algorithme de la page 16 pour l'adapter à la situation qui nous intéresse. Note que je n'ai pas du tout l'idée de te faire changer ton programme, c'est juste culturel et ça illustre bien le fait qu'il est préférable de distinguer les cas >45° ou <45°
Dans ma non-culture sur les moteurs pas à pas, pour lui faire faire un pas, on lui envoie une impulsion, dont la durée est certainement fonction du type de moteur et de sa charge. L'intervalle entre deux impulsions règle la vitesse de rotation du moteur, avec un minimum fonction du type de moteur et de sa charge. Sauf erreur, le "driver" n'est qu'un pont en H chargé de déterminer le sens de rotation.
Avec ce fonctionnement, si j'envoie simultanément une impulsion à deux moteurs, ils tournent en même temps. C'est, je crois ce que disais temps-x et ce que j'essayais de détailler dans mon post #406
Détrompe moi s'il te plait si je me plante, et, si tu as un lien sur un document décrivant ce fonctionnement, je suis preneur, merci
Dans ma non-culture sur les moteurs pas à pas, pour lui faire faire un pas, on lui envoie une impulsion, dont la durée est certainement fonction du type de moteur et de sa charge. L'intervalle entre deux impulsions règle la vitesse de rotation du moteur, avec un minimum fonction du type de moteur et de sa charge. Sauf erreur, le "driver" n'est qu'un pont en H chargé de déterminer le sens de rotation.
Avec ce fonctionnement, si j'envoie simultanément une impulsion à deux moteurs, ils tournent en même temps. C'est, je crois ce que disais temps-x et ce que j'essayais de détailler dans mon post #406
Détrompe moi s'il te plait si je me plante, et, si tu as un lien sur un document décrivant ce fonctionnement, je suis preneur, merci
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1417
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Re,
Je connaissais l'algo de Bresenham, il est plutôt utilisé pour le dessin, il sert plus à lisser une droite pentue pour avoir un bon rendu visuel qu'à avoir quelque chose de précis, c'est pour cela que je ne l'ai pas utilisé.
Le gars qui a pondu l'article explique au début qu'il y a trois méthodes pour tracer une pente, il a oublié de dire qu'on peut aussi le faire par les maths soit avec la fonction de calcul de pente y=ax+b, soit par la Trigonométrie, c'est cette dernière méthode que j'ai utilisée en faisant un calcul de tangente pour chaque déplacement.
Tu peux effectivement faire fonctionner un moteur pap avec deux ponts en H mais il est plus utilisé pour les moteurs à courant continu. Pas très pratique d'utiliser deux simples ponts en H pour commander un pap car il faudrait "allumer" ses 4 entrées (donc 4 pins utilisées) suivant la table de vérité pour le faire tourner dans un sens ou un autre, (voir ici par exemple), c 'était le cas des L293 et L298 qui regroupaient un double pont en H. On pouvait les commander soit en pilotant directement leurs 4 entrées suivant la table de vérité, soit en les interfaçant avec un L297 qui faisait le travail à notre place (voir ici).
Les drivers modernes n'ont plus besoin de tout çà et il n'y a plus que 2 pins utilisées par moteur, une pin pour les impulsions de pas et une pin pour le sens de rotation, c'est le cas par exemple des TB6560 et TB6600HG actuels. Bien sur il y en a d'autres, pratiquement tous les fondeurs ont sorti un chip pour driver les moteurs, je ne parle ici que de ceux que j'ai utilisés et qui sont les plus courants.
Non, une impulsion=1 pas, quelque soit sa durée. Tu veux faire 30pas, tu envoies 30 pulses. Si tu fais varier la durée de l'impulsion tu feras juste varier la vitesse de rotation, c'est ce que j'explique au post précédent.
Tu as raison, on peut parfaitement mettre deux moteurs pap, voir trois sur un seul PIC, c'est d'ailleurs ce que j'ai fais, la machine est basée sur un seul 18F4525 qui gère tout. En branchant les trois moteurs sur un même port on pourrait les faire tourner ensembles en envoyant un mot binaire sur le port, je n'y avais pas pensé . Mais à mon avis çà n'aurait pas amené grand chose de plus et plus compliqué à mettre au point. Le gcode envoie les infos une par une, X, ensuite Y et enfin Z, à chaque réception de donnée on fait bouger l'axe en question, c'est plus simple et plus pratique à gérer en cas de bug (et il y en a eu ) lors de la mise au point.
Je connaissais l'algo de Bresenham, il est plutôt utilisé pour le dessin, il sert plus à lisser une droite pentue pour avoir un bon rendu visuel qu'à avoir quelque chose de précis, c'est pour cela que je ne l'ai pas utilisé.
Le gars qui a pondu l'article explique au début qu'il y a trois méthodes pour tracer une pente, il a oublié de dire qu'on peut aussi le faire par les maths soit avec la fonction de calcul de pente y=ax+b, soit par la Trigonométrie, c'est cette dernière méthode que j'ai utilisée en faisant un calcul de tangente pour chaque déplacement.
Tu peux effectivement faire fonctionner un moteur pap avec deux ponts en H mais il est plus utilisé pour les moteurs à courant continu. Pas très pratique d'utiliser deux simples ponts en H pour commander un pap car il faudrait "allumer" ses 4 entrées (donc 4 pins utilisées) suivant la table de vérité pour le faire tourner dans un sens ou un autre, (voir ici par exemple), c 'était le cas des L293 et L298 qui regroupaient un double pont en H. On pouvait les commander soit en pilotant directement leurs 4 entrées suivant la table de vérité, soit en les interfaçant avec un L297 qui faisait le travail à notre place (voir ici).
Les drivers modernes n'ont plus besoin de tout çà et il n'y a plus que 2 pins utilisées par moteur, une pin pour les impulsions de pas et une pin pour le sens de rotation, c'est le cas par exemple des TB6560 et TB6600HG actuels. Bien sur il y en a d'autres, pratiquement tous les fondeurs ont sorti un chip pour driver les moteurs, je ne parle ici que de ceux que j'ai utilisés et qui sont les plus courants.
Non, une impulsion=1 pas, quelque soit sa durée. Tu veux faire 30pas, tu envoies 30 pulses. Si tu fais varier la durée de l'impulsion tu feras juste varier la vitesse de rotation, c'est ce que j'explique au post précédent.
Tu as raison, on peut parfaitement mettre deux moteurs pap, voir trois sur un seul PIC, c'est d'ailleurs ce que j'ai fais, la machine est basée sur un seul 18F4525 qui gère tout. En branchant les trois moteurs sur un même port on pourrait les faire tourner ensembles en envoyant un mot binaire sur le port, je n'y avais pas pensé . Mais à mon avis çà n'aurait pas amené grand chose de plus et plus compliqué à mettre au point. Le gcode envoie les infos une par une, X, ensuite Y et enfin Z, à chaque réception de donnée on fait bouger l'axe en question, c'est plus simple et plus pratique à gérer en cas de bug (et il y en a eu ) lors de la mise au point.
Soft de commande CNC en asm
F6FCO a écrit :Source du message Non, une impulsion=1 pas, quelque soit sa durée. Tu veux faire 30pas, tu envoies 30 pulses. Si tu fais varier la durée de l'impulsion tu feras juste varier la vitesse de rotation, c'est ce que j'explique au post précédent.
Je crains une différence de vocabulaire
Dans mon vocable, mais je n'ai jamais fait beaucoup d’électronique, une impulsion c'est le passage d'un état bas à un état haut (ou le contraire) jusqu'à son retour, d'ailleurs, ne parle-t-on pas du front montant ou descendant ? la durée d'une impulsion est la durée qui sépare le premier front du deuxième, j'ai l'impression que=, pour toi, une impulsion, va d'un front montant au front montant suivant.
Je pense que pour un pap, mon impulsion doit avoir une valeur minimale mais qu'à part cela, ça n'a pas grande importance. Pour un moteur pap, je ne vois pas de nécessité à ce que les impulsions soient régulièrement espacées dans le temps, l'intervalle de temps entre le front descendant d'une impulsion et le front montant de la suivante (si le pap est commandé en logique positive ce que je ne sais pas) n'a pas, a priori de raisons d'être constant, c'est même là-dessus qu'on doit s'appuyer pour gérer la vitesse du moteur.
Ai-je bien compris ?
PS : curiosité, j' aurais pu commencer par là si je pensais à consulter Internet qui n'est pas vraiment de ma génération
En électricité/électronique, une impulsion est une variation brève et rapide d'un état électrique généralement utilisé comme signal.
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1417
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Il suffit de parler la même langue
Bon alors on ne va plus parler d'impulsions, c'est un mot au sens général, en logique positive qui est notre cas un pulse est considéré comme la partie haute du signal (front montant, état haut, front descendant). Mais la partie basse en fait partie aussi.
En électronique on parle d'alternance, de demi-alternance et de rapport cyclique.
Une alternance est le signal compris entre un front montant et le prochain front montant.
Si on considère que l'alternance est comprise entre le front descendant et le prochain front descendant c'est parce qu'elle est déphasée de 180° (je simplifie au maximum hein!)
Ce que tu appelles impulsion (front montant et état haut) est presque une demi-alternance.
La fréquence est le nombre d'alternances pendant 1 seconde.
Pour mieux comprendre fais l'analogie avec le signal sinusoïdal du secteur (50hz=50 alternances par seconde), sauf qu'ici on est en signaux carrés.
Il faut considérer aussi le rapport cyclique qui est le rapport de durée entre la demi alternance haute et la demi alternance basse, quand les deux parties sont égales en durée le rapport cyclique est de 50%. C'est en faisant varier ce rapport cyclique qu'on génère un signal PWM.
Tout ceci exposé revenons à nos moteurs pap:
1 alternance = 1 pas. D'un front montant au prochain front montant et quelque soit le rapport cyclique.
On envoie tant d'alternances pour faire tourner le moteur de tant de pas. (c'est quand même plus parlant de dire "impulsions" )
Si tu fais varier la fréquence et que le nombre d'alternances envoyées par le programme reste le même on parcourra la même distance mais la vitesse d'exécution sera plus ou moins grande.
Mais on parle quand même la même langue car ce que tu dis est vrai et reviens à mon discours, si le driver déclenche au front montant pour faire un pas il fera son pas suivant au prochain front montant et il se sera passé ? .... une alternance.
Parce que c'est bien joli de faire faire un pas au moteur sur un front montant, mais si on veut faire un autre pas il faut bien passer par un front descendant avant... donc 1 alternance.
Bon alors on ne va plus parler d'impulsions, c'est un mot au sens général, en logique positive qui est notre cas un pulse est considéré comme la partie haute du signal (front montant, état haut, front descendant). Mais la partie basse en fait partie aussi.
En électronique on parle d'alternance, de demi-alternance et de rapport cyclique.
Une alternance est le signal compris entre un front montant et le prochain front montant.
Si on considère que l'alternance est comprise entre le front descendant et le prochain front descendant c'est parce qu'elle est déphasée de 180° (je simplifie au maximum hein!)
Ce que tu appelles impulsion (front montant et état haut) est presque une demi-alternance.
La fréquence est le nombre d'alternances pendant 1 seconde.
Pour mieux comprendre fais l'analogie avec le signal sinusoïdal du secteur (50hz=50 alternances par seconde), sauf qu'ici on est en signaux carrés.
Il faut considérer aussi le rapport cyclique qui est le rapport de durée entre la demi alternance haute et la demi alternance basse, quand les deux parties sont égales en durée le rapport cyclique est de 50%. C'est en faisant varier ce rapport cyclique qu'on génère un signal PWM.
Tout ceci exposé revenons à nos moteurs pap:
1 alternance = 1 pas. D'un front montant au prochain front montant et quelque soit le rapport cyclique.
On envoie tant d'alternances pour faire tourner le moteur de tant de pas. (c'est quand même plus parlant de dire "impulsions" )
Si tu fais varier la fréquence et que le nombre d'alternances envoyées par le programme reste le même on parcourra la même distance mais la vitesse d'exécution sera plus ou moins grande.
Mais on parle quand même la même langue car ce que tu dis est vrai et reviens à mon discours, si le driver déclenche au front montant pour faire un pas il fera son pas suivant au prochain front montant et il se sera passé ? .... une alternance.
Parce que c'est bien joli de faire faire un pas au moteur sur un front montant, mais si on veut faire un autre pas il faut bien passer par un front descendant avant... donc 1 alternance.
Modifié en dernier par F6FCO le lun. 27 mai 2019 20:58, modifié 1 fois.
Soft de commande CNC en asm
merci de ces infos,
en résumé
fin de la parenthèse dans ce sujet et à paulfjujo d'avoir trouvé son défaut
en résumé
- - pour faire tourner le moteur on envoie un (des) pulse(s) qu'il est relativement facile de convertir en distance parcourue par le chariot en fonction des paramètres matériels, pas de la vis, nb. de pas par tour du moteur. La durée minimale du pulse doit être donnée par la notice technique du moteur.
- pour gérer la vitesse du chariot, problème qui ne doit se poser que pour des déplacements parallèles aux axes et de maigre intérêt je pense pour la gravure de PCB, on joue sur la fréquence, avec là aussi des contingences matérielles dureté du matériau, solidité de la fraise, ... un max pour pas aller trop vite, et sûrement un min pour que les impulsions ne se "mélangent" pas
- rien n'interdit de commander plusieurs moteurs simultanément, sauf peut-être l'augmentation de la complexité des algorithmes
fin de la parenthèse dans ce sujet et à paulfjujo d'avoir trouvé son défaut
Modifié en dernier par JJE le lun. 27 mai 2019 21:16, modifié 1 fois.
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1417
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
C'est dommage, cette conversation aurait méritée d'être faite dans le sujet "Discussion sur les CNC"
Exactement, il suffit de savoir si on est en pas entiers, demi-pas, etc. et connaître le pas de filetage de la vis d'entraînement.
Si, c'est quand même à prendre en compte suivant la vitesse de rotation de ton outil, si tu as une broche qui tourne trop lentement il ne faudra pas te déplacer trop rapidement sinon tu auras une découpe "hachée" pas très belle. Mais en général on utilise des moteurs qui tournent à 12000 tr/mn (broches chinoises) ou 30000tr/mn pour les dremels, donc dans ce cas effectivement la vitesse de déplacement n'est pas critique, il faut juste laisser à l'outil le temps de découper la matière.
pour faire tourner le moteur on envoie un (des) pulse(s) qu'il est relativement facile de convertir en distance parcourue par le chariot. La durée minimale du pulse doit être donnée par la notice technique du moteur.
Exactement, il suffit de savoir si on est en pas entiers, demi-pas, etc. et connaître le pas de filetage de la vis d'entraînement.
pour gérer la vitesse du chariot, problème qui ne doit se poser que pour des déplacements parallèles aux axes et de maigre intérêt je pense pour la gravure de PCB, on joue sur la fréquence, avec là aussi des contingences matérielles dureté du matériau, solidité de la fraise, ...
Si, c'est quand même à prendre en compte suivant la vitesse de rotation de ton outil, si tu as une broche qui tourne trop lentement il ne faudra pas te déplacer trop rapidement sinon tu auras une découpe "hachée" pas très belle. Mais en général on utilise des moteurs qui tournent à 12000 tr/mn (broches chinoises) ou 30000tr/mn pour les dremels, donc dans ce cas effectivement la vitesse de déplacement n'est pas critique, il faut juste laisser à l'outil le temps de découper la matière.
Soft de commande CNC en asm
tu est l'homme qui lit plus vite que son ombre, j'avais repris ma première réponse pour la compléter et je pense que tu n'as eu que le début.
C'est vrai, il n'y a guère qu'une page mais je ne sais pas faire, on peut mettre un lien jusqu'ici dans l'autre sujet, veux-tu que je m'en charge ?
C'est dommage, cette conversation aurait méritée d'être faite dans le sujet "Discussion sur les CNC"
C'est vrai, il n'y a guère qu'une page mais je ne sais pas faire, on peut mettre un lien jusqu'ici dans l'autre sujet, veux-tu que je m'en charge ?
Soft de commande CNC en asm
Soft de commande CNC en asm
Bonjour JJE, F6FCO, et tout le forum,
je suis pas un artiste dans l'écrire comme vous, mais bon je vais essayer de m’exprimer.
Dans le post #351 s'explique à F6FCO qu'il ne peut avoir plus de 10 directions avec une CNC 3 axes, et si il avait adopté ma méthode
aucun calcul ne serait nécessaire.
La lecture du Gcode n'est pas un problème, puisque c'est le PC qui envoie les données.
De plus dans mon exemple j'utilise des moteurs unipolaire, ce qui rends la tache plus difficile qu'un bipolaire, car je dois trouver le
code pour chaque moteur,
Ceux de F6FCO sont des bipolaires, et comme il utilise un drivers pour chaque moteur, plus de soucis du codage.
Juste une impulsion pour faire tourner son moteur bipolaire d'un pas, avec le sens à gérer.
Très instructive cette discussion, et de plus fait avec courtoisie
A+
je suis pas un artiste dans l'écrire comme vous, mais bon je vais essayer de m’exprimer.
Dans le post #351 s'explique à F6FCO qu'il ne peut avoir plus de 10 directions avec une CNC 3 axes, et si il avait adopté ma méthode
aucun calcul ne serait nécessaire.
La lecture du Gcode n'est pas un problème, puisque c'est le PC qui envoie les données.
De plus dans mon exemple j'utilise des moteurs unipolaire, ce qui rends la tache plus difficile qu'un bipolaire, car je dois trouver le
code pour chaque moteur,
Ceux de F6FCO sont des bipolaires, et comme il utilise un drivers pour chaque moteur, plus de soucis du codage.
Juste une impulsion pour faire tourner son moteur bipolaire d'un pas, avec le sens à gérer.
Très instructive cette discussion, et de plus fait avec courtoisie
A+
Modifié en dernier par Temps-x le mar. 28 mai 2019 17:51, modifié 1 fois.
Soft de commande CNC en asm
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Google [Bot] et 133 invités