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.- La automatización solo funciona en la oscuridad.
- .
- .
- .
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 adhesivaDespué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).
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.
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.
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.
Para ocultar los sensores HC-SR04, encontré una caja IEK de 20 mm para ellos.
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.
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 16MHz | 1 |
Sensor ultrasónico HC-SR04 | 2 |
Fuente de alimentación 12 V 8.3 A 100 W | 1 |
Tira de LED 5050 SMD 5 m IP65 | 2 |
Chip 74NS595N | 2 |
Circuito integrado ULN2003A | 2 |
PBS 1 × 40 2.54 ranura | 1 |
Cable MGShV 0.75 | |
Cable PUNP 2 × 2.5 | |
Cable telefónico SHTLP-4 0.12 × 7 | |
1 disyuntor unipolar | 1 |
Disyuntor unipolar 10 A | 1 |
Fotoresistor Gl5516 | 1 |
Regulador de voltaje L7805CV | 1 |
Condensador de cerámica 0.33 uF | 1 |
Condensador de cerámica 0.1 uF | 2 |
Resistencia de 10k ohmios | 1 |
Zócalo para chip SCS-14 | 2 |
Zócalo para SCS-16 | 2 |
Caja de distribución IEK 20 mm | 2 |
Bloque de terminales de tornillo de dos clavijas | 13 |
Fibra de vidrio 95 × 105 mm. | |
Textolita | |
SRK a través del terminal de paso | 12 |
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