Arduino Forum

International => Français => Topic started by: victorillen on May 28, 2013, 11:02 pm

Title: Mesurer une fréquence avec l'Arduino
Post by: victorillen on May 28, 2013, 11:02 pm
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.
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: B@tto on May 29, 2013, 08:38 am
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.
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: skywodd on May 29, 2013, 09:24 am
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
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: B@tto on May 29, 2013, 03:14 pm
Rah justement je me fais un fréquencemètre 60 mhz, ces lib tombent à pic :)
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: Artouste on May 29, 2013, 03:27 pm

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:


Title: Re: Mesurer une fréquence avec l'Arduino
Post by: B@tto on May 29, 2013, 03:38 pm
Pour ça que j'utilise un diviseur 14 bits xD

Title: Re: Mesurer une fréquence avec l'Arduino
Post by: Artouste on May 29, 2013, 03:51 pm

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 ? 
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: B@tto on May 29, 2013, 05:28 pm
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
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: Artouste on May 29, 2013, 07:09 pm

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
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: skywodd on May 29, 2013, 07:36 pm
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.
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: B@tto on May 29, 2013, 08:27 pm

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.
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: Artouste on May 29, 2013, 09:09 pm


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




Title: Re: Mesurer une fréquence avec l'Arduino
Post by: alienboats on May 29, 2013, 09:31 pm
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 !
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: Artouste on May 29, 2013, 09:39 pm

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:
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: B@tto on May 30, 2013, 09:37 am

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 ;)
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: Artouste on May 30, 2013, 12:27 pm



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 ;)

C'est tres sympa , mais il faut etre conscient que ce n'est pas un isntrument de mesure et donc connaitres ses limites, mais ça permet de verifier assez facilement "l'allure d'une emission"
ici test avec une telco ancienne en 30.875 sdr# + audacity ensuite
http://cjoint.com/13mi/CEEmpf4tvxv_sdrauda.jpg

note que tu peux simplement verifier si tu dispose d'une telco en etat et un petit recepteur FM à accord continu si les "supposées telco HS" pissent  qq chose +/- à coté  :smiley-mr-green:.
en supposant que la F° soit 30.875 tu cherche autour de l'harmonique 3 la modulation de la telco OK et tu teste ensuite les telco "hs" +/- autour.
sur ces telco anciennes le problemes le plus souvent rencontré est un assechement/empoussierage  du dielectrique du condo variable du circuit d'accord (en bas a droite gauche * du QZ sur la photo) qqfois un simple petit aller retour suffit à regler le probleme (bien noter la position si pas d'autres moyens de mesure)
exemple rapide
http://cjoint.com/13mi/CEEmtAUvqG9_mvi_0001.avi

* pour ceux qui ne savent pas reconnaitre leur  droite de leur  gauche, il y a une méthode simple :
quand tu regarde ta  main droite vue du dessus elle à le pouce à gauche et c'est l'inverse pour la main gauche     :smiley-mr-green:  ---->[]
Title: Re: Mesurer une fréquence avec l'Arduino
Post by: victorillen on May 30, 2013, 09:45 pm

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


Super
Ca marche très bien ! Merci beaucoup !