Semplice ma preciso periodimetro con 16F84

Posted in: Elettronica,Schemi e Progetti |

PERIODIMETRO

Introduzione.

In diverse occasioni ho dovuto rinunciare a realizzare dei progetti di mio interesse, solo perché non disponevo di strumentazione adeguata per misurare frequenze subsoniche . Per valori così bassi infatti  il frequenzimetro consente in genere risoluzioni di +/- 1Hz. Per spingersi oltre occorre utilizzare il periodimetro che come dice la stessa parola, effettuando la misura del periodo di un segnale, ci restituisce dei valori più precisi con risoluzioni di frazioni di Hz. VEDI  FOTO

Come é noto  conoscendo il valore del periodo di un segnale, possiamo subito risalire alla frequenza con l’altrettanto nota formula F = 1 / T , dove F é la frequenza espressa in Hz. e T é il periodo espresso in secondi. Non volendo andare incontro a grosse spese ho pensato di  realizzare un periodimetro, avvalendomi delle potenzialità offerte da uno dei più diffusi microcontrollori, il PIC-16F84A  prodotto dalla Microchip. Attorno a tale chip che costituisce il cuore di tutto il sistema, gravitano pochi altri componenti; questo grazie al fatto che al suo interno possiamo sfruttare vari registri di controllo e di configurazione, nonché due banchi di memoria EEPROM e RAM di piccole capacità ma sufficienti al nostro scopo. VEDI  SCHEMA .

Non lasciatevi impressionare quindi dalla ridotta complessità circuitale. Infatti dal confronto effettuato  con apparati di tipo professionale ho accertato le ottime caratteristiche finali del progetto. Prima fra tutte ho riscontrato una elevata precisione, soprattutto per valori superiori a 1 mS. ovvero per frequenze minori di 1000 Hz, con una risoluzione di 1 uS; poi abbiamo buona sensibilità, basso costo, basso assorbimento di corrente e complessità circuitale ridotta al minimo. E’ per questi motivi che desidero proporlo a tutti coloro che hanno avuto la mia stessa esigenza o che vogliono fare questa esperienza .

Principio di funzionamento.

In pratica per ottenere misure attendibili , il segnale da misurare in ingresso non deve scendere sotto il livello di 70 mV. Il transistor T1 ad accoppiamento in continua , provvede ad amplificare tale segnale rendendolo idoneo a pilotare la porta d’ ingresso PB0 del PIC, che essendo del tipo triggerato accetta anche segnali sinusoidali. Di tutto il resto, e cioé dalla elaborazione del segnale fino alla visualizzazione del dato, se ne occupa la logica di funzionamento implementata dal software che é molto semplice. Al sopraggiungere di un fronte di salita del segnale in ingresso, scatta un interrupt interno che istantaneamente obbliga il PIC ad abbandonare l’ esecuzione del programma principale, passando ad  eseguire una subroutine che avvia un preciso contatore interno incrementato da un clock da 1 Mhz.

Tale clock è derivato dal quarzo Q1 da 8 Mhz, conferendo al sistema una risoluzione sul display di 1uS. Al successivo fronte di salita, viene visualizzato sul display il valore conteggiato dal contatore interno che subito dopo viene azzerato ed avviato al conteggio successivo. Come si evince anche dalla FIG.1, in questo modo il display viene continuamente aggiornato col valore conteggiato che si riferisce al tempo intercorso tra due fronti di salita, cioé al periodo.

In definitiva ogni fronte di salita funge allo stesso tempo da stop per il conteggio precedente e da start per il conteggio successivo. Tenete presente che non ho ritenuto opportuno predisporre lo strumento per misure superiori a 16 Sec., per cui dopo tale valore il registro di conteggio interno viene automaticamente azzerato e fatto ripartire daccapo. Inoltre per misure di periodo minori di 1 mS. ovvero per frequenze superiori a 1000 Hz. lo strumento in questione non é più tanto preciso, per cui  per tali valori é preferibile usare il frequenzimetro. Va da se che maggiore sarà il valore del periodo misurato,  minore sarà l’ errore in cui possiamo incappare.

Collaudo.

Nel circuito non ci sono punti di taratura, per cui dopo aver attentamente controllato che non vi siano errori di montaggio, date pure alimentazione ed iniettate all’ ingresso un segnale di 50 Hz. misurato anche da un frequenzimetro. A questo punto dovreste leggere sul display il valore del periodo pari a 20.00 mS. Se leggerete invece 19.99 mS. oppure 20.01 mS. , non preoccupatevi é il vostro frequenzimetro che non riesce a discriminare la differenza. Per tali valori infatti  la frequenza esatta , nel primo caso sarà pari a : F=1/19.99*10^-3 = 1000/19.99 = 50.025 Hz. e nel secondo caso sarà pari a :   F=1/20.01*10^-3 = 1000/20.01 = 49.975 Hz. per cui ritoccate la sintonia del vostro generatore fino a leggere 20.00 mS.  e sarete veramente sicuri che il segnale da voi misurato é di 50 Hz. precisi . Volutamente per i calcoli appena effettuati, non ho tenuto conto delle unità, cosa che invece sarebbe opportuno fare per valori di lettura più bassi.

Conclusioni.

Per il visualizzatore, ovviamente andrà bene qualunque tipo di display intelligente, purché gestito da HD44780, che come si vede dallo schema elettrico, viene pilotato solo in scrittura e solo coi quattro bit più significativi.

Questo strumento vi consentirà di misurare con estrema precisione, la velocità di rotazione di un alternatore, la frequenza di rete, la frequenza dei toni subaudio ed altro ancora. Se ad esempio prelevate il segnale da un sensore ottico, potrete agevolmente misurare la velocità di rotazione di una ruota, di un albero motore,  oppure le oscillazioni di un pendolo .

Il software da me prodotto é a disposizione di tutti, per averlo basta contattarmi direttamente al mio indirizzo e-mail; dove mi farebbe piacere ricevere anche le vostre osservazioni, valutazioni, richieste, suggerimenti, critiche e quant’altro riterrete opportuno, al fine di migliorare il progetto. Salutandovi,  auguro a tutti buon lavoro e buon divertimento.

IT9DPX – #135  (Francesco M.)

(Articolo visitato: 9.744)

21 Risposte to “Semplice ma preciso periodimetro con 16F84”

  1. andrea Says:

    ciao !!! bello il progetto , ma l’ e-mail ?
    a me interessava magari possiamo contattarci ?

  2. gianpaolo Says:

    sono molto interessato al progetto e volevo sapere se avevi fatto anche un PCB…

  3. peppe Says:

    anche io sono interessato al progetto, ma ho alcune domande la riguardo…
    Puoi contattarmi???

  4. michele Says:

    usando un quarzo a 4mhz (ho solo pic con questa frequenza)cosa andrebbe modificato nel firmware?
    puoi cmq mandarmo l’hex?

  5. Angelo Lezza Says:

    Ciao Franco, complimenti per i tuoi progetti.
    Nei giorni scorsi ho tentato invano di contattarti al tuo numero telefonico.

    Come faccio per contattarti?

    A presto

  6. max Says:

    Ciao Sono interessato a questo periodimetro, riesce a discrimare differenze di +- 0.1 hz?
    come posso contattarti?
    ciao

  7. Stefano Says:

    Ciao Francesco è proprio quello che mi serviva
    volevo misurare la frequenza di 1hz di un orologio digitale .
    Ottimo lavoro , se possibile , implementerei la possibilità di leggere la frequenza .
    Potrei avere il software ?
    Grazie in anticipo

    Stefano IK6EIW

  8. Fabio Says:

    Ma se il pic16f84 non possiede adc interni come hai fatto ad acquisire un segnale? fabio.romano.aks6@alice.it rispondimi a questo indirizzo email, sto lavorando ad un progetto e ti chiedo se potresti darmi una mano 😉

  9. Francesco Says:

    In effetti non esegue una conversione ADC, ma è sensibile ai fronti di salita del segnale preventivamente squadrato dal transistor T1, in corrispondenza dei quali è attivato un contatore che misura il tempo tra due fronti consecutivi.

  10. Fabio Says:

    Mi puoi spiegare precisamente come funziona la parte del transistor prima di entrare nell’ingresso PB0?

  11. Francesco Says:

    Il transistor ha il solo compito di rendere un qualunque segnale in ingresso, quanto più possibile squadrato. Anche un segnale sinusoidale, grazie all’elevato guadagno del transistor, diventerebbe molto simile all’onda quadra di Fig.1 (vedi articolo), con fronti di salita e di discesa ripidissimi.
    Saluti…

  12. Fabio Says:

    ho provato con multisim a collegare un segnale sinusoidale di 85 Hz alla base di un transistor, l’emettitore a massa e il collettore all’oscilloscopio e ho notato che ciò che esce è semplicemente un segnale con le semionde positive tagliate, così dovrebbe risultare?

  13. Francesco Says:

    Il partitore resistivo collegato alla base di un transistor e la resistenza colegata al suo emettitore, determinano la polarizzazione e di conseguenza il punto di lavoro del transistor, da cui dipende il tipo di funzionamento dello stesso, uno è quello da te descritto. Se fai una ricerca sul web, alla voce polarizzazione di un transistor, troverai molti esempi e chiarimenti in merito.
    Saluti.

  14. Fabio Says:

    ma quindi l’ingresso è sottoposto a fronti di salita delle semionde negative? Scusa che ti faccio tutte queste domande, ma tento di comprendere ^^

  15. Fabio Says:

    al mio indirizzo puoi inviarmi il programma? Visto che devo fare un progetto simile ti chiedevo se mi potevi mostrare il codice così provo a comprenderlo. Attendo tue risposte.

  16. Mauro Says:

    Vorrei se possibile, il software.
    Grazie per quanto potrai fare

  17. Mauro Says:

    Se possibile, mi piacerebbe vedere il software allegato del periodimetro.
    Grazie in anticipo di quanto potrai fare

  18. Mario Says:

    Ciao sono molto interessato a questo periodimetro per motivi didattici. Vorrei proporlo in laboratorio ai miei studenti. Puoi mandarmi il codice e tutte le info relative? Grazie!
    borrellimario@tin.it
    Come posso contattarti?
    ciao

  19. Andrea Cianci Says:

    A prima vista bello.
    Come poso avere il software?
    Ciao.

  20. desidererei, se possibbile ricevere un codice in c per il periodometro. ciao e grazie in anticipo I0VTA Says:

    l’ho realizzato e va molto bene ma mi interesserebbe il listato in c grazie

  21. f.mira Says:

    Ciao…ti posso inviare il file ASM…non ho altro-
    73…

Lascia un Commento!