74HC4051 Una selectora y la habilitadora

Buenas noches, estoy usando un 74HC4051 para obtener más pines analogicos en mi nodemcu. Solo quiero conectar 2 sensores uno de ph ( PH-4502C Sensor de PH Liquido con electrodo E201-BNC) y uno de oxigeno disuelto ( Sensor de oxígeno disuelto Gravity DFRobot). Estoy utilizando este código:

#include <Arduino.h>

#define VREF    5000//VREF(mv)
#define ADC_RES 1024//ADC Resolution

int S_0=4; //Bit menos significativo
//int S_1=5;
//int S_2=6;//Bit más significativo
int EN_pin= 7;
int COMMON_PIN=A0;

float Po;
uint32_t raw;

void setup(){
    pinMode(S_0, OUTPUT); 
    //pinMode(S_1, OUTPUT); 
    //pinMode(S_2, OUTPUT); 
    pinMode(EN_pin,OUTPUT);
    digitalWrite(S_0, LOW);
    //digitalWrite(S_1, LOW);
    //digitalWrite(S_2, LOW);
    digitalWrite(EN_pin, LOW);
    Serial.begin(9600);
}
void loop(){
    raw=analogRead(select_channel(0));
    Po = (1023 - analogRead(select_channel(1))) / 73.07; // Read and reverse the analogue input value from the pH sensor then scale 0-14.
    Serial.println("raw:\t"+String(raw)+"\tVoltage(mv)"+String(raw*VREF/ADC_RES)+"\tPH"+String(Po));
    delay(1000);  
}
int select_channel(int chnl){
    int A= bitRead(chnl,0);
    //int B= bitRead(chnl,1);
    //int C= bitRead(chnl,2);
    digitalWrite(S_0, A);
//    digitalWrite(S_1, B);
    //digitalWrite(S_2, C);
    return analogRead(COMMON_PIN);}

Este código esta basado en varios que encontre en internet, sin embargo mi duda es. Ya probe el código en un arduino uno y en los puertos analógicos ubique dos potenciometros. Funciona bien. Sin embargo, el código va a ser usado en un nodemcu con un editor de vscode. No habría problema si solo uso una de las selectoras y el enable? O que me recomiendan, soy algo nueva en este mundo de microcontroladores. Nota: Conecte los sensores antes de probar con los potenciometros y el de ph funcionó bien, sin embargo el de oxígeno dio inicalmente lectura y poco despues solo mostro 0.

Esto

raw=analogRead(select_channel(0));

está mal porque select_channel ya devuelve la lectura del ADC.
Tienes que usar simplemente

raw=select_channel(0);

y lo mismo para Po, elimina "analogRead"

Saludos

1 Like

Hablas de un nodemcu y luego muestras un código de Arduino 5V. Algo no va.
Los ESP trabajan a 3.3V asi que de ningún modo puedes considerar esto.

#define VREF    5000   //VREF(mv)

en todo caso será

#define VREF    3300   //VREF(mv)

Si, estaba probando ese codigo en un arduino uno primero. Todavía no lo había pasado para usar en el nodemcu. Muchas gracias.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.