3 de maig 2015

Sensor d'ultrasons


El sensor d'ultrasons (HC-SR04) mesura distàncies entre 3 cm i 3 m, amb una precisió de ± 3 mm.
L'emissor (Trig) emet un pols d'ultrasó que rebota en els obstacles i torna al receptor del sensor (Echo), el qual emet un senyal d'entrada proporcional al temps que ha trigat en rebre el pols.


Càlcul de la distància
Segons el temps que triga el pols des que s'emet fins que retorna al sensor:
velocitat del so = 343 m/s = 34.300 cm/s. Per tant, en recòrrer 1 cm triga 29,4 µs
distància total (cm) recorreguda pel pols (anada i tornada) = temps (µs) / 29,4
distància a l'obstacle (cm) = distància total / 2 = temps / (29,4/2) = temps / 58,2

Connexió a Arduino
Per muntar-lo en robots val la pena utilitzar aquest suport i cables agrupats


Monitorització de les distàncies mesurades pel sensor

Valors amb que treballem:
int EchoPin = 2;  // pin de connexió receptor del sensor
int TrigPin = 3;  // pin de connexió emissor del sensor
int temps, distancia;  // variables per al càlcul de la distància
Configuració:
void setup()
{
  Serial.begin (9600);  // iniciem la comunicació Serial per visualitzar les dades
  pinMode (TrigPin,OUTPUT);  // el pin Trig és una sortida digital
  pinMode (EchoPin,INPUT);   // el pin Echo és una entrada digital
}
Definició de les accions:
void loop()
{
  // cal començar generant un pols pel pin Trig d'una amplada de 10 µs:
  digitalWrite (TrigPin,LOW);
  delayMicroseconds (2);
  digitalWrite (TrigPin,HIGH);
  delayMicroseconds (10);
  digitalWrite (TrigPin,LOW);

  // mesura del temps en µs des que s'executa la instrucció
  // fins que es rep un pols pel pin especificat:
  temps = pulseIn (EchoPin,HIGH);   
 
  // conversió del temps mesurat en distància (cm):
  distancia = temps / 58.2; 

  // visualització de la distància calculada (en cm) pel monitor Serial:
  Serial.println (distancia); 
  delay(50);  // petita pausa abans de tornar a començar el bucle
}

Exemple 2. Encesa d'un LED en funció de la distància
int echoPin = 2;  // pin connexió emissor del sensor
int trigPin = 3;  // pin connexió receptor del sensor
int ledpin = 13;  // pin connexió LED
int consigna = 20;  // distància a partir de la que s'ha d'encendre el LED
long temps, distancia;  // variables per al càlcul de la distància

void setup() 
{
 Serial.begin (9600);  
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(ledpin, OUTPUT);
}

void loop() 
{
 digitalWrite(trigPin, LOW); // emissió i recepció d'ultrasons
 delayMicroseconds(2); 
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 digitalWrite(trigPin, LOW);

 temps = pulseIn(echoPin, HIGH);  // càlcul de la distància
 distancia = temps/58.2; 
 
 if (distancia < consigna)  // condició d'encesa del LED
 { digitalWrite(ledpin,HIGH); }
 else 
 { digitalWrite(ledpin,LOW); }
 
 delay(50);  // petita pausa abans de tornar a començar el bucle
}

Hem utilitzat el sensor d'ultrasons:


Cap comentari:

Publica un comentari