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
Soft de commande CNC en asm
Bonjour à tous et à F6FCO en particuliers
J'ai quelques difficultés avec ce sous-programme :
de détail, c'est un cpmmentaire
ne doit-on pas lire
de fond
Je ne comprends pas la division par 100 du début de code, peux-tu m'éclairer ?
J'ai quelques difficultés avec ce sous-programme :
Code : Tout sélectionner
construction_pente
; la tangente est dans valeur2
; on divise la tangente par 100
; si elle est négative le quotient de la division sera nul, alors on force la tangente à 1
movff valeur2,dividende16
movff valeur2+1,dividende16+1
movlw .100
movwf diviseur16
clrf diviseur16+1
call division16
movf quotient16,quotient16
btfsc STATUS,Z
incf quotient16
nop
movff deltaX,tampon0 ; on charge deltaX dans le tampon de décrémentation
movff deltaX+1,tampon0+1
nop
bouclePX ; on avance de 0.01mm en X
nop
call Xpulses32
; ---------------------- calcul de Y, on va éxécuter tangente fois le micro-pas de base
movff quotient16,tampon1
movff quotient16+1,tampon1+1
bouclePY ; on avance de 1,25µm en Y
call Ypulse_base
; -- on décrémente tampon1
DEC16F tampon1
nop
; -- on teste si tampon1 est à zéro sinon on boucle
movf tampon1+1,tampon1+1
bnz bouclePY
movf tampon1,tampon1
bnz bouclePY
; ----------------------
; decrémentation de tampon0 (X)
DEC16f tampon0
nop
movf tampon0+1,tampon0+1
bnz bouclePX
movf tampon0,tampon0
bnz bouclePX
nop
return
de détail, c'est un cpmmentaire
Code : Tout sélectionner
bouclePY ; on avance de 1,25µm en Y
ne doit-on pas lire
Code : Tout sélectionner
bouclePY ; on avance de 0.3125µm en Y
Code : Tout sélectionner
; si elle est négative le quotient de la division sera nul, alors on force la tangente à 1
ne doit-on pas lire
[code=php] ; si elle est <100 le quotient de la division sera nul, alors on force la tangente à 1
de fond
Je ne comprends pas la division par 100 du début de code, peux-tu m'éclairer ?
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1420
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Bonsoir JJE,
Pour les déplacements en micron:
Je ne sais plus trop, les commentaires sont souvent erronés dans mon programme, erronés dans le sens ou je les écris quand je code la routine pour la première fois, là ils sont pertinents, mais après quand je fais des modifs dans le programme j'oublie 9 fois sur 10 de les modifier
En fait, les valeurs des déplacements de base sont fonction du réglage des drivers de moteur pas à pas. Pour expliquer ces valeurs il faut connaître le fonctionnement des moteurs pas à pas:
Un moteur pas à pas exécute 200 pas pour faire une révolution (1 tour). Mais il est possible en jouant sur le réglage des drivers de diviser ces 200 pas en demi-pas (donc 400 pas par révolution), en 1/4 de pas (donc 800 pas par tour), en 1/8e de pas, 1/16e de pas, etc. etc.
Ainsi on affine la précision de la machine, mais on perd de la vitesse, on ne peut pas tout avoir. Les couples drivers/moteur pap permettent ce genre de chose.
Pour connaitre la distance parcourue par le chariot sur 1 pulse (1 alternance, 1 front montant ) il faut connaître le pas de la vis d'entraînement et le réglage en micro-pas du driver.
Donc pour en revenir à ta question dans notre cas le pas de la vis d'entrainement est du M6/100 (choisi à dessin pour simplifier les calculs), donc on parcoure 1mm par tour de vis.
- Si le driver est réglé en pas entier (200 pas), pour un pulse le chariot se déplace de 1mm/200=0,005 mm (5/100e de mm)
- si le driver est réglé en demi-pas (400pas), pour 1 pulse le chariot se déplace de 1/400=0,0025 mm
- si le driver est réglé en quart de pas (800pas), pour 1 pulse le chariot se déplace de 1/800=0,00125 ---> 1,25µm (1,25 micron)
- si le driver est réglé en 1/8e de pas (1600 pas), pour 1 pulse le chariot se déplace de 1/1600= 0,000625µ
etc.
Au moment ou j'ai écris ce commentaire la machine devait être réglée en 1/4 de pas, mais comme j'ai fais des essais dans toutes les config possibles j'ai du oublier de rectifier.
La tangente:
Il faudrait que je remette le nez dans le programme, que je rebranche la machine qui est maintenant sur une étagère et que je relance tout le bazar, pas trop envie maintenant que je suis passé à autre chose (j'occupe à présent mes neurones avec l'étude de l'I2C et du copro um-FPU). Mais de mémoire pour certains angles les calculs avec la tangente normale me donnaient des nombres trop grands pour la taille de la variable (regarde sur une table de trigonométrie, contrairement aux sinus et cosinus les valeurs de tangente augmentent rapidement avec l'angle), d'ailleurs tu peux le vérifier dans les datas dédiés au calcul, donc j'ai pris le parti de la diviser par 100.
Pour les déplacements en micron:
Je ne sais plus trop, les commentaires sont souvent erronés dans mon programme, erronés dans le sens ou je les écris quand je code la routine pour la première fois, là ils sont pertinents, mais après quand je fais des modifs dans le programme j'oublie 9 fois sur 10 de les modifier
En fait, les valeurs des déplacements de base sont fonction du réglage des drivers de moteur pas à pas. Pour expliquer ces valeurs il faut connaître le fonctionnement des moteurs pas à pas:
Un moteur pas à pas exécute 200 pas pour faire une révolution (1 tour). Mais il est possible en jouant sur le réglage des drivers de diviser ces 200 pas en demi-pas (donc 400 pas par révolution), en 1/4 de pas (donc 800 pas par tour), en 1/8e de pas, 1/16e de pas, etc. etc.
Ainsi on affine la précision de la machine, mais on perd de la vitesse, on ne peut pas tout avoir. Les couples drivers/moteur pap permettent ce genre de chose.
Pour connaitre la distance parcourue par le chariot sur 1 pulse (1 alternance, 1 front montant ) il faut connaître le pas de la vis d'entraînement et le réglage en micro-pas du driver.
Donc pour en revenir à ta question dans notre cas le pas de la vis d'entrainement est du M6/100 (choisi à dessin pour simplifier les calculs), donc on parcoure 1mm par tour de vis.
- Si le driver est réglé en pas entier (200 pas), pour un pulse le chariot se déplace de 1mm/200=0,005 mm (5/100e de mm)
- si le driver est réglé en demi-pas (400pas), pour 1 pulse le chariot se déplace de 1/400=0,0025 mm
- si le driver est réglé en quart de pas (800pas), pour 1 pulse le chariot se déplace de 1/800=0,00125 ---> 1,25µm (1,25 micron)
- si le driver est réglé en 1/8e de pas (1600 pas), pour 1 pulse le chariot se déplace de 1/1600= 0,000625µ
etc.
Au moment ou j'ai écris ce commentaire la machine devait être réglée en 1/4 de pas, mais comme j'ai fais des essais dans toutes les config possibles j'ai du oublier de rectifier.
La tangente:
Il faudrait que je remette le nez dans le programme, que je rebranche la machine qui est maintenant sur une étagère et que je relance tout le bazar, pas trop envie maintenant que je suis passé à autre chose (j'occupe à présent mes neurones avec l'étude de l'I2C et du copro um-FPU). Mais de mémoire pour certains angles les calculs avec la tangente normale me donnaient des nombres trop grands pour la taille de la variable (regarde sur une table de trigonométrie, contrairement aux sinus et cosinus les valeurs de tangente augmentent rapidement avec l'angle), d'ailleurs tu peux le vérifier dans les datas dédiés au calcul, donc j'ai pris le parti de la diviser par 100.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Soft de commande CNC en asm
Bonjour F6FCO,
merci de cette réponse copieuse. Je crois que maintenant, je suis au point pour sur les moteurs pap et leur gestion avec des drivers, surtout le TB6600 dont j'ai lu la datasheet.
J'ai il y a quelques temps écrit un post sur la gestion d'un MCP9808 qui est un périphérique I2C, voir ici
Il utilise une couche de bas niveau de gestion I2C en mode maître (I2C.inc)
et une couche utilisant la précédente pour la gestion spécialisée du MCP9808.
Peut-être les infos y figurant pourront t'être utile, n'hésite pas à m’interpeller si besoin. Ça ne date que de début mai, je n'ai peut-être pas déjà tout oublié.
merci de cette réponse copieuse. Je crois que maintenant, je suis au point pour sur les moteurs pap et leur gestion avec des drivers, surtout le TB6600 dont j'ai lu la datasheet.
J'ai il y a quelques temps écrit un post sur la gestion d'un MCP9808 qui est un périphérique I2C, voir ici
Il utilise une couche de bas niveau de gestion I2C en mode maître (I2C.inc)
et une couche utilisant la précédente pour la gestion spécialisée du MCP9808.
Peut-être les infos y figurant pourront t'être utile, n'hésite pas à m’interpeller si besoin. Ça ne date que de début mai, je n'ai peut-être pas déjà tout oublié.
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1420
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Bonjour JJE,
C'est vrai que je ne sais pas trop écrire des posts concis . La gestion des moteurs pas à pas est passionnante et permet de sortir du virtuel en interagissant avec l'extérieur.
Un peu de bricolage à coté et hop ! on a fait un robot
Je vais lire ton sujet sur le capteur de T°, en ce moment je bois tout ce que je trouve sur l'I2C. Le site que j'ai retenu et qui me sert aux essais est celui de Fabrice Sincère: http://fabrice.sincere.pagesperso-orang ... 6F876A.htm
Je le trouve très explicite, je fais mes premiers pas sur le 16F976A comme dans son exemple et dés que je serai plus à l'aise j'adapterai les routines pour le 18F4525.
C'est vrai que je ne sais pas trop écrire des posts concis . La gestion des moteurs pas à pas est passionnante et permet de sortir du virtuel en interagissant avec l'extérieur.
Un peu de bricolage à coté et hop ! on a fait un robot
Je vais lire ton sujet sur le capteur de T°, en ce moment je bois tout ce que je trouve sur l'I2C. Le site que j'ai retenu et qui me sert aux essais est celui de Fabrice Sincère: http://fabrice.sincere.pagesperso-orang ... 6F876A.htm
Je le trouve très explicite, je fais mes premiers pas sur le 16F976A comme dans son exemple et dés que je serai plus à l'aise j'adapterai les routines pour le 18F4525.
Soft de commande CNC en asm
- Claudius
Passionné- Messages : 260
- Âge : 69
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
Bonjour F6FCO et tout le forum,
@ Spécifications de l'I2C, il y a aussi : Le bus I²C qui est très complet et pédagoqiue
@ Spécifications de l'I2C, il y a aussi : Le bus I²C qui est très complet et pédagoqiue
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
Soft de commande CNC en asm
Soft de commande CNC en asm
Soft de commande CNC en asm
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 133 invités