'fmeter' - un frequenzimetro b.f. con PIC16F628A e LCD

Utilizzando un PIC16F628A e' possibile realizzare un frequenzimetro per segnali in bassa frequenza con visualizzazione su display LCD. Sono richiesti pochi componenti ed il circuito e' molto compatto.

Prototipo del 'fmeter'  (v1.0 - ita)

Principio di funzionamento

Contando i fronti di salita (o di discesa) di un'onda quadra in un intervallo di tempo prestabilito - il gate time - e' possibile calcolarne la frequenza. Tale intervallo viene impostato con precisione dal microcontrollore, dotato di oscillatore al quarzo. La lunghezza del gate time determina la risoluzione: essa e' 1 Hz, scegliendo il gate time di 1 secondo. Inoltre, il numero dei fronti rilevati coincide con la frequenza.

La generazione del gate time avviene tramite interrupt. Il segnale da misurare viene applicato al pin RB0, che puo' gestire interrupt esterni: su ogni fronte di discesa rilevato al pin RB0 viene generato un interrupt e viene incrementata una variabile di una unita'. Dopo 1 secondo il valore della frequenza e' disponibile e puo' essere inviato al LCD. Si assume che la frequenza sia costante per tutta la durata del gate time.


Realizzazione

Schema del frequenzimetro in formato pdf (v1.0.2) 

Il microcontrollore pilota il display attraverso la PORTB. Il pin RB0, come gia' detto, e' riservato per ricevere il segnale da misurare. L'alimentazione viene ricavata da una pila a 9 V e regolata a 5 V con un integrato 78L05. L'assorbimento di corrente circa 10 mA. Il diodo D1 protegge il circuito da accidentali inversioni di polarita'.

Lo stadio di ingresso piu' adatto dipende dal tipo e dall'ampiezza del segnale da misurare. Nello schema e' costituito semplicemente da una resistenza. In questo modo e' possibile applicare onde quadre di ampiezza pari a 5 V (piu' precisamente con livelli logici 0 e +5 V) oppure segnali sinusoidali che variano tra 0 e +5 V, visto che l'ingresso del PIC e' di tipo Schmitt trigger. Invece, non e' possibile applicare segnali negativi senza ulteriori accorgimenti.

La misura viene effettuata sui fronti di discesa del segnale di ingresso, visto che il bit INTEDG del registro OPTION REG e' impostato a 0.


Lista dei componenti

Componente Valore Componente Valore
D1 1N4001 o eq. C1 10 mF - 25 V elettrolitico
R1 10k ohm C2 10 mF - 25 V elettrolitico 
R2 4700 ohm C3 100 nF ceramico
R3 trimmer 10k ohm C4, C5 22 pF ceramici NP0
LCD display LCD (2x16) X1 quarzo da 20 MHz
U1 LM78L05 zoccolo DIP18
U2 PIC16F628A batteria 9 V alcalina


Misure di frequenza

Visto che il gate time e' 1 s, qualsiasi misura e' affetta da un errore di 1 Hz. Inoltre all'aumentare della frequenza la precisione diminuisce, restando comunque ottima.

Sono state eseguite alcune misure di segnali campione con un oscilloscopio e la frequenza e' stata confrontata con la lettura del frequenzimetro.

Segnale 1.  5V (p-p), f= 199.3 Hz

 Segnale 2. 5V (p-p), f= 998.9 Hz

Segnale 3.  5V (p-p), f= 27.53 kHz

 


Possibili variazioni

  • Sostituendo lo stadio di ingresso a resistore con una rete di condizionamento del segnale, e' possibile misurare la frequenza di altre forme d'onda, con ampiezze maggiori e/o negative oppure amplificare segnali deboli.

  • Si puo' aggiungere un prescaler per misurare frequenze di uno o due ordini di grandezza superiori; ad esempio l'integrato 4017 e' un contatore decadico che accetta segnali TTL con frequenza fino a 6 MHz (con Vdd=5 V). Prelevando il segnale da una delle sue dieci uscite si ottiene una frequenza dieci volte inferiore a quella dell'onda quadra applicata all'ingresso. Utilizzando due 4017 in cascata, si riesce a dividere la frequenza del segnale per 100.

  • Sfruttando due pin della PORTA non usati si potrebbe impostare il gate time scegliendolo con un dip-switch; oppure abilitare/disabilitare il prescaler. Queste modifiche richiedono cambiamenti nel firmware.

 

Firmware: da questa sezione e' possibile scaricare il firmware piu' aggiornato.

Download firmware - v1.0.4 (Save as...); source code (Save as...).

 

Revision history:

v1.0 ita  - 28/12/2006: first release (beta).

v1.0.3 - 19/03/2007: versione stabile con modifiche minori.

v1.0.4 - 15/04/2009: migliorata gestione degli interrupt secondo raccomandazioni della aplication note AN576 di Microchip.

 

Nota:  l'utilizzo del circuito e del firmware e' inteso per uso personale o didattico solamente.


Data sheet

 


 

 
 

 

Si declina ogni responsabilita' per errori ed inesattezze contenute in questa documentazione e per danni di qualsiasi natura derivanti dall'uso dei circuiti e dei programmi descritti. Nomi e marchi citati appartengono ai rispettivi proprietari. Si fa divieto di riprodurre anche in parte i contenuti di questa pagina e di quelle associate, in modo cartaceo o elettronico, senza esplicito accordo con gli autori.