Dispensador Automático De Desinfetante

by GuilhermeB66 in Circuits > Arduino

210 Views, 1 Favorites, 0 Comments

Dispensador Automático De Desinfetante

20210713_120330.jpg

Chamo-me Guilherme Bruno, sou aluno da Escola Secundária da Boa Nova e fiz este projeto para a minha PAP.

Porque Escolhi Este Tema/Para Que Serve Esta PAP/A Quem Se Destina

Escolhi este tema devido à pandemia que estamos a passar.

Este projeto serve para deitar desinfetante nas mãos das pessoas sem que elas sejam obrigadas a tocar no dispensador.

O projeto destina-se, por exemplo, aos Centros Comerciais, Restaurantes, Escolas e a quem quiser ter um dispensador autônomo.

Material Utilizado

sku_389373_2.jpg
tower-pro-mg995-13kg013s-60g-standard-servo.jpg
sensor-distancia-hc-sr04.jpg
master_chave-push-button-n-a-verde-chip-sce-pacote-com-10-unidades-pbs-11b-023-9614-f2eaf64b.jpg
condensador.jpg
unnamed.jpg
resistencia-100-ohm-5-2w.jpg
58626_17048.jpg
breadboard-830.jpg
mdf.jpg
Adesivo-Forca-Industrial-C-6-Preto-Velcro.jpg
  1. Arduino UNO R3 Keyestudio
  2. Servo Motor MG995
  3. Sensor Ultrasónico HC-SR04
  4. Push Button
  5. Condensador Cerãmico de 100nF
  6. Led alto brilho 5mm azul
  7. Resistência de 220R / 1/4W
  8. Cabos Jumper
  9. Breadboard
  10. Madeira
  11. Velcro

Montagem Do Circuito No Thinkercad

projeto no tinkercad.png

Montagem Do Protótipo

20210627_223334.jpg
Circuito.jpg

Codificação

//=== Inclusão de bibliotecas ===//

#include "Ultrasonic.h"

#include

//=== Mapemamento de Hardware===//

#define pinButton 3

#define pinEcho 4

#define pinTrigger 5

#define pinServo 6

#define pinLED 7

//Instanciando objetos

Servo servo;

Ultrasonic ultrasonic(pinTrigger, pinEcho);

/=== Variáveis globais ===//

boolean aux1 = 0;

volatile uint16_t aux2 = 0;

volatile byte cicles;

volatile byte i;

//=== Protótipo das funções ===//

uint16_t readSensorandCompare();

void alcoolTrigger(byte maxAgle, byte minAngle);

void interface();

void setup() {

Serial.begin(9600);

servo.attach(pinServo);

servo.write(100);//Posição inicial do Servo de 100°

//Entradas/Saídas digitais

pinMode(pinLED, OUTPUT);

pinMode(pinButton, INPUT_PULLUP);

//===Inicial interrupção externa no pino 3 e chama a função ISR0 ===//

attachInterrupt(digitalPinToInterrupt(pinButton), ISR0, FALLING);

}//endsetup

//Interrupt Service Rotine ISR

void ISR0() {

aux2++;

if ( aux2 > 2)aux2 = 0;

if (aux2 == 0)cicles = 1;

if (aux2 == 1)cicles = 2;

if (aux2 == 2)cicles = 3;

i = 0;

}//endISR

void loop()

{

readSensorandCompare();

interface();

delay(300); // Evita mais de um disparo por vez pois limita as leituras do sensor ultrassônico

}//endloop

//== Função que obtem a distância do sensor ultrassônico e compara valores para chamar outras funções ==//

uint16_t readSensorandCompare()

{

uint16_t distanceCM = ultrasonic.convert(ultrasonic.timing(), Ultrasonic::CM);

Serial.print("aux2: ");

Serial.print(aux2);

Serial.print(" Cicles: ");

Serial.print(cicles);

Serial.print(" distanceCM: ");

Serial.println(distanceCM);

//Se mínimo está selecionado

if (distanceCM < 10 && aux1 == 0 && aux2 == 0)

{

alcoolTrigger(100, 80);

}

//Se médio está selecionado

if (distanceCM < 10 && aux1 == 0 && aux2 == 1)

{

alcoolTrigger(100, 70);

}

//Se máximo está selecionado

if (distanceCM < 10 && aux1 == 0 && aux2 == 2)

{

alcoolTrigger(100, 60);

}

//Permite o servo motor atuar outra vez somente quando tirar a mão da frente do sensor

if (distanceCM > 16 )

{

aux1 = 0;

}

return distanceCM;

}

//== Função aciona o servo motor de acordo com o angulo fornecido, também aciona o LED ==//

void alcoolTrigger(byte maxAgle, byte minAngle)

{

digitalWrite(pinLED, HIGH);

servo.write(maxAgle);

delay(300);

servo.write(minAngle);

delay(300);

servo.write(maxAgle);

digitalWrite(pinLED, LOW);

aux1 = 1;

}

//=== Função que pisca o LED de acordo com a configuração feita pelo utilizador: minimo, médio, máximo ===//

void interface()

{

if ( i < cicles)

{

digitalWrite(pinLED, HIGH);

delay(200);

digitalWrite(pinLED, LOW);

delay(100);

i++;

}

}

Como Funciona O Protótipo

O protótipo funciona através de um sensor ultrasónico, que quando é acionado ativa o servo motor, fazendo com que caia uma quantidade de gel desinfetante. O dispensador possui um botão para regular a quantidade de gel desinfetante a fornecer.

Sugestões De Melhoria

  • Uma maquete mais compacta e feita com outro tipo de material.
  • Tornar o dispensador portátil através de uma bateria.