Coisas sobre tecnologia
domingo, 15 de maio de 2016
Coisas sobre tecnologia : Como utilizar vários sensores ultrasonicos com o a...
Coisas sobre tecnologia : Como utilizar vários sensores ultrasonicos com o a...: O Sensor Ultrassônico HC-SR04 é um componente muito comum em projetos com Arduino, e permite que você faça leituras de distâncias entre 2 c...
Como utilizar vários sensores ultrasonicos com o arduino
O Sensor Ultrassônico HC-SR04 é um componente muito comum em projetos com Arduino, e permite que você faça leituras de distâncias entre 2 cm e 4 metros, com precisão de 3 mm. Pode ser utilizado simplesmente para medir a distância entre o sensor e um objeto, como para acionar portas do microcontrolador, desviar um robô de obstáculos, acionar alarmes, etc.
O funcionamento do HC-SR04 (datasheet) se baseia no envio de sinais ultrassônicos pelo sensor, que aguarda o retorno (echo) do sinal, e com base no tempo entre envio e retorno, calcula a distância entre o sensor e o objeto detectado.
Primeiramente é enviado um pulso de 10µs, indicando o início da transmissão de dados. Depois disso, são enviado 8 pulsos de 40 KHz e o sensor então aguarda o retorno (em nível alto/high), para determinar a distância entre o sensor e o objeto, utilizando a equação Distância = (Tempo echo em nível alto * velocidade do som) /2
Para ligação do sensor ao microcontrolador, são utilizados 4 pinos: Vcc, Trigger, ECHO e GND.
CONECTANDO O SENSOR HC-SR04 AO ARDUINO
A ligação do sensor ao Arduino no nosso programa vai utilizar, além dos pinos de alimentação, ospinos digitais 4 para o Trigger, e 5 para o Echo. A alimentação será feita pelo pino 5V do Arduino:
O programa usa a biblioteca Ultrasonic, que você pode baixar aqui. Descompacte a pasta Ultrasonic e coloque-a dentro da pasta LIBRARIES da IDE do Arduino.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| //Programa: Conectando Sensor Ultrassonico HC-SR04 ao Arduino //Autor: Eduardo //Carrega a biblioteca do sensor ultrassonico #include //Define os pinos para o trigger e echo #define pino_trigger 4 #define pino_echo 5 //Inicializa o sensor nos pinos definidos acima Ultrasonic ultrasonic(pino_trigger, pino_echo); void setup() { Serial.begin(9600); Serial.println( "Lendo dados do sensor..." ); } void loop() { //Le as informacoes do sensor, em cm e pol float cmMsec, inMsec; long microsec = ultrasonic.timing(); cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); inMsec = ultrasonic.convert(microsec, Ultrasonic::IN); //Exibe informacoes no serial monitor Serial.print( "Distancia em cm: " ); Serial.print(cmMsec); Serial.print( " - Distancia em polegadas: " ); Serial.println(inMsec); delay(1000); } |
No programa todo o cálculo é feito por meio da biblioteca Ultrasonic. O sensor é inicializado nos pinos trigger e echo, e depois efetuamos a leitura dos dados do sensor, atribuindo às variáveiscmMsec e inMsec os valores das distâncias em centímetros e polegadas, respectivamente. Os dados são mostrados no serial monitor:
Agora utilizando 4 sensores ultrasonicos no arduino :
#include
#define pino_trigger 7
#define pino_trigger2 13
#define pino_trigger3 3
#define pino_trigger4 10
#define pino_echo 6
#define pino_echo2 12
#define pino_echo3 2
#define pino_echo4 11
//Inicializa o sensor nos pinos definidos acima
Ultrasonic ultrasonic(pino_trigger, pino_echo);//sensor 1
Ultrasonic ultrasonic2(pino_trigger2, pino_echo2);//sensor 2
Ultrasonic ultrasonic3(pino_trigger3, pino_echo3);//sensor 3
Ultrasonic ultrasonic4(pino_trigger4, pino_echo4);//sensor 4
float s1;// variavel do tipo flutuante, sensor 1
float s2;
float s3;
float s4;
void setup()
{
Serial.begin(9600);
Serial.println("Lendo dados aguarde filho da puta...");
}
void loop()
{
//Le as informacoes do sensor 1
long microsec = ultrasonic.timing();
s1 = ultrasonic.convert(microsec, Ultrasonic::CM);
//Le as informacoes do sensor 2
long microsec2 = ultrasonic2.timing();
s2 = ultrasonic2.convert(microsec2, Ultrasonic::CM);
//Le as informacoes do sensor 3
long microsec3 = ultrasonic3.timing();
s3 = ultrasonic3.convert(microsec3, Ultrasonic::CM);
//Le as informacoes do sensor 4
long microsec4 = ultrasonic4.timing();
s4 = ultrasonic4.convert(microsec4, Ultrasonic::CM);
delay(10);
Serial.print("Distancia sensor 1: ");
Serial.print(s1);
Serial.print(" - Distancia sensor 2: ");
Serial.print(s2);
Serial.print(" - Distancia sensor 3: ");
Serial.print(s3);
Serial.print(" - Distancia sensor 4: ");
Serial.println(s4);//println coloca eles em paralelo
delay(10);
}
Assinar:
Postagens (Atom)