Réducteur programmable ?

  • Auteur de la discussion PUSSY
  • Date de début
S

stef1204

Compagnon
Je parle Allemand et Anglais je sais lire le Cyrillique et ce que je lis c’est du Russe. :smt013:smt014

Les paramètres de son code:
#define ENC_LINE_PER_REV 1800 // Кол-во линий энкодера
#define MOTOR_Z_STEP_PER_REV 200 // Кол-во шагов/об, ось Z, продольная
#define SCREW_Z 1.50 // Шаг продольного винта Z
#define McSTEP_Z 4 // Микрошаг, ось Z, продольная
#define MOTOR_X_STEP_PER_REV 200 // Кол-во шагов/об, ось X, поперечная
#define SCREW_X 1.00 // Шаг поперечного винта X
#define REBOUND_X 400 // Отскок резца в микрошагах, для авторезьбы, должен быть больше люфта поперечки
#define McSTEP_X 4 // Микрошаг, ось X, поперечная
#define ACCEL 15 // К.деления с которого будем ускоряться на Резьбах, Accel+Ks должен быть < 255
 
S

speedjf37

Compagnon
Je parle Allemand et Anglais je sais lire le Cyrillique et ce que je lis c’est du Russe. :smt013:smt014

Bonjour,

Je ne lis que l'anglais et encore !

Et si j'ai mis ce code c'est juste pour l'information.

Cordialement JF
 
G

gaston48

Compagnon
pas erreur cumulative
Merci pour le code, j'ai eu un peu de mal à comprendre, c'est finalement encore une
application de l'algorithme de Bresenham qu'on retrouve dans nos interpolateur de CN.

Mais avec ces corrections il me semble:
// erreur=-dxx/2;
erreur=dxx/2;
erreur=erreur+dyy;
if(erreur>=dxx){bit1(PORTC,pas);erreur=erreur-dxx; bit0(PORTC,pas);}

l'Arduino mega a 6 interruptions externes je crois, ce qui nous ferait 3 entrées codeur.
 
Dernière édition:
5

59JAG

Ouvrier
Bonjour,
bien joué gaston , il y en a un au moins qui suit
effectivement sur un plan xy si on pose en x l encodeur et sur y le moteur pas a pas , la fonction f(x) de la division et une droite qui passse par l origne , ce qui nous donne y=ax avec a=<1 ,a est la pente de la droite dans mon prog cela correspond a dy/dx

Petite explication de l algorithme ici
http://archives.julien.richard-foy.fr/jackiechan68k/Bresenham.htm
 
A

albertdu67

Nouveau
Bonjour à tous, je déterre un vieux post, mais je ne sais pas comment remercier 59jag....ça fait des semaines que j'essais..et voilà que vous avez réussi il y a quelques années.....Un grand merci à lui et j'aurais bien eu quelques questions à lui poser en privé
Vive ce forum et les gens qui le font vivre
 
5

59JAG

Ouvrier
bonjour
tu peux poser ta question ici, ça peux en intéresser d autres.
 
A

albertdu67

Nouveau
bonjour,
je viens d'essayer et forcément cela ne fonctionne pas :lol:....J'ai un encodeur Sick DBs60e-s4ek01000 et j'ai testé avec une nano, une mega et une uno en adaptant, mais le moteur vibre dans tous les sens et s'arrête que pour certaines positions. C'est un codeur incrémental à 1000, j'ai modifié le code en conséquence...J'ai dèjà fait pas mal de fraiseuse CNC, mais je voudrais faire évoluer mon tour...J'ai un petit numérique, mais c'est 80mm max de diamètre... Ce qui ne me suffit plus...
Cela fait des semaines que je fais des essais et voilà que je tombe sur ce que tu as fait... L'espoir renaît... C'est possible...Mais je suis trop quiche à priori :lol: Je suis preneur d'un coup de mains ...
 
A

albertdu67

Nouveau
ça marche :P mais quelle truffe.... pas mis le codeur à la masse....Milles mercisssssssssss.... Des semaines que je suis dessus....
 
A

albertdu67

Nouveau
reste le problème de la haute vitesse....Avec 1000 pas pour l'encodeur, je pense que je suis limite avec l'arduino non? En dessous de 1000tr/min c'est parfait....au dessus le moteur s'arrête
 
A

albertdu67

Nouveau
3mm mais je voulais faire une demultiplication au niveau nema/vis de type 1/2 ou 1/4... Pour le filetage, il n'y a pas de soucis mais je suis obligé d'enlever la boite à engrenage pour le numériser. Après, je peux faire un potar pour régler la vis mère indépendamment du codeur... Je revois pleins de possibilités...
 
5

59JAG

Ouvrier
avec un ton encodeur 1000p/t en mode 2x ça fait 2000 pulses par tour.
j avais mesurer le temps de traitement de mon programme
était environ 6us par pulse donc 2000x6us =12ms par tour soit en 1 seconde 83.3333 tour qui nous fait 5000tr/min.
 
A

albertdu67

Nouveau
Super rapide....C'est donc mon Nema...J'ai vérifié...1000tr/min max...avec la réduction...Forcément je chute encore....Voili Voilà... En tout cas, un grand merci pour ton aide passée et présente...:-D Je vais jouer avec mon rapport de réduction pour garder le couple/vitesse correct...En même temps pour un filetage, pas besoin de tourner bien vite...
 
A

albertdu67

Nouveau
bonjour, une question, pour monter sur une arduiomega, je dois changer les ports. Mais je ne comprends pas ces lignes...
#define encoderA 0b00000100 //masque pinA (portd)
#define encoderB 0b00001000 //masque pinB (portd)
#define sens 0b00000100 //masque direction (portc)
#define pas 0b00000010 //masque step (portc)

c'est la première fois que je vois ça...
 
5

59JAG

Ouvrier
bonjour,
#define encoderA 0b00000100 //masque pinA (portd)

c est pour utiliser le PORTD de l uno car beaucoup plus rapide que digitalread ou digitalwrite, mais l inconvénients c est les 8 bits du portd en même temps.
donc la sortie encodeurA est branché sur l entrée digitale 2 de l arduino uno qui correspond au 2eme bit du PORTD (PD2)
Screenshot_20230717-212048_Samsung Internet.jpg

donc en gros pour lire ou écrire sur PD2 on utilise un masque 0b0000100.
par exemple sur le mega la digitale2 correspond au Port E (PE4)
Screenshot_20230717-214555_Samsung Internet.jpg



le masque c est 0b0001000 (PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0)
j espère j ai était clair pas évident d expliqué
 
A

albertdu67

Nouveau
bonjour,
#define encoderA 0b00000100 //masque pinA (portd)

c est pour utiliser le PORTD de l uno car beaucoup plus rapide que digitalread ou digitalwrite, mais l inconvénients c est les 8 bits du portd en même temps.
donc la sortie encodeurA est branché sur l entrée digitale 2 de l arduino uno qui correspond au 2eme bit du PORTD (PD2)
Voir la pièce jointe 841597
donc en gros pour lire ou écrire sur PD2 on utilise un masque 0b0000100.
par exemple sur le mega la digitale2 correspond au Port E (PE4)
Voir la pièce jointe 841599


le masque c est 0b0001000 (PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0)
j espère j ai était clair pas évident d expliqué
Salut, alors...là...j'ai pas tout suivi.... Je pars en vacances, et dès que je rentre, je m'y remets....Cela fait longtemps que j'avais les problèmes de vitesse avec le digital read... J'entrevois enfin des solutions
 

Sujets similaires

F
Réponses
6
Affichages
3 501
phanou95
P
FB29
Réponses
54
Affichages
25 349
FB29
F
Réponses
4
Affichages
1 877
pierrepmx
P
C
Réponses
1
Affichages
2 571
cricri91
C
wika58
Réponses
32
Affichages
26 210
jcma
jcma
Haut