Pagina 1 di 2

Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 11:26
da pgiagno
Ho visto questo frequenzimetro che si basa su un microcontrollore PIC16F628A. È uno schema molto comune e replicato in vari articoli. A quanto ho capito la misurazione della frequenza fino a circa 50 MHz (ma c'è chi sta più basso fino a circa 30 MHz) è effettuata direttamente dal PIC contando gli impulsi in arrivo sul pin n. 3 (RA4/T0CKI/CMP2 pag 15 fig 4.2) che consente l'accesso "diretto" a TMR0.

Questo per me significa che quel PIC da quel pin è in grado di "contare" impulsi di appena 20ns. Dato che conosco appena un po' meglio lo ATmega328, ho cercato di vedere nel datasheet se è contemplato qualcosa di simile, ma non sono riuscito a trovare niente. Mi è sembrato di capire che i pin di I/O non consentono l'accesso ad accumulatori interni se non attraverso il clock del micro (pag 85 fig 14.2); il che limita l'acquisizione di impulsi a frequenze inferiori alla frequenza di clock diviso 2 = meno di 8 MHz. Salvo errori.

Mi potete confermare quanto sopra? Grazie,

Ciao,
P.

Re: Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 12:51
da IlGuru
Guardando sommariamente lo schema, il segnale in ingresso arriva al micro attraverso il prescaler U3.
Quindi la frequenza effettivamente letta è quella del segnale in ingresso divisa n volte.
Dubito che un micro che, tirato per il collo arriva a 5M cicli macchina al secondo, possa leggere direttamente un segnale da 50M Hz

Re: Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 14:09
da lino9999
Con ATmega328 puoi arrivare fino a 8 MHz, ho fatto un frequenzimetro con Nano, e arriva fino a 6 MHz perché ha l' oscillatore a 16 MHz.

Re: Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 15:40
da edgar
lino9999 ha scritto:ho fatto un frequenzimetro con Nano, e arriva fino a 6 MHz perché ha l' oscillatore a 16 MHz.

Aumentare la frequenza massima senza perdere risoluzione non è comunque difficile: bastano un paio di flip flop come front end e 3 / 4 I/O liberi per leggerne lo stato, azzerarli e abilitare il conteggio. La frequenza massima sarà 4 volte superiore.

pgiagno: Ho realizzato a mia volta un frequenzimetro da circa 30 MHz basato su un PIC qualche tempo fa, ma il mio primo frequenzimetro, basato sul "solito integrato dedicato tanto costoso quanto introvabile" ( 4-5 euro su ebay) che cita l'articolo mi dà maggior sicurezza :mrgreen:

Re: Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 16:03
da lelerelele
Non concordo con chi afferma di non riuscire a raggiungere la lettura di una frequenza neanche ravvicinata alla frequenza di clock, per me sbagliano approccio! Se intendete leggere il tempo tra due fronti consecutivi avete ragione ma non vedo il perché usare questa tecnica controproducente!

Posso benissimo credere a quanto affermato da Foto Utentepgiagno, se uso il contattore interno del micro, (Quindi leggo direttamente da contatore hardware), posso credere che mi legga anche frequenze dell'ordine di decine di mega, quindi andrò a leggere a scadenza fissa (ottenuta con altro contatore), ed il valore accumulato sarà la mia frequenza, moltiplicata se necessario per un costante,(dipende ovviamente dal tempo che ho usato per caricare il contatore).

Poi se parliamo di precisione, può non essere mostruosa, ma direi che la lettura ci sarà.

non posso dirti Foto Utentepgiagno se possibile replicare il circuito con arduino, non lo conosco, ma sono sicuro che il microcontrollore usato per arduino lo farà, senza dubbio, resta da vedere se a livello hardware è accessibile la funzione, e se a livello software, tu possa trovare qualcosa gia fatto, credo che se vorrai farti il software tu, si dovrebbe riuscire.

saluti.

Re: Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 16:05
da lino9999
edgar ha scritto:
lino9999 ha scritto:ho fatto un frequenzimetro con Nano, e arriva fino a 6 MHz perché ha l' oscillatore a 16 MHz.

Aumentare la frequenza massima senza perdere risoluzione non è comunque difficile: bastano un paio di flip flop come front end e 3 / 4 I/O liberi per leggerne lo stato, azzerarli e abilitare il conteggio. La frequenza massima sarà 4 volte superiore.


L'ho realizzato senza flipflop, la frequenza entra direttamente su un piedino del Nano.

Re: Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 17:31
da DarwinNE
Io ho costruito in passato frequenzimetri basati su PIC. Quelli pubblicati in rete sono spesso e volentieri derivazioni di quest'idea:

http://ww1.microchip.com/downloads/en/a ... 00592d.pdf

Si tratta di sfruttare il prescalerad 8 bit interno al PIC per dividere la frequenza e far avanzare un contatore (sempre ad 8 bit), usando poi un trucco intelligente per sapere alla fine del conteggio quanti "scatti" sono rimasti nel prescaler recuperando quindi valori su 16 bit. La frequenza di clock la si può superare benissimo, tanto il lavoro "sporco" alla fine lo fa il prescaler.

L'idea potrebbe essere applicata su altri micro solo se è possibile utilizzare un prescaler ed un contatore come si può fare sui PIC piccolini.

Re: Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 17:56
da edgar
Ho appena controllato il DS dell'ATmega 328: prima di arrivare al prescaler e successivo contatore, il clock esterno passa attraverso un edge detector sincrono al clock di sistema con le limitazione che ne conseguono.
Ho poi verificato il DS del PIC 16F628: il Timer1, a 16 bit, può essere usato in modo asincrono. In questa applicazione è decisamente un vantaggio.

Re: Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 18:48
da lelerelele
edgar ha scritto:Ho appena controllato il DS dell'ATmega 328: prima di arrivare al prescaler e successivo contatore, il clock esterno passa attraverso un edge detector sincrono al clock di sistema con le limitazione che ne conseguono..
Bene, nono lo sapevo, hai trovato autonomamente una riposta.
bravo. :ok:

Re: Frequenzimetro con PIC

MessaggioInviato: 24 nov 2020, 18:54
da edgar
Lo avevo letto tempo fa, ma era un'informazione che non mi serviva. Era finita nel dimenticatoio.