Seu Curso

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

Medindo distâncias com um sensor ultrasônico e um Arduino

Imprimir
Avaliação do Usuário: / 12
PiorMelhor 

 

Com um Arduino em mãos e um sensor de sonar de baixo custo é possível, com pouquíssima solda e um programa muito pequeno, medir distâncias como faz uma trena eletrônica.

Você vai precisar de:

Um Arduino:

Um sensor de sonar ultrassom, que no caso dessa experiência usei um Sonar Ultrassom Griffus (V9), com custo aproximado de R$60,00 na Tato Equipamentos Eletrônicos (www.tato.ind.br) . Com esse mesmo preço é possível encontrar inúmeros outros sonares no mercado com pinagem e funcionamento idênticos ao que vou utilizar aqui.

 

O primeiro passo é soldar alguns fios nos pinos do sensor, para facilitar a ligação entre ele e o Arduino. Usei um pequeno pedaço de cabo de rede, removendo os fios internos. A grande sacada é usar fios coloridos, com cores diferentes, para identificar cada pino do sensor.

Feito as soldas, agora é só ligar o pino 5V do sensor ao 5V do Arduino, o GND (terra) ao GND do Arduino, o pino OUT ao pino digital 7 e o pino IN poderá ficar sem ligação por enquanto, para essa experiência ele não terá utilidade.

 

 

Agora só falta digitar o seguinte código no ambiente de desenvolvimento do Arduino e fazer upload para a placa:

 

void setup() {
pinMode(13, OUTPUT);
pinMode(7, INPUT);
Serial.begin(9600);
}
void loop() {
float tempo, dist;
tempo = pulseIn(7, HIGH);
dist = ((tempo * 350)/1000000)/2;
Serial.print(tempo);
Serial.print(" microssegundos, ");
Serial.print(dist);
Serial.print(" metros");
Serial.println();
delay(500);
}

O que fizemos, passo-a-passo:

 

Coloca o pino digital 13 no modo saída :

pinMode(13, OUTPUT);

 

Coloca o pino digital 7 como entrada:

pinMode(7, INPUT);

 

Inicia a comunicação serial em 9600bps:

Serial.begin(9600);

 

No loop principal:

 

Declaração das variáveis necessárias:

float tempo, dist;

 

A função pulseIn() retorna o tempo em microssegundos entre a mudança de estado de um determinado pino, ou seja, começa a contar quando o estado do pino vai a LOW e para quando o estado vai para HIGH e vice-versa, dependendo dos parâmetros utilizados:

tempo = pulseIn(7, HIGH);

 

 

Cálculo da distância percorrida pelo pulso ultrassonico. Considerei que a velocidade do som é de aproximadamente 350 metros por segundo:

dist = ((tempo * 350)/1000000)/2;

 

 

Envia via porta serial os dados que especifica:

Serial.print(tempo);

Serial.print(" microssegundos, ");

Serial.print(dist);

Serial.print(" metros");

Serial.println();

 

Faz uma pausa de meio segundo, ou 500 milissegundos:

delay(500);

 

Compile e envie o programa para seu Arduino, abra o Serial Monitor e coloque objetos (pode ser a mão) em frente ao seu sensor de sonar e veja o resultado:

Há alguns desafios com esse projeto, a saber:

1. Existe um limiar de medição mínimo e máximo para cada tipo de sonar ultrassônico, é preciso identificar esses limites;

2. Há uma latência do próprio Arduino e da execução do programa que deve ser considerado;

3. A velocidade do som no ar varia de acordo com a temperatura do meio, talvez para conseguir um máximo de performance deva-se adicionar um termo sensor ao projeto;

 

BOM DIVERTIMENTO!

 

Comentários  

 
0 #7 Medir com UltrasonAlex B Siqueira 13-07-2015 10:52
Bom dia,

Estou precisando montar um projeto em que use esse código mas que, a cada vez que a distância diminui, o resultado gere uma soma de 1+1= 2; 2+1=3... e assim por diante. Na vedade seria para contar coisas como por exemplo: caixas empilhadas umas sobre as outras.
Citar
 
 
+2 #6 duvida na copilaçãoWalter Rafael 13-07-2014 00:07
Ola estou usando o arduino UNO e vi que o seu é diferente, porem estou testando o sensor aqui e só esta pegando o primeiro valor de tempo e metro o resto fica tudo zero, será que tem como você esta me ajudando a concerta este erro ?
Citar
 
 
+1 #5 faixa de Distânciasf9912 08-03-2014 10:11
Gostaria de saber as faixas das medições e a precisão da mesma?
Citar
 
 
0 #4 ControleFernando Bryan Frizzarin 17-08-2013 23:49
Thiago, nesse caso depende só da programação, ler o sensor e controlar os motores.

Citando Thiago Ribeiro de Sá:
com um sensor desses consigo controlar outro componente?? ex: a velocidade de um motor, ou qualqer outro compente...
Citar
 
 
+1 #3 Duvida...Thiago Ribeiro de Sá 17-08-2013 16:09
com um sensor desses consigo controlar outro componente?? ex: a velocidade de um motor, ou qualqer outro compente...
Citar
 
 
0 #2 InfluênciasFernando Bryan Frizzarin 29-10-2012 23:20
Esse tipo de ruído não, apenas se for muito próximo, ou igual, a freqüência utilizada pelo sensor.
Citar
 
 
+2 #1 InfluênciasJoabe 29-10-2012 17:56
Olá amigo, muito bom o post, porem estou com uma dúvida. como o sensor age emitindo frequências pré estabelecidas e o sensor estando num local com ruido (som alto, pessoas gritando) este tipo de ruido pode interferir no sinal do sensor? obrigado!
Citar
 

Adicionar comentário


Código de segurança
Atualizar

You are here: