Go Down

Topic: Mesurer une fréquence avec l'Arduino (Read 15286 times) previous topic - next topic

victorillen

Bonjour
je souhaite mesurer la fréquence (ou la période) avec l'Arduino d'une tension en créneau (je peux fixer la Vcc de la tension).
Il me semble que la fonction pulseln() permet cela, mais j'ai quelques doutes.
En premier lieu y a-t-il une restriction quand à la tension que je veux mesurer si je ne veux pas endommager mon arduino ?
Ensuite je pensais utiliser le programme suivant :




int pin = 7;
unsigned long duration;

void setup()
{
  pinMode(pin, INPUT);
  Serial.begin(9600);
}

void loop()
{
  duration = pulseIn(pin, HIGH);
Serial.print(duration )
}




Cela fonctionnerait-il ?
J'aimerais savoir également si il est possible de mesurer une moyenne d'un certain nombre de périodes mesurées histoire d'avoir une mesure plus précise.

B@tto

Salut !

Concernant les tensions : pas plus de 5V mais il y a toujours des moyens pour adapter (pont diviseur, zener ...).

pulseIn() permet de mesurer un temps passer à l'état haut ou à l'état bas. Si ton signal est parfaitement cyclique, alors ça peut marcher puisque ta fréquence sera 1000000/(2xduration)  <==> 1s / 2 x demi-période

Si ce n'est pas le cas il faut mesurer le temps qui s'écoule entre deux fronts montants (ou descendants). Pour cela c'est assez simple, il suffit d'utiliser digitalRead() et micros().

Pour une moyenne rien de compliquer non plus : il suffit de créer un tableau pour stocker tes données, d'utiliser une variable pour compter le nombre d'enregistrements, et à partir d'un certain nombre tu fais une moyenne toute bête en faisant une boucle qui fait la somme de toute les valeurs de ton tableau puis tu divises par le nombre de valeur.
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

skywodd

Bonjour,

Tension max : 5v, pas plus.

Sinon pourquoi utiliser pulseIn quand tu as des librairies dédiés ?
http://www.pjrc.com/teensy/td_libs_FreqCount.html
http://www.pjrc.com/teensy/td_libs_FreqMeasure.html
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

B@tto

Rah justement je me fais un fréquencemètre 60 mhz, ces lib tombent à pic :)
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

Artouste


Rah justement je me fais un fréquencemètre 60 mhz, ces lib tombent à pic :)

bonjour B@tto
Ne jamais oublier que la précision derivera inévitablement de celle de l'horloge maitresse "de la porte"  :smiley-mr-green:



B@tto

Pour ça que j'utilise un diviseur 14 bits xD

Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

Artouste


Pour ça que j'utilise un diviseur 14 bits xD



yep
mais ton diviseur est cadençé par quelle horloge maitresse ?
entre une BdT (horloge) basée sur un simple  RC et un étalon Cesium , il y a une grande différence (de precisions et prix)  et des technos intermédiaires
ta bdt est le QZ "tout venant" = celui de la carte ? 

B@tto

Bin le diviseur est par définition cadencé par l'horloge que tu veux mesurer. Ou alors on se comprend pas xD

Après oui forcement je suis limité par celle de l'Arduino qui sert de base de temps, m'enfin comme je divise ma fréquence à mesurer par 16385, ça réduit considérablement l'erreur, même si c'est pas parfait parfait
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

Artouste


Bin le diviseur est par définition cadencé par l'horloge que tu veux mesurer. Ou alors on se comprend pas xD

Après oui forcement je suis limité par celle de l'Arduino qui sert de base de temps, m'enfin comme je divise ma fréquence à mesurer par 16385, ça réduit considérablement l'erreur, même si c'est pas parfait parfait

si si, on se comprend  :smiley-mr-green:
c'est la bdt de l'arduino qui est maitre et donc de la precision
si le facteur precision est important, c'est peut etre interessant de mettre un petit TCXO de 16 Mhz

skywodd

B@tto : une porte logique qui supporte du 60MHz en entrée ... c'est pas du CD4xxx ou 74HCTxxx dans ce cas !
Si tu veut mesurer un signal carré de 60MHz il serait plus adapter de faire un truc tout intégré dans un CPLD style Xilinx.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

B@tto


une porte logique qui supporte du 60MHz en entrée ... c'est pas du CD4xxx ou 74HCTxxx dans ce cas !

Une M74HC4060 exactement ! 58 Mhz d'après la datasheet.


Si tu veut mesurer un signal carré de 60MHz il serait plus adapter de faire un truc tout intégré dans un CPLD style Xilinx.


En fait ma belle-mère a je ne sais combien de télécommande de son portail HS. Comme y'a même pas de rolling code ou autre (ça a 20 ans le machin) je suppose fortement que la fréquence a dérivé et je veux tester la porteuse. D'où le fréquencemètre un peu de fortune. Je cherche pas l'ultra perf, déjà si ça marche ça sera pas mal ... Pour l'instant la porte fonctionne nickel à 10 mhz (le max de la seule source dont je dispose). Faut que j'arrive à 30-40 Mhz mais c'est surtout l'amplification du signal radio qui me bloque la.
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

Artouste



En fait ma belle-mère a je ne sais combien de télécommande de son portail HS. Comme y'a même pas de rolling code ou autre (ça a 20 ans le machin) je suppose fortement que la fréquence a dérivé et je veux tester la porteuse. D'où le fréquencemètre un peu de fortune. Je cherche pas l'ultra perf, déjà si ça marche ça sera pas mal ... Pour l'instant la porte fonctionne nickel à 10 mhz (le max de la seule source dont je dispose). Faut que j'arrive à 30-40 Mhz mais c'est surtout l'amplification du signal radio qui me bloque la.

telco en 30.875 ?  codage par dip ? (ça se faisait beaucoup il y a 20 ans)

meme si pour le fun la construction d'un fréquencemètre peut être ludique et didactique  :smiley-mr-green:
perso je te conseillerais de t'équiper d'un dongle SDR à ~20 $
pour moi ça fait maintenant partie de l'équipement de base du "bon bidouilleur"   8)  ça permet déjà de lever pas mal de doutes
et de visualiser l'aspect du signal sur une large bande (même si portionnée) .

j'en avais parlé là :
http://forum.arduino.cc/index.php?topic=109892.msg865028#msg865028
a noter que j'évoquais alors une limite basse de reception vers 60 MHz , en fait c'est ~ 20 MHz





alienboats

Ne serait-il pas plus économique et moins zazardeux de :
- changer de belle mère
- ou bien remplacer tout ça par des modules à pas cher en 433Mhz.

Si en plus ça marche avec des piles 12volt qui valent plus cher que le portail vétusté déduite !

Artouste


Ne serait-il pas plus économique et moins zazardeux de :
- changer de belle mère
- ou bien remplacer tout ça par des modules à pas cher en 433Mhz.

Si en plus ça marche avec des piles 12volt qui valent plus cher que le portail vétusté déduite !

Bonsoir Alienboats
si c'est dans une "copro" ça risque d'être plus simple de changer de  belle mere que de faire voter une résolution en AG  :smiley-mr-green:

B@tto


Ne serait-il pas plus économique et moins zazardeux de :
- changer de belle mère


+1


- ou bien remplacer tout ça par des modules à pas cher en 433Mhz.


+1 mais la belle-mère a une peur farouche de l'électronique à cause du remplacement de son ancienne alarme qui s'est avéré être un fiasco total. Donc afin de préserver mes relations diplomatique avec, je touche à rien xD le jour ou elle se fera cambrioler je rigolerai bien  ...


Si en plus ça marche avec des piles 12volt qui valent plus cher que le portail vétusté déduite !


C'est du 9V. Ouf !



telco en 30.875 ?  codage par dip ? (ça se faisait beaucoup il y a 20 ans)

meme si pour le fun la construction d'un fréquencemètre peut être ludique et didactique  :smiley-mr-green:
perso je te conseillerais de t'équiper d'un dongle SDR à ~20 $
pour moi ça fait maintenant partie de l'équipement de base du "bon bidouilleur"   8)  ça permet déjà de lever pas mal de doutes
et de visualiser l'aspect du signal sur une large bande (même si portionnée) .

j'en avais parlé là :
http://forum.arduino.cc/index.php?topic=109892.msg865028#msg865028
a noter que j'évoquais alors une limite basse de reception vers 60 MHz , en fait c'est ~ 20 MHz



Oué codage DIP xD

Génial ton truc j'avais pas vu ! Je vais en commander un en effet :) Mais je continu effectivement mes expérimentations pédagogiques, j'ai jamais mis un réel pied dans les RF et les "hautes" fréquences donc ça permet d'explorer tout ça ;)
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

Go Up