DivNum Plateau diviseur piloté par Arduino.

  • Auteur de la discussion jpbbricole
  • Date de début
J

jpbbricole

Compagnon
Introduction:
C’est à l’instigation et avec les conseils de @JCS que j’ai développé ce système de pilotage par Arduino d’un plateau diviseur (PD), afin de le rendre autonome.

Le système se compose d’un Arduino Mega, d’un affichage OLED de 4 lignes ou LCD 4x20, d’une LED RGB, d’un codeur rotatif (CR) avec bouton poussoir (BP), d’un clavier 4x4, d’un lecteur de carte Micro SD ainsi que de quelques boutons. Le lecteur de carte SD ainsi que le clavier, sont optionnels. Le système peut fonctionner uniquement avec le CR.
Les connecteurs du système sont, 4x4 i2C pour la connexion de périphérique à ce standard, actuellement l’affichage OLED et le clavier 4x4, 1x6 pour la commande du driver du moteur pas à pas (MPAP), 1x6 pour le handshaking (HS) et le G-Code afin d’avoir un dialogue avec le système d’usinage (SU et, futur, une interface Bluetooth).

Paramétrage du système :
Il se fait de 3 façons et c’est dépendant de commande :
$SetupInEeprom=1
Si = 1 les paramètres sont repris de la mémoire permanente EEPROM.
Si = 0 le programme recherche le fichier ProgPars.ini et utilise ces paramètres. Si ce fichier n’est pas trouvé, ce sont des paramètres par défaut qui sont utilisés, il sont à modifier dans le programme void setupSetInternally(), le programme doit être recompilé et téléchargé.
Pour modifier les paramètres de fonctionnement du programme, si c’est sur la carte SD, éditer le fichier ProgPars.ini.
Pour modifier les paramètres en EEPROM, utiliser le moniteur de l’IDE Arduino (ou tout autre terminal série, vitesse 115200) et « envoyer » les commandes nécessaires selon la liste se trouvant dans le fichier PlateauDivisSD_Autres.zip Liste des commandes.PDF. Il est à noter que toutes les commandes de paramétrage débutent avec $ et les paramètres sont sauvés en mémoire permanente EEPROM.
Regardez, au démarrage, la LED, si elle clignote (3x par erreur) en rouge, c’est qu’il y a un paramètre erroné dans la configuration. Lors de l’usage des paramètres sur SD ou par défaut interne, les paramètres sont mémorisés en EEPROM.

A la première utilisation du programme, comme l’EEPROM est vide, le programme transfert les paramètres par défaut (void setupSetInternally()) dans la mémoire permanente et déclare le setup en EEPROM ($SetupInEeprom=1).
Cette « mécanique » permet aussi de réinitialiser le programme en exécutant la commande $FirstUsage=0 et et, ensuite, en redémarrant le programme.

Mode de fonctionnement :
Le programme peut fonctionner selon 4 modes, mode fichier avec fichiers sur carte SD , mode manuel avec sélection du nombre de dents par clavier ou CR, le mode Jog et le 4ème qui est le mode homing qui permet l’ajustage de la position du plateau manuellement.

Pour changer le mode, presser longuement (~1 sec) sur le BP jusqu’à l’affichage de M E N U en jaune, relâcher, tourner le CR pour choisir et un click sur BP et c’est sélectionné.
Le mode de départ se défini par paramétrage:

; Menu de départ 1 = Fichiers de roues sur carte SD 2 = mode manuel 3 = mode jog
MENUSTART=1

En fonctionnement, il est possible de passer d'un mode à l'autre par la touche * ou une longue pression sur le BP.

Mode fichier :
Le principe est que sur la carte SD se trouvent des fichiers de définition de roues dentées (DRD). Ces fichiers ont une extension .TXT ) ( Dents12.txt pour exemple)
Au moyen du CR, on fait défiler les fichiers, on sélectionne le fichier désiré par pression sur le CR et on confirme avec une seconde pression
1525083493630.png

Mode manuel :
Le nombre de dents se sélectionne au moyen du CR, du pavé numérique du clavier ou les touches + (A) et – (B) du clavier et C pour corriger, pour accepter, au moyen du BP ou de la touche E (D) du clavier.
1525083593794.png

En mode manuel, les déplacements sont calculés en pas et en absolu. Un algorithme compense, au maximum, les problèmes de division.

Mode jog :
Permet la rotation manuelle du plateau de façon fine ou rapide. La vitesse de base est définie par le paramètre JogSpeed=50
Jog avec CR :
Si l’on tourne le CR assez rapidement, cette vitesse se multiplie afin de créer une accélération de la rotation. Un cran du CR dans le sens inverse remet la vitesse à la valeur de départ.
1525514698810.png
St = Steps De = degrés.
Jog analogique (joystick) :
Si un jog analogique (joystick) est connecté ($JogAnaIs = 1), il est aussi possible de faire tourner le plateau , de façon progressive et assez fine.

Jog clavier :
Les touches A et B correspondent à + et -
On peut aussi utiliser les touches de 0 à 9 (0 = 10) + - et #.
Le nombre de pas de rotation est égal à la valeur de la touche multiplié par (le nombre de pas pas tour du MPAP/20) (#define mpapResolution 200), la touche # permet d’alterner entre la formule précédente et et 1 comme facteur de multiplication.
1527014739093.png

Les touches + et – permettent d’inverser le sens de rotation.
La vitesse de rotation sera le Speed xxx affiché (par défaut paramètre $MpapSpeedHz=nnn).

Les 3 types de jog : CR, analogique et clavier peuvent travailler en même temps.

Mode homing :
Permet de retrouver le position 0 du plateau. Il y a plusieurs façon de démarrer cette fonction :
Par sélectionner le mode (voire sous Modes de fonctionnement : )
Par longue pression du BP (env. 3 sec.)
Par le clavier, presser 3x la touche #. (Mode Fichier, Manuel et Jog)
Par la commande Homing
Si l’on est dans les modes Fichier, Manuel, Jog, la méthode clavier est la meilleure.
C’est géré par le paramètre

$HomeSensLevel=0

Cette entrée est,est le plus souvent logique et prend, en général, la valeur 0 ou 1.
S’il n’y a pas de système de homing, mettre ce parameter à 99.

Entrées/sorties :
Commande driver MPAP (6p) :
1) GND
2) Step
3) Dir
4) Enable*
5) ChuckHome*.
6) +5V.

Quadra (6p) :
1) GND
2) Quadra_A°
3) Quadra_B°
4) Quadra_IO1°
5) Quadra_IO2
6) +5V.
Pour un codeur rotatif en quadrature, pour render le système asservi par un autre movement. Les e/s Quadra_IO1 et Quadra_IO2 n’ont pas encore d’attribution. Les e/s avec ° sont avec interrupt.

Usinage (6p) :
1) GND
2) Handshaking In*
3) Handshaking out
4) G-Coide TX
5) G-CodRx
6) +5V.
Avec le handshaking (HS), le système signale au SU, avec un 1 logique sur Handshaking out, que le plateau est en position et attend que le SU lui signale la fin de l’usinage de la dent au moyen d’un 0 sur Handshaking In*. S’il n’y a pas possibilité de HS, on peut utiliser un timer pour attendre la fin de l’usinage.
UsinHandsh=0
UsinHandshDelay=22

Pour attendre 22 secondes entre chaque dents.
Gcode-Tx et G-Code Rx permettent d’envoyer des ordres et de recevoir des informations du SU. L’envoi de G-Code se fait au moyen de macros.

LED :
Bleu, une impulsion longue = démarrage du programme.
Rouge, clignote 3x, erreurs dans le fichier INI ou erreur de macro dans fichier DRD (Clignote 3x à chaque erreur).
Rouge, fixe, le MPAP est en fonction.
Vert, fixe, le mandrin est en position, le SU peut entrer en fonction.
Blanc, fixe, le signal Handshaking In* est resté à 0 depuis le dernier cycle, le faire passer à 1 pour redonner le vert.

Format du fichier DRD :Liste des pas :
Contient la liste des pas du MPAP pour chaque dents, ces valeurs de déplacement sont relatives (défaut) ou absolues. Ceci se règle au moyen d’une macro (M=R ou M=A), dans ce fichier. Ces déplacements dépendent de la résolution, pour 360°, de l’entraînement du plateau (paramètre INI mpapChuck360resolution) pour moi, 20000.

6 dents en mode relatif le fichier contient :
3333
3334
3333
3333
3334
3333

6 dents en mode absolu le fichier contient :
3333/M=A
6666
9999
13334
16667
20000

Les macros :
Les macros sont des commandes qui se mettent en fin de ligne, toujours après une définition de pas et sont actives à partir de ce moment.
Une fin de ligne peut comprendre plusieurs macros séparées par le signe /
1666/M=A/G=G90 G0 F100…

Les macro sont :
M pour Move, les paramètres sont R pour relatif (défaut) ou A pour Absolu.
S pour Scale (échelle), les paramètres sont S pour Pas (défaut) ou D pour Degrés.
G pour G-code

3333/M=A
Signifie que l’on passe en mode déplacement (Move) Absolu, depuis et y compris cette ligne.

1666/G=G90 G0 F100 Z-9.0;G91 G1 F30 Z-7;G90 G0 F100 Z0
Signifie que, depuis cette ligne et les suivante, une fois le déplacement du MPAP terminé (LED passe du rouge au vert) le programme envoie ces ordres G-code au SU. Il est possible de changer le G-code à n’importe quelle ligne. Pour cesser l’envoi de G-code mettre la macro
3334/G=
Les différentes séquences de G-code de la macro doivent être séparées par un ; (point virgule).


Pour passer en mode absolu, il suffit de mettre, au bout de la première ligne, le macro M=A (Move=Absolu).

La validité des macros cesse à la fin de l’exécution du fichier.
A la sélection d’un nouveau fichier, le programme génère les macro /M=/G= ce qui signifie Move relatif et commandes G-code vide.

Paramétrage:
Fichier ProgPars.ini :

; Si 1 attend le signal de handshaking pour passer à la dent suivante, si 0 attend UsinDelay en secondes
$UsinHandsh=0
$UsinHandshDelay=6


; Vitesse du MPAP
$MpapSpeedHz=400


; Si 0 le moteur tourne dans le sens des aiguilles d'une montre (CW) si 1 tourne CCW
$MpapReverse=0


; Si 1 le driver MPAP reste actif en permanence afin de vérouillerle moteur entre les déplacements
$MpapKeepLock=0


; Si 0 le signal Enable du driver MPAP est actif à 0 sinon, actif à 1
$MpapDriverEnableMode=0


; Nombre de pas pour un tour de mandrin 360°
$Chuck360resolution=20000


; Si la position du mandrin doit être sauvée
$ChuckPosSaved=1


; Niveau du signal de homing mettre 99 si pas de homing
$HomeSensLevel=0


; Pour compenser le jeu de la mécanique si changement de direction
$chuckBackSlashSteps=100


; Si 1 il y a une DRO en Bluetooth
$DroSerialIf=0


; Si 1 DRO Android (développement futur)
$DroType=1


; G-code éventuel en cas de mode manuel
$UsinManGcode=G90 G0 F100 Z-7.0;S1000 M3;G91 G1 F30 Z-7;G90 G0 F100 Z0;M5


; Jog règle la vitesse et l'accélération
$JogSpeed = 50


; Jog analogique
$JogAnaIs = 0
$JogAnaMin = 0
$JogAnaMiddle = 512
$JogAnaMax = 1023


; Menu de départ 1 = Fichiers de roues sur carte SD 2 = mode manuel 3 = mode jog 4 = mode homing
$MenuStart=2


Commande à distance :
Tout ce système peut entièrement se « télécommander » depuis une communication série (USB) au moyen des ordres suivants :

Voire fichier PlateauDivisSD_Autres.zip Liste des commandes.PDF

Et le tout donne ceci :

Le boitier (Provisoire)
upload_2018-4-14_10-44-11.png

upload_2018-4-14_10-44-25.png
upload_2018-4-14_10-44-30.png

Le boitier vide
upload_2018-4-14_10-45-45.png

Un peu moins vide !
upload_2018-4-14_10-46-12.png

Le circuit imprimé
1531033833491.png


Le schéma
1530078181261.png

Le circuit imprimé monté
1531034163963.png


Les essais :
Comme je n’ai pas de plateau diviseur, j’ai transformé mon tour Proxxon PD-230 en pseudo plateau diviseur.

Je l’ai équipé d’un entraînement du mandrin par vis sans fin
upload_2018-4-14_10-48-11.png

D’une fraise sur porte-outil
upload_2018-4-14_10-48-41.png

D’un contact pour le HS.
upload_2018-4-14_10-48-58.png
Qui se place sur la banc du tour.

Ce tour « tourne sous GRBL », j’en ai profité pour le commander depuis ce système. Cette option n’est pas obligatoire. Le moteur de la fraise est commandé depuis le système au moyen de G-code. L’envoi de G-code à GRBL se fait au moyen des macros.

Une petite vidéo:

Cordialement
jpbbricole
 
Dernière édition:
J

jpbbricole

Compagnon
Liste des fichiers à télécharger

Arduino Prg_nnn.zip
Contient le répertoire USIN_PlateauDivisSD qui contient les fichiers suivants :
USIN_PlateauDivisSD.ino Programme principal de l’Arduino.
USIN_PlateauDivisSD_Hardware.h Pour la sélection des périphériques que vous voulez utiliser ainsi que fixer leur adresse sur le bus i2C.
USIN_PlateauDivisSD_portsIO.h
Définition des entrées/sorties du système, à modifier si vous faites un montage personnel.
USIN_PlateauDivisSD_KeyboardMap.h Définition l’attribution des touches du clavier.
USIN_PlateauDivisSD_My.h Pour les réglages de paramètres personnels.
USIN_PlateauDivisSD_CmdStart.h Commandes à exécuter en fin de démarrage du programme.

Ce ZIP contient un petit utilitaire (ScannerI2c.ino) qui permet de scanner le bus i2C du système afin de lister les adresses des périfériques qui y sont connectés.

Arduino Lib.zip
Contient les bibliothèques nécessaires au programme.

Carte SD.zip
Fichiers

Contient des exemples de fichiers de définition des roues dentées (xxx.TXT) ainsi que le fichier de configuration du programme (PROGPARS.INI)

Les fichiers exemples sont :
Dent11sr.txt 11 dents en pas relatifs
Dent11sa.txt 11 dents en pas absolus
Dent11dr.txt 11 dents en degrés relatifs
Dent11da.txt 11 dents en degrés absolus
De11srM.txt 11 dents en pas relatifs avec macro G-code

Ce ZIP contient aussi une feuille Excel, Creation de fichiers.xlsx, avec des exemples de création de fichiers.

Schemas_nnn.zip
Contient les schémas du système ainsi que de divers câbles.

AutresFichiers.zip
Contient ;
ListeDesComposants.pdf
ListeDesCommandes.pdf
Liste des commandes supportées par le système.
Disposition du clavier

AutresFichiers.zip
Contient ;
ListeDesComposants.pdf
ListeDesCommandes.pdf Liste des commandes supportées par le système.

Comment.zip
Contient :
A) PlateauDivisSD_Montage.pdf Quelques tuyaux pour le montage du PCB.
B) IDE Arduino Installation.pdf Comment installer l’environnement Arduino pour ce projet.
C) Bibliothèques Installation.pdf Installation des bibliothèques.
D) Croquis programme Installation.pdf
Installation du programme (croquis).
E) Driver installation.pdf
Installation du driver USB pour Arduino « chinois »
F) Montage cablage.pdf Dessins plus « explicites » pour le montage
G) Système usinage GRBL.pdf Comment commander le système d’usinage avec du G-code

Driver CH34x_Win.zip
Driver Windows pour les versions "chinoises" de l'Arduino.
_______________________________________________________________________________________________________________________
Pour faciliter leur gestion, les fichiers ont été déplacés dans la DropBox.
Méthode pour visualiser ou télécharger Ces fichiers.

Les fichiers PDF peuvent être consultés dans le navigateur, par un simple clic sur le lien. Une fois ouvert le document peut être téléchargé en cliquant ici
1536767291481.png


Pour télécharger un ZIP, cliquer sur son lien
1536767097929.png

et le répertoire où il se trouve s’ouvre, cliquez, en suite sur
1536767125994.png

Et le zip se trouve dans votre répertoire Téléchargements.


Cordialement
jpbbricole
 
Dernière édition:
J

jpbbricole

Compagnon
Bonjour Precis84

J'avais même débuté avec un Nano!!!
Pour être large en mémoire pour le futur.
Pour les ports série.
Pour pouvoir avoir de la place pour mettre, sur le dos, les connexions nécessaires.

Bref, pour le confort!
Et puis ça coûte moins de 10€ et c'est un Uno avec 3,5cm de plus :wink:

Cordialement
jpbbricole
 
Dernière édition:
B

bump01

Compagnon
Bonjour
La Liaison avec la vis sans fin est faite avec un manchon d'accouplement élastique comme celui ci :
Manchon d'accouplement flexible.JPG

il faut un manchon d'accouplement rigide comme celui là :
Manchon d'accouplement rigide.JPG

sinon le mouvement de rotation va se faire avec du retard et mal , ce qui va nuire à la précision .
Belle réalisation .

A bientôt
 
P

pinou29

Compagnon
Bonjour.
Encore un sujet à suivre avec beaucoup d’intérêt.
Merci pour ton travail, ton partage et ta générosité.
Bernard.
 
W

wika58

Compagnon
Super JP,

Chouette ce reportage.

J'ai ce projet depuis très longtemps en tête. Et la un super Tuto pour le faire.
Un grand merci.
 
S

speedjf37

Compagnon
Bonjour,

Super idée à suivre !

Je n'ai pas tout compris !
Montage autonome / tour sous GRBL

je veux bien faire des essais avec mon diviseur motorisé :
https://www.usinages.com/threads/nu...seur-nouvel-usinage.81969/page-2#post-1010636

J'ai l'intention de lui faire un boitier avec l'alimentation et le driver avec une commutation pour choisir le mode.
Mode :
1 autonome (a tester)
2 axe A (ou autre) piloté par la CNC (Linuxcnc)/.

Je l'utilise sur la CNC , la fraiseuse et j'ai prévu de l'utiliser pour indexer le tour (avec le Rapide Lime ou pour percer )

exemple:
https://www.usinages.com/threads/un...ge-empreinte-8-pans.78743/page-2#post-1010215

JF
 
S

sevictus

Compagnon
Bonjour et merci pour ce partage d'un projet qui m'intéresse bien et que j'envisageais aussi depuis bien longtemps !
 
W

wika58

Compagnon
...
J'ai l'intention de lui faire un boitier avec l'alimentation et le driver avec une commutation pour choisir le mode.
Mode :
1 autonome (a tester)
2 axe A (ou autre) piloté par la CNC (Linuxcnc)/.

Je l'utilise sur la CNC , la fraiseuse et j'ai prévu de l'utiliser pour indexer le tour (avec le Rapide Lime ou pour percer )...

Tout à fait ce que je souhaites.:smt038
 
J

JCS

Compagnon
Salut à tous,

Bravo à Jpbbricole pour ce fabuleux travail partagé !

Je réuni les composants et je me mets au travail !
Il y a si longtemps que je souhaite me passer de mon PC pour ma machine à tailler les engrenages.

Merci Jpbbricole !

@+

JC.
 
V

vibram

Compagnon
Salut JPB,
Beau projet !
Pourquoi utiliser les fichiers avec le nombre de pas plutot qu'un codeur sur la broche?
 
J

jpbbricole

Compagnon
La Liaison avec la vis sans fin est faite avec un manchon...
Oui, c'est pas faux, mais la souplesse de ce type de raccordement se fait très peu sentir de façon axiale donc peu d'influence pour ce qui est de l'avancement et puis il faut voir ce montage un "démonstrateur":wink:
Je n'ai pas tout compris !
Montage autonome / tour sous GRBL
Montage autonome parce que, l'instigateur de ce montage, utilise une machine à tailler les roues dentées, motorisée par ses soins et qui nécessite un PC pour tourner, PC qu'il désire supprimer.
Le tour sur lequel j'ai fait ce développement est équipé "CNC" et que le système d'exploitation est GRBL.
2 axe A (ou autre) piloté par la CNC (Linuxcnc)/.
Ce système pourrais très bien être l'axe A (ou autre) à la seule condition de se mettre d'accord sur le protocole. Il est déjà équipé de la connectite pour cela (Voir connecteur Usinage).
Pourquoi utiliser les fichiers avec le nombre de pas plutot qu'un codeur sur la broche?
Parce que, une fois ou l'autre il faudra de toute façon donner les paramètres de la roue dentée quelque part et c'est très facile d'envoyer ces données du fichier sur le MPAP. Pour "créer" une nouvelle roue il suffit d'ajouter quelques lignes dans un nouveau fichier est l'affaire est faite.

Cordialement
jpbbricole
 
W

wika58

Compagnon
Ça promet plein de petits cousins de ton système :supz:
 
J

JCS

Compagnon
Pourquoi utiliser les fichiers avec le nombre de pas plutot qu'un codeur sur la broche?

Le diviseur numérique universel parfait n'existe pas. Pour certains nombres de dents il y aura une erreur du fait que le résultat de la
division du nombre de pas pour un tour de broche ne sera pas entier. Pour minimiser cette erreur la solution est d'augmenter le nombre de
pas pour un tour. Il est aussi impératif que la broche se retrouve exactement au "point zéro" après chaque tour. La solution la plus simple est
donc de faire un fichier qui va indiquer le nombre de pas moteur à exécuter pour la division de chaque dent, avec dans certains cas, un pas de plus
ou de moins. Ceci afin d'obtenir le bon total de pas pour un tour exact de broche. L'erreur sera alors contenu et se reportera toujours au même
endroit. Ce fichier, jusqu'a 100 dents par exemple, prend très peu de place sur une carte SD, c'est simplement une suite de nombre.
C'est en quelque sorte un "plateau diviseur numérique" que l'on enfiche dans un boîtier !

Cette solution permet aussi, par exemple, de tailler facilement des roues de comptes "chaperon" pour pendules comme ici :
http://www.sulka.fr/rcompte/

Un petit logiciel très simple peut générer, une fois pour toutes, le fichier des nombres de pas pour chaque division, il suffira de renseigner le nombre de pas pour un tour de broche.

Ici, au dernier tiers de la page, un exemple en Basic : http://www.sulka.fr/diviseur_numerique/cn.pdf

Et aussi, pourquoi pas ?

@+
JC.
 
V

vibram

Compagnon
Salut,
Ma question était une vraie question :wink:
Je comprends la démarche mais je pense que le probleme reste le meme avec un nombre de pas déterminé. Il y aura toujours une approximation à un moment.
Je voyais l'intéret d'un codeur car au moins on avait pas de problematique de perte de pas et de rattrapge d'un eventuel jeu selon le sens de rotation etc à partir du moment ou le MCU est correctement programmé pour éviter le pompage (un step trop haut puis un step trop bas et ainsi de suite en sautant toujours la valeur voulue)
Sans compter qu'il permet ausi de se passer de carte SD et tout ce qui va autour.

Mais c'est toujours positif de confronter les moyens employés et tant que l'objectif de l'utilisateur est réussi, alors c'est parfait
Et cela permet aussi d'apprivoiser d'autres technologies qui serviront dans d'autres projets etc
 
J

JCS

Compagnon
Salut Vibram,

Je ne nie absolument pas de la véracité de ta question qui est très pertinente !

En fait, je ne vois pas comment avec un système de codage simple on peut diviser, par exemple, 87 dents.

Si quelqu'un arrive à me le faire comprendre, je risque de changer d'avis.
Si c'est mieux, est-ce à la portée de l'amateur ?

Dans le cas présent, c'est très simple, Jpbbricole nous a fait un fabuleux travail. Il suffit de télécharger, d'assembler et hop !

@+
JC.
 
V

vibram

Compagnon
je vais essayer d'etre succint:
Je prends un codeur qui correspond à mes besoins mais qui reste correct en terme de prix. jusqu'à 2500 pulse/tour, on en trouve à moins de 25/30€, mais les codeurs peuvent monter jusqu'à 10000 pulse (voire plus sans doute selon la taille) bref 2500 c'est deja pas mal.
Avec n'importe quel arduino ou STM32 ou autre MCU, tu peux décoder en quadrature X4. L'arduino est un peu plus lent et là on veut un nombre élevé de pulse, donc il faut faire attention aux variables vitesse de rotation / nombre de pulse par tour / vitesse de lecture.
Mais dans le cadre d'un diviseur on a rarement ce probleme car on tourne lentement.

Donc en quadrature x4, avec un codeur 2500 ppr, on arrive à 10'000 pulse par tour donc une résolution de 360°/10'000 = 0.036°

Ca c'est le coté lecture.
Ensuite dans ton programme tu rentres ton nombre de divisions voulues et tu vas calculer la valeur voulue du codeur. C'est là ou il faut faire attention à la résolution et à calculer un arrondi ou utiliser l'algorithme proposé par @gaston48
Maintenant tu as ton moteur (souvent un PAP) qui va envoyer un nombre déterminé de step pour arriver à ta valeur voulue et s'arreter lorsque les conditions sont remplies.
L'avantage c'est que tu n'as pas à te soucier de la démultiplication, ni des pertes de pas, ni de l'éventuel jeu dans l'ensemble. Tant que la valeur cible n'est pas atteinte, on tourne dans un sens ou dans l'autre pour atteindre la valeur cible. Encore une fois, il faut faire attention à la valeur cible pour éviter le pompage (cad que tu veux une valeur théorique de 0.048° par exemple alors que ton codeur va seulement lire 0.036 puis 0.072 ou que le pas de ton moteur va passer un coup au dessus et un coup en dessous)
 
G

gaston48

Compagnon
En fait, si on considère les caractéristiques suivante d'un diviseur:
PAP de 200 pas / tour x 4 micro-pas = 800 avec réducteur 1/60 = 48000 pas pour 360°
Taillage d'une 127 dents
48000 /127 = 377,952 ... micro-pas l'algo calcule en temps réel les 127 séquences successives alternées
de x fois 377 + x fois 378 pour que leur somme fasse bien 48000
 
J

JCS

Compagnon
En fait, si on considère les caractéristiques suivante d'un diviseur:
PAP de 200 pas / tour x 4 micro-pas = 800 avec réducteur 1/60 = 48000 pas pour 360°
Taillage d'une 127 dents
48000 /127 = 377,952 ... micro-pas l'algo calcule en temps réel les 127 séquences successives alternées
de x fois 377 + x fois 378 pour que leur somme fasse bien 48000

C'est exactement comme cela que l'on fonctionne !
Sauf que l'on fait les calculs une fois pour toutes et que l'on met les résultats dans une carte SD.
On trouve des lecteurs de carte SD pour Arduino à moins de 1 €.
Pour le soft, on s'occupe de rien, c'est Jpbbricole qui fait tout, il n'y a qu'a télécharger gratuitement !

Donc en quadrature x4, avec un codeur 2500 ppr, on arrive à 10'000 pulse par tour donc une résolution de 360°/10'000 = 0.036°

En ce qui me concerne, je travaille avec 37800 pas par tour. Donc il me faudra un 10 000 pulses en X 4. Combien ça coûte ?
As-tu un lien ?
Merci d'avance.
Il faut dire que j'ai réalisé ma première machine à tailler il y a une quinzaine d'années. A cette époque je ne pense pas qu'il y avait des codeurs à 10000 pulses à un prix abordable !
Ici ma première machine à tailler : http://www.sulka.fr/mat/

@+
JC.
 
J

jpbbricole

Compagnon
je ne veux pas poluer le post de Jpb, il a développé son outil qui fonctionne, je voulais juste m'interesser à sa méthode :wink:
Tu ne pollue pas, mais je ne comprends pas l'usage d'un codeur rotatif dans ce cas de figure (je suis un peu le candide de l'histoire, n'étant pas de la mécanique) Un codeur rotatif est surtout utile pour quantifier un mouvement au déplacement "inconnu". Pour nous, on est, grâce au MPAP, maître du déplacement, donc cannaisseurs de ses valeurs. Me trompe-je:7grat:

Cordialement
jpbbricole
 
V

vibram

Compagnon
Tu ne pollue pas, mais je ne comprends pas l'usage d'un codeur rotatif dans ce cas de figure (je suis un peu le candide de l'histoire, n'étant pas de la mécanique) Un codeur rotatif est surtout utile pour quantifier un mouvement au déplacement "inconnu". Pour nous, on est, grâce au MPAP, maître du déplacement, donc cannaisseurs de ses valeurs. Me trompe-je:7grat:

Cordialement
jpbbricole

A la différence pret que tu peux avoir des facteurs d'erreur:
- perte de pas (n'arrive pas si le moteur et le driver sont adaptés mais bon sait on jamais)
- jeu dans la transmission

Par exemple dans ton cas, tu dois avoir du jeu dans la transmission donc tu es obligé de toujours tourner dans le meme sens.
Dans ton cas on est en boucle ouverte: tu envoies les infos et fais en sorte que tous les facteurs d'erreur soient controlés pour obtenir ton résultat
Dans le cas d'un codeur tu es en boucle fermée: tu récupères les infos constamment et réagis en fonction. Cela permet plus de souplesse normalement
 
G

gaston48

Compagnon
je ne comprends pas l'usage d'un codeur rotatif
Avec un pas à pas , sa précision et sa répétabilité de positionnement est tributaire de couples résistants parasites,
par exemple un frottement de la vis sans fin tous les tours, un excentration mécanique etc
Un codeur sur la broche c'est un capteur susceptible de s'affranchir des défauts de la mécanique.
Bon travail en tout cas !
Tu devrais t'affranchir des tableaux pré-calculés.
 
Dernière édition:
J

JCS

Compagnon
Apres tu peux prendre un 2500 et mettre 2 poulies avec un ratio 1:4

Je te rappelle que je travaille avec 37800 pas !

A la différence pret que tu peux avoir des facteurs d'erreur:
- perte de pas (n'arrive pas si le moteur et le driver sont adaptés mais bon sait on jamais)
- jeu dans la transmission

J'ai eu, au début des erreurs, javais un moteur PAP de récup qui était défectueux.

Si tu regardes bien les liens que j'ai donnés, j'ai un système de vis sans fin débrayable avec rattrapage de jeu.
Si le système est bien conçu, avec une bonne vis sans fin, le jeu est quasiment inexistant et pas besoin de système de bloquage
de la broche pendant le taillage.

A tout lire, je me rends compte que notre système est le plus abordable et performant pour l'amateur !

Il serait judicieux, pour ceux qui pratiquent autrement, d'ouvrir une nouvelle discussion et de nous montrer les réalisations !
La concurrence est saine !

Bon dimanche à tous !

JC.
 
V

vibram

Compagnon
Oui 2500 avec un ratio 1:4 = 10'000 pas, en quadrature x4 = 40'000 pas

On a fait le tour :) bon dimanche
 
J

JCS

Compagnon
Dernière édition:

Sujets similaires

V
Réponses
3
Affichages
1 043
vibram
V
Père-Pendiculaire
Réponses
23
Affichages
633
Père-Pendiculaire
Père-Pendiculaire
laurenttanguy
Réponses
0
Affichages
481
laurenttanguy
laurenttanguy
El Zorro
Réponses
12
Affichages
575
El Zorro
El Zorro
Dudulle
Général langage MMBASIC
Réponses
8
Affichages
842
Dudulle
Dudulle
F
Réponses
6
Affichages
25 673
fraiddy
F
2
Réponses
8
Affichages
404
2cv001
2
N
Réponses
3
Affichages
737
jpbbricole
J
M
Réponses
4
Affichages
486
MakerJoGa
M
B
Réponses
143
Affichages
11 456
wika58
W
W
Réponses
261
Affichages
18 480
midodiy
midodiy
G
Réponses
1
Affichages
1 330
Greg de Nîmes
G
B
Réponses
2
Affichages
443
Benobo
B
Haut