Sensor Arduino HC-SR04 a través del multiplexor CD74HC4051E usando un solo cable

Estoy tratando de obtener distancia usando el sensor HC-SR04 y arduino. Conecté los pines Trig y Echo en el sensor, luego va al puerto A7 (pin 4) del multiplexor (selectores configurados de la siguiente manera: S0 alto S1 alto S2 alto). Cargué código de ejemplos (sensores/ping) y pingPin conectado a la entrada/salida del multiplexor: solo he cambiado la duración del impulso de disparo a 20uS. Si no uso multiplexor y conecto pingPin directamente al sensor, todo funciona. Si desconecto el pin del sensor del mux, obtengo algunos valores aleatorios del mux, está bien. Si conecta el pin del sensor a A7, solo lee ceros desde la entrada/salida mux. E imprime ceros más lentamente que cuando está conectado directamente y funcionando. Así que supongo que no recibo ningún impulso del sensor o mi señal de activación no puede pasar. I' Acabo de probar el puerto A7 desde mux con impulso de disparo largo. Cuando no está conectado al sensor, es 0 5 0 5, así que está bien. Pero cuando está conectado al sensor, es solo 0V 1V 0V 1V y no 5. ¿Quizás el problema está aquí?

¿Por qué no funciona?

Funciona así: arduino envía un impulso ALTO de 20 uS de largo al sensor y luego espera un impulso ALTO desde el mismo pin y obtengo la duración de este impulso ALTO.

Código de ejemplos:

const int pingPin =3;

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
}

void loop()
{
  // establish variables for duration of the ping, 
  // and the distance result in inches and centimeters:
  long duration, inches, cm;

  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delay(1000);
  digitalWrite(pingPin, LOW);

  // The same pin is used to read the signal from the PING))): a HIGH
  // pulse whose duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  // convert the time into a distance
  inches = microsecondsToInches(duration);
  cm = microsecondsToCentimeters(duration);

  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();

  delay(100);
}

long microsecondsToInches(long microseconds)
{
  // According to Parallax's datasheet for the PING))), there are
  // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
  // second).  This gives the distance travelled by the ping, outbound
  // and return, so we divide by 2 to get the distance of the obstacle.
  // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
  return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
}

hoja de datos 74hc4051 hoja de datos del sensor ingrese la descripción de la imagen aquí

¿Quizás es importante?

Efectivamente, el canal seleccionado tiene una resistencia de alrededor de 80 ohmios (entre el pin seleccionado y el pin común) lograda por MOSFET uno al lado del otro (un canal P y un canal N). Los canales no seleccionados tienen una resistencia muy alta entre ellos y el pin común.

¿Quizás debería conectar trigonometría a través del transistor y A7 a su base? ... lo intenté. no funcionó Así que creo que el problema está realmente en el bajo voltaje de A7... 1V allí, no 5...

Un esquema real de todo su circuito (en lugar de describirlo), parte del código utilizado y algunos enlaces a hojas de datos relevantes serían realmente útiles aquí.
@Ricardo He agregado circuito.

Respuestas (1)

He encontrado solución. Tal vez me equivoqué desde el principio... Solución

Hice lo que se describe en el enlace anterior, conecté trig y echo con una resistencia de 1.8k y un pin A7 a pin trig. Debería haber googleado más.