oscilloscopio con PIC

Jan 10, 2004 14 Replies

Ciao, prendendo un PIC ad es 16f877, con qualche convertitore analogico digitale e campionando a 20MHz ... mandando il tutto in una memoria e poi eventualmente ad un PC ...non si ottiene un oscilloscopio che arriva ..diciamo fino a 4-5 MHz? C'é qualche concetto sbagliato?



Grazie



Novello


e

eventualmente

4-5

ci stavo pensando in questi giorni per realizzare un prova valvole. ma mi sa che per il momento è al di sopra delle mie capacita! ciao!

Ciao Novello, no, non c'è niente di sbagliato, ma questo non toglie che sia comunque un circuito abbastanza complesso. Qualche anno fa ho visto un circuito simile che, se ricordo bene, campionava a 40 MHz con un TDA8703 e usava un uP (forse un PIC) per spedire il tutto su un display grafico. Non mi sembra usasse memorie. Se ritrovo lo schema te lo spedisco.

Ciao. Giuliano

Novello ha scritto:

questo articolo e` stato inviato via web dal servizio gratuito http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it

"JUL" ha scritto nel messaggio news:btpjd2$9ij$ snipped-for-privacy@news.newsland.it...

grazie :o)

Comunque la mia é solo un'idea che mi é venuta fuori su due piedi.

Novello

"Silvio Baccari" ha scritto nel messaggio news:greMb.73267$ snipped-for-privacy@news3.tin.it...

ecco, non ci avevo pensato, la frequenza massima del PIC é 20 MHz ...ma quante volte al secondo posso fare un intero ciclo di lettura della tensione di tutti i pin che mi interessano? Novello

"Novello" ha scritto

Il che vuol dire al massimo 5 milioni di istuzioni al secondo. Visto che per gestire qualche periferica ne servono un certo numero, diciamo una ventina, si sarebbe sulle 250mila letture al secondo. In pratica mi sa che e' ancora una stima troppo favorevole, ad occhio non penso si riuscirebbe ad andare oltre i 100mila campioni al secondo... su un solo pin.

Claudio F

"Novello" ha scritto nel messaggio news:bts7n3$a2d49$ snipped-for-privacy@ID-57385.news.uni-berlin.de...

messaggio

tensione

Io ne ho visti da 40Mhz e più sul sito microchip.

Pestando alacremente sulla tastiera "Novello" ebbe l'ardire di profferire:

Devi spulciarti per bene il datasheet. Viene indicato quanti cicli impiega ogni istruzione e generlamente è 1 ciclo. Quindi dipende dalle istruzioni che utilizzerai per leggere la tensione, memorizzarla da qualche parte e/o visualizzarla.

Hardware: The parts of a computer system that can be kicked. News 2000 [v 2.06] / StopDialer / PopDuster - http://www.socket2000.com

Due di Picche ha scritto:

tensione

Ogni istruzione dura 1 ciclo macchina(quasi tutte), ma un ciclo macchina dura 4 colpi di clock. In pratica quindi è (almeno per me) più comodo pensare che il Pic lavora alla frequenza del quarzo divisa per 4 (come effettivamente accade).

Ciao Fil

questo articolo e` stato inviato via web dal servizio gratuito http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it

Il 16F877 (e, credo, tutti i 16Fqualcosa) impiega 4 cicli di clock per istruzione, salvo un paio di eccezioni. Ma il problema, in realtà, sta nel tempo che impiega il convertitore A/D a fare la conversione; dal datasheet risulta essere circa 20 microsecondi a 50°C, la frequenza di campinamento massima diventa quindi 50kHz e la banda utile 25kHz. Può andare bene per applicazioni audio, ma poco di più.

Hmmm, aspetta aspetta, stiamo parlando di un ADC esterno, non ho letto bene il primo post. In questo caso, posto che l'ADC sia abbastanza veloce, possiamo fare due conti.

Supponiamo di fare una lettura dell'ADC (esterno) e una scrittura in RAM (esterna) con una ventina di istruzioni; allora a 20MHz risulta:

20 (istruzioni) x 50ns (clock) x 4 (cicli per istruzione) = 4 microsecondi

e si riesce quindi a campionare a 250kHz. Non è comunque un granché.

La soluzione sarebbe usare della logica esterna con un contatore per gli indirizzi della RAM e una piccola macchina a stati che si occupa di incrementare il contatore, leggere l'ADC, e scrivere in RAM; riempita la RAM si libera il bus e si legge la RAM direttamente dal PIC. Non è banale, ma non credo che sia impossibile; Lorenzo (che spesso scrive in questo gruppo) aveva a suo tempo pensato ad un progetto simile che usava una CPLD Xilinx per contenere la logica.

OK, la soluzione con PIC non é proponibile, stroppo bassa la frequenza massima. Ma a proposito, almeno un prototipo di quel bell' oscilloscopio sul sito di Lotenzo é stato fatto da qualcuno??

Novello

Pestando alacremente sulla tastiera filippo.rubin@_TOGLI_virgilio.it (Fil) ebbe l'ardire di profferire:

Esatto.

Infatti.

Everyone is entitled to my opinion! News 2000 [v 2.06] / StopDialer / PopDuster - http://www.socket2000.com

Io avevo bisogno di un oscilloscopio, e pensavo la stessa cosa ho provato ho perso un sacco di tempo e poi dalla disperazione ho comperato l'oscilloscopio velleman ds10 che smontandolo è fatto proprio così un pic e un adc con qualche interruttore analogico per cambio portata. Ho speso meno e funziona! (160euro) Certo fossì almeno riuscito a spedire i dati al pc sarebbe stato un'altra soddisfazione!!!!

digitale

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required