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.
Frequenzimetro con PIC
Moderatore:
Paolino
16 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
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
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

0
voti
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
0
voti
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
pgiagno, 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
pgiagno 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.
Posso benissimo credere a quanto affermato da
Poi se parliamo di precisione, può non essere mostruosa, ma direi che la lettura ci sarà.
non posso dirti
saluti.
-

lelerelele
4.899 3 7 9 - Master

- Messaggi: 5505
- Iscritto il: 8 giu 2011, 8:57
- Località: Reggio Emilia
0
voti
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.
1
voti
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.
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.
Follow me on Mastodon: @davbucci@mastodon.sdf.org
-

DarwinNE
31,0k 7 11 13 - G.Master EY

- Messaggi: 4420
- Iscritto il: 18 apr 2010, 9:32
- Località: Grenoble - France
1
voti
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.
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.
0
voti
Bene, nono lo sapevo, hai trovato autonomamente una riposta.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..
bravo.

-

lelerelele
4.899 3 7 9 - Master

- Messaggi: 5505
- Iscritto il: 8 giu 2011, 8:57
- Località: Reggio Emilia
16 messaggi
• Pagina 1 di 2 • 1, 2
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 5 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




