Interface avec comparateur Mitutoyo

V

vibram

Compagnon
Bonsoir à tous,


j'essaie d'interfacer un comparateur mitutoyo avec un Arduino
Il y a un instructable ici:
et il a été amélioré ici:

J'ai copié le code ainsi que les librairies du github.
J'arrive avec le code ci dessous (pour avoir un peu de visibilité dans le moniteur série)


mais voila impossible d'executer le code jusauq'à la fin
Dans le moniteur série j'ai ca:

On voit que je bloque a la ligne 52 ou au bout d'un moment le pin clk reste à 1.
J'utilise un transistor BC547 au lieu d'un 2N2222 car je n'en ai pas sous la main.
j'ai vérifié mes branchements etc. Rien n'y fait...
Avez-vous une idée?
Demain je vais tenter d'utiliser l'oscilloscope pour voir si j'ai un signal qui ressemble au protocole de communication
Le branchement réalisé est celui-ci:
1597872601451.png


pour rappel le protocole mitutoyo:
1597872626680.png


Merci à vous
 
U

Ubert

Compagnon
Bonjour Paul,
Je ne peux pas t'aider car ça sort de mon domaine mais je vais quand même suivre ton sujet.
Je suis aussi équipé en règles et comparateurs Digimatic, je comptais voir pour les interfacer de cette façon plutôt qu'avec les afficheurs du constructeur.
Jean-Philippe
 
J

jpbbricole

Compagnon
Bonjour vibram

Si je me réfère à ton schéma, il y a un problème avec la connexion du transistor, le 2N2222, le brochage est EBC, le BC547, CBE.

Cordialement
jpbbricole
 
V

vibram

Compagnon
Salut Jpb,
Oui j'ai fait attention à cette particularité que j'ai pris soin de modifier lors du branchement réel :)
Ceque je ne comprends pas cest que CLK devrait toujours osciller entre low et high peu importer ce qu'il se passe à coté et là c'est bloqué sur high...
Je vais essayer l'oscillo aujourdhui meme si je ne suis pas expert avec
 
Dernière édition:
V

vibram

Compagnon
Bon je dois avoir un souci quelque part
j'ai mis un oscillo je voyais rien de probant mais je maitrise mal l'outil
Et avec un analyseur de logique qui est plus simple à utiliser:
1597906274233.png


et j'ai exactement la meme choque que je bouge le comparateur ou pas
Je vais voir pour me mettre en direct sur la prise sans passer par le module noir d'alim mais ca veut dire bricoler les fils etc
 
J

jpbbricole

Compagnon
Bonjour vibram

Et une mesure sans l'Arduino?

A+
jpbbricole
 
V

vibram

Compagnon
ca c'est ce qui sort directement depuis le module d'alim du comparateur c'est ce qui m'inquiete un peu.
J'ai fait une autre mesure en me piquant directement sur le comparateur en mettant moi meme 5V d'alim (apres avoir vérifié que c'etait bien ce que le comparateur devait recevoir)
1597911253336.png


Je ne sais pas ce qu'il se passe pour avoir un tel résultat, vraiment étrange que rien ne bouge meme quand je fais varier la course du comparateur
 
Z

zed

Compagnon
Bonjour,
Je ne comprends pas l'utilité du transistor. D'après les commentaires dans le code source, il sert à inverser le signal... ???
Il suffit de ne pas mettre de transistor et d'inverser LOW et HIGH dans les commandes de la ligne REQ...


Edit : Après lecture des asterisk, cette remarque est erronée...
 
Dernière édition:
V

vibram

Compagnon
Salut,

J'avoue ne pas avoir creusé de ce coté là mais je trouve deja étrange ce que je vois avec l'analyseur de logique quand je me mets directement à la sortie du comparateur. mes tests à l'oscillo me donnent rien de bien plus interessant, je commence à secher
 
Z

zed

Compagnon
D'après la doc succincte fournie, le timing chart indique qu'il faut une impulsion negative (+5v vers 0v) pendant une certaine durée pour déclencher l'envoi de données.
Pour le transistor, si il est indispensable car l'entrée REQ du comparateur est en CMOS pull up, il faut donc une commande du req en collecteur ouvert... Ma précédente remarque sur le sujet n'était pas bonne...
 
J

jpbbricole

Compagnon
Bonjour zed
Je ne comprends pas l'utilité du transistor. D'après les commentaires dans le code source, il sert à inverser le signal... ???
Si l'instrument de mesure est alimenté en 3V. ce qui est souvent le cas. ce transistor sert à adapter le niveau logique vers le 5V., ce qui inverse le signal original, qui, par conséquent, doit être "retourné" dans le programme.

Cordialement
jpbbricole
 
  • Réagir
Reactions: zed
J

jpbbricole

Compagnon
Bonjour zed
Ma précédente remarque sur le sujet n'était pas bonne...
Comme la mienne, aussi, j'ai raisonné "entrée Arduino" alors que c'est sortie ver instrument. :smt021

Cordialement
jpbbricole
 
  • Réagir
Reactions: zed
Z

zed

Compagnon
Une autre piste, c'est toutes tes commandes "Serial.print".
A 9600, 1bit c'est 100µs donc un caractère sur l'interface série ça te coute 1000µs.
Tu envoies régulièrement plusieurs caractères (STEPx) pendant la lecture , donc plusieurs milliers de µs
Toujours d'après la doc, la période du CLK est comprise entre 315µs et 950µs.
A mon avis, tu perds des changements d'état du CLK (et donc des bits) pendant que tu écris tes STEP sur l'interface série...
 
J

jpbbricole

Compagnon
Bonjour
Une autre piste, c'est toutes tes commandes "Serial.print"
Je plussoie totalement @zed, recharges le code de base et mets ton analyseur logique sur les signaux req, data et clk, fait un reset du Nano et montres nous le diagramme obtenu. Il est impératif, pour ces essais, que l'Arduino soit connecté au Mitutoyo.

Cordialement
jpbbricole
 
V

vibram

Compagnon
J'ai remis le code de base et repris les branchements
j'ai dérivé les pins 2 (Data), 3(Clock) et 5 (Request) allant de l'instrument vers l'arduino afin d'y piquer l'analyseur logique.
j'obtiens un résultat moins pire:
1597921906476.png


les numéraux de canaux correspondent aux numéros de pin.
en revanche je ne vois pas pourquoi le pin CLK est toujours haut.
Ensuit j'ai ajouté un Serial.println à la fin du sketch pour afficher le résultat, je suis toujours à 0
 
Z

zed

Compagnon
La lecture ne peut commencer que quand le req passe à zéro.
Il faut que ton entrée 3 de l’analyseur soit piquée sur le collecteur du transistor Pour voir ce qui arrive sur le comparateur, et non ce qu’envoie l’Arduino.
 
V

vibram

Compagnon
Ok alors j'ai changé le branchement:
channel 2 sur pin 2, channel 3 sur pin 3 et channel 5 sur le collecteur du transistor qui va vers l'instrument
Mais le résultat semble etre le meme j'ai toujours le channel 3 toujours HIGH malgré l'état du REQ (channel 5) qui change
1597923687821.png
 
J

jpbbricole

Compagnon
Bonjour
Mais le résultat semble etre le meme j'ai toujours le channel 3 toujours HIGH malgré l'état du REQ (channel 5) qui change

C'est curieux ce channel 3 toujours HIGH? Il me semblerai que sur le channel 2 Data on a bien des données!
Pour moi, ça fonctionne.

Mais, voilà il fait beau, je reviendrai plus tard :-D

Bonne après-midi
Cordialement
jpbbricole
 
Z

zed

Compagnon
Oui, là on a une bonne cohérence entre le channel 5 et le channel 2. Maintenant, reste à comprendre pourquoi le channel 3 reste silencieux...
Essaye le même test mais en débranchant la pin 3 coté Arduino et en la laissant raccordé coté comparateur (et toujours connecté à l'analyseur, bien sûr).
Comment fais-tu la connexion entre le comparateur et l'Arduino ? es-tu sûr de la continuité de bout en bout de chaque circuit ?
 
V

vibram

Compagnon
Après pas mal de temps passé dessus voila ou j'en suis
J'ai réussi à me séparer du petit module d'alimentation pour me brancher directement sur la prise qui va au comparateur et ainsi eviter toute manipulation ou autre des canaux par ce module.
Ce que voit l'analyseur est ce qu'envoit le comparateur sur les pins 2 et 3 et ce que recoit le comparateur sur la pin 5 (et ce sont les memes pins sur l'arduino)

Mes conclusions à ce niveau:
En gros, j'ai une seule maniere de brancher l'ensemble qui m'amene au résultat suivant:
1597933361874.png


Si je débranche la pin CLK, c'est comme si je la branche sur une autre pin ca ne donne ce résultat:
1597933946580.png


Donc voit bien qu'il y a une erreur lorsque la pin CLK est débranchée ou mal branchée.
En revanche elle est toujours en état "HIGH" quoi qu'il arrive
Je commence à me demander si le comparateur n'est pas en cause ?
Aucune idée de sa provenance il semble fonctionner correctement sur l'affichage mai peut etre que le transfert de données est HS?
Je n'exclue rien mais je trouve louche car là j'ai essayé pas mal de choses et je ne vois aucun changement.
j'ai aussi essayé d'inverses Data et CLK sans succès (rien de surprenant).
 
U

Ubert

Compagnon
Je commence à me demander si le comparateur n'est pas en cause ?
Aucune idée de sa provenance il semble fonctionner correctement sur l'affichage mai peut etre que le transfert de données est HS?
Je n'exclue rien mais je trouve louche car là j'ai essayé pas mal de choses et je ne vois aucun changement.
j'ai aussi essayé d'inverses Data et CLK sans succès (rien de surprenant).
Si ça peut t'aider dans tes recherches, je peux te prêter un afficheur Mitutoyo avec son câble de données. Au moins tu seras fixé... A toi de me dire.
Jean-Philippe
 
V

vibram

Compagnon
Merci pour la proposition, le câble a quel format ?
Car moi c'est un connecteur rond ancienne génération.
J'ai un autre comparateur avec la fiche femelle "nouvelle génération", connecteur rectangulaire 5 broches
Ça pourrait me permettre de tester et éventuellement acheter un câble par la suite pour le comparateur plus récent.
 
J

jpbbricole

Compagnon
Bonjour vibram

Ce qui est "étrange", c'est que le prpgramme envoie des REQ (canal 5) ce qui prouve que le programme tourne, alors que, si l'on ne recevait pas de CLK (canal 3), celui-ci devrait se bloquer, du fait que
Malheureusement je ne peut pas tester en vrai, mais essaies d'ajouter cette ligne (celle du milieu):
et fait alterner l'affichage de l'appareil de valeur positive en négative et vois si ça change la valeur affichée dans le moniteur de l'IDE.

A+
Cordialement
jpbbricole
 
U

Ubert

Compagnon
Merci pour la proposition, le câble a quel format ?
Car moi c'est un connecteur rond ancienne génération.
J'ai un autre comparateur avec la fiche femelle "nouvelle génération", connecteur rectangulaire 5 broches
Ça pourrait me permettre de tester et éventuellement acheter un câble par la suite pour le comparateur plus récent.
C'est un 5 pins rectangulaire côté instrument, et 10 pins sur deux rangées côté afficheur, nouvelle génération je pense. Ca donne ceci :
IMG_5712.jpeg

Jean-Philippe
 
V

vibram

Compagnon
Tu la débranches coté Arduino, et tu la laisses coté comparateur. C'est ça que tu as fait ?
Je l'ai débranché côté comparateur
Je peux essayer côté arduino mais de mémoire c'est pareil
 
Z

zed

Compagnon
Je l'ai débranché côté comparateur
Je peux essayer côté arduino mais de mémoire c'est pareil
L'intérêt de débrancher coté Arduino, c'est que tu monitoreras ce qui sort du comparateur.
Parce qu'en débranchant coté comparateur, tu monitores ce qui sort de l'Arduino, et comme c'est une entrée, bah tu voies rien...
 
J

jpbbricole

Compagnon
Bonsoir zed
L'intérêt de débrancher coté Arduino, c'est que tu monitoreras ce qui sort du comparateur.
Je pense qu'il faut que les 2 soient branchés du fait que le comparateur attend un REQ (pin 5) pour envoyer quelque chose.
1597947998498.png

Sans l'Arduino, rien ne se passe.

Cordialement
jpbbricole
 
V

vibram

Compagnon
je confirme le résultat est négatif que je debranche coté comparateur ou arduino c'est pareil ;(
 

Sujets similaires

V
Réponses
3
Affichages
1 021
vibram
V
G
Réponses
0
Affichages
597
gaston83
G
F
Réponses
6
Affichages
25 648
fraiddy
F
Moi33
Réponses
3
Affichages
47 982
speedjf37
S
G
Réponses
123
Affichages
19 179
gaston83
G
01power
Réponses
3
Affichages
13 824
01power
01power
V
Réponses
4
Affichages
2 935
wika58
wika58
M
Réponses
185
Affichages
24 803
wika58
wika58
V
Réponses
7
Affichages
1 971
vibram
V
V
Réponses
62
Affichages
39 319
Dardar88
Dardar88
D
Réponses
9
Affichages
3 050
David80
D
taratata
Réponses
4
Affichages
4 238
taratata
taratata
J
Réponses
1
Affichages
1 833
pinou29
pinou29
S
Réponses
112
Affichages
21 870
manum01
M
Haut