Cronometrare segnale

Salve a tutti! Avrei un problema da risolvere: dovrei rilevare per quanto tempo (si parla di millisecondi) e' presente un segnale a +12 V su una linea (che non controllo). Visti poi gli scopi del mio progettino (che richiedono operazioni matematiche) avrei pensato di usare Arduino Duemilanove versione base (e' anche piu' piccolo di quanto mi servirebbe). C'e' qualcuno che mi sa suggerire un modo oppure darmi almeno una dritta? Astro

Reply to
Astro
Loading thread data ...

Astro ha scritto:

Una delle possibili soluzioni è acquisire questo segnale tramite un circuito di condizionamento (ad es. con zener o fotoaccoppiatore) e tradurlo quindi in un segnale 0-5V.

A questo punto entri nel micro. Puoi usare un normale pin di interrupt impostato sui fronti così da avviare e bloccare un timer nei due casi, oppure usare funzioni di input capture se previste dalla tua MCU.

Marco

Reply to
Marco Trapanese

Marco Trapanese ha scritto:

Puoi essere piu' specifico? Di elettronica discreta conosco solo le basi delle basi (resistenze, condensatori, leggi di Kirchkoff e di Ohm, diodi, diodi zener ma poco, e poco altro): sono piu' ferrato sulla programmazione procedurale. Cos'e' l'MCU?

Astro

Reply to
Astro

"Astro" ha scritto nel messaggio news:h7fvd9$aeq$ snipped-for-privacy@news.eternal-september.org...

Con un microcontrollore (che ' un piccolo processore con alcune periferiche integrate e diversi pin di I/O) basta usare uno dei suoi timer o il captures se ce l'ha, usandolo quindi come periodimetro. Se non desideri entrare nel mondo dei micro basta usare il circuito di un frequenzimetro con i segnali invertiti (che e' appunto un periodimetro) dove il tuo segnale (ridotto a 5V) funge da gate all'ingresso del quale inserisci un segnale di frequenza nota, ad esempio 1MHz, cosi' la misura che ti fornira' sara in microsecondi e ti serviranno 7 cifre se vuoi questa risoluzione. Se all'ingresso del gate dai 1KHz il risultato sara' in millisecondi e ti serviranno solo 4 cifre. Ho fatto l'ipotesi che il tuo segnali non superi mai il sec. di ampiezza, in caso opposto basta solo aumentare il n. di cifre. Dovresti studiarti il funzionamento di un frequenzimetro/ periodimetro classicoa divisori per 10.

ciao giorgio

Reply to
Giorgio Padoan

Astro ha scritto:

L'MCU è il microcontrollore, ho assunto che avessi le basi in quanto proponevi l'utilizzo dell'Arduino.

Quale parte di ciò che ho scritto è poco comprensibile? Così vedo di spiegarla meglio, o qualcun altro lo farà anche meglio!

Marco

Reply to
Marco Trapanese

Marco Trapanese ha scritto:

Ho detto che conosco la programmazione, e programmare un PC in linguaggio C non e' poi tanto diverso dal programmare un microprocessore, fatte le debite distinzioni (ho visto il linguaggio di Arduino che e' modellato sul C++).

Non avevo capito la parte dello zener o del fotoaccoppiatore (e quest'ultimo non so nemmeno cosa sia) ma forse, riflettendoci, ho capito: io ho un segnale, diciamo, digitale, dato che varia istantaneamente tra +12V (stato 1) e 0V (stato

0; praticamente e' comandato da un transistor); se con un diodo zener e l'apposita resistenza lo riduco a 5V, ottengo comunque un segnale "digitale".

Diciamo che pero' non ho idea di come realizzare un cronometro che mi dica quanto tempo la linea si e' trovata nello stato 1: ho spulciato le librerie di Arduino, ma di idee nemmeno una.

Il segnale (in base ad alcune mie stime) dovrebbe passare dallo stato 0 allo stato 1 e viceversa tra 15 e 85 volte al secondo, in condizioni variabili, con durata oscillante tra 1 decimo e 1 centesimo di secondo. Mi serve una risoluzione di 1e-4 s.

Il tempo di apertura cosi' misurato (somma di tutti gli istanti in cui e' a 1) verrebbe elaborato circa ogni mezzo secondo e visualizzato su un display.

Spero di essere stato chiaro nell'esposizione e di aver compreso i tuoi suggerimenti.

Grazie, Astro

Reply to
Astro

Ho risolto: c'e' una comodissima funzione pulseIn() in Arduino che cronometra lo stato di un DigitalPin. Grazie a tutti per l'attenzione! Astro

Reply to
Astro

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.