conversion frequence tension

polor

New Member
Bonjour à tous,
Parmis vous quelqu'un saurait-il s'il est possible de lire une fréquence sur une entrée?
Existerait-il un moyen plus simple que de passer par des interruptions sur des fronts montants?
Pour info, je dispose d'un encodeur qui peut lire jusqu'à 3600 impulsions/tr.
L'idée serait pas la suite de convertir en tension.
J'avoue qu'un bout de "code" me serait utile.
Par avance, merci pour vos réponses
cdt
 
Last edited:

fuse

Senior Member
Bonjour,

Utilisation d'un 08M2 :
l'entrée fréquence s'effectue sur P3 (pin 4 du circuit), l'afficheur LCD est sur P1 (pin 6).
{symbol varA = b0} ;utilisation de varA


let dirsC = %00000010 ; utilisation 08M2, sortie1 activée


main:
label_2: count 3,1000,varA ;mesure de fréquence, utilisation de l'entrée 3, mesure sur 1000ms, valeur positionnée dans varA
serout 1,N2400_4,(254,128, #varA, " ") ; affichage de la fréquence
goto label_2
ATTENTION: le signal doit évolué entre 0 et Vcc (5V de l'alimentation du Picaxe).
Avec un comptage sur 1000 (ms soit 1 seconde...), la fréquence affichée pourra évoluer entre 0 et 255,
pour une fréquence de 256, l'affichage sera de 0
pour une fréquence de 257, l'affichage sera de 1
etc...
Il faudra donc changer la valeur 1000 par une valeur plus petite...
La fréquence maxi mesurable est de l'ordre de 25KHz...
Cordialement
 

PieM

Senior Member
Bonjour,

A priori, tout dépend de la fréquence et de la précision recherchée. Si elle est élevée, la solution la plus sûre est d'utiliser la fonction count avec un temps de mesure assez important. Sachant que pendant le temps de la mesure, le Picaxe ne sait rien faire d'autre.

Sinon faire une mesure réciproque avec pulsin pinx, 1, w2 puis pulsin pinx, 0, w3. La somme w2 + w3 donnera la période du signal, donc l'inverse de la fréquence, avec une précision de 20 µs à 4 MHz.
Il n'est d'ailleurs pas toujours utile de faire le calcul de la fréquence, si le programme peut être modifié pour utiliser la période ! Meilleure sera la précision.
 

PieM

Senior Member
Bonjour Fuse,

Avec un comptage sur 1000 (ms soit 1 seconde...), la fréquence affichée pourra évoluer entre 0 et 255,
La variable associée à count est une variable word; donc le comptage peut aller jusqu'à 65535.


@ Polor,

en complément, traduire cette valeur fréquence en tension est assez simple en utilisant la fonction PWMOUT et PWMDUTY
par exemple sur un 28X2:
pwmout piny, 249, frequence (avec fréquence à mettre à l'échelle 0-1000) va fournir un signal continu sur une sortie équipée d'un circuit RC, signal compris entre 0 et la tension d'alim du picaxe.
 
Last edited:

fuse

Senior Member
Bonjour,

Encore une fois, les précisions de PieM sont redoutables.
Je dois avouer que je n'utilise pas le Basic de Picaxe mais j'utilise Logicator (langage visuel en organigramme) et j'effectue une conversion en Basic. Voila pourquoi l'écriture utilise une variable sur 1 octet alors que la commande Basic est de base sur 1 variable word.;)
 

BESQUEUT

Senior Member
Existerait-il un moyen plus simple ?
Commencer par transformer la fréquence en tension, soit par un montage simple (une diode, un condensateur et quelques résistances)
soit pour plus de précision, au moyen d'un circuit spécialisé.
Puis, si le Picaxe doit disposer de cette info, lire tout simplement cette tension...
Cette solution n'est évidement pas limitée en fréquence.

Si on a de bonnes raisons de compter les impulsions sur le Picaxe et que la fréquence est trop élevée (on a le nombre d'impulsions par tour, mais pas le nombre de tours/seconde...)
utiliser un diviseur.
Par exemple, à 10 tours/sec, on est déjà à 36 kHz et hors de portée d'un Picaxe à 4 Mhz.
En outre, le comptage ne pourra pas durer plus de 1792 ms au risque de saturer le compteur.
 
Last edited:
Top