Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Dispensador Automático de Gel Higienizante Inteligente – Higiene Sin Contacto con Arduino

Componentes y materiales

Componente Cantidad Notas
Arduino Nano R3 1
Driver DRV8825 para motor paso a paso 1 Para motor bipolar
Cables jumper 1 set
Protoboard (2 mini protoboards recomendadas) 1 Por espacio limitado
Batería 9V + conector 1
Resistencia 1kΩ 1 Para fin de carrera
Condensador electrolítico 100µF 1 Estabilización alimentación
Motor paso a paso 28BYJ-48 5V (modificado a bipolar) 1 Ver paso 6
Tornillos M3 (8-20mm) 19
Sensor IR evitación obstáculos 1 Detecta mano
Fin de carrera KW12-3 (micro con palanca) 1 Posición inicial
Acoplamiento rígido aluminio 5mm a 8mm 1 Motor - husillo
Husillo trapezoidal T8 300mm (paso 2mm) + tuerca latón 1 Movimiento lineal
Interruptor on-off 1
Gel higienizante / jabón (cualquier envase) 1
Rodamiento 688zz 8x16x5mm 1 Soporte husillo
Rodamiento lineal LM8UU 8x15x24mm 1 Guía prensador
Bridas de velcro (2 unidades) 1 set Sujeción al dispensador

Herramientas necesarias

Software y servicios

Sobre el proyecto

Durante la pandemia COVID-19, la OMS recomienda lavado constante de manos con gel o jabón. Pero tocar el dispensador anula el propósito y crea riesgo de contagio. Yo, un chico de 14 años, decidí crear una solución con Arduino Nano que fuera barata, universal y fácil de acoplar a casi cualquier dispensador, volviéndolo 100% automático y sin contacto.

Paso 1: Entender el mecanismo

Un motor paso a paso conectado mediante acoplamiento a un husillo trapezoidal. El prensador (impreso en 3D) va roscado en la tuerca del husillo por un lado y guiado por una varilla (también impresa) por el otro. La varilla impide que el prensador gire, forzando movimiento lineal. Así controlamos dirección, velocidad y distancia exacta.

Paso 2: Funcionamiento del dispositivo

Paso 3: Componentes

Todos los enlaces en la sección "Things" (Componentes).

Paso 4: Diseño de piezas 3D

Diseñadas en Onshape. Archivos .stl disponibles en "Attachments". Incluyen: base principal, prensador, tapa, carcasa electrónica, soporte sensor IR, varilla guía, garras velcro.

Paso 5: Impresión 3D

Impreso en PLA gris/blanco, 0.2mm altura, 20% relleno. Si no tienes impresora, podrías usar cartón o madera.

Paso 6: Modificación del motor 28BYJ-48 (unipolar → bipolar)

El 28BYJ-48 original es unipolar (~300 g·cm). Convertirlo a bipolar multiplica el par a 800+ g·cm:

  1. Quita la tapa azul (destornillador).
  2. Corta la pista central que va al cable rojo (cúter).
  3. Corta el cable rojo por ambos lados.
  4. Vuelve a poner la tapa (quizás recortar pestañas).

Ahora necesitas driver bipolar (DRV8825). El motor bipolar aguanta bien los 8.4V mínimos del driver aunque sea motor 5V.

Paso 7: Cinchas velcro DIY (x2)

Corta tiras velcro: una larga (30-40cm) y una corta (4-7cm). Engrapa extremos del mismo tipo (rugoso con rugoso o suave con suave). Necesitas dos unidades.

Paso 8: Circuito electrónico

  1. Batería 9V → condensador 100µF (línea blanca = GND) → GND Arduino. Positivo → interruptor on-off → Vin Arduino (en anode del condensador).
  2. Sensor IR: VCC→5V, GND→GND, OUT→D9.
  3. Fin de carrera: común→5V, normalmente abierto→D8 y a GND vía 1kΩ.
  4. DRV8825 en protoboard: VMOT→Vin Arduino, GND→GND, DIR→D2, STEP→D3, EN→D4, RST y SLP puenteados.
  5. Motor 28BYJ-48 modificado: azul→A2, amarillo→A1, naranja→B1, rosa→B2.

Paso 9: Programación

El código (comentado línea a línea en el original) hace:

const int dirPin = 2, stepPin = 3, enablePin = 4;
const int stepsPerRevolution = 6000; // 2048 = 360°
int endStop = 8, irSensor = 9;

void setup() {
  pinMode(endStop, INPUT); pinMode(irSensor, INPUT);
  pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); pinMode(enablePin, OUTPUT);
  digitalWrite(enablePin, LOW);
  while (digitalRead(endStop) == LOW) {
    digitalWrite(dirPin, HIGH); // antihorario
    digitalWrite(stepPin, HIGH); delayMicroseconds(2000);
    digitalWrite(stepPin, LOW);  delayMicroseconds(2000);
  }
  digitalWrite(enablePin, HIGH);
}

void loop() {
  if (digitalRead(irSensor) == 0) { // mano detectada
    digitalWrite(enablePin, LOW);
    digitalWrite(dirPin, LOW); // horario
    for (int x = 0; x < stepsPerRevolution; x++) {
      digitalWrite(stepPin, HIGH); delayMicroseconds(2000);
      digitalWrite(stepPin, LOW);  delayMicroseconds(2000);
    }
    delay(2000);
    while (digitalRead(endStop) == LOW) {
      digitalWrite(dirPin, HIGH); // antihorario
      digitalWrite(stepPin, HIGH); delayMicroseconds(2000);
      digitalWrite(stepPin, LOW);  delayMicroseconds(2000);
    }
    digitalWrite(enablePin, HIGH);
  }
}

Paso 10: Montaje final

  1. Tapa: coloca cincha velcro en ranura, pon soporte encima, atornilla (x2).
  2. Prensador: inserta rodamiento lineal LM8UU en agujero central, atornilla tuerca T8 (4 tornillos).
  3. Carcasa electrónica: mete circuito, pasa cables por orificio.
  4. Soporte sensor IR: atornilla sensor, usa tuerca para ajustar posición.
  5. Ensamblaje final: inserta rodamiento 688zz en base, coloca husillo T8 (70-82mm, recortar si hace falta) + prensador. Aprieta acoplamiento motor-husillo, atornilla motor (2 tornillos). Coloca fin de carrera. Atornilla tapa a base (5 tornillos). Atornilla soporte IR a frontal (2 tornillos). Atornilla carcasa electrónica a tapa (3 tornillos). ¡Listo!

Conclusión

Accesorio universal que convierte casi cualquier dispensador de gel/jabón en automático y sin contacto. ¡Proyecto terminado!

Código completo (Automatic_Hand_Sanitizer_Transformer.code)

// Definición de pines y pasos por vuelta
const int dirPin = 2;
const int stepPin = 3;
const int enablePin = 4;
const int stepsPerRevolution = 6000; // 2048 = 360°
int endStop = 8;
int irSensor = 9;

void setup() {
  pinMode(endStop, INPUT);
  pinMode(irSensor, INPUT);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enablePin, OUTPUT);
  digitalWrite(enablePin, LOW); // Habilita driver
  while (digitalRead(endStop) == LOW) { // Auto-calibración al encender
    digitalWrite(dirPin, HIGH); // Antihorario (sube)
    for (int x = 0; x < 1; x++) {
      digitalWrite(stepPin, HIGH); delayMicroseconds(2000);
      digitalWrite(stepPin, LOW);  delayMicroseconds(2000);
    }
  }
  digitalWrite(enablePin, HIGH); // Deshabilita driver para ahorrar corriente
}

void loop() {
  if (digitalRead(irSensor) == 0) { // Mano detectada
    digitalWrite(enablePin, LOW);
    digitalWrite(dirPin, LOW); // Horario (baja)
    for (int x = 0; x < stepsPerRevolution; x++) {
      digitalWrite(stepPin, HIGH); delayMicroseconds(2000);
      digitalWrite(stepPin, LOW);  delayMicroseconds(2000);
    }
    delay(2000); // Espera 2s dispensando
    while (digitalRead(endStop) == LOW) { // Sube hasta fin de carrera
      digitalWrite(dirPin, HIGH); // Antihorario
      for (int x = 0; x < 1; x++) {
        digitalWrite(stepPin, HIGH); delayMicroseconds(2000);
        digitalWrite(stepPin, LOW);  delayMicroseconds(2000);
      }
    }
    digitalWrite(enablePin, HIGH);
  }
}

Piezas personalizadas (impresión 3D)

Esquemático

Ver imagen del esquema en sección "Schematics".

Proceso de manufactura

  1. Construye tu Juego "UFO Attack" con Arduino UNO y Pantalla MAX7219
  2. Control Automático de Tren DIY con Arduino: Simple, Fiable y Personalizable
  3. Reloj 3D RGB Arduclock – Bluetooth, LED NeoPixel y RTC
  4. Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino
  5. Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
  6. Juego interactivo con joystick analógico y LEDs en Arduino
  7. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  8. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  9. Pequeño Rover con Arduino: Construye tu Robot Autónomo Evita Obstáculos
  10. Construye un volante joystick personalizado con Arduino para gaming
  11. Arduino 101: Construye un Podómetro con Sensor DHT11 y Pantalla LCD