Analog e digital read stesso pin

Vediamo se ho capito giusto
Le due funzioni sono indipendenti e quindi io potrei avere anche un riferimento di tensione AREF non pari av5 volt, giusto? Pur lavorando, quando in digitale, a 5 volt

Puoi leggere un entrata analogica anche in modo digitale ma secondo me non ha tanto senso visto la zona morta tra 1,5 e 3V (ATmega alimentato a 5V) in questo range puoi avere letture sia H che L a secondo del andamento precedente della tensione analogica.
Sotto 1,5V leggi L
sopra 3V leggi H
In mezzo puoi leggere L o H.
Puó essere che devi fare 2 letture analogiche e scartare la prima per avere una lettura affidabile.

Ciao Uwe

uwefed:
ma secondo me non ha tanto senso visto la zona morta tra 1,5 e 3V

Ah ecco me lo chiedevo anche io infatti. Quindi in pratica non conviene usare questo approccio a meno che non si sia certi del range di tensioni.

Sotto 1,5V leggi L
sopra 3V leggi H
In mezzo puoi leggere L o H.

Il famoso "Pin di Schrödinger" :smiley:

... rammento comunque che, sul ATmega328P, c'è un "comparatore analogico" e quello si che può essere usato per avere una soglia ben definita ed un interrupt al superamento :slight_smile:

Guglielmo

Manno...
La mia domanda andava in un'altra direzione
Tenere basso il riferimento dello adc, per distinguere letture analogiche da letture digitali
In ottica di multiplex estremo, come in un'altra discussione
Grazie per le risposte

Ma se invii tensioni superiori ad aref cosa succede?

paulus1969:
Ma se invii tensioni superiori ad aref cosa succede?

... purché nel limite di Vcc, se superi Aref ottieni sempre il valore massimo 0x3FF (a 10 bit).

Guglielmo

Allora ricordavo bene.
Se mette aref basso, potrebbe avere uno stato in cui legge 3FF in ared e LOW in digitale.

paulus1969:
Se mette aref basso, potrebbe avere uno stato in cui legge 3FF in ared e LOW in digitale.

Si, infatti, basta che seleziona il riferimento interno a 1.1V e arriva a 0x3FF prima che in digitale possa leggere HIGH :smiley:

Guglielmo

docdoc:
Ah ecco me lo chiedevo anche io infatti. Quindi in pratica non conviene usare questo approccio a meno che non si sia certi del range di tensioni.

Il famoso "Pin di Schrödinger" :smiley:

No. niente gatti e niente Schrödinger.

Nella zona morta il valore letto non é casuale ma rimane quello letto prima di entrare nalla zona morta.
Esempio: ho una tensione analogica che aumenta e va da 0 a 5V Viene letta LOW finche raggiunge i 3V. viceversa se una tensione che diminuisce da 5V a 0 viene letta HIGH fino che raggiunge i 1,5V. Percui la tensione da 1,5V a 3V puó essere letta H o L.

Ciao Uwe

Ci ho pensato su un po': l'idea non è malaccio, se intesa a spremere il nostro processore ed utilizzare i pin analogici anche come digitali, quindi avere piu ingressi. Su Arduino UNO, per esempio, ho 6 ingressi analogici, occupati da 6 potenziometri, ma potrei avere gli stessi ingressi come digitali avendo un totale di 26 canali e non 20.
Però se un ingresso digitale è ON (cioè, in configurazione pull-down, 5V) mi "copre" la lettura del potenziometro.
Se però sacrifico un pin digitale e multiplexo l'alimentazione di questi 6 ingressi digitali, succhede che con alimentazione 5V spenta leggo i potenziometri puri e con alimentazione 5V accesa leggo i digitali.
Non ho più 26 canali ma ne ho sempre 25...

Più o meno l'idea era questa....

L'eventuale pin analogico, usato in uno schetch in due modi, come dev'essere dichiarato
nel setup?

Visto che li useremo in input, input,

non possiamo certo usarli output, e input pullup disturberebbe analogico

Standardoil:
Visto che li useremo in input, input,

non possiamo certo usarli output, e input pullup disturberebbe analogico

Si lo so che sono in input, quindi visto che il pin analogico non si dichiara, dichiariamo nel setup solo
il modo digitale, ad esempio: pinMode(0,INPUT)
e poi da qualsiasi punto del programma lo useremo come digitale che analogico
è così?

Non ho mai provato, ma penso proprio di sì
Lunedì magari provo

Quindi, fatemi capire perchè sono un po' tardo, "sacrificando" un pin digitale perchè destinato a funzione di alimentatore, si ottiene di poter utilizzare contemporaneamente i pin analogici sia per letture analogiche, ad es. di potenziometri, che digitali di altri circuiti perchè l'analogico sarebbe sempre attivo ma tarato in modo che al massimo valore ottenibile rimanga sempre entro la soglia low digitale. I circuiti digitali verrebbero alimentati dal pin sacrificato, quando spenti si avrà solo valori analogici, quando alimentati la loro uscita prevarrà perchè la componente analogica comunque non supera la soglia low.

Ora, visto che dispositivi digitali non è detto che possano essere alimentati e ottenere subito risposte, invece di usare il pin sacrificale come alimentazione, si potrebbe usare per metterlo in AND con le sorgenti digitali, ma forse questa strada non va bene perchè comunque l'uscita digitale non è detto sia proprio zero e quindi potrebbe andare ad interferire comunque con la lettura analogica.
Giusto?
Quindi in entrambi i casi ci potrebbero essere delle criticità o delle controindicazioni.

Infatti non è detto che i trucchi riescano sempre, però, in caso di necessità, provare non farebbe male

Il datasheet del 74HC08 dà una Vol tipica di 0,001V (con una Iol da 40uA), ma con valori massimi che arrivano fino a 0,1V.
Mi sa che dipende dal singolo cip se la cosa può funzionare o meno.
Parlo del caso di mettere il segnale digitale in AND con il pin sacrificale di arduino e non di usare il pin per alimentare i circuiti con uscita digitale.