Problema con Multiplexer CD74HC4067?

Buonasera a tutti, è da mesi che combatto con un CD74HC4067, il problema è che continua a darmi valori randomici, ho provato con diversi sketch (usando le librerie CD74HC4067.h, light_CD74HC4067), ho usato anche sketch grezzi con le tabelle di verità senza queste librerie ma il risultato rimane lo stesso, ad ogni modo, vi lascio l’ultimo sketch utilizzato appositamente per testare questo componente:

#include <CD74HC4067.h>

CD74HC4067 mux(4, 5, 6, 7);  //(S0, S1, S2, S3)
#define SIG 2 //pin segnale
int currentSensore = 0;
float value = 0;

void setup() {

  Serial.begin(115200);

  pinMode(SIG, INPUT);

}

void loop() {

    mux.channel(currentSensore);

    delay(800);

    value = analogRead(SIG);

    currentSensore = (currentSensore + 1) % 16;  //Cicla tra 0 e 15;

    Serial.println("Channel: ["+String(currentSensore)+"] "+String(value));

}

Di seguito vi indico anche il cablaggio del multiplexer verso il mio Arduino UNO R3:
GND MULTIPLEXER → GND ARDUINO

VCC MULTIPLEXER → 5V ARDUINO

EN MULTIPLEXER → GND ARDUINO

S3 MULTIPLEXER → PIN DIGITALE 7 ARDUINO
S2 MULTIPLEXER → PIN DIGITALE 6 ARDUINO
S1 MULTIPLEXER → PIN DIGITALE 5 ARDUINO
S0 MULTIPLEXER → PIN DIGITALE 4 ARDUINO
SIG MULTIPLEXER → PIN ANALOGICO 2 ARDUINO

Questo è l’output prodotto:
18:03:40.986 -> Channel: [1] 206.00
18:03:41.811 -> Channel: [2] 299.00
18:03:42.587 -> Channel: [3] 328.00
18:03:43.390 -> Channel: [4] 366.00
18:03:44.219 -> Channel: [5] 394.00
18:03:45.028 -> Channel: [6] 436.00
18:03:45.790 -> Channel: [7] 470.00
18:03:46.615 -> Channel: [8] 508.00
18:03:47.395 -> Channel: [9] 437.00
18:03:48.214 -> Channel: [10] 433.00
18:03:49.037 -> Channel: [11] 415.00
18:03:49.822 -> Channel: [12] 426.00
18:03:50.598 -> Channel: [13] 382.00
18:03:51.440 -> Channel: [14] 382.00
18:03:52.216 -> Channel: [15] 349.00

Ai canali del multiplexer non ho inserito niente e in ogni caso in passato stavo lavorando con dei sensori di umidità del terreno, i valori prodotti erano comunque incoerenti, informandomi online ho visto che comunque anche se non si collegano sensori nei canali dovrei aspettarmi 0 come valore, ho provato anche a inserire una resistenza di 2kohm (ora assente) tra il cavo del segnale del multiplexer e il pin analogico di arduino ma niente.

Spero di trovare risposta, grazie

Nessun ingresso analogico deve essere lasciato "volante" poichè, causa l'alta impedenza degli ingressi, viene letto anche il minimo disturbo elettromagnetico. Quindi, o l'ingresso è collegato da un sensore o va chiuso, con una resistenza da pochi K, verso massa (GND).

Guglielmo

Ti ringrazio per la risposta, effettivamente collegando l’ingresso analogico a gnd con una resistenza di 10kohm mi produce 0 come output, ma perché se attacco un sensore (soil moisture sensor) al mio multiplexer mi produce valori non attendibili?

Hai messo tutte le masse in comune?

Guglielmo

Si ho messo tutte le masse in comune.. Penso che il problema siano i cavi del multiplexer perché alcuni mi si sono spezzati letteralmente sulle mani.. Grazie per l’aiuto!

Considera anche che quei sensori “moist” forniscono dati “indicativi” e molto spesso anche sensori dello stesso produttore, forniscono valori diversi con terreno nelle identiche condizioni (quindi affidabilita’ un po scarsina)

Inoltre, se cerchi di testarli tutti insieme nella stessa vaschetta di terra, si influenzano spesso uno con l’altro, tieni presente anche questo quando fai dei test.

C’e’ anche il fatto che alcuni modelli si rovinano in fretta, ma li dipende dal tipo di sensore.

Per i cavi, se vuoi un po di durata, serve andare su cavetti per uso industriale, e resinare bene tutta la parte dei sensori (incluse soprattutto le saldature dei cavetti) che non vanno infilate in terra (oppure passare due o tre mani di plastivel, o plastitech, sono la stessa cosa)