interfaccia hw per amplificare input digitale da 2V a 5V

Buongiorno a tutti, a seguito di una vecchia discussione da me creata ((http://arduino.cc/forum/index.php/topic,60704.0.html) ho fatto un po' di esperienza con l'arduino Uno e Mega. Ora mi trovo d'innanzi una nuova problematica che immagino sia di semplice risoluzione per chi mastica elettronica con cognizione di causa, a differenza mia XD. Nella mia normale pratica d'utilizzo dell'Arduino sto acquisendo tramite porta digitale (sfruttando l'interrupt)un segnale da 5V. Ora, anzichè avere a disposizione il solito transitorio 0/+5V TTL compatibile, mi ritrovo a dovere acquisire un segnale più basso in tensione, di circa 2 V. Ovviamente non riesco ad utilizzare correttamente l'arduino con questo ingresso non TTL, a pegigorare le cose c'è il fatto che probabilmente mi ritroverò in futuro ad acquisire altri segnali ancora più bassi (tra 1 e 2 V). Sto cercando quindi una maniera di amplificare questi segnali a +5V quando l'originale è diverso da 0 V e 0V quando l'originale è 0V. La mia necessità è quella di avere un interfaccia hardware di piccole dimensioni in grado di fare questo lavoro, che possibilmente sfrutti l'alimentazione +5V fornita dall'arduino in modo tale da non avere bisogno di batterie dedicate. E' possibile? Cosa mi consigliate per questo scopo? Ringrazio!

supercolli: La mia necessità è quella di avere un interfaccia hardware di piccole dimensioni in grado di fare questo lavoro, che possibilmente sfrutti l'alimentazione +5V fornita dall'arduino in modo tale da non avere bisogno di batterie dedicate.

Di che tipo di segnali stiamo parlando ?

Semplici segnali a tensione fissa che passano dallo stato di basso (0V) ad uno stato di alto il quale che può variare a seconda di come è alimentato il segnale, generalmente +5 V ma, come ora, possono capitare singolarità di alimentazioni a +2 V o inferiori. L'arduino deve rilevare l'istante temporale di questo passaggio di stato da basso ad alto ed eseguire delle semplici operazioni di calcolo sui tempi, ma questo lo sto già facendo con successo da tempo sui segnali a +5V, il mio problema attuale è solo quello di trattare segnali con alimentazioni più basse per renderli TTL compatibili e leggerli correttamente con l'arduino.

Un amplificatore configurato come un comparatore :) V2 (Entrata invertente) la colleghi a GND V1 (Entrata non-invertente) al segnale in ingresso e ci metti una resistenza pull-down. Alimenti l'amplificatore con 5v e 0V (GND). Se la tensione in ingresso a V1 è maggiore di quella a V2, hai 5v sull'uscita dell'amplificatore, altrimenti hai 0v.

Puoi comprare gli LM324 che contengono quattro amplificatori: costano una sciocchezza :)

Correggetemi se sbaglio, ovviamente :)

EDIT: Mi viene adesso in mente che in questo modo un segnale basso potrebbe non essere riconosciuto... Dovresti mettere un partitore resistivo per avere 0.5v sull'ingresso invertente. In questo modo qualsiasi tensione superiore a 0.5v verrà portata a 5v e qualsiasi tensione inferiore a 0v.

Correggetemi se sbaglio, ovviamente

Ti prendo di parola.

Non é cosí semlice. Un LM324 non va bene perché l'uscita non raggiunge la tensione di alimentazione. Dovresti usare un operazionale Rail to Rail.

Un semplice transitor NPN con 2 resistenze (base e pull up) fa anche il lavoro. Emettitore a massa, collettore sul entrata e pullup interno attivato e resistenza da 1kOhm sulla base.

Ciao Uwe

uwefed:

Correggetemi se sbaglio, ovviamente

Ti prendo di parola.

Non é cosí semlice. Un LM324 non va bene perché l'uscita non raggiunge la tensione di alimentazione. Dovresti usare un operazionale Rail to Rail.

Credevo che l'ATMega iniziasse a leggere HIGH da circa 3v in su...

Un semplice transitor NPN con 2 resistenze (base e pull up) fa anche il lavoro. Emettitore a massa, collettore sul entrata e pullup interno attivato e resistenza da 1kOhm sulla base.

Questo però è parecchio più semplice :D E se ha un'entrata analogica libera, si potrebbe usare quella.

uwefed:
Un semplice transitor NPN con 2 resistenze (base e pull up) fa anche il lavoro. Emettitore a massa, collettore sul entrata e pullup interno attivato e resistenza da 1kOhm sulla base.

Si va bene.

uwefed: Un semplice transitor NPN con 2 resistenze (base e pull up) fa anche il lavoro. Emettitore a massa, collettore sul entrata e pullup interno attivato e resistenza da 1kOhm sulla base.

Ciao Uwe

Vi chiedo un aiuto sulla scelta delle resistenze perchè purtroppo non ne sto venendo a capo. Uso un transistor 2N3704 ed ho seguito lo schema da te indicatomi. Vorrei sapere, avendo un segnale in arrivo sulla base di 2.2V e sul collettore i +5V dell'arduino (con relativa corrente), il valore delle resistenze da mettere in serie sulla base e sul collettore per il pull-up. L'entrata per l'arduino anch'essa l'ho collegata al collettore. Sbaglio qualcosa?

non so .... adesso sento anch'io l' effetto calimero che Menniti citava cosí spesso: piccolo, nero e non considerato ;) ;) ;)

avevo giá scritto:

Un semplice transitor NPN con 2 resistenze (base e pull up) fa anche il lavoro. Emettitore a massa, collettore sul entrata e pullup interno attivato e resistenza da 1kOhm sulla base.

Preciso: Emettitore a massa, collettore sul entrata del Arduino, relativo pullup interno attivato e resistenza da 1kOhm tra base e segnale in arrivo. Il 2N3704 va bene.

Ciao Uwe