Lire et générer une fréquence

Bonjour,

J'ai en projet de lire un signal carré qui varie en continu (fréquence allant de 0 à 500Hz grand max en sortie) de faire une opération mathématique (multiplication par 12/9) et de générer le même type de signal mais avec cette nouvelle fréquence.
Il va falloir que je confirme l'amplitude (0-1V, 0-5V ou 0-10V) mais normalement 0-1V c'est ok.

Déjà il faut que je détermine le matériel nécéssaire car visiblement c'est faisable via les pins DAC.

D'ailleurs, il va me falloir 2 Pins DAC un pour l'entrée et un pour la sortie ?

J'ai actuellement en ma possession 2 types de carte, l'arduino uno R3 et l'arduino nano.

Si j'ai bien compris il me faudrait donc 2 pins DAC et mes cartes ne sont donc pas compatible, il me faudrait un ESP32 ? vous confirmez ou je fait fausse route.

Il n’y a pas de DAC sur le uno R3 or Nano effectivement mais rien n’empêche d’en mettre un ou de simplement (puisque vous voulez un signal carré et donc 2 tensions seulement) avoir un circuit avec un transistor pilotant la sortie. Si vous n’avez pas besoin de puissance sur la sortie, un optocoupleur peut faire aussi l’affaire sans doute

DAC = Digital to Analog Converter.
Dans ce que tu expose, tu as besoin d'une seule sortie donc un seul convertisseur digital --> analogique.
En plus, tu parles d'un signal carré donc binaire ce qui n'impose pas un DAC.

Il faudrait définir un peu mieux les spécifications du signal en entrée (fréquence min, 0 ce n'est pas vraiment une fréquence) et du signal à générer ainsi que les tolérances sur le signal généré (tolérance sur la fréquence, jitter)

Bonjour toggesh

C'est faisable via des pin digitales normales, pour autant que l'on part du fait que tout est en 5V, Après ce n'est qu'une question d'adaptions.

Pour mesurer la fréquence d'entrée, il faut introduire le signal sur une pin avec interruption, comme la 2 et pour générer le nouveau signal, s'inspirer de l'exemple Blink Without Delay.

A+
Cordialement
jpbbricole

Je veux récupérer le nombre de top fourni par un capteur de vitesse (9tops montant par tour) et le passer à un 12top par tour.
La vitesse varie en permanence sauf si la voiture est à l'arrêt.
La fréquence à 0 signifie pas de mouvement donc pas de top à renvoyer = 0V

Pour la tolérance difficile à dire, mais à 50km/h je dois renvoyer 95.33Hz, 55km/h on est à 104.86Hz. 1km/h = 1.9Hz donc avec une tolérance de +/-1Hz ça semble correcte.

J'ai une alim 12V que je convertirai en 3.3V ou 5V pour alimenter le système

Si je fais un interrup via un pin d'entrée je n'aurai pas le temps de renvoyer la fréquence qu'il y aura un nouvel interrup, non ?
et du coup il faut mesurer le temps entre les 2 interrup également ?

Bonjour,

Je dirais même plusv

Pour quoi faire les DAC?
Multiplier quoi par 12/9, la fréquence, la tension?

1 transistor ou a opto en entrée et en sortie, c'est pas bête.

Depuis le début il est clair que c'est la fréquence qu'il faut multiplier.

Bonjour toggesh

Vu la fréquence maximale demandée, je pense que l'Arduino a le temps de faire les deux.
Dans ma suggestion, l'entrée et la sortie du signal travaillent "pour leur compte" leur seul lien est la période, mesurée et corrigée dans l'interruption.

Je peux essayer de te faire un si tu le souhaites.

Cordialement
jpbbricole

Donc tu veux générer des tops.
Question immédiate : quelle sera la largeur des tops ?
Sans oublier qu'un objectif est toujours de la forme : valeur centrée +/- dispersion

Mon avis : avant de proposer des lignes de code pour rien, il sera bon de bien préciser la demande.

Remarque : inutile de parler Hz, tout doit se régler avec des secondes.
Transformer des secondes en hertz pour repasser en secondes ne peut que détériorer la précision avec les erreurs d'arrondis.

Je ne vais pas dire non mais avant de faire du code j'aimerai être certain de ne faire d'erreur.

La longueur ? J'ai un top variable en fonction de la vitesse du véhicule (une fréquence ?)
Pour la dispersion, difficile à dire, mais à 50km/h je dois renvoyer 95.33top/s, ou Hz non ? 1km/h = 1.9Hz donc avec une tolérance de +/-1Hz ça semble correcte.

Je suis d'accord après avec une échelle 0-1V le compteur fonctionne.

ok, mais là je ne sais absolument pas répondre. Pour moi je mesure/reçois une fréquence (nbre de top / seconde) que je "convertis"/remap pour le renvoyer car le nouveau capteur ne parle pas avec le compteur (au-delà du nbre de top par tour du capteur, il ne s'agit pas de la même techno, et je doit faire avec).

Est ce que ce qui est à voir sur cette photo est que avec un signal de 400Hz, l'aiguille est à droite?

Comment qualifieriez vous votre signal de 400Hz
Amplitude?
Rapport cyclique?

Merci

Bonjour toggesh

Petit hors sujet, ta soudure, c'est de la "vieille soudure",
image
Je cherche la dénomination de celle-ci pour en commander?

Merci par avance.
jpbbricole

Je ne te demande pas de répondre je t'informe qu'il faut éviter au strict nécessaire les calculs intémédiaires.

Une période est la durée à laquelle un signal périodique se retrouve identique à lui même.
C'est ce qui se passe à chaque top.

Si T est la période, F = 1/T. T en secondes, F en hertz.

Si tu trouves que c'est plus simple de parler en fréquence, tu vas utiliser la fonction 1/X et tu auras des erreurs d'arrondi.
Si, pour créer tes nouveaux top, tu utilises delay() ou de préférence millis() il faudra repasser en temps et refaire appel à 1/X.

Je dis qu'il faut poser les calculs litéraux sur une feuille de brouillon.
Ce n'est peut-être pas le cas ici, mais dans le principe, multiplier puis deux lignes plus bas diviser par le même nombre, c'est ballot et cela fait perdre de la précision.

Quant à la largeur de tes nouveaux top, c'est à toi de la fixer en fonction du matériel qui va utiliser ces nouveaux tops.

On a testé (avec un collègue car ça dépasse mes connaissances) différentes choses pour voir si on arrivait à faire vivre le compteur.
La Fréquence mise à 400Hz en autre, nous a permis de voir qu'il fonctionnait et avec une fréquence de 100Hz il était proche des 50/60km/h ce qui est normale vis-à-vis de mes calculs.
Sur la photo, le compteur est tête en bas et il n'y a pas de fond de compteur donc pas de précision mais juste du fonctionnement. Sans parler des "coupures" de signal lié à notre montage.

Pour répondre aux questions
Amplitude? 0-1V (visible sur la photo en bas à droit de l'afficheur.)
Rapport cyclique? ça ne je ne sais pas dire si ce n'est pas visible sur l'afficheur de l'appareil qui permet de générer un signal carré ou sinusoïdale en 0-1V, 0-5V, 0-10V et dont je ne connais pas le nom ni le fonctionnement personnellement mais je peux me renseigner.

En regardant l'image HD la ref RS : 625-8132

Ok, clair. Alors on va dire que j'ai quelque chose à mesurer en entrée à convertir (multiplier par une faction à définir) et à renvoyer en sortie. Reste à voir comment le faire. Maintenant j'ai réussi à faire vivre le compteur avec un appareil fait pour générer des fréquences.

Je veux bien un peu d'explication sur cette histoire de largeur, car pour le moment ça reste obscure pour moi.

En tout cas merci à tout pour l'aide.

Merci!

Préalable :
Nous ne pouvons répondre que par rapport à ce que tu nous dis.
A toi d'être le plus précis possible.

Tu parles de "top".

Un top, c'est une impulsion de durée To et d'amplitude Ao qui se répète toutes les T secondes.
Un top a généralement une durée faible devant la fréquence de répétition.

Un rapport cyclique c'est pour un signal périodique le rapport entre la durée du "1" par rapport à celle du "0".

Le mieux, tu prends une feuille de papier et tu y dessines les signaux que tu reçois et ceux que tu veux générer, avec les différents temps.

Tu scannes la feuille, tu la joins en pièce jointe ou tu copies directement : une copie d'écran avec un Ctrl C suivi d'un Ctrl V dans le message du forum fonctionne très bien.
On gagnera du temps parce que là pour moi, c'est le brouillard complet.

Ton histoire d'amplitude ne fait qu'ajouter du flou.
Si ton "nouvel appareil de mesure" supporte des signaux d'amplitude 5 V autant faire des signaux 5 V, ce sera bien plus simple.

On pose beaucoup de questions pour comprendre.
Le Fluck 753, de ce que j'ai lu en diagonale, génère des signaux ET mesure des signaux.

La partie de gauche génère un signal, celle de droite en mesure un autre.

Ce qui est affiché, c'est à priori la Source (ce qui est envoyé, 1V 400Hz).

Le fil rouge de ton câble 3 fils, c'est ce qui est mesuré, coté compteur, je ne sais pas à quoi c'est relié.

Si tu envoie un signal "carré", on peut estimer que le rapport cyclique est de 50%, c'est à dire que sur 1 période, pendant 50% de la mériode, ton signal = 0V, et 50% de la période il est = 1V.
Et tu as 1 front "montant" tous les temps T = à la période du signal.

1V, est-ce la valeur max admissible en entrée du compteur en photo?

J’essaie de m'efforcer de comprends pour ne pas répondre à coté mais pas simple

Malheureusement ce n'est pas possible car je n'ai pas le système d'origine, néanmoins j'ai des images du montage qui est dans le manuel

Plus bas tu as l'image de la cible en vue ISO. Il faut imaginer que ça fonctionne comme un capteur ABS. c'est un capteur à effet hall.

Alors le rapport cyclique est de 50% T1 = T0 pour T1 = temps à 1 et T0 = Temps à 0 puisqu'il s'agit d'un capteur magnétique qui lie une cible avec des trous et "des bosses" et qu'ils sont tous de la même taille. D'ailleurs je ne sais pas si le système compte que les fonts montant ou montant et descendant pour double le nombre et ainsi augmenter la pression de la vitesse afficher.

il va sur le circuit et c'est le + capteur. Si je mesure la tension entre le + et le - capteur j'ai 0V idem entre le signal et le +. Mais si je mesure entre le fils signal et le - j'ai 1,8V

On a testé également 5V et 10V et ça a fonctionné.