Archivi tag: dmux

Espandere gli I/O analogici di Arduino

Come già accennato in precedenti post in questi mesi sto svolgendo una serie di attività di prototipazione rapida di sistemi di rilevazione ambientale presso la facoltà di Agraria di Padova e l’esigenza di espandere la quantità di ingressi analogici di Arduino è una necessità reale che può essere superata agevolmente con pochissimi euro (per la precisione 1€ 🙂 ) utilizzando l’integrato 4051 Multiplexer/Demultiplexer analogico ad 8 canali in grado appunto di ampliare il numero di I/O di Arduino.
Esigenze di questo tipo si presentano spessissimo, ad esempio nel caso voi vogliate collegare più sensori analogici ad un ESP che dispone di un solo ingresso analogico, o più semplicemente andare oltre i 6 pin analogici di Arduino UNO R3, situazione che si presenta ad esempio nel caso in cui si stanno occupando i pin analogici A4 e A5 per la comunicazione I2C  per altri dispositivi.

L’integrato 4051 viene realizzato da diverse aziende vi allego i datasheet corrispondenti alla versione prodotta da Philips e Texas Instruments, identici nelle funzionalità:

All’interno trovate tutte le indicazioni necessarie per poterlo usare che vi riassumo nelle righe che seguono.

Piedinatura dell’integrato

01-4051

Dove:

  • Z: pin input/output (connesso agli Input/Output Arduino )
  • E: pin di enable (attivo basso, cioè attivo su LOW da connettere a GND)
  • VEE: tensione di alimentazione negativa (da connettere a gnd)
  • VSS: terra (0 V)
  • A0-A1-A2: pin di selezione input (connessi a tre pin digitali di Arduino) – A0 bit meno significativo (LSB), A2 bit più significativo (MSB)
  • Da Y0 a Y7: pin di inputs/outputs
  • VDD: tensione di alimentazione positiva (da 3V a 5v)

Tabella di verità

02-4051

Dalla tabella si evince che per poter far funzionare l’IC è necessario connettere E (Enable) a GND.

Il 4051 è un integrato in tecnologia CMOS dotato di 8 ingressi (nominati Y) che può accettare segnali analogici compresi tra 0V e 5 V, tali segnali possono essere selezionati mediante tre pin di selezione nominati: A0, A1, A2 ed inviati direttamente ad un pin analogico di Arduino per la successiva elaborazione.

La selezione del canale Y scelto (in altre parole del segnale analogico che si desidera leggere o scrivere) può essere fatta sfruttando lo stesso Arduino mediante 3 pin digitali, sui 3 pin si comporrà il numero binario corrispondente all’ingresso analogico Y scelto.

A titolo di esempio, ricordando che con tre bit possiamo rappresentare tutti i numeri tra 0 e 7 (2^0 = 1; 2^1 = 2; 2^2 = 4):

  • Se A0 = 1, A1 = 1 e A2 = 0 allora l’uscita selezionata sarà la Y3
    (2^1 + 2^1 + 2^0 = 2 + 1 + 0 = 3)
  • Se A0 = 1, A1 = 0 e A2 = 1 allora l’uscita selezionata sarà la Y5
    (2^1 + 2^0 + 2^2 = 2 + 0 + 4 = 5)

Per chiarirne il funzionamento analizziamo le due modalità operative:

  • Input: lettura di segnali analogici presenti sugli ingressi Y del 4051
  • Output: invio di un segnale analogico su una delle 8 uscite Y del 4051

4051 usato come multiplexer con Arduino
Lettura di segnali analogici presenti sugli ingressi Y del 4051
Continua a leggere