Compteur haute fréquence
avec Arduino
paree-journal•02 juillet 2022• 5 minutes de lecture
4
Ici, il est montré comment construire un compteur haute
fréquence avec un comparateur Arduino et LM311 pour mesurer
la fréquence d'un signal. Le compteur de fréquence présenté ici
peut mesurer une fréquence allant jusqu'à 6 MHz et au-dessus, ce
qui est assez élevé. Il existe plusieurs méthodes qui peuvent être
utilisées pour construire un compteur de fréquence, comme
l'utilisation de la fonction de capture d'entrée d'Arduino
(voir Programmation de la capture d'entrée ATmega328p ), mais
elles n'offrent pas une telle capacité de mesure à haute
fréquence. Cette conception utilise un compteur pour compter la
forme d'onde ou les impulsions d'entrée du signal. Il peut mesurer
toutes sortes de formes d'onde comme les signaux carrés,
sinusoïdaux, en dents de scie et triangulaires. La mesure de la
fréquence du signal est importante dans la conception de circuits
électroniques et un tel compteur de fréquence DIY pourrait
être utile à beaucoup.
Le schéma électrique du fréquencemètre .
Le compteur de fréquence Arduino est basé sur la mesure du
nombre d'impulsions ou de comptage à l'aide de la broche T1 du
minuteur 1 qui est pour Arduino Uno située sur la broche 5 (PD5).
Cela signifie que le Timer 1 est configuré comme un compteur qui
mesure les événements externes. La fréquence du signal à
mesurer est appliquée via un condensateur de 0,1 uF à la broche
2 de la borne non inverseuse du comparateur LM311. Ici, le LM311
a été utilisé car c'est un comparateur rapide. On peut également
utiliser le comparateur LM393 ou l'amplificateur opérationnel
uA741 configuré en comparateur. Lorsque le signal d'entrée est
supérieur à 0 V, environ 5 V sont émis par le comparateur et
lorsque le signal est inférieur à 0 V, 0 V est émis par le
comparateur. La sortie apparaît sur la broche 7 qui est ensuite
introduite dans la broche 5 de l'Arduino via la résistance de 6,8
KOhm. La sortie est également augmentée à l'aide d'une
résistance de 10 KOhm. Le LM311 effectue également un
changement de niveau de tension. L'amplitude du signal d'entrée
peut être faible, dans la plage des millivolts. Le LM311 capte cette
basse tension et émet un signal de haut niveau qui peut être
détecté par la broche d'entrée Arduino. La fréquence reste
inchangée.
Ce qui suit montre une animation du fonctionnement de
ce compteur de fréquence Arduino .
Dans l'animation ci-dessus du fréquencemètre, un générateur de
signal applique un signal d'amplitude et de fréquence différentes
au comparateur LM311 dont la sortie est connectée à la broche 5
de l'Arduino. Dans l'animation, il manque 10 KOhm et 6,8 KOhm à
la broche de sortie 7. du comparateur LM311. Ces résistances
sont nécessaires. Voir la connexion dans le schéma de circuit ci-
dessus.
Le programme du compteur de fréquence Ardiuno est le
suivant.
#include <FreqCounter.h>
#include <LiquidCrystal.h>
#include <stdlib.h>
#define countdelay 1 // measurement delay
#define calibration 0 // adjusts frequency for variation in Arduino
#define gatetime 100 // gate time in milliseconds
#define onems 1000 // alias for 1000 milliseconds
LiquidCrystal lcd(12, 11, 9, 8, 7, 6); // setup the LCD interface pins
char units[][5] = {"Hz", "KHz", "MHz"}; //units of frequency to be
used later
void setup(){
lcd.begin(16,2); // initialize the LCD
lcd.print("** Frequency **"); //initial message
lcd.setCursor(0,1);
lcd.print("** Counter **");
delay(100); //100ms startup delay
}
void loop() {
char Freq[16]; //to store frequency
unsigned long Fcalc=0;
float Fval;
FreqCounter::f_comp=calibration; // calibrate with known source
FreqCounter::start(gatetime); // count pulses for specified
gating period
while (FreqCounter::f_ready == 0)
Fcalc = FreqCounter::f_freq;
delay(countdelay);
Fval = (float) Fcalc * (onems / gatetime); // scale the
input
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Freq.:");
//check and display in frequency correct units
if(0 <= Fval && Fval < 1000){
dtostrf(Fval, 3, 2, Freq);
strcat(Freq, units[0]);
lcd.setCursor(0,1);
lcd.print(Fval);
lcd.print(units[0]);
}
else if(1000 <= Fval && Fval < 1000000){
Fval = Fval/1000;
dtostrf(Fval, 3, 2, Freq);
strcat(Freq, units[1]);
lcd.setCursor(0,1);
lcd.print(Freq);
}
else if(1000000 <= Fval){
Fval = Fval/1000000;
dtostrf(Fval, 3, 2, Freq);
strcat(Freq, units[2]);
lcd.setCursor(0,1);
lcd.print(Freq);
}
else{
lcd.setCursor(0,1);
lcd.print("Out of Range");
}
}
Dans le code du programme ci-dessus, nous avons utilisé la
bibliothèque FreqCounter (en-tête FreqCounter.h) que vous
pouvez télécharger à l'URL suivante :
https://github.com/Arduino-IoT/libraries/tree/master/FreqCounter
Nous avons utilisé le #define pour utiliser un nom d'alias pour
certaines variables requises plus tard dans le programme. Un
écran LCD 16x2 est utilisé ici pour afficher la fréquence et pour
utiliser l'écran LCD, nous avons utilisé la bibliothèque
LiquidCrystal. Dans setup(), nous avons initialisé et démarré la
bibliothèque LCD. Ensuite, nous imprimons un message initial.
Dans la boucle principale(), nous commençons par l'étalonnage de
la bibliothèque du fréquencemètre. Ici, l'étalonnage est effectué
de telle sorte qu'une fréquence connue soit appliquée au
fréquencemètre. En utilisant cette fréquence connue, l'étalonnage
de la synchronisation est effectué en interne par la bibliothèque
du compteur de fréquence. Ensuite, le fréquencemètre est
démarré avec un certain temps de porte qui est ici de 100 ms. Le
temps de porte est le temps pendant lequel l'échantillonnage du
signal d'entrée est effectué. Après cela, la fréquence est calculée,
puis la fréquence mesurée est correctement mise à l'échelle pour
obtenir la fréquence en Hz. En utilisant l'instruction if else, le
nombre de fréquences mesurées est affiché en Hz, KHz ou MHz.
Test du fréquencemètre
Ici, le générateur de fréquence Arduino Mega décrit dans le
didacticiel précédent Le générateur de signal Arduino 8 MHz avec
ISR est utilisé pour générer un signal et alimenter ce signal dans
ce compteur de fréquence Arduino Uno.
La connexion est comme indiqué.
Dans le schéma ci-dessus, le potentiomètre de l'Arduino Mega est
tourné pour modifier la fréquence de l'onde carrée qui apparaît
sur la broche 13. Cette broche 13 de l'Arduino Mega est
connectée au LM311 via le condensateur de couplage.
La vidéo suivante montre comment fonctionne le méga
générateur de fonctions Arduino ci-dessus avec le compteur de
fréquence Arduino Uno.
Ici, nous avons utilisé Arduino Uno Timer 1 en mode compteur
pour mesurer la fréquence d'un signal d'amplitude arbitraire. Une
autre méthode adaptée pour mesurer la fréquence d'un signal
avec Arduino consiste à utiliser la méthode de capture d'entrée.
Ceci est expliqué avec le code dans Programmation de la capture
d'entrée ATmega328P avec interruption .
De plus, si vous souhaitez des outils de test d'électronique
domestique DIY, consultez les didacticiels suivants.
- Compteur LCR DIY utilisant PC
- Compteur haute fréquence avec Arduino
- Générateur de fréquence variable Arduino 8 MHz
- Comment utiliser Matlab Simulink comme oscilloscope
- Générateur d'onde sinusoïdale Arduino UNO
Mots clés: instrumentation arduino LM311
4,9 / 675 tarifs
Facebook
Tweeter
Signet
Partager
Tu pourrais aimer
Tutoriel Arduino sur le bouton poussoir LED marche/arrêt
08 avril 2024
Comment détecter les niveaux sonores avec Arduino
27 mars 2024
Comment connecter Arduino à Internet pour l'IoT ?
26 mars 2024
Comment piloter des LED haute puissance avec Arduino
19 mars 2024
4 commentaires
1.
Autre
Salut. Je suis tombé sur votre compteur de fréquence pour le projet Arduino. Super
travail et merci pour le partage. Si je peux faire une suggestion, je pense qu'en
laissant de côté R2 et en ajoutant un pot multitours de 100k entre la broche 3 du
lm311 et la masse, vous devriez constater une nette amélioration du gain et de la
linéarité. Le pot est utile pour optimiser les tensions aux broches 2 et 3 afin d'affiner
le seuil du comparateur. Merci encore et bonne chance pour vos futurs projets.
Répondre Supprimer 2 mai 2023 à 5h14
1.
ee-journal
je vais essayer votre suggestion. merci.
Répondre Supprimer 2 mai 2023 à 13h35
1.
Anonyme
Pour obtenir une courbe encore plus nette, j'ai ajouté un 74LS04 et je l'ai alimenté
avec le signal en cascade de trois de ses onduleurs. La forme d'onde finale était une
onde carrée décente avec seulement quelques millivolts à l'entrée de l'ampli-op
jusqu'à environ 2-3 MHz, point auquel le LM311 est à la limite de sa bande passante.
Merci pour votre réponse et continuez comme ça !
Supprimer 2 mai 2023 à 15h56
2.
ee-journal
joli partage merci
Répondre Supprimer 3 mai 2023 à 00h24
Poste un commentaire
Post précédentProchain article
Articles populaires
Comment concevoir l'intégrateur pratique d'ampli-op LM358
27 octobre 2021
Contrôleur PID Arduino - Contrôleur PID de température
11 avril 2023
Circuit de modulation d'amplitude simple (AM) utilisant un modulateur à
diode unique
11 décembre 2021
Exemples de programmation en mode PWM rapide ATmega328P
18 juillet 2021
Différences entre le MOSFET à épuisement et à amélioration
10 janvier 2023
Télécharger l'électronique tout-en-un pour les nuls pdf ebook gratuit
09 mars 2024
Construction et analyse de base de l'amplificateur différentiel BJT
19 mars 2023
Les sujets
Arduino RF ampli-op IoT Electronics Filtres d'oscillateur AM WISP ATmega328p Moteur à
courant
continu Amplificateur modulateur LM358 Matlab NodeMCU ATmega32 PCB BJT FM ESP8
266 Programmation Moteur pas à
pas Simulink Multivibrator Diode Instrumentation JFET Node-Red Serveur Web 555
Minuterie E-MOSFET Johnny-Five 741 ampli-op Arduino Calculateur de projet
Simulink Application Web de transistor Calculateur de filtre de servomoteur L293D Arduino
Due DHT11 Démodulateur Capteur de température Bluetooth L298N LM35 LM741 Arduino
Matlab Projects Capteur d'humidité audio AD633 LDR LM324 Blindage moteur Capteur
PIR Photodiode Amplificateur de puissance EEPROM ESP12E Capteur de gaz Capteur
IR MOSFET VCO clavier D-MOSFET GSM HC-05 Humidité LM311 LM393 Sim900 TIP1
22 Thermocouple à fibre optique AD8495 AI ATmega16 Système de
contrôle d'accéléromètre Gyroscope Joystick LM566 MPU-6050 MQ2 MQ3 OLED
LCD PM Capteur de son TIP31C TL072 Ultrasons AD31855 CMOS Darlington
Transistor Flip-Flops HC-SR04 LM386 Calculateur d'oscillateur à diode
laser PlateformeIO Filtre RC générateur de Signal d'affichage à sept segments VS
Code réalité virtuelle concepteur visuel phototransistor
Derniers tutoriels et téléchargements
Tutoriel Arduino sur le bouton poussoir LED marche/arrêt
08 avril 2024
Téléchargez Proteus Professional v8.17 SP2 gratuitement, un outil indispensable pour les
passionnés d'électronique
05 avril 2024
Comment créer votre propre compteur LCR sur PC : un guide de bricolage
05 avril 2024
Acheter Ruijie RG-RAP6260(G) au Népal
04 avril 2024
Acheter le routeur MikroTik CCR2004-16G-2S+ au Népal
04 avril 2024
Explorer le monde de Bluetooth LE avec « Make : Projets Bluetooth Bluetooth LE pour
Arduino, Raspberry Pi et smartphones »
28 mars 2024
Ce travail est sous licence internationale Creative Commons Attribution 4.0 .
ee-diary.com @2020
À propos
Contact