Abrir y cerrar caja con un servo mediante un sensor ultrasónico HC-SR04

Este artículo detalla un fascinante proyecto de electrónica y programación que combina la precisión de un sensor ultrasónico HC-SR04 con la acción controlada de un servomotor SG90 para crear un mecanismo de apertura automática de una caja. El sistema está diseñado para levantar la tapa de la caja cuando se detecta un objeto (como una mano) a una distancia muy cercana (específicamente a 5 cm).

El corazón de este proyecto reside en la capacidad de los microcontroladores, como el Arduino Uno (placa ideal para este tipo de prototipos), para interpretar datos del mundo real y generar respuestas físicas. Este proyecto es perfecto para aficionados que deseen explorar la interacción entre la detección de proximidad y el control de movimiento.



🔩Funcionamiento

Diseñar e implementar un sistema que, utilizando una placa Arduino, detecte la proximidad de un objeto mediante un sensor ultrasónico (HC-SR04) y controle el movimiento de un servo motor. El servo deberá girar 15 grados aproximadamente cuando un objeto se acerque a 5 centímetros del sensor y regresar a su posición inicial de 90 grados cuando el objeto se aleje de esta distancia.

El Sensor Ultrasónico HC-SR04

El HC-SR04 es un componente esencial para la detección de distancia. Funciona emitiendo una ráfaga de sonido ultrasónico (frecuencia inaudible para el oído humano) y midiendo el tiempo que tarda el eco en regresar.

  • Principio de Funcionamiento: Se basa en el cálculo de la distancia a partir de la fórmula: Distancia = (Tiempo * Velocidad del Sonido) / 2. El tiempo se divide por dos porque la señal recorre la distancia de ida y vuelta.
  • Pines de Conexión:
    • VCC: Alimentación positiva (5V).
    • GND: Tierra (masa).
    • Trig (Trigger): Pin de entrada al que se le envía un pulso corto para iniciar la emisión del sonido.
    • Echo: Pin de salida que se pone en alto mientras se espera el pulso de eco. La duración de este pulso es el tiempo de vuelo.
El Servomotor SG90

El SG90 es un pequeño pero potente actuador rotatorio, ideal para este tipo de mecanismos. Se caracteriza por su capacidad para girar a una posición angular específica (generalmente entre 0° y 180°), a diferencia de los motores de corriente continua que giran continuamente.

  • Principio de Funcionamiento: El servomotor se controla mediante una señal de Modulación por Ancho de Pulso (PWM). La duración del pulso (ancho) determina el ángulo al que girará el eje. Por ejemplo, un pulso corto puede corresponder a 0°, y un pulso más largo a 180°.
  • Pines de Conexión:
    • Rojo: Alimentación (VCC, 5V).
    • Marrón/Negro: Tierra (GND).
    • Naranja/Amarillo: Señal de control (conectado a un pin PWM del Arduino).

🔨Componentes

ComponenteCantidadEspecificaciónFunción
Placa Arduino1Arduino Uno, Nano, etc.Control de componentes(cerebro)
Sensor ultrasónico1HC-04Calcular la distancia de un objeto
Servo 1SG90 o similarLevantar la tapa la caja
Cables de conexiónnUnir componentes
Fuente de Alimentación15vSuministro de energía


🔌Conexiones

  • Conexión del sensor HC-04::
    • VCC a 5V de Arduino
    • GND a GND de Arduino
    • TRIG a pin 9 de Arduino
    • ECHO a pin 10 de Arduino
  • Conexión del servo:
    • VCC a 5V de Arduino o a fuente de alimentación
    • GND a GND de Arduino o a fuente de alimentación
    • Pin de señal del servomotor al pin digital 2 del Arduino.

0️⃣Código

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <Arduino.h>

#include <Servo.h> // Importar la librería para controlar el servo

// Pines del sensor ultrasónico
const int triggerPin = 9;
const int echoPin = 10;
const int servoPin = 2;

// Creación del objeto servo
Servo myServo;

void setup() {
  // Configuración de los pines
  pinMode(triggerPin, OUTPUT);
  pinMode(echoPin, INPUT);

  // Inicialización del servo en el pin 6
  myServo.attach(servoPin);
  myServo.write(90); // Posición inicial del servo: 90 grados

  // Inicialización del puerto serie
  Serial.begin(9600);
}

void loop() {
  // Medición de la distancia
  long duration;
  float distance;

  // Generar un pulso de Trigger
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);

  // Leer el tiempo de respuesta del Echo
  duration = pulseIn(echoPin, HIGH);

  // Calcular la distancia en centímetros
  distance = duration * 0.034 / 2;

  // Imprimir la distancia medida en el monitor serie
  Serial.print("Distancia: ");
  Serial.print(distance);
  Serial.println(" cm");

  // Control del servo según la distancia medida
  if (distance <= 5.0) {
    myServo.write(15); // Girar a 15 grados
    delay(3000);
  } else {
    myServo.write(90); // Regresar a 90 grados
    
  }

  // Pequeña pausa para estabilizar las lecturas
  delay(100);
}

Explicación del Código:

  1. Librería del Servo: Se utiliza la librería Servo.h para facilitar el control del motor.
  2. Configuración del Sensor Ultrasónico: Los pines triggerPin y echoPin controlan el disparo y la recepción de los pulsos ultrasónicos.
  3. Cálculo de la Distancia: La fórmula (duration * 0.034 / 2) convierte el tiempo en microsegundos a distancia en centímetros.
  4. Control del Servo: Según la distancia medida, el servo gira a 15 grados o regresa a 90 grados.


🖌️Diseños


🎬Videos


📑Conclusión

El proyecto de la Caja de Apertura Automática encapsula de manera práctica el concepto de Interacción Humano-Máquina (HMI) básica dentro del ámbito de la Internet de las Cosas (IoT) y la robótica de consumo.

Este ejercicio no es solo un montaje de componentes, sino la creación de una “inteligencia” sencilla: el sistema percibe (a través del HC-SR04), toma una decisión (comparar la distancia con el umbral de 5 cm, y ejecuta una acción física (movimiento del SG90).

El éxito del proyecto radica en:

  1. Fiabilidad del Umbral: La estricta dependencia de la distancia de 5 cm garantiza que la caja solo se abra ante una intención clara y cercana del usuario, evitando aperturas accidentales y optimizando el consumo de energía del servomotor.
  2. Actuación Precisa: El uso de un servomotor fue la elección óptima, ya que permite controlar el ángulo exacto de la tapa, asegurando que se abra lo suficiente para el acceso y que se cierre de forma segura sin brusquedad, algo difícil de lograr con motores DC estándar.
  3. Prototipado Eficiente: Utilizando el dúo popular Arduino/HC-SR04/SG90, se demuestra la rapidez con la que se pueden desarrollar soluciones funcionales de automatización de bajo costo, siendo una plataforma ideal para proyectos escolares o prototipos de soluciones de “tocar sin contacto” (touchless), cada vez más relevantes en la vida cotidiana.

1 comentario en “Abrir y cerrar caja con un servo mediante un sensor ultrasónico HC-SR04”

Responder a Prostokva__enml Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito de compra