quarta-feira, 10 de outubro de 2012

Review SRF05 Ultrasonic Distance Measuring Sensor Module

Como o sensor SRF05 funciona?

A operação do sensor ultra-sônico é baseada na emissão e reflexão de ondas acústicas, entre o objeto e um receptor. Normalmente o portador dessas ondas é o ar, mas pode também ser liquido. O tempo de propagação de um som é medido e avaliado.

A maior vantagem deste sensor reside no fato de que pode detectar larga escala de diferentes materiais. A detecção é independente da forma ou cor do material.

O sensor ultra-sônico transmite seus sons não audíveis na freqüência usual de 30 a 300Khz. Filtros implementados dentro do sensor ultra-sônico, verifica o som recebido e atualiza o eco emitido pela onda do sensor. A velocidade de operação do sensor é limitada por uma frequência, que em média de 1Hz a 125Hz.

Apesar de o sensor ultra-sônico detectar uma larga escala de diferentes materiais, existem alguns materiais que absorvem o som, e não são detectados, são eles: lã, tecido, espuma, borracha e outros materiais que absorvem som.



Pulso:

A excitação de pulso consiste em excitar o transdutor com pulsos que podem atingir uma tensão acima de 500V e com duração de alguns nanosegundos. A freqüência de repetição dos pulsos é da ordem de 300 a 1000 kHz.


O SRF05 é uma evolução do sensor SRF04, e foi concebido para aumentar a flexibilidade, e para reduzir os custos ainda mais. Como tal, o SRF05 é totalmente compatível com o sensor SRF04. Intervalo é aumentado de 3 metros a 4 metros. Um novo modo de operação (pino Mode conectado no GND) permite que o SRF05 use somente um pino para gatilho e eco, poupando assim os valiosos pinos do seu controlador. Quando o pinoMode é deixado desconectado, o SRF05 opera com gatilho e eco separados, como o sensor SRF04. O SRF05 do dealextreme inclui um pequeno atraso antes do pulso de eco para dar aos controladores mais lentos, como o Basic Stamp e Picaxe, o tempo para executar seus impulsos nos comandos.




Modo 1 – compatível sensor SRF04 – Trigger separado do Echo:

Este modo usa os pinos Trigger e Echo separados, e é o modo mais simples de usar. Todos os exemplos de código para o sensor SRF04 são compatíveis no SRF05. Para usar este modo, basta deixar o pino Modedesconectado – o SRF05 tem um resistor interno neste pino (pull up).



Calcular a distância:


O SRF05 diagramas de sincronismo são mostrados acima para cada modo. Você só precisa fornecer um pulso curto 10uS para a entrada de trigger para iniciar o alcance. O SRF05 irá disparar oito ciclos de ultrasons a 40khz e ativar o pino Echo (ou Trigger no modo 2). Em seguida, ele ouve um eco, e assim que detectado, ele desativa o Echo novamente. A linha de eco é, portanto, um pulso cuja largura é proporcional à distância do objeto. Cronometrando o pulso é possível calcular a distância em centímetros. Se nada for detectado, em seguida, o SRF05 irá desativar o Echo após 30mS.

O sensor SRF04 fornece um pulso de eco proporcional à distância. Se a largura do pulso é medido em uS, em seguida, dividindo por 58 vai dar-lhe a distância em cm, ou dividindo por 148 vai dar a distância em polegadas. uS/58 = cm ou uS/148 = polegadas.

O SRF05 do DX pode ser acionado mais rápido a cada 50ms, ou 20 vezes por segundo. Você deve esperar 50ms antes do gatilho seguinte, mesmo se o SRF05 detecta um objeto próximo e do pulso echo é mais curto. Isso é para garantir que o “beep” ultra-sônico desapareceu e não irá causar um eco falso na próxima medição.


Código de Exemplo:

int duration; //Stores duration of pulse in
int distance; // Stores distance
int sensorpin = 7; // Pin for SRF05

void setup()
{
Serial.begin(9600);
}

void loop()
{
pinMode(sensorpin, OUTPUT);
digitalWrite(sensorpin, LOW); // Make sure pin is low before sending a short high to trigger ranging
delayMicroseconds(2);
digitalWrite(sensorpin, HIGH); // Send a short 10 microsecond high burst on pin to start ranging
delayMicroseconds(10);
digitalWrite(sensorpin, LOW); // Send pin low again before waiting for pulse back in
pinMode(sensorpin, INPUT);
duration = pulseIn(sensorpin, HIGH); // Reads echo pulse in from SRF05 in micro seconds
distance = duration/58; // Dividing this by 58 gives us a distance in cm
Serial.println(distance); // Wait before looping to do it again
delay(100);
}


Nenhum comentário:

Postar um comentário