sensor hc-sr04 distancia dentro de tubo

buen día compañeros tengo una duda respecto a este sensor, lo estoy utilizando con un arduino DUE y deseo medir la distancia de un objeto dentro de un tubo PVC de 1.5 pulgadas de diámetro, el sensor mide distancias afuera del tubo pero al colocar el sensor como se muestra en la foto este no mide distancias =(, para utilizar este sensor tuve que colocar un convertidor de nivel lógico, este es el código que estoy utilizando.

#include <UTFT.h>
#include <Keypad.h>
#include <stdlib.h>
//////////////////TFT/////////////////////
//Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

UTFT myGLCD(ILI9325C,51,50,49,48); 
////////////////KEYPAD/////////////////////
const byte ROWS = 4;
const byte COLS = 4;
byte rowPins[ROWS]={40,41,42,43};
byte colPins[COLS]={44,45,46,47};
char keys[ROWS][COLS]={
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'},
};

Keypad keypad=Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
int ledPin=10;
char tecla;
char numero[20];
char indice=0;
int j=0;
int b=50;
/////////////SENSOR ULTRASÓNICO///////////
int tiempo=0;
int distancia=0;
int ECHO=8;
int TRIGGER=9;

void setup()
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
  pinMode(ledPin,OUTPUT);
 }

void loop()
{
  ////////SENSOR ULTRASÓNICO///////
  pinMode(TRIGGER,OUTPUT); 
  digitalWrite(TRIGGER,LOW);
  delayMicroseconds(2);
  digitalWrite(TRIGGER,HIGH);
  delayMicroseconds(5);
  digitalWrite(TRIGGER,LOW);
  pinMode(ECHO,INPUT);
  tiempo = pulseIn(ECHO,HIGH);
  distancia=(tiempo/58);
  
  ///////KEYPAD/////////
  tecla=keypad.getKey(); 
  if(tecla !=NO_KEY){
  numero[indice]=tecla;
  indice++;  
  }                
  if (tecla=='#'){
  myGLCD.clrScr();
  b=atoi(numero);
  indice=0;
  myGLCD.setColor(255, 0, 0);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.setFont(BigFont);  
  myGLCD.printNumI(b, CENTER, 16);             
  }            
  if(distancia > b){
  digitalWrite(ledPin,HIGH);
  }
  else{digitalWrite(ledPin,LOW);}      
}

funciona por eco, no va a funcionar nunca. Tiene tanto rebote que no va a funcionar, deberias usar otro metodo, quizas por infrarrojo o si la distancia no es mucha poner el receptor del otro lado.

tenía una leve duda que esa era la razón, lo que me parece raro es que a varios compañeros sí les funcionó ahora estoy empezando a creer que no estaban siendo muy sinceros, gracias por tu respuesta voy a buscar como hacer el medidor con un infrarrojo, muchas gracias

quizas en un tubo mas ancho donde llegue sin chocar nato en las paredes pueda funcionar.

ya probé en un tubo de 8 pulgadas hablé con otro amigo y también le funciona en un tubo de 1.5 pulgadas posiblemente mi sensor está dañado, se lo pediré y espero que ese sí me funciones

Pero si dices que fuera si mide, y dentro no el sensor no está dañado

lo extraño es que a mis compañeros sí les mide la distancia adentro del tubo aunque me prestaron otro, lo probé y me da el mismo problema

y es el mismo codigo?
mismas condiciones?

no, solo me prestaron el sensor, este proyecto es requisito para ganar un curso por eso es que no todos mis compañeros comparten el código pero le hablaré para que me muestre su código aunque según lo que hemos hablado utilizamos el mismo

en ese caso deberias hacer pruebas en el codigo, como por ejemplo darle un tiempo de descanso, ese codigo no para de tirar y la unica demora es el tiempo de instruccion para mostrar en el lcd.
En todo caso usa una tecla del teclado para hacer 1 solo disparo y esperar la respuesta.
Primero sin tubo y despues lo pruebas con tubo, pero siempre a demanda hasta afinar el codigo.
Lo mejor es hacer 3 lecturas y promediar para tener un valor mas cercano.

el delay lo debo hacer después de que calcula la distancia?

Gracias por tu ayuda le coloqué un delay de 10ms después del cálculo de la distancia y empezó a medir adentro del tubo aunque con una incerteza de 2 a 3 centímetros lo que considero aceptable porque la incerteza que nos permiten es de 4, perdón por no explicar antes de que consiste el proyecto debemos mantener un cilndro, esfera o cualquier otra forma a la altura que nos pidan levantándolo con un ventilador y un controlador pid por eso es que las distancias debe estarlas midiendo constantemente pero gracias a tu ayuda ya pude resolver el problema.

para mejorar la velocidad puedes usar una entrada analogica y regular un valor en milisegundos si es necesario mejorar la velocidad.
para mejorar la presicion haz 3 lecturas separadas un tiempo y promedia valores se va a acercar mas aun.