OS CÓDIGOS DO PROTÓTIPO
Utilizou-se o software Arduino 1.8.7 para realizar os códigos sistema.
Os códigos utilizados foram:
- Definindo as variáveis do sistema
int sensor = 9;
int led = 12;
int buzzer = 13;
int frequencia = 0;
int tempo = 0;
int tempoatual = 0;
int tempototal = 0;
long medicao = 0; // Definindo as variáveis e em quais pinos elas se conectarão no Arduino
- Definindo as entradas e saídas do sistema, onde o sensor é a entrada e o buzzer e o led são as saídas.
void setup() {
Serial.begin(9600); // Ligar o Serial Monitor, utilizado apenas para correção de bugs. Quando estiver pronto pode retirar esse comando
pinMode(sensor, INPUT); // Definindo o sensor como uma entrada
pinMode(led, OUTPUT); // Definindo o led como saída
pinMode(buzzer, OUTPUT); // Definindo o buzzer como saída
}
- Função loop para o sistema foi baseada na utilização de uma calibração do sistema. O sensor funciona quando ele consegue detectar um HIGH e LOW, ou quando a esfera toca os dois lados. Como o sensor não consegue realizar uma leitura da intensidade de vibração e sim somente detecta os picos de vibração, foi utilizado o comando para o sensor detectar a variação do tempo de cada toque. Sendo assim, para variações de tempo baixas o sensor considerava como uma intensidade alta, isso foi realizado em um ciclo onde a frequência era lida 6 vezes, e então, caso a variação do tempo fosse maior que 550 milisegundos o sensor considerava que a vibração do sistema era igual a zero. Por outro lado, se a variação do tempo fosse menor que 550 milisegundos o sensor detectava a vibração e então enviada um sinal para o sistema.
void loop() {
medicao = pulseIn(sensor, HIGH); // Funcao retorna o tempo que demora pro sensor ler variações entre HIGH e LOW
delay(50);
if (frequencia == 0) {
tempo = millis(); // Atribuição do tempo inicial (millis() pega o horario atual do Arduino)
}
frequencia = frequencia + 1; // Soma um a variável frequência
if (frequencia > 5) {
tempoatual = millis(); // Atribuição do tempo final
tempototal = tempoatual - tempo; // Encontrando o delta T
frequencia = 0; // Frequencia = 0 para caso o tempo total seja > 550, "zerar" o programa
}
- Caso o sensor detectasse uma vibração com uma variação de tempo menor que 550 milissegundos as seguintes ações eram realizadas no sistema. O LED ligava e o Buzzer era acionado a uma frequência de 1950 Hz, na sequência o LED esperava 250 milissegundos e então era desligada. Por fim, todas as variáveis do sistema eram zeradas para que ocorresse a nova leitura pelo loop anterior.
if (tempototal < 550 && tempototal != 0) { // Tempo total < 550 por calibração e tempo total != 0 (diferente de zero) pra nao entrar no inicio do programa
tone(buzzer, 1950, 1500); // Aciona o buzzer
digitalWrite(led, HIGH); // Liga o led
delay(250); // Espera 250 ms com o led ligado
digitalWrite(led, LOW); // Desliga o led
tempoatual = 0;
tempo = 0;
frequencia = 0;
tempototal = 0; // Reset nos valores para o programa iniciar do zero
}
}
Resultados e Discussões
Observando o funcionamento do protótipo, pode-se perceber que ao ligar o equipamento que simula o processo (liquidificador) o sistema detecta uma vibração que até então não existia, acionando assim o LED e posteriormente o buzzer. Foi utilizado o LED para sinalizar a presença de vibração pois o liquidificador realizava um ruído alto, sendo que às vezes não era possível detectar o som emitido som emitido pelo sinalizador buzzer apenas. Na Figura 7 é possível visualizar o sensor fixado no liquidificador e, na Figura 8, é possível visualizar o esquema utilizado, porém com um LED a mais o qual era responsável por acender se caso a vibração fosse detectada, enquanto o outro ligava somente quando o buzzer era acionado.