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 ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Soft de commande CNC en asm
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1102
Âge : 60
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#441 Message par Gérard » jeu. 6 juin 2019 19:10

Courage F6, après la fosse, les PIC...
Le 18 / 04 / 2019 je suis devenu papy de jumeaux, une fille et un garçon. Quel bonheur.

Soft de commande CNC en asm
JJE
Passioné
Passioné
Messages : 333
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#442 Message par JJE » mar. 11 juin 2019 07:56

Bonjour à tous et à F6FCO en particuliers
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 ?
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 830
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#443 Message par F6FCO » mar. 11 juin 2019 20:48

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 :sifflotte:
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 :twisted: ) 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.

image020.gif
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Une porte nand prend 2 bits en entrée... la cochonne !!! 8-)

Soft de commande CNC en asm
JJE
Passioné
Passioné
Messages : 333
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#444 Message par JJE » mer. 12 juin 2019 05:13

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é.
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 830
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#445 Message par F6FCO » mer. 12 juin 2019 13:10

Bonjour JJE,
C'est vrai que je ne sais pas trop écrire des posts concis :lol:. 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 8-)
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.
Une porte nand prend 2 bits en entrée... la cochonne !!! 8-)

Soft de commande CNC en asm
Claudius
Avatar de l’utilisateur
Amateur
Amateur
Messages : 190
Âge : 64
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#446 Message par Claudius » mer. 12 juin 2019 14:59

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

Soft de commande CNC en asm
JJE
Passioné
Passioné
Messages : 333
Âge : 78
Enregistré en : novembre 2017
Localisation : Picardie

#447 Message par JJE » mer. 12 juin 2019 15:10

Claudius, il a toujours des liens passionants, je me demande où il trouve le temps de lire tout ça :?:
Cordialement

JJE

C'est pas parcequ'on n'a rien à dire qu'il faut fermer sa G....e

Soft de commande CNC en asm
F6FCO
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 830
Âge : 65
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#448 Message par F6FCO » mer. 12 juin 2019 18:14

Merci Claudius,
Et hop, lecture ai lit ce soir sur ma tablette :wink:
Une porte nand prend 2 bits en entrée... la cochonne !!! 8-)

Soft de commande CNC en asm
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 1221
Enregistré en : juillet 2016
Localisation : Terre

#449 Message par Temps-x » mer. 12 juin 2019 20:44

Bonsoir F6FCO, JJE, Claudius, et tout le forum,

Voir les cours de Monsieur Bigonoff, Leçon N°2 , à partir de la page 351, ça en fait de la lecture pour ce soir..... :-D

==> A+
Quand la souris nargue le chat, c'est que son trou n'est pas loin.


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités