18 de novembro de 2018

Descarga Automática

Como é o funcionamento de uma descarga automática.


O sensor detecta e somente aciona a descarga após verificar que não existe mais a presença.

Foi utilizado um sensor reflexivo TCRT5000, composto por um LED infravermelho e um fototransitor. O funcionamento é mesmo do projeto Contador de Passagem.
O microcontrolador é o Atmega328 com bootloader Arduino.

Para não ocorrer ativações errôneas, é necessário que o sensor permaneça detectando a presença por 3 segundos. O led vermelho indica quando a presença foi confirmada e a descarga é acionada após o sensor deixar de detectar a presença.


Segue o esquema elétrico e o código fonte:


 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
/*---------------------------------------------------------
  Programa : DESCARGA AUTOMÁTICA
  Autor    : Fellipe Couto [ http://www.efeitonerd.com.br ]
  Data     : 17/11/2018
  ---------------------------------------------------------*/
#include <Servo.h>

#define SENSOR A0
#define LED 9
#define MOTOR 10

Servo servo;
int avgDefault = 0;

void setup() {
  //Configura a porta do led
  pinMode(LED, OUTPUT);

  //Configura a porta do servo motor
  servo.attach(MOTOR);

  //Registra o valor médio do sensor sem obstáculos
  avgDefault = AvgSensor();
}

void loop() {
  boolean detected = false;
  int count = 0;
  servo.write(0);

  //Valor detectado menor que valor padrão
  while (AvgSensor() < avgDefault) {
    count++;
    delay(100);

    //Se detectar por 3 segundos (delay 100 count maior que 30)
    if (count > 30) {
      detected = true;
      digitalWrite(LED, HIGH);
    }
  }

  //Sensor detectou
  if (detected) {
    digitalWrite(LED, LOW);
    servo.write(70);
    delay(2000);
  }
}

int AvgSensor() {
  //Retorna a média da leitura do sensor
  int times = 100;
  long sum = 0;
  for (int i = 0; i < times; i++) {
    sum += analogRead(SENSOR);
  }
  return sum / times;
}

Nenhum comentário:

Postar um comentário