Éclairage d'escalier automatique

Bonjour, chers lecteurs, je voudrais vous présenter ma version du projet d'éclairage automatique des escaliers basé sur le contrôleur Arduino Pro Mini. Peut-être que pour quelqu'un cet article deviendra la base de leurs propres projets, mais pour moi ce sera agréable de lire une critique stricte dans les commentaires.

Objectif du projet: monter l'éclairage de l'escalier au deuxième étage dans les conditions suivantes.
  1. L'automatisation ne fonctionne que dans l'obscurité.
  2. .
  3. .
  4. .


J'ai utilisé l'Arduino Pro Mini familier comme contrôleur.

Tout d'abord, à propos de l'escalier lui-même, le nombre de marches est de 11, la largeur est de 550 mm. Au total, vous avez besoin de 6 m de bande LED (commandée 2 pièces de 5 m 5050 SMD), avec un degré de protection IP67 (c'est-à-dire une protection contre la poussière et l'eau), afin que vous puissiez essuyer la poussière et ne pas penser à la tension ou aux dommages bande.

Après avoir connecté une bande de LED de 5 mètres, le courant à travers elle s'est avéré être seulement de 2,5 A, c'est-à-dire que pour une bande de LED de 6 mètres, une alimentation de 36 W est nécessaire. Le choix s'est porté sur l'alimentation chinoise 12 V 8,3 A 100 watts. 100, bien sûr, beaucoup, mais 12 V étaient nécessaires pour un autre projet, donc je me suis connecté.

J'ai utilisé un simple circuit de réduction de tension utilisant le stabilisateur de tension L7805CV et deux condensateurs en céramique 0,1 μF et 0,33 μF comme alimentation pour le contrôleur lui-même, ainsi que les capteurs (alimentation 5 V).

image

En tant que capteurs de détection de mouvement, il s'est arrêté sur les capteurs à ultrasons HC-SR04, car ils émettent un faisceau étroit d'impulsions ultrasonores et vous pouvez régler la distance de réponse. Ainsi, il peut être réglé pour suivre l'intersection de l'élan dans les première et dernière étapes. Entrez dans les détails des caractéristiques, la méthode de connexion, le principe du capteur, je ne vois pas le point sur Internet beaucoup d'informations à leur sujet.

Le problème de la mesure de l'éclairage a également été résolu tout simplement à l'aide d'un circuit diviseur de tension dans lequel la photorésistance Gl5516 est utilisée comme résistance variable.

Ensuite, considérez le nombre de contacts utilisés: 11 numériques pour les étapes, 4 pour deux capteurs et un analogique pour mesurer l'éclairage. Un total de 15 numériques, ce qui ne nous donne pas Arduino. Sans y réfléchir à deux fois, j'ai utilisé la puce 74NS595N, ou plutôt une cascade de deux registres à décalage pour augmenter le nombre de sorties numériques Arduino.

Après avoir lu la littérature et les opinions sur les jambons, j'ai mis un condensateur céramique 0,1 μF sur la 12e jambe du premier registre STcp, censé minimiser le bruit lorsqu'une impulsion de «verrouillage» est appliquée. Lorsque je teste la cascade «sur la table», cela fonctionne vraiment mieux avec le condensateur, surtout lorsque je fournis pour la première fois du courant au microcircuit.

C'est une chose de connecter une charge légère, comme une LED, à un Arduino, une autre chose est de connecter un morceau de bande LED de 500 à 550 mm de long (le courant maximum de la sortie numérique Arduino est de 40 mA). La puce ULN2003A (assemblage Darlington) s'est avérée être plus accessible pour moi, le courant maximal à travers une sortie étant de 0,5 A.

image

Je tiens à noter que la broche Echo du deuxième capteur vient à la 13e broche de l'Arduino, sur laquelle se trouve la LED du contrôleur lui-même.

Cela a été fait exprès, par commodité, au moment où la condition «est-il suffisamment sombre pour commencer à interroger les capteurs?».

J'ai dessiné le tableau dans Sprint-Layout. Il a souligné que le microcircuit et le contrôleur avaient été retirés, soudé les prises SCS-14 et 16, ainsi que la prise de la carte PBS 2 × 12 2.54. Le seul point négatif était de cambrer les pattes des puces 74NC595N dans l'autre sens.

image

Esquisse


Lors de la compilation de l'esquisse, une seule bibliothèque ultrasonique a été utilisée (pour travailler avec les capteurs HC-SR04) et cela a pu être supprimé. J'ai dû bricoler avec des opérations de bits, car il est nécessaire de charger deux octets dans la cascade de registres à décalage d'une certaine manière (dans le croquis, j'ai fait des explications claires).

Esquisse
// *** 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(); // .
}


Caractéristiques de montage


Maintenant, à propos de l'installation, il est préférable de placer la bande LED dans un profil spécialement créé pour elle, mais son coût est assez élevé. J'ai pris un câble 12 × 12 canaux, coupé l'excédent avec un couteau de bureau chauffé au rouge, et ce qui s'est produit est arrivé.

image

Pour cacher les capteurs HC-SR04, j'ai trouvé un boîtier IEK de 20 mm pour eux.

image

L'installation du blindage n'a pas été difficile non plus, puisque l'installation de borniers à vis était prévue à l'avance sur la carte.

image

Résumé


Le projet résultant a satisfait toutes les tâches, pendant le fonctionnement de l'automatisation, aucun échec ou commentaire n'a été remarqué.

La seule chose, à mon avis, pourrait être de rendre le bouclier plus compact et de le fermer complètement des mains indiscrètes.



Paquet de paquet


Contrôleur Arduino Pro Mini Atmega 328 5V 16MHz1
Capteur à ultrasons HC-SR042
Alimentation 12 V 8,3 A 100 W1
Ruban LED 5050 SMD 5 m IP652
Chip 74NS595N2
Circuit intégré ULN2003A2
Emplacement PBS 1 × 40 2,541
Fil MGShV 0,75
Câble PUNP 2 × 2,5
Câble téléphonique SHTLP-4 0,12 × 7
1 Un disjoncteur unipolaire1
Disjoncteur unipolaire 10 A1
Photorésistance Gl55161
Régulateur de tension L7805CV1
Condensateur céramique 0,33 uF1
Condensateur céramique 0,1 uF2
Résistance 10k ohms1
Prise pour puce SCS-142
Prise pour SCS-162
Boîte de distribution IEK 20 mm2
Bornier à vis à deux broches13
Fibre de verre 95 × 105 mm
Textolite
SRK à travers le terminal de passage12
Canal de câble 12 × 12 × 2000
Canal de câble 16 × 16 × 2000
Consommables (hot melt, colle Moment Crystal, soudure, colophane, flux TAGS)
Fixations (boulons, écrous, vis, chevilles, pinces)

Merci de votre attention.

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


All Articles