O que é o Sensor US-020?
Esse sensor é um sensor ultra-sônico, capaz de medir a distancia de um objeto que esteja em sua frente. O mesmo principio é usado na natureza pelos morcegos e os golfinhos para localizar alimento e/ou obstaculo. Conforme pode ser visto na imagem.
Basicamente é emitido um som em determinada frequência (trigger) que quando alcança o objeto retorna um eco (echo) ao emissor no caso o morcego (natureza) ou sensor (US-020), é através desse eco possível calcular a distancia do alvo.
Em Robótica é usado em robôs e projetos de automação com PICs.
No caso para arduino e PICs temos 2 tipos de Sensores mais mais usados, o US-020 e o HC-SR04

Ambos tem a mesma função medir a distancia de objetos.
Ligação
No Primeiro Pino Vcc ligamos o 5 volts.
No Segundo Pino Trigger ligamos em um dos pinos Digital do arduino (Onde é emitido o sinal)
No Terceiro Pino Echo ligamos em outro pino Digital do arduino (Onde recebe o sinal chamado eco)
No Quarto Pino GND ligamos o terra ou ground do arduino.
Diferença entre US-020 e HC-SR04
Apesar de ambos sensores serem bem parecido em questão de aparência e forma de trabalho, existe uma diferença entre eles que é no quesito precisão.
Segundo minha experiência com ambos os sensores pode perceber uma precisão maior quando trabalhamos com o US-020, porém isso depende de como trabalhamos com o código arduino, só foi possivel perceber essa diferença quando usamos a biblioteca newPing do site oficial do arduino.
http://playground.arduino.cc/Code/NewPing
Requisitos de Hardware e Software
Hardware
_ Arduino Uno, Mega, Duemilanove ou outro compativel._ Sensor Ultra-Sônico US-020 ou HC-SR04.
_ Buzzer 5 volts.
_ Led RGB de 4 pinos.
_ 2 Resistores de 100 ohms (ou conforme a necessidade do seu LED).
Software
_ IDE do Arduino instalada.
Montagem
Irei separar a motagem em 2 diagramas para facilitar a visualizaçãoMontagem do circuito
pino 7 echo do US-020
pino 8 trigger do US-020
vcc do sensor no 5 volts do microcontrolador.
GRD no ground do microcontrolador
Buzzer no pino digital 2 e ground
Led
R(Red) no pino 3
G(Green) no pino 5
B(Blue) no pino 6
e o quarto pino no 5 volts do atmega
montagem ilustrativa do display LCD
Observação: Está montagem do LCD é apenas ilustrativa.
pode ser encontrada no seguinte endereço.
http://arduino.cc/en/Tutorial/LiquidCrystal
Para os fios azuis usados nos pinos digitais do arduino usamos os seguintes pinos para o nosso projeto
RS = Pino 13
E = Pino 12
D4 = Pino 11
D5 = Pino 10
D6 = Pino 9
D7 = Pino 4
A parte de Ligação terminamos.
Programação
Abra o IDE do arduino e copie o seguinte código//Projeto adaptado do Projeto feito por Adriano Teixeira
//*Desenvolvido por Thiago Huno, 19/12/2013
//O código é aberto, mas ao usar, por favor citem. */
//inclui a classe LCD
#include
//Instacia e seta os pinos
LiquidCrystal lcd (4, 9, 10, 11, 12, 13);
//Pinos do Sensor Ultrasonico (US-020)
int pinoGatilho = 8;
int pinoEco = 7;
int pinoRed = 3; // pino Red do led RGB.
int pinoGreen = 5; // pino Green do led RGB.
int pinoBlue = 6; // pino Blue do led RGB.
int val = 0; // Valor do HIGH. (Obs para este led os valores são inverso 0 =100% e 255= 0%)
int buzzer = 2; //pino do buzzer
int distancia; //Criando uma variável de distância.
void setup()
{
//Inicia a Serial
Serial.begin(9600);
//Incia o lcd com 16 campos e 2 linhas
lcd.begin(16, 2);
//Pinos do Sensor Ultrasonico (Entrada e Saida)
pinMode(pinoGatilho,OUTPUT);
pinMode(pinoEco,INPUT);
//Pinos do Leds como saida
pinMode(pinoRed, OUTPUT);
pinMode(pinoGreen, OUTPUT);
pinMode(pinoBlue, OUTPUT);
//Pino do buzzer como saida
pinMode(buzzer, OUTPUT);
//Aqui imprime o texto inicial
scrollRight();
}
void loop()
{
//Inicia a leitura do Sensor
digitalWrite(pinoGatilho,HIGH);
delayMicroseconds(11);
digitalWrite(pinoGatilho,LOW);
//Captura a Distancia
distancia = pulseIn(pinoEco, HIGH);
//Calculando a distância em centímetros, sendo que...
// ...velocidade do som = 340 m/s ou 29 us/cm.
distancia = distancia/29/2;
//___________________________________________________________________________________________
//MONITOR SERIAL:
//Distância no monitor serial.
Serial.print(distancia);
Serial.print(" cm");
Serial.println();
//Tempo de atualização da amostragem de distância no LCD ou no monitor serial do programa do Arduino.
delay(70);
//MONITOR DISPLAY LCD:
//Impressao no LCD
lcd.clear();
lcd.print("Distancia atual:");
lcd.setCursor(5, 1);
lcd.print(distancia);
lcd.setCursor(9, 1);
lcd.print("cm");
delay(70);
//___________________________________________________________________________________________
//CONDIÇÕES:
if(distancia < 0)
{
lcd.clear();
lcd.print("Distancia atual:");
lcd.setCursor(3, 1);
lcd.print("Loading...");
delay(100);
}
if((distancia < 0) && (distancia > 350))
{
systemOff();
}
//verifica a condicao de distancia para variar a frequencia do buzzer
//e as cores do led
if ((distancia > 0) && (distancia <= 5))
{
analogWrite(pinoRed, 0);
analogWrite(pinoGreen, 255);
analogWrite(pinoBlue, 255);
}
if ((distancia > 5) && (distancia <= 10))
{
analogWrite(pinoRed, 80);
analogWrite(pinoGreen, 255);
analogWrite(pinoBlue, 150);
}
if ((distancia > 10) && (distancia <= 15))
{
analogWrite(pinoRed, 150);
analogWrite(pinoGreen, 255);
analogWrite(pinoBlue, 80);
}
if ((distancia > 10) && (distancia <= 15))
{
analogWrite(pinoRed, 255);
analogWrite(pinoGreen, 255);
analogWrite(pinoBlue, 0);
}
if ((distancia > 15) && (distancia <= 20))
{
analogWrite(pinoRed, 255);
analogWrite(pinoGreen, 150);
analogWrite(pinoBlue, 80);
}
if ((distancia > 20) && (distancia <= 25))
{
analogWrite(pinoRed, 255);
analogWrite(pinoGreen, 80);
analogWrite(pinoBlue, 150);
}
if ((distancia > 25))
{
analogWrite(pinoRed, 255);
analogWrite(pinoGreen, 0);
analogWrite(pinoBlue, 255);
}
//delays para o buzzer em função da distancia
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(distancia*7);
}
//___________________________________________________________________________________________
//metodo que desliga o led
void systemOff()
{
digitalWrite(pinoRed, 255);
digitalWrite(pinoGreen, 255);
digitalWrite(pinoBlue, 255);
digitalWrite(buzzer, LOW);
}
//___________________________________________________________________________________________
void scrollRight()
{
digitalWrite(buzzer, LOW);
lcd.clear();
lcd.print("Sensor");
lcd.setCursor(0, 1);
lcd.print("Ultrasonico");
delay(1500);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Thiago Huno");
delay(1200);
for (int x = 0; x < 16; x++)
{
//Rola o display 16 vezes para a direita
lcd.scrollDisplayRight();
delay(300);
}
}
faça o upload para o arduino e teste.
Espero ter ajudado!




Nenhum comentário:
Postar um comentário