Es una contraparte en miniatura del radioaltímetro utilizado en aviones comerciales para ser utilizado con aviones RC y multirrotores.

COMPONENTES Y SUMINISTROS

  • Arduino UNO
  • Sensor ultrasónico – HC-SR04
  • LED rojo
  • Protoboard

Detección de proximidad al suelo para aeronaves RC y multirrotores

La única diferencia entre el sensor ultrasónico y el radio altímetro es que el primero usa «ondas de sonido» y el segundo usa «ondas de luz» y, por lo tanto, la diferencia entre su velocidad de propagación en la atmósfera.

Introducción

El altímetro barométrico proporciona altitud con respecto al datum fijo que es AMSL – altitud por encima del nivel medio del mar. Las IMU – Unidades de medición inercial como MEMS – Sistemas microelectromecánicos solo pueden proporcionar la información de la actitud de la aeronave en relación con su eje. Por lo tanto, existe la necesidad de un tercer sensor para medir la altura de la aeronave sobre el suelo y el movimiento vertical relativo entre la aeronave y el suelo (terreno). Dicho sistema existe en aviones modernos como GPWS – Sistema de advertencia de proximidad al suelo, que emplea RAM – RADAR Altímetro para medir la altura AGL – Sobre el nivel del suelo. Dado que la RAM programable de tamaño compacto no está disponible para su uso con RC System, deberíamos tener que confiar en otros medios para medir la distancia. De esa forma es utilizar la unidad de medición de distancia ultrasónica.

Importancia

La caída de la aeronave se puede medir con IMU como MPU-6050, MPU-9250 y muchos más. Pero, ¿qué pasa si la aeronave está en vuelo nivelado a una altitud constante y el suelo se acerca a la aeronave debido a la pendiente o si hay un paso repentino en el suelo como una piedra o cualquier otra cosa, puede provocar una catástrofe? Estos incidentes se conocen como CFIT – Vuelo controlado al terreno en estudios aeronáuticos. Medir los obstáculos debajo de la aeronave es importante para este proyecto. Todo lo que necesita hacer es conectar este sistema a la aeronave y colocar el sensor ultrasónico debajo de la aeronave mirando hacia abajo hacia la tierra.

Acerca de nuestro sistema

La teoría del funcionamiento de la ubicación del eco es simple:

  • El transmisor envía un pulso de sonido ultrasónico de algún intervalo de tiempo.
  • Este pulso viaja a través del aire y, si hay alguna obstrucción, se refleja desde la obstrucción.
  • El receptor recibe este pulso reflejado y mide el tiempo de retraso entre la transmisión y la recepción del pulso.
  • Dado que la propagación de la onda de sonido puede considerarse bastante recta, la onda de sonido cubre el doble de la distancia entre el transmisor y la obstrucción durante este período de tiempo.
  • Entonces, la distancia se puede encontrar usando la fórmula simple de velocidad de la siguiente manera:

Tenga en cuenta que el código es totalmente compatible con Arduino MEGA sin ninguna modificación y, por lo tanto, los mismos números de pin que UNO.

Principios de medición

Principio de medición de distancia:

  • Uso de Echo – Ubicación

Principio de detección:

  • El brillo del LED es negativamente proporcional a la altura.
  • La tasa de parpadeo es proporcional a la tasa de descenso

Por lo tanto, el brillo del LED aumenta si la aeronave se acerca al suelo a menor altura y disminuye si la aeronave se aleja del suelo a una altura moderada. Además, la «Frecuencia de parpadeo» aumentará si el avión está cayendo y disminuirá si el avión está subiendo.

Tenga en cuenta que hemos considerado el rango de 0 a 1 metro sobre el suelo para lograr los objetivos indicados anteriormente en los siguientes códigos. Sin embargo, puede ampliar su rango hasta el rango de funcionamiento confiable de su sensor de medición de distancia ultrasónico, que generalmente es de hasta 4 metros.

Código 

int triggerpin=10;
int echopin=11;
long duration;
long distance;
long x;
void setup() {
 // put your setup code here, to run once:
pinMode(triggerpin,OUTPUT);
pinMode(echopin,INPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);
}
void loop() {
 // put your main code here, to run repeatedly:
digitalWrite(triggerpin,LOW); 
delayMicroseconds(2);
digitalWrite(triggerpin,HIGH);
delayMicroseconds(10);
digitalWrite(triggerpin,HIGH);
duration=pulseIn(echopin,HIGH);
x=(duration/2)/29.1;                //1/29.1=0.034 ~ speed of sound converted into centimeters per microsecond
Serial.print("Distance :");
Serial.print(x);
x=map(x,0,100,255,0);      //mapping the intensity as per distance
Serial.print("\t");
Serial.print(x);
Serial.println();
if(x<255 && x>10)                 //code stability condition
{
 analogWrite(9,x);
 }
 else if (x<10) 
 {
   analogWrite(9,0);
   }
   else 
   {
     analogWrite(9,0);
   }
}
 int triggerpin=10;
int echopin=11;
long duration;
long distance;
long x;
long x1=45;
int z;
void setup() {
 // put your setup code here, to run once:
pinMode(triggerpin,OUTPUT);
pinMode(echopin,INPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);
}
void loop() {
 // put your main code here, to run repeatedly:
digitalWrite(triggerpin,LOW);
delayMicroseconds(2);
digitalWrite(triggerpin,HIGH);
delayMicroseconds(10);
digitalWrite(triggerpin,HIGH);
duration=pulseIn(echopin,HIGH);
x=(duration/2)/29.1;
Serial.print("Distance :");
Serial.println(x);
z=(x1-x)/2;
x1=x;
Serial.print("\t z :");
Serial.println(z);
z=map(z,-10,6,1000,5);
analogWrite(9,HIGH);
delay(z);
analogWrite(9,LOW);
delay(z);
}
https://create.arduino.cc/