Jai un projet ambitieux pour mon niveau et j'ai de la peine à trouver le bon angle d attaque.
J'aimerais localiser un point d'impact sur une tôle acier via 4 capteurs de vibration piezo et quelques calculs (j'ai trouvé chez nos amis anglais la notion de TDOA travel distance over time).
C'est capteurs seront placé aux 4 côtés de la plaque qui mesure 10 cm de côté.
On est donc sur des décalages de temps très faibles entre chaque capteur.
J'aimerais enregistrer le spectre sur une période de quelques secondes à partir du déclenchement du 1er capteur celui le plus proche du point d'impact.
Dans un premier temps, j'aimerais être capable de récupérer mes données dans une interface comme ci-dessous. Je connais très bien Excel donc idéalement Excel mais je peux très facilement apprendre un autre outil, je ne veux pas que ce soit Excel qui dicte la bonne conduite des opérations.
C'est un domaine que j ignore totalement donc le but est d'avoir accès au plus de données possibles afin d'être capable de travailler sur la donnée
A noter que par rapport à la capture d écran, j'aimerais pouvoir être capable de voir des fréquences réelles plutôt qu'une valeur comprise entre-1 et 1
Il te faut y aller petit à petit.
D'abord cherche des capteurs piézoélectriques et sélectionne celui ou ceux qui te paraissent adaptés. Ensuite caractérise les, c'est à dire teste les en conditions réelles.
Ça te permettra d'identifier le bon capteur.
Le calcul de corrélation permet de connaître l'écart temporel entre deux signaux qui se ressemblent. Il est bien adapté à ton problème, mais il viendra ensuite.
Merci je ne peux pas être plus d'accord !
Jai déjà commandé des modules pour tester mais justement je n'ai pas encore compris comment faire l acquisition de ce type de données.
Car si j utilise un ADC standard je vais avoir qu'une valeur entre 0 et 4K (selon la résolution de l ADC) mais pas la valeur de la fréquence à un instant t non ?
Si j utilise un ADC standard je vais avoir qu'une valeur entre 0 et 4K (selon la résolution de l ADC) mais pas la valeur de la fréquence à un instant t non ?
Une FFT répétitive appliquée au signal numérisé te donnera en temps réel le le spectre d'où tu tirera la fréquence fondementale
Je pense qu'il faut d'abord déterminer les performances attendues et leur implication sur l'acquisition des données.
L'ESP32 n'a que 2 ADC, dont 1 qui est bloqué si on utilise le WiFi.
La vitesse du son dans l'acier est d'environ 5800 m/s. Ce qui fait 17μs pour traverser ta plaque de 10cm. Donc il va falloir échantillonner assez rapidement. Comme on ne peut pas échantillonner les 4 capteurs en même temps il va y avoir un décalage temporelle entre les échantillons.
Enfin bref ce n'est peut-être pas aussi évident......
Effectivement je ne pense pas que ce soit si simple sinon j'aurais déjà trouvé plein de projets existants et au final il n'y en a pas tant.
Pour l'instant je dégrossis le sujet et j'ai un peu les mêmes craintes.
Mon espoir in fine était de voir si je pouvais déclencher un trigger juste quand un certain seuil est dépassé et calcul le temps écoulé entre chacun des seuils déclenchés.
Ca c'est avec mes mots de débutant, à voir techniquement ce que je peux et j'arrive à faire.
@al1fch merci cest note j'avais justement trouvé un tuto la dessus qu'il faut que je creuse.
L'idée est d'abord d analyser les signaux et ensuite de voir comment je peux les traiter de manière répétitive
Comme le signale @fdufnews , les temps sont très courts. De par là, il serai préférable que tes capteurs en fassent un maximum et ne sortent qu'un signal logique son ou pas son et mettre ces signaux sur des entrées avec interruption et, ainsi, capter "immédiatement" l'arrivée d'un son sur les divers capteurs et en fonction des microsecondes de chaque entrée, déduire la position de l'impact. C'est purement de la gamberge
Pour récupérer les données sur Excel, regardes ici:
Salut JPB!
Oui c'est un peu ce que je disais dans mon message précédent. Disons que c'est comme cela que je vois les choses mais avant d'arriver à cette étape je voulais voir les signaux plus en détail pour voir ce que j'arrivais a en faire.
Car en gros je pense avoir 2 options, c'est soit les capteurs me renvoient juste un élément qui me permet de déclencher le compteur. C'est la version la plus simple je pense mais elle permet certainement moins de précision car on a ensuite uniquement des temps entre chaque capteur à compter.
Soit les capteurs envoient plus d'informations, il y a plus de traitement mais possiblement plus de précision. À savoir que l objectif ultime c'est d'avoir une résolution de 1mm ce qui est un sacré challenge.
A voir si j'arrive à obtenir cela juste avec des temps entre capteurs...
Une idée de comment procéder pour que mes piezos déclenchent seulement un top à un seuil particulier ?
oui , c'est un travail pour un amplificateur opérationnel (AOP) monté en comparateur (à 1 ou 2 seuils), un AOP par piezo bien entendu
Pour la mise au point, disposes-tu d'un oscilloscope pour avoir une vue précise des signaux émis par les piezos montés sur la tôle ?.... pas indispensable mais ça aide.....
C'est un atout pour ce genre de projet , surtout si le scope est à mémoire
Un petit analyseur logique (qq € pour un 8 bits 20MHz) te montrerait les chronogrames des 4 sorties de triggers avec les valeurs de décalage des fronts...... pas plus mal de connaître tout ça avant d'attaquer le travail sur ESP32
Attention à ne pas tout mélanger.
Ici tu as besoin de signaux temporels, pas fréquentiels. La corrélation se fera sur les signaux temporels.
Tu auras certainement besoin de débruiter les signaux pour gagner en résolution.
Mais il te faut d'abord savoir acquérir les signaux pour voir à quoi ils ressemblent. Je pense que du tout ou rien ne suffira pas.
J'ai des collègues qui ont travaillé sur un système de ce genre et ça a donné naissance à une start-up pour l'exploitation des résultats. Je ne connais pas leurs travaux en détails, ils sont dans une autre unité, mais je peux te dire que tu t'attaques à un vrai problème pas simple du tout. Surtout si tu vises le millimètre...
Pour approcher le millimètre, il faudrait échantillonner en parallèle les 4 capteurs à au moins 10MHz. C'est très au-dessus de ce que peux faire un ESP32.
Si en plus
Cela veux dire acquérir une très grosse quantité d'échantillons (40.106 échantillons/s).
Je suis en pleine phase exploratoire car c'est vraiment nouveau pour moi et sans doute un peu trop ambitieux mais si je n essaie pas je ne progresserai jamais.
C'est pour cela que j imaginais deux scénaris :
Soit juste un top suffit et cela simplifie grandement la chose mais j'en doute.
Soit il me faut plus qu'un top, donc un échantillon à chaque fois sur chaque capteur et la tout devient beaucoup beaucoup plus complexe.
Mais pour le moment j'aimerais faire des tests de base pour voir sur quoi je dois m orienter
Ça va être 99% du projet mais pour le moment je bloque sur la partie acquisition de données pour mettre ça sur ordinateur.
Je n'arrive pas à trouver quelle solution technique pour capturer 4 capteurs en temps réel et mettre ça sur le pc
Je ne suis pas forcément un spécialiste de l'acquisition.
Mais si ton microcontrôleur ne possède pas 4 ADC, il faut utiliser des ADC externes.
Ensuite pour mettre sur PC, cela dépend beaucoup de ce que tu veux en faire et des outils dont tu dispose sur PC.
La fréquence échantillonnement que tu veux atteindre va aussi être une problématique.
Mais j'ai l'impression que tu commence par la fin?
As tu déjà échantillonné avec un seul ADC, celui disponible sur ton microcontrôleur ?
As tu ensuite essayé de transférer les données sur un PC.
Puis as tu essayé d'affiché puis traité les données dans un outils(par ex Python, Excel, Scilab )
Pour moi tu ne peux bloquer sur l'acquisition de 4 capteurs, uniquement, si tu t'es déjà fait la main sur un capteur et que tu as déjà résolu tout les problèmes que tu pourrais rencontrer et que tu as quelque chose de fonctionnel avec un seul capteur
Pour autant que tes capteurs puissent sortir un signal digital, (leur adjoindre un trigger si nécessaire) par impacte (voir plusieurs, les autres pourront être masqués), en mettant chaque signal sur une entrée avec interruption, chaque interruption enregistre la valeur du compteur microsecondes au moment de leur activation, valeurs qui pourront être envoyées directement dans Excel.
.....et s'il s'avère nécessaire de travailler avec une résolution inférieure à la µs, il y a la ressource des timers (compteurs/décompteurs de 64 bits , les ESP32 en ont 4) a associer chacun à une interruption externe pour leur lecture, le lancement quasi simultané des compteurs pouvant être le fait de la première interruption.
L'horloge de ces timers étant dérivée de 80MHz à travers un pre-scaler de 64 bits https://deepbluembedded.com/esp32-timers-timer-interrupt-tutorial-arduino-ide/
Si l'amplitude des signaux issus des capteurs est trop faible (l'oscillo le dira) pour permettre l'utilisation de triggers de Schmitt CMOS , prendre des AOP montés en comparateurs comme indiqué plus haut en #9
Mon ressenti : la cross-corrélation des signaux analogiques numérisés par ADC me parait "overkill' , voire irréaliste, pour l'évaluation des décalages temporels par ESP32 dans le cas présent. Une mise en forme des 4 signaux puis une mesure des décalages entre fronts me parait suffire ...et à la portée d'un ESP32 avec en complément , si le spectre est indispensable, une FFT sur l'un des 4 signaux 'bruts'
Je pense au contraire que c'est la seule solution qui permettra de se rapprocher de la précision souhaitée. Part contre, il ne faut pas calculer la Xcorr à chaque acquisition : il vaut mieux détecter le choc, et lancer le calcul ensuite.