Estoy intentando leer dos sensores de gas (MQ4 para metano y MQ7 para monóxido de carbono) con mi NodeMCU ESP8266. Ambos sensores requieren 5v (para los calentadores) y tienen 4 pines (GND, VCC, DO, AO). Las salidas digitales son ALTAS cuando se excede un umbral (ajustable en la tabla de ruptura). Para leer las salidas analógicas, estoy usando el ADC de 10 bits MCP3008, que funciona con una mayor precisión a 5V. Sin embargo, ESP8266 es 3.3V.
Estoy usando un cambio de nivel bidireccional de 8 canales para comunicarme con MCP3008. MCP3008 y los sensores están conectados a Vin y GND en la placa NodeMCU ESP8266, que proporciona 5V.
La palanca de cambios de nivel también está conectada a 5V en el lado de alta tensión y a 3.3V en el lado de baja tensión. La palanca de cambios de nivel funciona bien para salidas digitales de sensores. Pero cuando se trata de SPI entre MCP3008 y NodeMCU ESP8266, siempre leo valores altos (1023). Cuando me deshago de la palanca de cambio de nivel y enciendo el MCP3008 con 3.3 V con un potenciómetro, puedo leer los valores entre 0 y 1023. También los sensores emiten valores analógicos entre 0-5 V (probados con gas más ligero y multímetro). Por lo tanto, debe haber un problema entre el cambio de nivel y la comunicación SPI.
En el lado del software, intenté hacer la comunicación manualmente, con SPI.h y Adafruit_MCP3008.h librerías. Funcionan bien, cuando quito el cambio de nivel y opero MCP3008 con 3.3V.
Me preguntaba, ¿cuál sería el problema? No tengo un oscilador y es mi primer proyecto electrónico "real". Disculpe mi falta de jerga ... Gracias!
EDITAR: uso este modulador de nivel: enlace