Fréquencemètre à microcontrôleur

 

Ce Fréquencemètre est un projet dont la principale difficulté, si difficulté il y a, réside dans le logiciel. En effet le PIC16F84 utilisé ici, effectue tant la mesure proprement dite, que l'interface avec l'afficheur et se charge de la gestion de son alimentation.

Principe de fonctionnement

On utilise pour la présente application le timer interne du PIC en association avec son prédiviseur. L'utilisation des ressources internes du PIC permet de réaliser un montage vraiment compact et donc pas trop cher.

Afin de mettre le dispositif sous tension l'utilisateur presse le bouton poussoir (voir schéma). Ceci a pour effet de court-circuiter le commutateur, qui était jusqu'a présent ouvert et ne permettait pas l'alimentation du montage. Le PIC commence donc à executer son programme. La broche RA2, passe à l'état haut et force le commutateur à conduire. Le montage est maintenant sous tension, même lorsque l'utilisateur relâche le bouton poussoir. Le but de tout ceci est de permettre l'arrêt automatique (le microcontrôleur passe RA2 à 0) du montage lorsque la fréquence mesurée est de 0 Hz pendant plus de 4 minutes.
 
Le prédiviseur interne fonctionne, selon une note d'application de Microchip, jusqu'a 50 MHz. En realité cela depend surtout du type de préamplificateur que vous placerez en entrée du montage, sachant qu'il faudra nécessairement un compromis entre gain et bande passante.

La lecture du prédiviseur n'est pas possible, il faut donc utiliser une astuce qui consiste à fournir des impulsions via RA3, jusqu'a débordement du prédiviseur. A la lecture de ces lignes le processus ne vous semble peut être pas évident, je vous recommande d'étudier attentivement le code fourni (freq32.asm) et plus particulièrement la routine Readprescal.

La méthode de mesure utilisée est dite de "durée de porte". Elle consiste en un recensement des impulsions du signal d'entrée pendant 1 seconde (durée de porte). La mesure obtenue est ainsi directement en Hertz.

Schéma du fréquencemètre 
Pour pouvoir mesurer une fréquence de 50 MHz, il faut un mot d'au moins 24 bits (224 = 67.108.864 Hz), on prendra donc un mot de 32 bits. Ceci explique que l'on ne puisse se satisfaire des 16 bits du compteur et du prédiviseur. On fait donc appel à 2 registres supplémentaires, ceux-ci sont incrémentés logiciellement lors d'un débordement du compteur.

L'interface utilisateur est confiée à un afficheur intelligent de 16 caractéres. Le PIC fait appel à différentes routines qui permettent de dialoguer avec celui-ci. L'initialisation est ainsi effectuée par INIT_LCD, l'envoi de caractéres par SEND_CHAR et les commandes par SEND_CMD. Physiquement le bus de données d'une largeur de 4 bits relie RB4 à RB7,à D4 à D7 sur l'afficheur. Les signaux Enable et RS (commande/donnée) sont respectivement reliés à RA0 ET RA1 sur le PIC.

Le logiciel

Le programme principal (freq32.asm) est disponible sous forme d'archive zip, comprenant également les divers fichiers inclus (*.sub, *.lib), pour plus d'information voir le fichier lisezmoi.txt dans l'archive.

freq.zip 7.61 Ko 

L'assembleur pour PIC est gratuit, il est disponible ici depuis le site du constructeur.

asm21500.zip 565 Ko 

Présentation rapide du PIC 16F8X Retour à la page d'accueil