You are on page 1of 4

PUERTA CORREDIZA CON SENSOR ULTRASONICO HC - SR04

FUNCIONAMIENTO

El sensor ultrasnico, mide y detecta la distancia de un objeto, para que el micro, por medio
de un cdigo, pueda interpretar las mediciones registradas. El rango de medicin del sensor
est entre los 2cm y los 500cm; con un margen de error de 0.3cm. la duracin del pulso,
entre entrada y salida, es de 10 microsegundos.

La frmula para medir las distancias del sensor, es la siguiente: Distancia = (Duracin / 2)
/29

Se coloca entre 29, debido a que la velocidad del sonido en centmetros (ya que el sensor
trabaja en centmetros) es de: 1/29 cm/uS.

El proceso de trabajo del circuito, es el siguiente:

Cuando se acerca un objeto al sensor (entre 3 y seis centmetros), el motor comienza a


trabajar, halando la puerta hacia un lado, abriendo la puerta.

Cuando el objeto es retirado del sensor, el motor se detiene.

Cuando el objeto se aleja, a una cierta distancia (entre 8 y doce centmetros), por medio del
circuito L29D, se invierte el giro del motor, para cerrar la puerta.

PLANO DEL CIRCUITO


CDIGO DEL CIRCUITO

#define Pecho 6
#define Ptrig 7
#define enable 10
long duracion, distancia;
const int motorA = 8;
const int motorB = 9;

void setup() {
Serial.begin (9600);
pinMode(Pecho, INPUT);
pinMode(Ptrig, OUTPUT);
pinMode(motorA, OUTPUT);
pinMode(motorB, OUTPUT);
pinMode (enable, OUTPUT);
}

void loop() {

digitalWrite(Ptrig, LOW);
delayMicroseconds(2);
digitalWrite(Ptrig, HIGH); // genera el pulso de triger por 10ms
delayMicroseconds(10);
digitalWrite(Ptrig, LOW);
digitalWrite(motorA, LOW);
digitalWrite(motorB, LOW);

duracion = pulseIn(Pecho, HIGH);


distancia = (duracion/2) / 29; // calcula la distancia en centimetros

if (distancia >12 || distancia <= 1){ // si la distancia es mayor a 500cm o menor a 0cm
digitalWrite(enable, LOW);
}
if (distancia <= 12 && distancia >= 8){
digitalWrite(enable, HIGH);
digitalWrite(motorA, HIGH); //izquierda
digitalWrite(motorB, LOW);
delay(500);
}
if (distancia <=6 && distancia >= 3){
digitalWrite(enable, HIGH);
digitalWrite(motorA, LOW);
digitalWrite(motorB, HIGH); //derecha
delay(500);
}
}

SEGUNDO CDIGO (OPCIONAL)

#define Pecho 6
#define Ptrig 7
#define enable 10
long duracion, distancia;
const int motorA = 8;
const int motorB = 9;

void setup() {
Serial.begin (9600);
pinMode(Pecho, INPUT);
pinMode(Ptrig, OUTPUT);
pinMode(motorA, OUTPUT);
pinMode(motorB, OUTPUT);
pinMode (enable, OUTPUT);
}

void loop() {

digitalWrite(Ptrig, LOW);
delayMicroseconds(2);
digitalWrite(Ptrig, HIGH); // genera el pulso de triger por 10ms
delayMicroseconds(10);
digitalWrite(Ptrig, LOW);
digitalWrite(motorA, LOW);
digitalWrite(motorB, LOW);

duracion = pulseIn(Pecho, HIGH);


distancia = (duracion/2) / 29; // calcula la distancia en centimetros

if (distancia <= 1 || distancia >400){


digitalWrite(enable, LOW);
}
if (distancia >9 && distancia <=400){
digitalWrite(enable, HIGH);
digitalWrite(motorA, LOW);
digitalWrite(motorB, HIGH); //derecha
delay(1000);
}

if (distancia <=9 && distancia >=7){


digitalWrite(enable, LOW);
}
if (distancia <=6 && distancia >= 3){
digitalWrite(enable, HIGH);
digitalWrite(motorA, HIGH); //izquierda
digitalWrite(motorB, LOW);
delay(4500);
}
}

La explicacin de este segundo cdigo es la siguiente: cuando un objeto es detectado por


el sensor a una distancia entre 3 y seis centmetros, el motor jala la puerta, para que esta
se abra. Luego retiramos el objeto de la vista del sensor, el motor queda detenido, pero
cuando el sensor ha calculado una distancia entre nueve y cuatrocientos centmetros, el
motor empuja a la puerta, para que esta quede cerrada.

You might also like