9 de feb. de 2021

Dispensador automático de xel hidroalcohólico

 Realizado por Cristian Gómez Mesa

    Este é un prototipo de dispensador de xel que permite a dosificación sen contacto co dispensador.

    O funcionamento é sinxelo, cando acercamos a man o dispositivo, o sensor de ultrasóns detecta a nosa man e o microcontrolador manda as instruccións o servomotor para que faga un xiro. O brazo de saída do servo entón tira dun cable de forma que se presiona o dosificador e despois retorna á posición de reposo.


 

 


 

Aquí o programa para o Arduino Nano

 

/*Programa de control do dispensador de xel hidroalcohólico
para a Aula 216-1ºCM Instalacións de Telecomunicacións IES Perdouro*/

int servo = 9;     // Acoplar o servo no pin 9   
int trigPin = 10;  //conecioṕns do sensor de ulltrasóns
int echoPin = 11;  
long duracion;
int distancia;

#include <Servo.h>

Servo myservo;    

int pos = 0;    // Variable para almacenar a posición do servo

void setup() {
  pinMode(trigPin, OUTPUT);    
  pinMode(echoPin, INPUT);    
  myservo.attach(servo);     
  myservo.write(0);         // iniciar o servo a 0 grados 
  Serial.begin(9600);    
}

void loop() {
 //sensor de distancia
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    
    // Establece a 'trigPin' en alto (HIGH) durante 10 microsegundos
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    
    // Lectura do 'echoPin'
    duracion = pulseIn(echoPin, HIGH);
    
    // Calculando a distancia
      distancia= duracion*0.034/2;
    
    // Imprime a distancia no monitor serie
    Serial.print("Distancia ");
    Serial.println(distancia);  //se queremos ver  a distancia no porto serie
    
    //Servo    
    if(distancia<10)//Revisar que a distancia sexa menor que 10cm en caso afirmativo executar seguinte acción
    { 
       myservo.write(45); // Establecer 0 Servo en etapas de 0 a 180 grados para deixar de presionar o émbolo
       delay(100);
       myservo.write(90);
       delay(100);
        myservo.write(135);
       delay(100);
       myservo.write(120); //axustar o recorrido do dispensador
       delay(1000);
       myservo.write(00); // Reiniciar o servo
       delay(1500);   //esperar 1,5s entre cada lectura
    }                 
}

Ningún comentario:

Publicar un comentario