Tabla de Contenidos
Introducción
En estos meses el gel hidroalcohólico se ha convertido en indispensable en nuestro día a día. Dos pequeños servos modelo SG90, un sensor de ultrasonidos HC-SR04 y por supuesto un Arduino UNO, son la base de este sencillo y práctico proyecto. Cuando el sensor detecta la cercanía de la mano, pone en marcha los dos pequeños servos, que al girar 90 grados estiran un sedal que empuja la pequeña bomba del dispensador de gel hidroalcohólico, de esta forma evitaremos tocar el envase para su aplicación.
Vídeo y funcionamiento
Para albergar los motores diseñé esta pieza, se podría hacer muy bien usando FreeCad y la imprimí en la impresora 3D, les dejo el fichero stl y el modelo en step al final del artículo. El diámetro de mi bote de gel era de 64 mm.
Observa que pegué con silicona un trozo de neumático de una bici a los hilos de seda, para que al estirar presionarán de manera correcta el empujador del dosificador, de esta forma evité que resbalara.
Galería de fotos
Pieza soporte 3D
Esquema de conexión
Los servomotores los conecté a los pines 9 y 10 de Arduino y los pines del sensor de ultrasonido: Pin Trigger al 3 y el de Echo al pin 11. Te dejo a continuación el esquema de conexión y el sketch:
Sketch
//www.tecnosalva.com
//Dispensador automático de Gel Hidroalcohólico
#include <Servo.h>
int trigPin = 3; // Elegimos el pin 3 para Trig
int echoPin = 11; // Elegimos el pin 11 para Echo
int MotI= 10; //pin del motor izquierdo
int MotD=9;//pin del motor derecho
Servo m1; //declaramos los dos servos
Servo m2;
float duracion;
int distancia;
void setup(){
Serial.begin(9600);
pinMode(trigPin, OUTPUT); //Definimos inputs y outputs
pinMode(echoPin, INPUT);
m1.attach(MotD); //derecho motor1
m2.attach(MotI); //izquierdo motor 2
m2.write(90); //posicionamos ambos servos en su posición media, 90ª
m1.write(90);
}
void loop(){
delay(50);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
delayMicroseconds(15);
duracion = pulseIn(echoPin, HIGH);
distancia = (duracion/2)/29.2;
//por si se engancha el SR04, que es frecuente que falle
if (distancia == 0 && digitalRead(echoPin) == LOW) {
pinMode(echoPin, OUTPUT);
digitalWrite(echoPin, LOW);
delay(100);
pinMode(echoPin, INPUT);
}
Serial.print(distancia); //mostramos en pantalla la distancia, mera comprobación
Serial.println("cm");
if (distancia >=5 && distancia <=30)
{
m1.write(0);
m2.write(180);
delay(500);
m1.write(90);
m2.write(90);
delay(500);
}
}
oye amgio que version de arduino ocupaste para hacer esa programación porque me quiero basar en ese proyecto pero la programacion que tu tienes no me funciona