Sensor ultrasónico

Descrición:

hc-sr04
[By Giedow CC from instructables]
Co sensor ultrasónico podemos detectar obxectos, medir distancias ou detectar movementos na contorna.

Funciona enviando un sinal de ultrasóns (frecuencias sonoras que os humanos non podemos detectar) e espera a que ese sinal regrese despois de chocar contra un obxecto. O tempo transcorrido entre o envío e a recepción do sinal depende da distancia á que se atopa o obxecto detectado.

ultrasonico_grafico
[tecnoloxia.org CC By-SA]

Montaxe:

hc-sr04-_fritzing
[tecnoloxia.org CC By-SA from Fritzing]
O sensor ultrasóns HC-SR04 ten 4 pins:

  • VCC: conectado á 5V
  • Trig: conectado ao pin dixital da placa encargado de enviar o pulso ultrasónico. Hai que configuralo como saída.
  • Echo: conectado ao pin de entrada dixital que recibirá o eco de dito pulso. Hai que configuralo como entrada.
  • GND: conectado a terra.

Práctica:

Imos facer unha práctica na que medimos distancias. Debemos conectar o trig ao pin 9 e configuralo como saída e o Echo ao pin 8 e configuralo como entrada.

Creamos dúas variables: tempo e distancia. No canto de usar int (enteiro de 16 bits) utilizaremos long, de 32 bits.

As seguintes instrucións van medir a distancia á que se atopa o ultrasónico.

tempo=pulseIn(echo, HIGH);  Mide o tempo transcorrido entre o envío do pulso e a recepción do rebote
distancia= int(0.017*tempo);   Fórmula para calcular la distancia obtendo un valor enteiro

// Declaración de variables:

int trig = 9;         // trig conectado ao pin 9
int echo = 8;         // echo conectado ao pin 8
long tempo;           // variable para expresar o tempo
long distancia;       // variable para expresar a distancia.


// Configuración:

void setup(){
  Serial.begin(9600);
  pinMode(trig, OUTPUT);      // trig como saída
  pinMode(echo, INPUT);       // echo como entrada
}

// Programa:

void loop(){
  
  digitalWrite(trig,LOW); 
  delayMicroseconds(5);
  digitalWrite(trig, HIGH);     // envío do pulso ultrasónico
  delayMicroseconds(10);
  
  tempo=pulseIn(echo, HIGH);    // tempo transcorrido entre o envío do pulso e a recepción
  distancia= int(0.017*tempo);  // fórmula para calcular la distancia

  Serial.print("Distancia: ");  // imprimimos os valores na consola
  Serial.print(distancia);
  Serial.println(" cm");
  delay(200);
}

Limitacións:

  • Non ten moita precisión. As distancias verás que non se corresponderán coas reais, así que deberás facer probas de funcionamento.
  • Non detecta obxectos de pequeno tamaño.
  • O ángulo de visión é limitado (+/- 15º)
  • A detección de obxectos planos soe ser eficaz, pero se os obxectos son curvos as medidas soen ser erróneas. Por exemplo, unha lata de refresco.

Propostas:

  1. Ultrasónico e LED. Fai que cando a distancia sexa menor que 5 cm se acenda un LED, e cando sexa maior de 5 cm se apague.
  2. Sinalización por Leds. Fai que a unha distancia maior de 15 cm se acenda un LED verde, entre 8 e 15 cm un LED amarelo, e a unha distancia menor de 8 cm un LED vermello.
  3. Axuda de aparcamento. Conecta un zumbador e fai que o zumbador emita sons cunha periodicidade proporcional á distancia medida (a menor distancia, tempo máis curto entre sons).  Fai ademais que soe un ton máis agudo canto máis cerca estea.

 


Deixa un comentario