Interface avec comparateur Mitutoyo

V
vibram
Compagnon
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #1
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
 
Famille40
Famille40
Compagnon
10 Avr 2015
5 610
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
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 266
Corsier-sur-Vevey (Vaud)
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
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #4
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
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #5
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
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 266
Corsier-sur-Vevey (Vaud)
Bonjour vibram

Et une mesure sans l'Arduino?

A+
jpbbricole
 
V
vibram
Compagnon
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #7
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
 
zed
zed
Compagnon
26 Juil 2016
514
Ouest Toulousain
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
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #9
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
 
zed
zed
Compagnon
26 Juil 2016
514
Ouest Toulousain
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...
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 266
Corsier-sur-Vevey (Vaud)
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
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 266
Corsier-sur-Vevey (Vaud)
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
zed
zed
Compagnon
26 Juil 2016
514
Ouest Toulousain
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...
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 266
Corsier-sur-Vevey (Vaud)
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
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #15
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
 
zed
zed
Compagnon
26 Juil 2016
514
Ouest Toulousain
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
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #17
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
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 266
Corsier-sur-Vevey (Vaud)
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
 
zed
zed
Compagnon
26 Juil 2016
514
Ouest Toulousain
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
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #20
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).
 
Famille40
Famille40
Compagnon
10 Avr 2015
5 610
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
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #22
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.
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 266
Corsier-sur-Vevey (Vaud)
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
 
Famille40
Famille40
Compagnon
10 Avr 2015
5 610
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
 
zed
zed
Compagnon
26 Juil 2016
514
Ouest Toulousain
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.png
Tu la débranches coté Arduino, et tu la laisses coté comparateur. C'est ça que tu as fait ?
 
V
vibram
Compagnon
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #26
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
 
zed
zed
Compagnon
26 Juil 2016
514
Ouest Toulousain
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...
 
jpbbricole
jpbbricole
Compagnon
26 Mai 2016
2 266
Corsier-sur-Vevey (Vaud)
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
15 Mar 2014
4 080
FR-74
  • Auteur de la discussion
  • #30
je confirme le résultat est négatif que je debranche coté comparateur ou arduino c'est pareil ;(
 
Haut