Iluminación de escalera automática

Buenas tardes, queridos lectores, me gustaría presentarles mi versión del proyecto para la iluminación automática de escaleras basada en el controlador Arduino Pro Mini. Quizás para alguien este artículo se convierta en la base de sus propios proyectos, pero para mí sería bueno leer críticas estrictas en los comentarios.

Objetivo del proyecto: montar la iluminación de la escalera en el segundo piso en las siguientes condiciones.
  1. La automatización solo funciona en la oscuridad.
  2. .
  3. .
  4. .


Usé el conocido Arduino Pro Mini como controlador.

Primero, sobre la escalera en sí, el número de escalones es 11, el ancho es de 550 mm. En total, necesita 6 m de tira de LED (ordenó 2 piezas de 5 m 5050 SMD), con un grado de protección IP67 (es decir, protección contra el polvo y el agua), para que pueda limpiar el polvo y no pensar si está bajo voltaje o daño cinta adhesiva

Después de conectar una tira de LED de 5 metros, la corriente a través de ella resultó ser de solo 2.5 A, es decir, para una tira de LED de 6 metros, se necesita una fuente de alimentación de 36 W. La elección se basó en la fuente de alimentación china 12 V 8.3 A 100 vatios. 100, por supuesto, mucho, pero se necesitaban 12 V para otro proyecto, así que me conecté a él.

Utilicé un circuito de reducción de voltaje simple usando el estabilizador de voltaje L7805CV y dos condensadores de cerámica de 0.1 μF y 0.33 μF como fuente de alimentación para el controlador, así como los sensores (fuente de alimentación de 5 V).

imagen

Como sensores de detección de movimiento, me detuve en los sensores ultrasónicos HC-SR04, ya que emiten un haz estrecho de pulsos ultrasónicos y puede ajustar la distancia de respuesta. Por lo tanto, se puede configurar para rastrear la intersección del impulso en el primer y último paso. Entra en los detalles de las características, el método de conexión, el principio del sensor No veo el punto en Internet mucha información sobre ellos.

El problema de la medición de la iluminación también se resolvió simplemente con la ayuda de un circuito divisor de voltaje en el que el fotoresistor Gl5516 se usa como una resistencia variable.

Luego, considere la cantidad de contactos utilizados 11 digitales para los pasos, 4 para dos sensores y un análogo para medir la iluminación. Un total de 15 digitales, lo que no nos da Arduino. Sin pensarlo dos veces, utilicé el chip 74NS595N, o más bien una cascada de dos registros de desplazamiento para aumentar el número de salidas digitales Arduino.

Después de leer la literatura y las opiniones de los jamones, puse un condensador de cerámica de 0.1 μF en la 12ma pata del primer STcp de registro, supuestamente para minimizar el ruido cuando se aplica un pulso de "enganche". Cuando pruebo la cascada "sobre la mesa", realmente funciona mejor con el condensador, especialmente cuando suministra energía por primera vez al microcircuito.

Una cosa es conectar una carga ligera, como un LED, a un Arduino, otra cosa es conectar un trozo de tira de LED de 500-550 mm de largo (la corriente máxima de la salida digital de Arduino es de 40 mA). El chip ULN2003A (ensamblaje Darlington) resultó ser más accesible para mí, la corriente máxima a través de una salida de la cual es 0.5 A.

imagen

Quiero señalar que el pin Echo del segundo sensor llega al pin 13 del Arduino, en el que se encuentra el LED del controlador.

Esto se hizo a propósito, por conveniencia, en el momento en que la condición “¿está lo suficientemente oscura como para comenzar a sondear sensores?” Se cumple, el LED en el 13º contacto comienza a parpadear.

Dibujé el tablero en Sprint-Layout. Hizo hincapié en que se quitaron el microcircuito y el controlador, se soldaron los zócalos SCS-14 y 16, así como el zócalo en la placa PBS 2 × 12 2.54. Lo único negativo fue arquear las patas de los chips 74NC595N en la otra dirección.

imagen

Dibujar


Al compilar el boceto, solo se usó una biblioteca ultrasónica (para trabajar con sensores HC-SR04) y se pudo prescindir de ella. Tuve que jugar con las operaciones de bit, ya que es necesario cargar dos bytes en la cascada de registros de desplazamiento de cierta manera (en el boceto hice explicaciones claras).

Bosquejo
// *** V1***
//
#include "Ultrasonic.h"

//
#define Trig_1 10 // .
#define Echo_1 11
#define Trig_2 12 // .
#define Echo_2 13
#define Ds 8 // Ds/SDI 75HC595N_1.
#define STcp 7 // STcp/RCLK 75HC595_1, 2.
#define SHcp 6 // SHcp/SRCLK 75HC595_1, 2.
#define LDR A0 // .

Ultrasonic Sensor_1(Trig_1, Echo_1); // .
Ultrasonic Sensor_2(Trig_2, Echo_2); // .

//
const int Limit = 100; // .
const float Min_Disrance = 50.0; /* ,
55 .*/

boolean Up_Sensor_Started = false; // .
boolean Down_Sensor_Started = false; // .

const int Read_Delay = 50; // .

unsigned int leds = 0; // .
const int N = 10; /* .
! 14- 2 .*/
const int T_Ladder = 3000; // .
const int T_Stair = 500; // .

void setup()
{
pinMode(Ds, OUTPUT);
pinMode(STcp, OUTPUT);
pinMode(SHcp, OUTPUT);
// Serial.begin(9600); // 9600 .
}

void loop()
{
int LDR_Value = analogRead(LDR); // .
// Serial.println(LDR_Value); // 0 1023.
if(LDR_Value < Limit) // " ?".
{
Down_Sensor(); // .
if(Down_Sensor_Started) // .
// , ...
{
Down_Sensor_Started = false; // .
Up_Sensor_Started = false;
Turing_Upward(); // .
}
else
// ...
{
Up_Sensor(); // ...
if(Up_Sensor_Started) // .
// , ...
{
Down_Sensor_Started = false; // .
Up_Sensor_Started = false;
Turing_Downward(); // .
}
}
delay(Read_Delay); // .
}
}

//
void Up_Sensor()
{
if((Sensor_1.Ranging(CM) < Min_Disrance) && (Sensor_1.Ranging(CM) > 0))
// , ...
{
Up_Sensor_Started = true; // .
}
}

//
void Down_Sensor()
{
if((Sensor_2.Ranging(CM) < Min_Disrance) && (Sensor_2.Ranging(CM) > 0))
// , ...
{
Down_Sensor_Started = true; // .
}
}

//
void updateShiftRegister()
{
digitalWrite(STcp, LOW); // .
byte First = lowByte(leds); /* ,
shiftOut 8 .*/
byte Second = highByte(leds);
shiftOut(Ds, SHcp, MSBFIRST, Second); // 1- .
shiftOut(Ds, SHcp, MSBFIRST, First); // 2- .
digitalWrite(STcp, HIGH); // .
}

//
void Turing_Upward()
{
for (int i = 0; i <= N; i++)
{
bitSet(leds, i); // N 1 ( HIGH).
updateShiftRegister(); // .
delay(T_Stair); // .
}
// Serial.println(leds, BIN); // .
delay(T_Ladder); // .
leds = 0; // .
updateShiftRegister(); // .
}

//
void Turing_Downward()
{
for (int i = N; i >= 0; i--)
{
bitSet(leds, i); // N 1 ( HIGH).
updateShiftRegister(); // .
delay(T_Stair); // .
}
delay(T_Ladder); // .
leds = 0; // .
updateShiftRegister(); // .
}


Características de montaje


Ahora, sobre la instalación, es mejor colocar la tira de LED en un perfil especialmente creado para ella, pero su costo es bastante alto. Tomé un cable de 12 × 12 canales, corté el exceso con un cuchillo de oficina al rojo vivo, y sucedió lo siguiente.

imagen

Para ocultar los sensores HC-SR04, encontré una caja IEK de 20 mm para ellos.

imagen

La instalación del escudo tampoco fue difícil, ya que la instalación de bloques de terminales de tornillo se planeó de antemano en el tablero.

imagen

Resumen


El proyecto resultante satisfizo todas las tareas, durante la operación de la automatización, no se notaron fallas ni comentarios.

Lo único, en mi opinión, podría ser hacer el escudo más compacto y cerrarlo completamente de las manos curiosas.



Paquete paquete


Controlador Arduino Pro Mini Atmega 328 5V 16MHz1
Sensor ultrasónico HC-SR042
Fuente de alimentación 12 V 8.3 A 100 W1
Tira de LED 5050 SMD 5 m IP652
Chip 74NS595N2
Circuito integrado ULN2003A2
PBS 1 × 40 2.54 ranura1
Cable MGShV 0.75
Cable PUNP 2 × 2.5
Cable telefónico SHTLP-4 0.12 × 7
1 disyuntor unipolar1
Disyuntor unipolar 10 A1
Fotoresistor Gl55161
Regulador de voltaje L7805CV1
Condensador de cerámica 0.33 uF1
Condensador de cerámica 0.1 uF2
Resistencia de 10k ohmios1
Zócalo para chip SCS-142
Zócalo para SCS-162
Caja de distribución IEK 20 mm2
Bloque de terminales de tornillo de dos clavijas13
Fibra de vidrio 95 × 105 mm.
Textolita
SRK a través del terminal de paso12
Canal de cable 12 × 12 × 2000
Canal de cable 16 × 16 × 2000
Consumibles (fusión en caliente, pegamento Moment Crystal, soldadura, colofonia, fundente TAGS)
Sujetadores (pernos, tuercas, tornillos, tacos, abrazaderas)

Gracias por su atencion

Source: https://habr.com/ru/post/es397315/


All Articles