Interface avec comparateur Mitutoyo

J

jpbbricole

Compagnon
Bonjour vibram

J'en reviens toujours à cette piste 3 qui reste à HIGH!
Pourrais-tu croiser les câble de mesure des pistes 3 et 5 et voire le résultat.

Un autre test à faire, reprendre plusieurs mesures avec ton comparateur et en faire une trace un peu plus zoomée que l'exemple du post #17
1597992268488.png

et voire si les bits changent.

A+
Cordialement
jpbbricole
 
V

vibram

Compagnon
Allez on avance:
deja je peux me desservir une palme du boulet
EN fait les numeraux des canaux entre l'analyseur et le software sont décalés de 1, on résout donc le problème du "HIGH"
J'ai enfin 3 signaux sur mes 3 canaux
1597997782004.png


En revanche le souci semble venir du canal 2 (data)
et ca se confirme par le moniteur série ou la valeur est toujours à 0 quoi que je mesure avec le comparateur
 
J

jpbbricole

Compagnon
Bonjour vibram
Allez on avance:
Super :tumbsupe:
et ca se confirme par le moniteur série ou la valeur est toujours à 0 quoi que je mesure avec le comparateur
Si tu parles de l'essai du post #23, ce test affiche 0 ou 1 si l'affichage du comparateur est positif ou negatif (ou l'inverse), mais n'affiche pas la valeur.
En revanche le souci semble venir du canal 2 (data)
Pas forcément, si le diagramme affiché reste le même après plusieurs mesures, avec une valeur affichée la même, changes la valeur de ton comparateur pour voire si le diagramme change également.

A+
Cordialement
jpbbricole
 
V

vibram

Compagnon
Oui le test du post 23 affiche toujours 0 meme si je bouge le comparateur dans tous les sens

Pour le canal 2,
Si je ne fais pas bouger le plongueur, j'ai cette lecture sur 5 sec:
1598000422800.png


En revanche si je bouge dans tous les sens:
1598000455491.png


c'est quand meme etrange non?
 
J

jpbbricole

Compagnon
Bonjour vibram

Le définition n'est pas suffisante, on ne voit pas le détail
Il faudrait faire tes test avec une plus haute définition, comme au post #17.

Cordialement
jpbbricole
 
V

vibram

Compagnon
Merci pour ton aide Jpb en tout cas, ainsi que Zed :wink:
voici plus en détail
1598001826123.png


A chaque fois le High de la data est sur une fraction de seconde
1598001856488.png
 
J

jpbbricole

Compagnon
Bonjour vibram

Pourrais-tu faire une nouvelle mesure, en déconnectant le DATA de l'Arduino et mesurant côté le DATA côté comparateur?

A+
jpbbricole
 
V

vibram

Compagnon
Je me suis un peu emrbouillé les pinceaux quand j'ai voulu faire ca
Bonjour vibram

Pourrais-tu faire une nouvelle mesure, en déconnectant le DATA de l'Arduino et mesurant côté le DATA côté comparateur?

A+
jpbbricole
du coup j'ai repris un peu les branchements et il y a du mieux:
lorsque je reset l'arduino, j'ai une valeur correcte
13:16:23.388 -> sign:8
13:16:23.388 -> valeur afficheur:3524
sign : 8 correspond à -
et la valeur 3524 est bien la valeur sur mon écra de comparateur 3.524
En revanche je ne sais pas pourquoi mais l'arduino est bloqué à la seconde boucle
Et on le voit bien sur l'analyseur:

1598008725602.png
 
J

jpbbricole

Compagnon
Bonjour vibram
Wouaouuu :smt038 :tumbsupe: belle avancée.
Sur ta capture, le signal REQ (canal 5) ne bouge plus!
Je regarde, au niveau programme, cet après-midi.

A+
jpbbricole
 
V

vibram

Compagnon
Je me demande si l'erreur restante n'est pas due à un faut contact
ne passe pas trop de temps dessus je vais regarder de mon coté pour revoir mes soudures car ca me semble étrange, je te tiens au courant :wink:
 
V

vibram

Compagnon
c'est étrange c'est quand je branche et debranche la pin REQ que le protocole se met en route quelques secondes puis s'arrête mais je n'arrive pas à savoir pourquoi
je n'utilise pas un nano mais un uno. Cela aurait il une incidence sur le output? je ne pense pas
Ou c'est le BC547 à la place du 2n2222 ? je les recois la semaine prochaine
 
T

tronix

Compagnon
Bonjour,
quelques petits conseils pour le debug de ce genre de truc.
Ne pas hésiter, avec cet analyseur logique, à saisir le vrai nom des signaux en face des voies, cela facilite la lecture. Ensuite, il y a énormément de fonctions de décodage déjà écrites, regarder s'il y a la bonne (je n'ai pas regardé), cela est très pratique (asynchrone, spi, qpi, i2c, can, afficheur lcd...). Enfin, l'oscilloscope est alors utile non pour décoder les signaux, ce que fait mieux l'analyseur, mais pour vérifier soigneusement les formes et niveaux des signaux. Ne pas passer trop vite sur cette étape, car un signal peut avoir une bonne tête mais des niveaux incorrects qui seront donc mal interprétés, et pas forcément de la même façon que par l'analyseur. Vérifier avec les docs les niveaux requis. Et pour l'analyseur, charger la dernière version du logiciel, il y a eu de grosses améliorations.
 
Dernière édition:
V

vibram

Compagnon
Merci bien tronix, c'est la 1ere fois que je l'utilise, je verrai pour analyser mon stm32 + oled que je n'arrive pas à faire fonctionner !
 
J

jpbbricole

Compagnon
Bonjour tronix
Ne pas hésiter, avec cet analyseur logique
Surtout au prix où on les trouve (< 10$). J'utilise beaucoup la sonde logique ainsi qu'un petit oscillo.

je n'utilise pas un nano mais un uno. Cela aurait il une incidence sur le output? je ne pense pas
Le Nano est un "petit" UNO, donc identique.
c'est étrange c'est quand je branche et debranche la pin REQ
C'est ce que j'allais te demander de faire :-D .
Je vais regarder dans le programme qui peut empêcher l'envoi du REQ.

mon stm32 + oled que je n'arrive pas à faire fonctionner !
Tu n'arrives pas à afficher?, c'est quel modèle?

Cordialement
jpbbricole
 
Dernière édition:
V

vibram

Compagnon
Salut,
Mon comparateur est un : 543-345B

Halleluia ca fonctionne du premier coup...
c'est quand meme incroyable... merci pour votre patience et perseverance !!!
A l'occasion je vais quand meme regarder les deux codes pour comprendre d'ou vient le probleme
je vois que le req ne fonctionne à l'inverse, je ne sais pas si ca vient du transistor ou quoi
bref ca fonctionne c'est deja un bon début !!
je vais pouvoir me remettre a ce problème d'I2C
@Famille40 tu sais quelle librairie utiliser maintenant :)
 
Dernière édition:
J

jpbbricole

Compagnon
Salut vibram

:partyman: SUPER :partyman:
A l'occasion je vais quand meme regarder les deux codes pour comprendre d'ou vient le probleme
Ca va être difficile, à moins de décortiquer la bibliothèque :7grat:

Sur quoi veux-tu afficher les mesures?

A+
jpbbricole
 
V

vibram

Compagnon

ca va aller la :)

oui j'ai regardé les bibliotheques sont tres tres proches, il y a cette histoire de REQ qui me turlupine mais bon je vais pas y passer ma vie, j'attaque le STM32 et l'OLED mais sans surcouche arduino :)
D'ailleurs je mets le PDF ici car il est plus complet et on voit qu'il faut ajouter quelques composant sans doute pour améliorer les signaux
Encore merci JPB :)
 

Fichiers joints

  • Digimatic Protocol.pdf
    164.2 KB · Affichages: 57
J

jpbbricole

Compagnon
Bonjour vibram
A l'occasion je vais quand meme regarder les deux codes pour comprendre d'ou vient le probleme
J'ai comparé les 2 méthodes, je pense que le problème vient de la variable _interface.good_reading, qui n'existe pas dans la bibliothèque.
Pour enclencher REQ, _interface.good_reading doit être à 0
puis elle est mise à 1, ensuite, le seul endroit où elle mise à 0 est ici
donc, seulement en cas d'erreur!

Cordialement
jpbbricole
 
V

vibram

Compagnon
Merci Jpb, je regarde mon histoire d'écran OLED et ensuite je me remets la dessus :)
ca prend du temps ces histoires
 
U

Ubert

Compagnon
Bonjour à tous,
Petite question pour le non-initié à l'Arduino que je suis, y'a t'il possibilité par ce moyen de lire et d'afficher en simultanée les données de plusieurs instruments, à la façon d'une visu?
Jean-Philippe
 
V

vibram

Compagnon
Oui oui aucun probleme normalement
A voir en terme de vitesse et de simultanéité mais normalement je dirais pas de problème

merci @jpbbricole je note ca j'essayerai :)
 
J

jpbbricole

Compagnon
Bonjour Famille40
Petite question pour le non-initié à l'Arduino que je suis, y'a t'il possibilité par ce moyen de lire et d'afficher en simultanée les données de plusieurs
Oui, c'est certainement possible, avec 2 instruments du type Mitutoyo, peut-être pas plus pour un UNO ou Nano, j'ai fait des montages avec des PAC chinois sur le même Arduino, sans problème,
Il y a quelques temps j'avais fait ça

Où chaque instrument a son propre "petit" Arduino qui sont connectés sur un "GROS Mega" avec un bus i2C avec une réactivité tout ä fait acceptable. La DRO est une Touchdro de Yuriy.
Comme je n'ai pas de Mitutoyo, je vais me faire un émulateur pour essayer.

Cordialement
jpbbricole
 
V

vibram

Compagnon
Bonjour à tous

je continue mes recherches.
Pour rappel ca fonctionne bien avec un arduino mais j'essaie de porter ca sur un STM32
ne me demandez pas pourquoi ... :)
Pour rappel le protocole:
1598972654488.png


J'ai un peu réecrit le code avec les librairies ST HAL et j'avais paramétré un Timer Interrupt qui doit arriver toutes les 40ms pour venir récupérer le signal.
J'aurais aimé aussi enlever le HAL_Delay à l'intérieur de l'interrupt car cela fout le merdier je pense.

J'ai toujours ce probleme de pin request bloqué en High et du coup le code bloque à ce niveau


Je pense que le probleme vient de la synchronisation entre le signal req et le signal clk et j'ai le sentiment que c'est la meme chose sur les sketch arduino ci-dessus hormis la librairie toruvée par Jpb qui est fonctionnelle.

Je demande donc aux pro des STM32/HAL (@CNCSERV et d'qutres que j'oublie):
comment feriez vous pour bien synchroniser ces 2 signaux ?
je ne vois pas comment faire avec les timers.

j'ai également testé un interrupt toutes les 20ms et avec un interrupt sur deux, je changeais la valeur de req (ce sont les lignes commentées dans HAL_TIM_PeriodElapsedCallback
Et là j'avais un signal pendant une boucle puis plus rien comme si l'ensemble n'était pas correctement synchronisé

Voici mon code en l'état:

Merci :wink:
 
J

jpbbricole

Compagnon
Salut vibram
J'ai toujours ce probleme de pin request bloqué en High et du coup le code bloque à ce niveau
Je ne comprends pas pourquoi ce signal reste High, du moment que c'est toi qui le commande?
Dans le bibliothèque Digimatic ils font:
C'est le seul "acte actif", répété chaque fois que tu veux une mesure, que tu dois faire, après, tu est esclave de ton Mitutoyo, donc travailler en interruption sur le signal Ck flanc descendant, et, à ce moment, tu lis la valeur du bit sur le signal Data. Pourquoi un ou des timer?
Tout ça c'est ma théorie, je n'ai pas ce type de PAC, mais je vais faire un émulateur qui travaille "comme Mitutoyo" pour essayer.

Cordialement
jpbricole
 
V

vibram

Compagnon
Salut Jpb,

j'ai essayé de faire plus simple, j'ai tout mis dans le while !
Plus d'interrupt (ils sont encore écris mais désactivés dans le code ci dessous).
J'ai un beau signal
1598985054335.png


Maintenant je dois comprendre pourquoi ma variable cur_value est toujours à 0.
J'ai toujours un doute sur l'utilisation du return dans ma fonction fetch mais j'ai pompé ca sur le sketch arduino fonctionnel7

Quand je vois la durée d'une transmission (environ 55ms), je pense que mon interruption venait trop beau (40ms) et du coup foutait tout en l'air

 
P

pailpoe

Compagnon
Tu as du courage de tout faire sans la couche arduino stm32duino !
 

Sujets similaires

V
Réponses
3
Affichages
1 041
vibram
V
G
Réponses
0
Affichages
605
gaston83
G
F
Réponses
6
Affichages
25 669
fraiddy
F
Moi33
Réponses
3
Affichages
47 992
speedjf37
S
G
Réponses
123
Affichages
19 221
gaston83
G
01power
Réponses
3
Affichages
13 850
01power
01power
V
Réponses
4
Affichages
2 946
wika58
wika58
M
Réponses
185
Affichages
24 866
wika58
wika58
V
Réponses
7
Affichages
1 985
vibram
V
V
Réponses
62
Affichages
39 349
Dardar88
Dardar88
D
Réponses
9
Affichages
3 060
David80
D
taratata
Réponses
4
Affichages
4 258
taratata
taratata
J
Réponses
1
Affichages
1 838
pinou29
pinou29
S
Réponses
112
Affichages
21 903
manum01
M
Haut