Pues después de estar haciendo pruebas con los sensores colocados en diferentes sitios, he llegado a la conclusión que para un espacio tan pequeño, la mejor solución es colocar dos sensores que se activan al mismo tiempo al acercar la mano (distancia menor de 10 ó 12 cm), y activan un relé hasta que los sensores vuelven a registrar esas distancias mínimas.
En teoría podría funcionar con un solo sensor, pero he visto que a veces dá mediciones erróneas, incluso cero (no sé la razón) y con dos sensores elimino el problema, por lo menos en las pruebas que he hecho, de varias horas así ha sido.
He elegido un sitio donde no sea posible acercar inadvertidamente un objeto, en mi caso, entre la parte interna del marco de la puerta (en la parte alta), y el mueble librero, donde hay una distancia entre los sensores y la librería de 23 cm, al pasar la mano a menos de 12 cm se activa/desactiva el relé.
Agradezco a los compañeros como surbyte o Danicap, que me ofrecieron soluciones más "sesudas" pero creo que la que he elegido es práctica (y espero que segura).
De todas formas, supongo que alguna de las alternativas servirá para otros compañeros que busquen resolver problemas similares.
Y por si puede ser de utilidad para alguien, pongo el sketch, que en realidad es simple:
/*Programa que activa un relé que conecta la entrada eléctrica a una cabina insonorizada.
*Funciona con un Arduino Nano y dos sensores ultrasónicos HC-SR04, activando un relé cuando
*las mediciones de ambos sensores detecta una distancia menor de la establecida para la
*cabina vacía. Utilizo un cable de 6 hilos del tipo telefónico entre el Arduino y los sensores
*/
#define Gatillo1 11 //Trigger del sensor 1 (cable blanco)
#define Gatillo2 12 //Trigger del sensor 2 (cable gris)
#define Relay 8 //El pin que activa el relé
#define Eco1 2 //Echo del sensor 1 (pin 2 cable amarillo)
#define Eco2 3 //Echo del sensor2 (pin 3 cable azul)
long Distancia1;
long Distancia2;
long Tiempo1;
long Tiempo2;
int ActivarRelay=0; //Muestra el estado del relé (0 apagado, 1 encendido)
void setup()
{
Serial.begin(9600); //Comienzo de la comunicación serie
pinMode(Gatillo1, OUTPUT); //Trigger1 CABLE BLANCO
pinMode(Gatillo2, OUTPUT); //Trigger2 CABLE GRIS
pinMode(Relay, OUTPUT); //CABLE ROJO (+) Y CABLE VERDE (-)
pinMode(Eco1, INPUT); //Sensor1 Izquierdo CABLE AMARILLO
pinMode(Eco2, INPUT); //Sensor2 Centro CABLE AZUL
digitalWrite(Relay, 0); //Inicia el programa con el relé apagado
}
void loop()
{
ActivarSensores(1);//Función que activa los 2 sensores (si el argumento es 1 imprime
if ((Distancia1<12 && Distancia2<12) || (ActivarRelay==1))
{ActivarRelay=1;digitalWrite(Relay, 1);Serial.println("220v ON");delay(1000);}
else
{Serial.println("220v OFF");delay(1000);}
ActivarSensores(0);
if ((Distancia1<10 && Distancia2<10) && (ActivarRelay==1) )
{digitalWrite(Relay, 0); Serial.println("220v OFF");ActivarRelay=0;delay(1000);}
}
void ActivarSensores(int x)
{
digitalWrite(Gatillo1, 0);delayMicroseconds(3);
digitalWrite(Gatillo1, 1);delayMicroseconds(10);
digitalWrite(Gatillo1, 0);
Tiempo1=pulseIn(Eco1, 1); Distancia1 = int(0.017*Tiempo1);
delay(10);
digitalWrite(Gatillo2, 0);delayMicroseconds(3);
digitalWrite(Gatillo2, 1);delayMicroseconds(10);
digitalWrite(Gatillo2, 0);
Tiempo2=pulseIn(Eco2, 1); Distancia2 = int(0.017*Tiempo2);
if (Distancia1 == 0) // Alguna vez los sensores dan cero en alguna
{Distancia1 = 30;} // medición (?)
if (Distancia2 == 0) // En ese caso lo cambio a la distancia que mide
{Distancia2 = 30;} // de forma habitual
if (x==1)
{Serial.print("Distancia 1 --> "); Serial.print(Distancia1); Serial.println(" cm");
Serial.print("Distancia 2 --> "); Serial.print(Distancia2); Serial.println(" cm");}
}