Cómo conectar un sensor de infrarrojos a arduino. Teoría y práctica de sensores piroeléctricos pasivos o cómo hacer un indicador de dirección. Información general sobre el sensor.

Los sensores PIR (infrarrojos pasivos) le permiten detectar movimiento. Muy utilizado en sistemas de alarma. Estos sensores son de tamaño pequeño, económicos, consumen poca energía, son fáciles de operar y prácticamente no están sujetos a desgaste. Además de PIR, estos sensores se denominan sensores de movimiento piroeléctricos e infrarrojos.

Era necesario comprar un par de sensores para uso doméstico en sus artesanías basadas en iluminación LED.
Como mi consumo de corriente es relativamente pequeño y el voltaje de suministro es de 12 V, compré sensores de movimiento infrarrojos piroeléctricos compactos en la carcasa.

Paquete:

Pedí dos sensores con sensibilidad a la luz ajustable:

Los sensores soportan alimentación de 12 a 24 Voltios. Ya tienen cables estándar de unos 30 cm de largo con enchufes para entrada y salida, con un contacto central de 2,1 mm, y esto es una gran ventaja. No es necesario soldar nada, solo conecta la fuente de alimentación y usa:



Los sensores en sí son bastante compactos. Apariencia:





Dimensiones:







Para acceder al tablero y a los ajustes, debe abrir el estuche. La cubierta trasera tiene pestillos y se puede quitar con un destornillador:





El tablero se ve así:

Encontré un diagrama de este dispositivo, las calificaciones pueden diferir, pero en general, para comprender la esencia del trabajo, es correcto:

Aquí vemos un estabilizador de voltaje en la entrada para alimentar el microcircuito:


Por cierto, aquí está la hoja de datos de este elemento, está claro que diferentes marcas implican un voltaje estabilizado diferente en la salida. Pero Punto principal es que soporta voltaje de entrada hasta 24 Voltios, por lo que no se debe exceder.

Además, según el esquema, la salida es Transistor de efecto de campo, que es la clave en el circuito de carga de potencia:

La hoja de datos indica una corriente continua máxima a temperatura ambiente normal de 15 A, pero como no tenemos refrigeración de transistores, tenemos una potencia de salida limitada.

El corazón del dispositivo es el chip Biss0001. Este chip percibe una fuente de radiación externa y realiza un procesamiento mínimo de la señal para convertirla de analógica a digital:



Un sensor de movimiento PIR consiste esencialmente en un elemento sensor piroeléctrico (una pieza cilíndrica con un cristal rectangular en el centro) que detecta el nivel de radiación infrarroja. En realidad, el sensor está dividido en dos partes. Esto se debe a que lo importante para nosotros no es el nivel de radiación, sino la presencia inmediata de movimiento dentro de su zona de sensibilidad. Las dos mitades del sensor están configuradas de modo que si una mitad capta más radiación que la otra, la salida generará un valor alto o bajo.

Ahora vayamos directamente a los ajustes. Configuré el dispositivo y, en consecuencia, configuro qué girar y dónde:



El tiempo es ajustable desde 1 segundo hasta 500 segundos. Cuando el control deslizante está completamente subido, la luz simplemente parpadea.

En cuanto al umbral para encender el sensor, descubrí experimentalmente que este voltaje es de 11,5 voltios, si es menor, entonces el sensor simplemente no se enciende:

Del diagrama se desprende claramente que tensión de salida del sensor es menor o igual a la entrada. Lo configuré a 12V. hay un error en forma de indicación inexacta de la fuente de alimentación, por lo que el consumo del propio sensor es, por supuesto, menor:

En modo de espera, el sensor consume 84 µA y el voltaje de salida es de 170 mV.

Sinceramente, es muy inconveniente configurar el sensor sin la placa, así que hice agujeros en la tapa trasera y queda mucho mejor:

Monté el circuito y configuré todo:

Comprobado:

El sensor ya lleva dos días funcionando, instalé el segundo en la retroiluminación del soporte de los auriculares y me gusta, a diferencia del anterior, que funcionaba a 220 V, era más grande y hacía clic en un relé, este es más compacto y, por supuesto, silencioso.
No medí el alcance máximo, pero en un apartamento definitivamente funciona desde 3 metros.

¿Estoy contento con la compra? Sí. Un dispositivo completo y con acabados de alta calidad.

Lo que me gustó:
+ Modo de funcionamiento totalmente personalizable
+ Consumo propio mínimo
+ Calidad de construcción y compacidad
+ Claridad de funcionamiento sin omisiones
+.Presencia de cables con enchufes

Lo que no me gustó:
- Falta de acceso directo a la configuración sin desmontar el estuche (solucionado)
- Las orejas de montaje son muy pequeñas (pero es mejor sujetar con cinta de doble cara tipo 3M)

La tapa blanca del sensor está extraída de la carcasa negra, pero en la opción sin sensor de luz es negra.

Eso es todo.

Estoy pensando en comprar +43 Agregar a los favoritos Me gustó la reseña +40 +75

En nuestro mundo imperfecto, hay una gran demanda de diversos elementos técnicos diseñados para proteger la propiedad y la tranquilidad de los ciudadanos. Por tanto, creo que es difícil encontrar una persona que nunca haya visto alarmas de seguridad equipado con sensores de movimiento. Los principios físicos de su funcionamiento, así como su implementación, pueden variar, pero los sensores infrarrojos pasivos piroeléctricos (PIR) son probablemente los más comunes.

Algo como esto:


Reaccionan a los cambios en la radiación en rango infrarrojo, es decir, en su parte media - 5-15 micrones (el cuerpo del medio persona saludable emite en el rango de aproximadamente 9 micrones). Desde el punto de vista del usuario final, la cosa es muy simple: una entrada de energía (generalmente 12 voltios) y una salida de relé (generalmente de estado sólido y con contactos normalmente cerrados). Alguien cálido pasó sigilosamente: el relevo funcionó. Aburrimiento. Pero las cosas no son tan sencillas por dentro.
Hoy dedicaremos un poco de tiempo a la teoría y luego destripamos uno de esos dispositivos y lo convertimos no solo en un sensor que reacciona al hecho del movimiento, sino que registra la dirección del movimiento.

Pasemos a los ejercicios prácticos.

Armados con información teórica, consigamos un soldador. La foto muestra un sensor desmontado (se ha quitado la tapa frontal con lentes Fresnel y la pantalla metálica).


Observamos las marcas del microcircuito más cercano al sensor piroeléctrico (el redondo de metal con una ventana, eso es lo que es) y (¡oh, buena suerte!) resulta ser LM324, un amplificador operacional cuádruple. Al examinar los elementos circundantes, encontramos el pin del amplificador operacional que probablemente sea más adecuado para nuestros propósitos (en mi caso resultó ser el pin 1 del microcircuito). Ahora sería bueno comprobar si lo encontramos. Normalmente se utiliza un osciloscopio para esto. No lo tenía a mano. Pero resultó ser un Arduino. Dado que el nivel de la señal después de la amplificación es del orden de unos pocos voltios y no necesitamos una precisión de medición especial (suficiente evaluación cualitativa), entonces las entradas Arduino ADC son bastante adecuadas. Soldamos cables a la salida encontrada del amplificador operacional y a la fuente de alimentación negativa y los llevamos a la placa de pruebas. Los cables no deben ser largos. De lo contrario, existe la posibilidad de medir no la señal del sensor, sino algo completamente diferente.
Ahora pensemos en qué tan rápido necesitamos leer la señal para obtener algo sensato. Se ha dicho anteriormente que el rango de frecuencia de la señal útil está limitado a aproximadamente 10 Hz. Recordando el teorema de Kotelnikov (o el teorema de Nyquist, como prefieras), podemos concluir que no tiene sentido medir una señal con una frecuencia superior a 20 Hz. Aquellos. Un período de muestreo de 50 ms está bien. Estamos escribiendo un boceto simple que lee el puerto A1 cada 50 ms y vuelca su valor en la serie (estrictamente hablando, las mediciones de señal ocurren con menos frecuencia que cada 50 ms, ya que escribir en el puerto también lleva tiempo, pero para nuestros propósitos esto no es importante).

Sin firmar desde hace mucho tiempo; void setup() ( Serial.begin(9600); pinMode(A1, INPUT); time=millis(); ) void loop() ( if ((millis()-time) >= 50) ( Serial.println(analogRead (A1)); ) tiempo=millis(); )

Lo encendemos y agitamos las manos frente al sensor (puedes correr, es aún más útil). Del lado de la computadora, volcamos los datos del puerto en un archivo.
stty -F /dev/ttyUSB0 raw ispeed 9600 ospeed 9600 -ignpar cs8 -cstopb -echo cat /dev/ttyUSB0 > salida.txt
Construimos un gráfico (se ha agregado al archivo una columna con la numeración de lecturas):
gnuplot> traza "output.txt" usando 1:2 con líneas


Y vemos lo que realmente queríamos: sobretensiones multipolares. Hurra, la teoría funciona y el cable está soldado donde debe estar. Un simple análisis (es decir, un examen) del gráfico nos permite concluir que una desviación de la señal de 150 unidades del valor medio puede considerarse una indicación más o menos fiable de la presencia de movimiento.
Es hora de hacer finalmente un sensor de dirección de movimiento.
Modifiquemos el diagrama. Además de la señal del sensor analógico, conectaremos un par de LED al Arduino (puertos 2 y 3, no olvide las resistencias limitadoras de corriente) y escribiremos un boceto un poco más complejo.

Expandir

ent a1; int estado2=0; promedio largo=0; entero n=0; sin firmar mucho tiempo; void setup() ( pinMode(2, SALIDA); pinMode(3, SALIDA); pinMode(A1, ENTRADA); digitalWrite(2, LOW); digitalWrite(3, LOW); retardo (30000); //mi sensor después al encenderlo //antes de empezar a trabajar, se ralentiza durante 30 segundos time=millis(); //medimos la señal mil veces para //calcular su valor medio //para tener algo con qué contar las desviaciones while (n<= 1000) { ++n; a1=analogRead(A1); average=average+a1; delay(50); } average=average/1000; //одновременным включением светодиодов //сигнализируем, что система готова digitalWrite(2, HIGH); digitalWrite(3, HIGH); delay(1000); digitalWrite(2, LOW); digitalWrite(3, LOW); time=millis(); } void loop() { //опрашиваем датчик каждые 50 мс if ((millis()-time) >= 50) ( //con esta simple expresión convertimos la señal analógica // en una discreta con valores -1/0/1 a1=(analogRead(A1)-average)/150; // si hubiera un cambie la polaridad de la señal, luego // encienda el interruptor LED deseado (a1) ( caso 1: if (state2=-1) (digitalWrite(2, HIGH);digitalWrite(3, LOW);) state2= a1; romper; caso -1: if (estado2=1) (digitalWrite (2, LOW);digitalWrite(3, HIGH);) state2=a1; break; ) //repetir primera vez=millis(); ) )


Para dejar solo un par de todo el conjunto de rayos del patrón de radiación del sensor, cubrimos todas las lentes de Fresnel menos una con una pantalla de papel.


Disfrutamos del resultado.

Etiquetas:

  • PIR
  • Sensor de movimiento
  • arduino
Agregar etiquetas

PrincipiotrabajarPIR (infrarrojos pasivos)-sensores

Cualquier objeto que tenga una determinada temperatura se convierte en una fuente de radiación electromagnética (térmica), incluido el cuerpo humano. La longitud de onda de esta radiación depende de la temperatura y se encuentra en la parte infrarroja del espectro. Esta radiación es invisible al ojo y sólo es detectada por sensores. También se les llama sensores PIR.

Esta es una abreviatura de las palabras “infrarrojos pasivos” o sensores “infrarrojos pasivos”. Pasivo: porque los sensores en sí no emiten, sino que solo perciben radiación con una longitud de onda de 7 a 14 µm.

Una persona irradia calor. Su imagen térmica en rayos infrarrojos muestra la distribución de la temperatura sobre la superficie del cuerpo. Los objetos más cálidos parecen más claros, los objetos más fríos parecen más oscuros, porque... emiten menos calor.

El sensor PIR contiene un elemento sensor que responde a cambios en la radiación térmica. Si permanece constante, no se genera ninguna señal eléctrica.

Para que el sensor responda al movimiento, se utilizan lentes especiales (lentes Fresnel) con varias áreas de enfoque, que dividen la imagen térmica general en zonas activas y pasivas ubicadas en forma de tablero de ajedrez. Una persona, al encontrarse en la zona de funcionamiento del sensor, ocupa total o parcialmente varias zonas activas.

Por lo tanto, incluso con un movimiento mínimo, se produce un movimiento de una zona activa a otra, lo que activa el sensor. El patrón térmico de fondo suele cambiar de forma muy lenta y uniforme. El sensor no responde. La alta densidad de zonas activas y pasivas permite que el sensor detecte de forma fiable la presencia de una persona incluso con el más mínimo movimiento.

En este tutorial le mostraremos cómo hacer un sensor de movimiento usando un sensor ultrasónico (HC-SR04), que encenderá el LED cada vez. Los componentes de esta lección se pueden pedir en cualquier tienda conveniente y, eventualmente, en nuestro sitio web.

La lección es adecuada para principiantes, pero también será interesante para ingenieros más experimentados.

Paso 1: Piezas requeridas

A continuación se muestra la lista completa de componentes que necesitaremos para nuestra lección.

1 x placa Arduino (usamos Arduino Uno)
1 x LED (LED, el color no importa)
1 x Resistencia/Resistencia 220 ohmios
1 placa de desarrollo
1 cable USB Arduino.
1 batería de 9 V con clip (opcional)
6 cables

Paso 2: Colocación de piezas

Primero conecte el sensor ultrasónico y el LED a tablero de circuitos. Conecte el cable LED corto (cátodo) al pin GND (tierra) del sensor. Luego instale la resistencia en la misma fila que el cable LED más largo (ánodo) para que estén conectados.

Paso 3: conectar las piezas

Ahora necesitas conectar algunos cables en la parte posterior del sensor. Hay cuatro pines: VCC, TRIG, ECHO y GND. Después de insertar los cables, debe realizar las siguientes conexiones:

Finalice la resistencia a un pin digital de su elección, solo recuerde cambiarlo más adelante en el código.

Sensor -> Arduino
VCC -> 5V (potencia)
TRIG -> 5*
ECO -> 4*
GND -> GND (tierra)

* - se puede conectar a dos pines digitales de Arduino cualesquiera, solo asegúrese de cambiarlos en el código más adelante.

Paso 4: cargar código

Ahora puedes conectar el Arduino a tu computadora usando un cable USB. Abierto software Arduino y descarga el código que puedes encontrar a continuación. Las constantes están comentadas para que sepas exactamente qué hacen y probablemente puedas cambiarlas.

constante int ledPin = 6; // Salida LED digital const int trigPin = 5; // Salida digital para conectar TRIG const int echoPin = 4; // Salida digital para conectar ECHO const int ledOnTime = 1000; // Tiempo que el LED permanece encendido después de que se detecta movimiento (en milisegundos, 1000 ms = 1 s) const int trigDistance = 20; // Distancia (y valor menor) a la que se activa el sensor (en centímetros) int duración; distancia interna; configuración vacía() ( pinMode(ledPin, SALIDA); pinMode(trigPin, SALIDA); pinMode(echoPin, ENTRADA); ) void loop() ( digitalWrite(trigPin, LOW); digitalWrite(trigPin, ALTO); retraso(1) ; digitalWrite(trigPin, LOW); duración = pulseIn(echoPin, HIGH); distancia = duración * 0.034 / 2; if (distancia<= trigDistance) { digitalWrite(ledPin, HIGH); delay(ledOnTime); digitalWrite(ledPin, LOW); } delay(100); }

Paso 5: Resultado final (vídeo)

El resultado final del sensor de movimiento y su funcionamiento se puede ver en el vídeo a continuación.

¡Felices proyectos a todos!

Descripción general del sensor de espacio HC-SR501

El módulo sensor de movimiento (o presencia) HCSR501 basado en el efecto piroeléctrico consta de un sensor PIR 500BP (Fig. 1) con aislamiento eléctrico adicional en el chip BISS0001 y una lente Fresnel, que se utiliza para aumentar el radio de visión y amplificar el infrarrojo. señal (Figura 2). El módulo se utiliza para detectar el movimiento de objetos que emiten radiación infrarroja. El elemento sensible del módulo es un sensor PIR de 500BP. Su principio de funcionamiento se basa en la piroelectricidad. Se trata del fenómeno de la aparición de un campo eléctrico en los cristales cuando cambia su temperatura.

El funcionamiento del sensor está controlado por el chip BISS0001. Hay dos potenciómetros en el tablero, con el primero puedes ajustar la distancia de detección del objeto (de 3 a 7 m), con el segundo puedes ajustar el retraso después de la primera activación del sensor (5 - 300 segundos). El módulo tiene dos modos: L y H. El modo de funcionamiento se configura mediante un puente. Modo L: modo de actuación única, cuando se detecta un objeto en movimiento, la salida OUT se establece en un nivel de señal alto durante el tiempo de retardo establecido por el segundo potenciómetro. Durante este tiempo, el sensor no responde a objetos en movimiento. Este modo se puede utilizar en sistemas de seguridad para enviar una alarma a la sirena. En el modo H, el sensor se activa cada vez que se detecta movimiento. Este modo se puede utilizar para encender las luces. Cuando se enciende el módulo, se calibra; la duración de la calibración es de aproximadamente un minuto, después del cual el módulo está listo para funcionar. Es aconsejable instalar el sensor lejos de fuentes de luz abiertas.

Figura 1. Sensor PIR 500BP

Figura 2. Lente de Fresnel

HC-SR501 Especificaciones

  • Tensión de alimentación: 4,5-20 V
  • Consumo actual: 50 mA
  • Tensión de salida SALIDA: ALTA – 3,3 V, BAJA – 0 V
  • Intervalo de detección: 3-7 m
  • Duración del retraso después de la activación: 5 - 300 segundos
  • Ángulo de visión de hasta 120
  • Tiempo de bloqueo hasta la siguiente medición: 2,5 segundos.
  • Modos de funcionamiento: L - disparo único, H - disparo con cada evento
  • Temperatura de funcionamiento -20 a +80C
  • Dimensiones 32x24x18mm

Conexión de un sensor de movimiento por infrarrojos a Arduino

El módulo dispone de 3 salidas (Fig. 3):
  • VCC - fuente de alimentación 5-20 V;
  • GND - tierra;
  • SALIDA - salida digital (0-3,3V).

Figura 3. Asignación de pines y configuración del HC-SR501

Conectemos el módulo HC-SR501 a la placa Arduino (diagrama de conexión en la Fig. 4) y escribamos un boceto simple que señalará con una señal sonora y un mensaje al puerto serie cuando se detecte un objeto en movimiento. Para registrar las operaciones del microcontrolador, usaremos interrupciones externas en la entrada 2. Esta es una interrupción int0.

Figura 4. Diagrama de conexión para conectar el módulo HC-SR501 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. 5). Configuremos el módulo en el modo de funcionamiento L. Listado 1 // Bosquejo para revisar el sensor de movimiento/presencia HC-SR501 // sitio // contacto para conectar la salida del sensor #define PIN_HCSR501 2 // indicador de activación boolean flagHCSR501=false; // pin de conexión del altavoz int soundPin=9; // frecuencia de la señal de sonido int freq=587; void setup() ( // inicializa el puerto serie Serial.begin(9600); // inicia el procesamiento de interrupción int0 adjuntoInterrupt(0, intHCSR501,RISING); ) void loop() ( if (flagHCSR501 == true) ( ​​/ / Mensaje en el puerto serie Serial.println("¡¡¡Atención!!!"); // suena la alarma durante 5 segundos tone(soundPin,freq,5000); // restablece el indicador de activación flagHCSR501 = false; ) ) // interrumpe el procesamiento void intHCSR501() ( // configurando el indicador de activación del sensor flagHCSR501 = true; )

Figura 5. Salida del monitor del puerto serie

Utilizando potenciómetros experimentamos con la duración de la señal en la salida OUT y la sensibilidad del sensor (distancia de fijación del objeto).

Ejemplo de uso

Creemos un ejemplo de envío de un SMS cuando se activa un sensor de movimiento/presencia en un objeto protegido. Para ello utilizaremos un escudo GPS/GPRS. Necesitaremos las siguientes piezas:
  • placa arduino uno
  • Escudo GSM/GPRS
  • Transistor NPN, por ejemplo C945
  • resistencia de 470 ohmios
  • altavoz 8 ohmios 1W
  • alambres
Armamos el diagrama de conexión según la Fig. 6.

Figura 6. Diagrama de conexión

Cuando se activa el sensor, llamamos al procedimiento de envío de SMS con mensaje de texto. Atencionción!!! al número de TELÉFONO. El contenido del boceto se presenta en el Listado 2. El blindaje GSM/GPRS en el modo de envío de SMS consume corriente hasta 2 A, por lo que utilizamos una fuente de alimentación externa de 12V 2A. Listado 2 // Bosquejo 2 para la revisión del sensor de movimiento/presencia HC-SR501 // envío de sms cuando se activa el sensor // sitio // contacto para conectar la salida del sensor #define PIN_HCSR501 2 // indicador de activación booleano flagHCSR501 false; // pin de conexión del altavoz int soundPin=9; // frecuencia de la señal de sonido int freq=587; // Biblioteca de software en serie #include // número de teléfono para enviar sms #define PHONE "+79034461752" // Salidas para SoftwareSerial (puede tener 2,3) SoftwareSerial GPRS(7, 8); void setup() ( // inicializando el puerto serie Serial.begin(9600); // iniciando el procesamiento de interrupciones int0 adjuntoInterrupt(0, intHCSR501,RISING); // para intercambio con el escudo GPG/GPRS GPRS.begin(19200); ) void loop() ( if (flagHCSR501 == true) ( ​​​​// Mensaje al puerto serie Serial.println("¡¡¡Atención!!!"); // suena la alarma durante 5 segundos tono(soundPin,freq,5000) ; // enviar sms SendSMS(); // restablecer el indicador de activación flagHCSR501 = false; ) ) // interrumpir el procesamiento void intHCSR501() ( // configurar el indicador de activación del sensor flagHCSR501 = true; ) // subrutina para enviar sms void SendSMS () ( // configuración del comando AT modo texto GPRS.print("AT+CMGF=1\r"); retraso(100); // número de teléfono GPRS.print("AT + CMGS = \""); GPRS. print(TELÉFONO); GPRS. println("\""); retraso(200); // mensaje GPRS.println("¡¡¡Atención!!!"); retraso(200); // código ASCII ctrl+z – fin de Transmisión GPRS.println((char) 26); retraso(200); GPRS.println(); )

Preguntas frecuentes Preguntas frecuentes

1. El módulo no funciona cuando el objeto se mueve.
  • Compruebe que el módulo esté conectado correctamente.
  • Ajuste la distancia del gatillo usando el potenciómetro.
2. El sensor se activa con demasiada frecuencia.
  • Ajuste el retardo de duración de la señal usando el potenciómetro.
  • Configure el puente en modo de operación única L.


Si encuentra un error, seleccione un fragmento de texto y presione Ctrl+Entrar.