sexta-feira, 7 de agosto de 2015

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

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;
← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário