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.

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:


/*---------------------------------------------------------
  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