Sencillo sensor de infrarrojos. Sensor de obstáculos por infrarrojos en el comparador LM393 Configuración de la distancia de detección

Descripción general del sensor de obstáculos YL-63

El sensor infrarrojo digital para evitar obstáculos YL-63 (o FC-51) (Fig. 1) se utiliza cuando es necesario determinar la presencia de un objeto, pero no es necesario saber la distancia exacta al objeto. El sensor consta de emisor de infrarrojos y un fotodetector. La fuente de infrarrojos emite ondas infrarrojas que se reflejan en un obstáculo y son registradas por un fotodetector. El sensor detecta obstáculos dentro de un rango de distancias desde cero hasta un límite establecido. Está construido sobre la base del comparador LM393, que genera voltaje según el principio: se detecta un obstáculo - nivel lógico ALTO, no detectado - nivel lógico BAJO, este estado también se indica mediante el LED rojo ubicado en el sensor. El valor umbral depende de la configuración del sensor y se ajusta mediante un potenciómetro instalado en el módulo. Un LED verde está instalado en el sensor para indicar energía. El sensor se utiliza en robótica para detectar obstáculos al mover robots con ruedas o con orugas.

Características técnicas del sensor de obstáculos YL-63.

  • Modelo: YL-63 (o FC-51)
  • tensión de alimentación: 3,3–5 V
  • tipo de sensor: difusión
  • Comparador: LM393
  • distancia de detección de obstáculos: 2 – 30 cm
  • ángulo efectivo de detección de obstáculos: 35°
  • potenciómetro para cambiar la sensibilidad
  • LED de encendido
  • LED de indicación de funcionamiento
  • dimensiones: 43 x 16 x 7 mm

Conexión de YL-63 a Arduino

El módulo tiene 3 salidas:
  • VCC - fuente de alimentación 3-5 V;
  • GND - tierra;
  • SALIDA - salida digital.
Conectemos el sensor a la placa Arduino (diagrama de conexión en la Fig. 1) y escribamos un boceto simple que señale la presencia de un obstáculo con una señal sonora. Carguemos el boceto del Listado 1 en la placa Arduino y veamos cómo reacciona el sensor ante los obstáculos (ver Fig. 2).

Figura 1. Diagrama de conexión para conectar el sensor YL-63 a la placa Arduino

Carguemos el boceto del Listado 1 en la placa Arduino y veamos cómo reacciona el sensor ante los obstáculos (ver Fig. 3). Listado 1 // Boceto para revisar el sensor de obstáculos YL-63 // http:// http://3d-diy.ru // contacto para conectar la salida del sensor #define PIN_YL63 5 // Datos del sensor Y63 #define barrera digitalRead(PIN_YL63) void setup() ( // inicializando el puerto serie Serial.begin(9600); // configurando el pin de conexión del sensor en INTPUT pinMode(PIN_YL63,INTPUT); ) void loop() ( if (barrera == 1) ( Serial.println ("BARRERA!!!"); // Zona de detección de obstáculos while (barrera == 1) // Esperando salida (;) ) else ( Serial.println("no barrera"); // Fuera de la zona de detección de obstáculos mientras (barrera == 1) // Esperando entrada (;) ) )

Figura 2. Salida del monitor del puerto serie

Usando un potenciómetro, experimentemos configurando el valor umbral.

Ejemplo de uso

Consideremos un ejemplo del uso del sensor YL-63 a bordo de una popular plataforma robótica autopropulsada: un robot móvil en basado en arduino(ver 3).

Figura 3. Plataforma robótica – robot móvil basado en Arduino

Creemos un boceto de un robot atravesando un laberinto. Si, al mover un robot en un laberinto, te quedas en un lado (izquierdo o derecho), definitivamente llegarás a la salida (Fig. 4).

Figura 4. Esquema del robot recorriendo el laberinto.

Instalemos tres sensores de obstáculos en el parachoques delantero del robot, dos miran hacia adelante y uno mira hacia la derecha (ver Fig. 5).

La presencia de dos sensores frontales mejora la calidad de la detección de obstáculos en el frente, ya que un sensor no cubre toda el área frontal.

Figura 5. Conexión de sensores de obstáculos a un robot móvil basado en Arduino.

En el boceto comprobamos el estado de los sensores y, en función de los datos recibidos, se toma una decisión sobre el movimiento. Los sensores están conectados a los pines 2, 12, 13 de Arduino. // Números de los puertos a los que están conectados los sensores de obstáculos. const int Frente1 = 2, Frente2 = 12, Derecha = 13; Creemos un nuevo boceto en el IDE de Arduino, agreguemos el código del Listado 2 y carguemos el boceto en la placa Arduino. Listado 2 // Declarar variables para almacenar el estado de los dos motores. int motor_L1, motor_L2, entrada_L; int motor_R1, motor_R2, entrada_R; // Las constantes de tiempo se utilizan para establecer con precisión el tiempo para girar, girar y avanzar // en milisegundos. constante int tiempo_90 = 390; // Número de puertos a los que están conectados los sensores de obstáculos. const int Frente1 = 2, Frente2 = 12, Derecha = 13; //================================================== ======= void setup() ( // Ingrese los números de pin de Arduino en las variables. // Para los motores izquierdo y derecho de la máquina. setup_motor_system(3, 4, 11, 7, 8, 10); // pinMode(Front1, INPUT); pinMode(Front2, INPUT); pinMode(Derecha, INPUT); // Los motores están funcionando. void loop() ( boolean d_Front1, d_Front2, d_Right; d_Front1 = digitalRead(Front1); d_Front2 = digitalRead(Front2); d_Right = digitalRead(Derecha); // Si no se activó ningún sensor. if (d_Front1 && d_Front2 && d_Right) ( //Disminuye la velocidad de las ruedas derechas setspeed(255, 15); forward(); //gira a la derecha. else ( //Si uno de los sensores delanteros se activa y el derecho no. if ((! d_Front1) || (!d_Front2) ) ( //Potencia máxima a todas las ruedas. setspeed(255, 255); // girar a la izquierda 90 grados. left(); delay(time_90 / 5); ) else ( // Si el se activa el sensor derecho. // Disminuye la velocidad de las ruedas izquierdas. setspeed(15, 255);//gira a la izquierda ) ) // Función para inicializar el control del motor. void setup_motor_system(int L1, int L2, int iL, int R1, int R2, int iR) ( // Ingrese los números de contactos (pines) de Arduino en las variables. motor_L1 = L1; motor_L2 = L2; input_L = iL; // Para los motores izquierdo y derecho de la máquina. motor_R1; motor_R2 = iR; // Transfiere los puertos especificados al estado de salida de datos. pinMode(motor_L2, OUTPUT); input_R, OUTPUT); // La función establece la velocidad del motor. void setspeed(int LeftSpeed, int RightSpeed) ( // Establece el ancho del flanco positivo de 0 a 255. analogWrite(input_L, LeftSpeed); analogWrite(input_R, RightSpeed); // Cuanto más grande, más intenso funciona el motor. ) // Gire a la izquierda con las ruedas izquierdas bloqueadas. void forward() ( // Las ruedas izquierdas giran hacia adelante. digitalWrite(motor_L1, HIGH); digitalWrite(motor_L2, LOW); // Las ruedas derechas giran hacia adelante. digitalWrite(motor_R1, HIGH); digitalWrite(motor_R2, LOW); ) // Gire a la izquierda. void left() ( // las ruedas izquierdas giran hacia atrás digitalWrite(motor_L1, LOW); digitalWrite(motor_L2, HIGH); // las ruedas derechas giran. digitalWrite(motor_R1, HIGH); digitalWrite(motor_R2, LOW); ) Inicie el robot en el laberinto y observa cómo se mueve en el laberinto.

Preguntas frecuentes Preguntas frecuentes

1. El LED verde no se enciende
  • Compruebe que el sensor esté conectado correctamente.
2. El sensor no detecta un obstáculo a cierta distancia.
  • Usando un potenciómetro, seleccione el umbral de respuesta del sensor.

Todo robot que pueda conducir, volar o nadar debe poder ver los obstáculos en su camino. Para que el robot pueda hacer esto, necesita sensores adecuados. EN literatura inglesa tales dispositivos se llaman sensor de proximidad, los llamaremos sensores de obstáculos. En esta lección veremos uno de los sensores de obstáculos más comunes, que funciona según el principio de reflexión. Está diseñado de forma muy sencilla. El sensor contiene una fuente de luz direccional y un detector de luz. La fuente suele ser un LED infrarrojo con una lente y el detector es un fotodiodo o fototransistor. El LED del sensor está constantemente encendido y emite un haz de luz estrecho hacia adelante. Si hay un obstáculo frente al sensor (Figura A), la luz reflejada de la fuente incide en el detector y aparece un pulso positivo en la salida del sensor. En caso contrario, si no hay ningún obstáculo, el sensor queda en silencio (Figura B). Hay una tercera opción, cuando hay un obstáculo, ¡pero la luz no se refleja en él! La figura B muestra precisamente uno de esos casos. Resulta que el robot no verá una superficie negra mate.

1. Conexión

Conectaremos el sensor más simple con una salida digital. Diagrama esquemático de conexión a los terminales. ArduinoUno:
Aspecto del diseño

2. Configuración de sensibilidad

Como sabes, a nuestro alrededor hay muchas fuentes de radiación infrarroja, incluidas las lámparas y el sol. El elemento fotosensible del sensor detecta esta radiación de fondo y puede dar una falsa alarma. En otras palabras, el sensor de obstáculos puede funcionar cuando no hay ningún obstáculo. Para resolver este problema, el sensor tiene la capacidad de ajustar la sensibilidad de modo que sólo se detecte luz con suficiente intensidad. Esto generalmente se hace usando un comparador, un dispositivo electrónico que permite comparar dos niveles de voltaje. Un voltaje se suministra al comparador desde un fotodiodo y el otro desde un divisor de voltaje basado en un potenciómetro. Llamaremos al segundo voltaje. límite. Ahora el sensor dará una señal positiva solo cuando el voltaje en el fotodiodo sea mayor que el que configuramos. Para establecer el voltaje umbral, necesitamos un destornillador plano (también conocido como destornillador de punta plana). En este procedimiento también nos ayudará el LED de estado verde, que se enciende cuando el sensor registra un nivel suficiente. luz infrarroja. El algoritmo de configuración se reduce a tres pasos:
  • colocamos el sensor en las condiciones de iluminación en las que funcionará;
  • conecte el sensor a la fuente de alimentación y el LED rojo se iluminará;
  • Retire todos los obstáculos delante del sensor y gire el potenciómetro hasta que se apague el LED de estado verde.
Para comprobarlo acercamos la palma de la mano al sensor y a cierta distancia se encenderá el LED verde. Si retiramos la mano el LED se apagará. La distancia a la que el sensor detecta un obstáculo depende del nivel de iluminación ambiental, del ajuste de sensibilidad y de ubicación correcta fotodiodo y LED en el sensor. Deben ubicarse estrictamente paralelos entre sí. Ahora que el sensor está configurado correctamente, comencemos a crear el programa.

3. Programa

Por ejemplo, encenderemos y apagaremos el LED estándar No. 13 en ArduinoUno, dependiendo de las lecturas del sensor. Al utilizar un sensor digital, el programa será el mismo que en el caso de trabajar con botones. En cada iteración del ciclo bucle Leemos el valor en el pin #2 y luego comparamos este valor con el nivel. ALTO. Si el valor es ALTO, esto significa que el sensor ve un obstáculo y encendemos el LED en el pin No. 13. En caso contrario, apagamos el LED.

constante int prx_pin = 2; constante int led_pin = 13; byte v; configuración vacía() ( pinMode(prx_pin, ENTRADA); pinMode(led_pin, SALIDA); ) void loop() ( v = digitalRead(prx_pin); if(v == ALTO) digitalWrite(led_pin, ALTO); else digitalWrite(led_pin , BAJO);

4. Ejemplo de uso Intentemos ahora utilizar el sensor digital para el propósito previsto. Hagamos que el robot de dos ruedas responda a las lecturas de dos sensores ubicados a la izquierda y a la derecha. bucle.

Asegurémonos de que cuando se detecta un obstáculo, el robot se aleja de él en la dirección opuesta y luego continúa avanzando. Organicemos el programa en forma de diagrama de flujo del procedimiento.

Misiones
  1. Si todo salió bien, intenta completar algunas tareas más con el robot.
  2. Apunte los sensores de obstáculos hacia abajo para que el robot pueda detectar el borde de la mesa. Escribe un programa que evite que el robot se caiga de la mesa.
  3. Vuelva a apuntar los sensores hacia abajo, pero esta vez con un propósito diferente. Como descubrimos, el sensor puede distinguir una superficie negra de una blanca. Utilice esta propiedad para crear un rastreador robótico (también conocido como LineFollower).

Apunta los sensores hacia los lados y haz que el robot se mueva a lo largo de la pared.

Conclusión

Descripción y esquema de un sensor de obstáculos mediante rayos infrarrojos, que se ensambla en un microcircuito K561LN2. Uno de los problemas que hay que resolver en el desarrollo de electrodomésticos caseros, juguetes móviles y otros dispositivos automatizados similares es la detección y evitación de obstáculos, así como la detección de obstáculos y objetos que se aproximan.

El uso de sensores de contacto para estos fines no siempre es conveniente, porque requiere un contacto mecánico con un obstáculo, con un cierto umbral de fuerza que depende del diseño del sensor, lo que no siempre es deseable. Un sensor sin contacto que no siente el obstáculo, pero lo ve, es mucho más conveniente, confiable y efectivo.

Aquí hay una descripción sensor sencillo, que se ve en radiación infrarroja y está fabricado a partir de piezas de sistemas de control remoto de equipos domésticos. El alcance máximo de detección de obstáculos puede alcanzar un metro o más, pero si es mucho (por ejemplo, necesita reaccionar ante una aproximación de solo un centímetro), su alcance se puede reducir muy fácilmente aumentando la resistencia de la resistencia conectada. en serie con el LED IR emisor.

Diagrama esquemático

El diagrama del sensor se muestra en la figura del texto. Está fabricado sobre la base del microcircuito K561LN2, que contiene seis inversores de mayor capacidad de carga y dichos elementos del sistema. mando a distancia equipos como un LED infrarrojo y un receptor de fotografías infrarrojas. Fotodetector integral, a una frecuencia de modulación de flujo IR de 33 kHz.

Arroz. 1. Diagrama esquemático de un sensor de obstáculos mediante rayos IR.

Funcionalmente, el circuito consta de un receptor y un emisor. El receptor consta de un fotodetector integrado HF1 y un elemento lógico D1.1. El emisor consta de un LED IR HL1 y un generador de impulsos de 33 kHz basado en los elementos D1.2-D1.6. El fotodetector y el LED están ubicados uno al lado del otro en el tablero y dirigidos en una dirección: hacia el obstáculo.

tarjeta de circuito impreso

Arroz. 2. Placa de circuito impreso para el circuito del sensor.

Hay una partición opaca entre ellos. La sensibilidad (rango) se regula seleccionando la resistencia R3 (en el diagrama, la resistencia mínima da la máxima sensibilidad).

Gorbunov S. RK-2016-09.

lo más simple sensor de infrarrojos, que informará de la presencia de un obstáculo, se puede realizar con un solo transistor. Este producto casero probablemente no aplicación práctica, sino más bien teórico, que demuestra el funcionamiento de un sensor de obstáculos por infrarrojos. Por supuesto, nadie se molesta en hacer una aplicación práctica, por ejemplo, cuando se construyen robots simples.

Circuito del sensor de obstáculos por infrarrojos

El funcionamiento del circuito es muy sencillo. Un LED infrarrojo emite radiación infrarroja en un espectro invisible para el ojo humano. Si un objeto aparece en el camino de la radiación, entonces rayos infrarrojos comienzan a reflejarse en el objeto y regresan hacia el LED. Un fotoelemento infrarrojo (fotodiodo IR) sirve como trampa para estos rayos. Cuando los rayos reflejados inciden sobre él, su resistencia disminuye. Como resultado, la corriente en el circuito base del transistor aumenta y el transistor se abre. La carga del transistor es un LED azul que comienza a brillar. Puede conectar un timbre a la salida y escuchar una señal sonora.
Si no hay ningún obstáculo para el sensor, entonces los rayos no se reflejan y el transistor no se abre.
Puede tomar cualquier transistor de la misma estructura, puede usar el KT315 o KT3102 soviético.

Conjunto de sensores

El circuito está ensamblado. montado en la pared. No requiere configuración: funciona de inmediato. Lo alimento con una batería de 3,7 V.


Los robots aspiradores utilizan sensores infrarrojos, varios sistemas control, una imprenta normal definitivamente tendrá un par de estos, o incluso más, etc.

El dispositivo es un sencillo sensor de obstáculos digital, guiado por radiación infrarroja reflejada. Este sensor fue comprado en Aliexpress. El principio de funcionamiento es similar al esquema que se consideró recientemente.


sensor de infrarrojos obstáculos comprados en Ali

Diseño y parámetros.

Estructuralmente, el sensor es placa de circuito impreso 31 x 14 mm, la placa tiene un orificio de montaje.


Sensor de obstáculos por infrarrojos - placa de circuito impreso

El peso del sensor es de 2,7 g Para el suministro de energía y la transmisión de información, el sensor tiene un conector de tres clavijas, cuyas clavijas están marcadas.


Conector de conexión de sensores de tres pines
  • El dispositivo funciona con un voltaje constante en el rango de 3,3 a 5 V, el consumo de corriente es de 25 mA con un voltaje de alimentación de 3,3 V y 40 mA con un voltaje de 5 V.

El sensor contiene un LED infrarrojo y un fotodetector. La presencia de un obstáculo está determinada por la intensidad de la radiación infrarroja reflejada. Usando una resistencia de recorte en la placa del sensor, puede configurar la sensibilidad requerida del dispositivo. Según el fabricante, el sensor reacciona a obstáculos en el rango de 2 a 30 cm y el ángulo de visión del sensor es de 35 grados. El autor pudo ajustar el sensor a obstáculos en el rango de 3 a 8 cm, aunque el problema puede ser que solo se probó un sensor y, además, el ángulo de visión del sensor es bastante amplio. Tampoco hay que olvidar que varias superficies reflejan la radiación infrarroja de manera diferente, una superficie más "brillante" en este rango se detectará desde una distancia mayor que una oscura. En cualquier caso, este sensor es un "arma cuerpo a cuerpo".


Sensor de obstáculos por infrarrojos: tamaño de placa

Cuando aparece un obstáculo en el campo de visión del sensor, se establece una señal lógica cero en su salida de información. Si no hay ningún obstáculo en el campo de visión, entonces la señal de salida es lógica. Hay dos LED en el tablero del sensor, uno es un indicador de encendido y el otro es un indicador de respuesta del sensor, que se enciende cuando aparece un obstáculo en la zona de visibilidad.

Conexión a Arduino

Según el vendedor, el sensor está optimizado para Arduino, teniendo en cuenta la riqueza de dicho dispositivo sencillo, indicación y marcado, uno puede estar fácilmente de acuerdo con esto.


Sensor de obstáculos IR con Arduino

Para ver un ejemplo de cómo interactúa el sensor con la plataforma Arduino, puede tomar un programa que enciende un LED conectado al puerto digital 13 presionando un botón conectado al puerto digital 12 de la placa Arduino UNO. El programa fue tomado del sitio robocraft.ru.

/*
*LED con botón
*/

intledPin = 13; // CONDUJO
int btnPin = 12; // botón
valor int=0;

configuración nula()
{
pinMode(ledPin, SALIDA); // esta es la salida - LED
pinMode(btnPin, ENTRADA); // y este es el botón de entrada
Serie.begin(9600); // escribiremos en el puerto COM
}

bucle vacío()
{
val = digitalRead(btnPin); // descubre el estado del botón
if(val==ALTO) // botón presionado
{
escritura digital (ledPin, ALTA); // enciende el LED
Serial.println("H");
}
else // botón no presionado
{
escritura digital (ledPin, BAJO); //apaga el LED
Serial.println("L");
}
retraso(100);
}

En este caso, en lugar de un botón, se conecta un sensor. Después de cargar el programa en la memoria del microcontrolador, puede experimentar con diferentes modos de funcionamiento del sensor.

Conclusión sobre la compra.

En general, un buen sensor económico para sistemas de control táctil y orientación de robots. En este último caso, probablemente podría existir una alternativa o complemento a los finales de carrera que se activan cuando el robot entra en contacto con un obstáculo. Bien vale la pena el dinero. denev