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
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.
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" 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.
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.
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.