Estoy intentando multiplexar un puerto de entrada analógica en un Arduino Uno.
He conectado la entrada a 5V para probar la estabilidad de la lectura. He programado una pequeña rutina que verifica la consistencia de la lectura de la señal.
Estoy usando una placa de pruebas de calidad cuestionable.
La salida del CD4051B se conecta a tierra a través de una resistencia de 500k, de modo que los puertos no conectados lean 0.
Si leo solo el puerto 4 durante 30 segundos, comienza a leer correctamente y es estable. Si empiezo a leer puertos aleatorios (entre 0 y 7), se lee correctamente durante unos 10 segundos, y de repente comienza a leer cero.
He intentado cambiar la resistencia desplegable. Todavía va a cero. He intentado quitar la resistencia desplegable. El valor entonces comienza a leer al azar. También he intentado agregar un condensador de 1uF. Pero no cambia nada.
Estoy usando digitalWrite en tres pines para seleccionar el puerto de entrada y luego esperar (retraso) por 30 ms antes de hacer una lectura analógica en A0. Experimenté con varios tiempos de retardo, y 30 ms parecían mejorar mucho las cosas al leer de forma secuencial (0, 1, 2, 3 ...), pero al leer al azar, no funciona en absoluto.
Estoy un poco perdido por lo que podría ser el problema. Me imagino que podría ser algo con capacidad en los puertos, pero tengo la impresión de que se supone que el multiplexor es compatible con la conmutación muy rápida.
Actualizar:
Vi un comentario en la placa 'arduino' que decía que "el ciclo for de ciclos repetidos cuenta de 0 a 7, por lo que [los pines de selección] promediarán 2.5 V". ¿Es esto realista? ¿No podrían los pines digitales hundirse lo suficientemente rápido como para que el IC se muxice correctamente?
El IC tiene circuitos de protección internos. ¿Es posible que se estén disparando? Pero esto sucede incluso con una resistencia de 1 k en la entrada 4.