Multiplexor CD4051B da lecturas extrañas

0

Estoy intentando multiplexar un puerto de entrada analógica en un Arduino Uno.

Hoja de datos

simular este circuito : esquema creado usando CircuitLab

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.

    
pregunta user95482301

1 respuesta

1
  

Estoy usando una placa de pruebas de calidad cuestionable.

Eso es lo que parece ser la fuente de tus problemas. Las tablas de prueba problemáticas causan conexiones sueltas dentro de la tarjeta que no puede ver y, por lo tanto, conducen a situaciones tales como conexiones abiertas, etc. Intentaría usar una tarjeta diferente.

Además, la resistencia desplegable no necesita ser tan alta. Una resistencia de 10K funciona bien en la mayoría de los casos. También intentaría cambiar el valor IN del Arduino en lugar de conectarlo a VCC. No he visto el diagrama de bloques para el chip, pero parece que puede estar cortocircuitando algo internamente dentro del chip, por lo que la entrada cae a 0 V después de un breve periodo de tiempo. Como mínimo, conecte una resistencia pullup de aproximadamente 10K entre IN y la fuente de alimentación de 5V.

Aunque esto puede no ser muy relevante en este caso, es importante tener en cuenta que el 4051B es un dispositivo CMOS y, por lo tanto, algo menos de 1.5V en la entrada es de 0V en la salida y el umbral más bajo para una entrada ALTA es de 3.5V. Esto significa que este chip no funcionará con dispositivos de 3.3 V sin las traducciones apropiadas de nivel de voltaje.

    
respondido por el electrophile

Lea otras preguntas en las etiquetas