pin digitali come analogici

Buona giornata a tutti
cercando in rete non o trovato niente che mi chiarisce,
perciò chiedo gentilmente a voi esperti,
su un Arduino uno "ATMEGA328"
so che si possono usare i pin analogici come digitali, ma i digitali si possono usare come analogici?

No non puoi

I pin di I/O del ATmega328P in versione DIP (quello in QTFP ne ha due che NON seguono questa regola), sono tutti I/O digitali. Poi, alcuni, ed in particolare D14, D15, D16, D17, D18 e D19, internamente, possono essere collegati, UNO per volta, ad un convertitore ADC e quindi ... funzionare come pin di input analogici (A0 .. A5).

Nella versione TQFP si hanno due pin A6 ed A7 che NON hanno la funzionalità di pin digitali, ma possono solo essere collegati, sempre singolarmente, al ADC.

C'è poi da ricordare che il ATmega328P, in qualsiasi case (DIP o QTFP) NON ha uscite analogiche (ovvero segnali che escono da un DAC), ma ha alcuni pin utilizzabili in PWM che, in modo non proprio ortodosso, sono stati chiamati pin di output analogico, ma che sono solo dei pin PWM.

Guglielmo

gpb01:
.......... Poi, alcuni, ed in particolare D14, D15, D16, D17, D18 e D19, internamente, possono essere collegati, UNO per volta, ad un convertitore ADC .....

Cosa intendi uno per volta? Non mi è chiaro...

steve-cr:
Cosa intendi uno per volta? Non mi è chiaro...

Che in realtà sono collegati all'ingresso di un multiplexer che ne collega solo UNO alla volta all'unico ADC presente.

Non per nulla, si suggerisce sempre, al passaggio da un canale ad un altro, di scartare la prima lettura in quanto protrebbe essere falsata.

Guglielmo

Ah ok. Che erano multiplexati lo immaginavo ma allora dici che letture cicliche come (sintetizzando)

for i = 1 to 5
analogRead (i)

non sono propriamente corrette?

steve-cr:
non sono propriamente corrette?

Possono dare adito a false lettura causa il condensatore di S/H ...
... la cosa è sicuro che avvenga in modalita "lettura continua" (free run), lo è meno in modalità "singola lettura" (single run, che dovrebbe essere quella attualmente usata dal "core" di Arduino), anche se si sono verificati comunque dei problemi.

La cosa migliore quindi, quando si cambia canale, è buttare la prima lettura sul nuovo canale. :wink:

Guglielmo

puoi usare 74HC4051 per avere più input analogici in multiplexer, ovviamente con tutti i suoi limiti.

Il ATmega328 nel involucro DIL ha 23 pin digitali di cui uno é usato come reset e due per collegare il quarzo e percui non utilizzabili normalmente.
I restanti 20 pin sono pin entrate/uscite digitali.

Quei 20 pin hanno funzioni doppie/triple.
Pin D0 e D1 sono anche l'interfaccia seriale
Pin D2 e D4 sono entrate Interrupt
Pin D3, D5, D6, D9, D10 e D11 sono Pin PWM
Pin D11,D12 e D13 son l' interfaccia SPI
Pin D14 a D19 sono entrate analogiche
Pin D18 e D19 sono l' interfacci I2C
e molte altre funzioni.

Il convertitore analogico digitale é uno unico. Puó prendere tramite un multiplexer interno la tensione dei pin D14 a D19, la tensione di alimentazione, un termometro e il ATmega nel involucro SMD anche tensioni analogiche dei Pin A6 e A7, interno.

Ciao Uwe

Ragazzi siete veramente fantastici vi ringrazio moltissimo per l'ottima spiegazione,
devo rivedere il mio pcb, mi sarebbe stato comodo avere dei pin analogici sul lato opposto a quelli attualmente analogici,
va be sistemerò la cosa
ancora mille grazie

toni