Mesure de fréquence avec un Arduino Uno

Bonsoir,

Je réalise actuellement un projet dans lequel je suis amené à mesurer la variation de fréquence d'un signal pratiquement sinusoïdal.

J'ai essayé de mesurer la fréquence du signal en utilisant les fonctions micros(). Cependant, ce signal à une fréquence d'environ 2MHz et après consultation de la datasheet, je me suis rendu compte que l'Arduino n'était pas capable de faire ça.

Je me suis donc pencher sur la réalisation d'un fréquencemètre. J'ai trouvé un prescaler intéressant : MB506 (http://www.qsl.net/n9zia/900/mb506.pdf). Si je comprends bien, il va permettre de diviser la fréquence et donc la rendre mesurable par l'Arduino. Mais quelle est la limite de fréquence mesurée ? La fonction micros() est précise à la micro seconde, j'en conclus qu'on peut mesurer des signaux allant jusqu'à 999 kHz. Est-ce bien cela ?

Je cherche à diminuer au maximum le coût de réalisation du fréquencemètre. Je veux simplement que celui-ci fonctionne jusque 4-5 MHz. Je ne cherche pas non plus une précision trop importante. Connaissez-vous des modules qui correspondent à ces caractéristiques ? Le Mb506 reste trop cher à mon goût..

Je vous remercie pour votre aide.

La fonction micros() est précise à la micro seconde, j'en conclus qu'on peut mesurer des signaux allant jusqu'à 999 kHz. Est-ce bien cela ?

Non pas de chance mais tout n'est pas perdu.
Telle que configurée par l'équipe arduino la fonction micro mesure avec un pas minimum de 4 µs, mais cela peut se changer.
Pour la mesure des fréquences il y a la fonction arduino pulseIn(), je ne connais pas ses limites. On peut aussi utiliser directement les timers comme tu pourra le voir ici :
http://www.gammon.com.au/forum/?id=11504

Ton prescaler diviseur je te le déconseille fortement : un circuit capable de fonctionner à 2,5 GHz est plus que délicat à utiliser et de plus il ne convient pas car il a une fréquence minimale de 100 MHz.

Les circuit logiques de la série 74HC fonctionnent aisément jusqu'à 20 MHz ce qui est suffisant. Dans la série tu trouvera des diviseurs par 2 ,5, 10, 16.
Pour exiter ces circuits il faudra transformer le signal sinusïdal en signal carré, mais sans information sur ce signal je ne peux pas en dire plus.
Valeur min ?
Valeur max ?
Composante continue ?
Fréquence min ?
Fréquenc max ?
Est-il présent en permanence ou en mode rafale (burst) ?

Je n'ai pas d'oscilloscope donc je n'ai pas pu effectuer toutes les mesures.

Valeur maximum : 5V
Valeur efficace : 3.6V
Fréquence min : 100kHz
Fréquence Max : 3MHz

C'est un capteur à induction je cherche à détecter la présence d'un métal à proximité. La fréquence varie donc.

Je ne pense pas que le rapport cyclique soit exactement égal à 50% mais il doit être proche.
J'ai trouvé un article intéressant ,qui je pense, utilise la méthode expliquée par pepe.

https://www.pjrc.com/teensy/td_libs_FreqCount.html

Je pense que la librairie FreqCount est idéale dans mon cas :"FreqCount: best for 1 kHz to 8 MHz"
Donc si j'ai bien compris, je n'ai besoin de rien d'autre que cette libraire et que ma carte pour mesurer la fréquence ?

Une dernière question :
Dans un premier temps, la mesure de fréquence est faite avec la carte Arduino Uno mais est-il possible de la remplacer par un simple ATtiny84A-PU par la suite? Celui-ci est cadencé à 8MHz, est-ce que cela signifie que je peux mesurer des fréquences jusqu'à 4MHz ?

Bonjour. J'aimerais réaliser un programme arduino qui va mesuré la fréquence de deux signaux en entré et affiché sur un écran. Alors sur arduino uno il possède un seul timer, comment faire mon programme en vue d'obtenir sur l'écran la valeur des deux fréquences en entré ?
La tension du signal varie entre 0 et 5 v, et c'est un signal pas très sinusoïdal.
Merci et j'attends vos réponses

Le sujet a été lancé il a 4 ans, des participants ont quitté le forum, tu as eu un message en rouge te déconseillant de relancer cette discussion et te conseillant d'en lancer une autre : c'est ce que tu aurais du faire.

Première erreur une carte UNO est équipée d'un miro Atmega328p qui possède 3 timers.
Meilleur conseil : le sujet ayant été abordé de très nombreuses fois, fais un recherche sur ce forum ( Icone loupe en haut et à droite de cette page) sur "mesure de fréquence avec arduino".
Tu obtiendra une page gogole limitée à ce forum et avec prioritairement des réponses en français.

Nature des signaux :
Je n'ai pas compris grand chose à tes explications, sinus pas sinus centré sur zéro ou OV/5V ?
Origine de ce signal ?
Une photo, ou un dessins serait la bienvenue.

Lire le message "Règles du forum francophone" pour bien apprendre à exposer sa demande avec toutes les explications