Automatische Treppenbeleuchtung

Guten Tag, liebe Leser, ich möchte Ihnen meine Version des Projekts für die automatische Treppenbeleuchtung vorstellen, die auf dem Arduino Pro Mini-Controller basiert. Vielleicht wird dieser Artikel für jemanden die Grundlage für seine eigenen Projekte, aber für mich wird es schön sein, strenge Kritik in den Kommentaren zu lesen.

Projektziel: Montage der Treppenbeleuchtung im zweiten Stock unter folgenden Bedingungen.
  1. Die Automatisierung funktioniert nur im Dunkeln.
  2. .
  3. .
  4. .


Ich habe den bekannten Arduino Pro Mini als Controller verwendet.

Erstens beträgt die Anzahl der Stufen um die Treppe selbst 11, die Breite 550 mm. Insgesamt benötigen Sie 6 m LED-Streifen (bestellt 2 Stück 5 m 5050 SMD) mit der Schutzart IP67 (dh Schutz vor Staub und Wasser), damit Sie den Staub abwischen können und nicht darüber nachdenken müssen, ob Sie unter Spannung oder Beschädigung geraten Band.

Nach dem Anschließen eines 5-Meter-LED-Streifens betrug der Strom nur 2,5 A, dh für einen 6-Meter-LED-Streifen wird eine 36-W-Stromversorgung benötigt. Die Wahl fiel auf das chinesische Netzteil 12 V 8,3 A 100 Watt. 100 natürlich viel, aber 12 V wurden für ein anderes Projekt benötigt, also habe ich mich damit verbunden.

Ich habe eine einfache Spannungsreduzierungsschaltung mit dem Spannungsstabilisator L7805CV und zwei Keramikkondensatoren von 0,1 μF und 0,33 μF als Stromversorgung für den Controller selbst sowie für die Sensoren (5-V-Stromversorgung) verwendet.

Bild

Als Bewegungssensoren stoppte er bei HC-SR04 Ultraschallsensoren, da diese einen schmalen Strahl von Ultraschallimpulsen aussenden und Sie den Ansprechabstand einstellen können. Somit kann eingestellt werden, um den Schnittpunkt des Impulses im ersten und letzten Schritt zu verfolgen. Gehen Sie auf die Details der Eigenschaften, die Verbindungsmethode, das Prinzip des Sensors ein. Ich sehe im Internet nicht viele Informationen darüber.

Das Problem der Messung der Beleuchtung wurde ebenfalls ganz einfach mit Hilfe einer Spannungsteilerschaltung gelöst, in der der Gl5516-Fotowiderstand als variabler Widerstand verwendet wird.

Betrachten Sie als nächstes die Anzahl der verwendeten Kontakte 11 digital für Schritte, 4 für zwei Sensoren und einen analogen für die Messung der Beleuchtung. Insgesamt 15 digitale, was uns kein Arduino gibt. Ohne nachzudenken, habe ich den 74NS595N-Chip oder vielmehr eine Kaskade von zwei Schieberegistern verwendet, um die Anzahl der digitalen Arduino-Ausgänge zu erhöhen.

Nachdem ich die Literatur und Meinungen von Schinken gelesen hatte, legte ich einen 0,1 μF Keramikkondensator auf den 12. Zweig des ersten Registers STcp, um angeblich das Rauschen zu minimieren, wenn ein "Latch" -Puls angelegt wird. Wenn ich die Kaskade „auf dem Tisch“ teste, funktioniert sie mit dem Kondensator wirklich besser, insbesondere wenn ich die Mikroschaltung zum ersten Mal mit Strom versorge.

Es ist eine Sache, eine leichte Last wie eine LED an ein Arduino anzuschließen, eine andere Sache, ein Stück eines 500-550 mm langen LED-Streifens anzuschließen (der maximale Strom des digitalen Arduino-Ausgangs beträgt 40 mA). Der ULN2003A-Chip (Darlington-Baugruppe) erwies sich für mich als zugänglicher. Der maximale Strom durch einen Ausgang beträgt 0,5 A.

Bild

Ich möchte darauf hinweisen, dass der Echo-Pin des zweiten Sensors zum 13. Pin des Arduino kommt, auf dem sich die LED des Controllers selbst befindet.

Dies wurde aus Bequemlichkeitsgründen absichtlich in dem Moment durchgeführt, in dem die Bedingung „Ist es dunkel genug, um Sensoren abzufragen?“ Erfüllt ist. Die LED am 13. Kontakt beginnt zu blinken.

Ich habe die Tafel im Sprint-Layout gezeichnet. Er betonte, dass die Mikroschaltung und der Controller entfernt, die SCS-14- und 16-Buchsen sowie die Buchse auf der PBS 2 × 12 2.54-Platine verlötet wurden. Das einzig Negative war, die Beine der 74NC595N-Chips in die andere Richtung zu wölben.

Bild

Skizzieren


Bei der Erstellung der Skizze wurde nur eine Ultraschallbibliothek verwendet (für die Arbeit mit HC-SR04-Sensoren), auf die verzichtet werden konnte. Ich musste an Bitoperationen basteln, da es notwendig ist, zwei Bytes auf bestimmte Weise in die Kaskade der Schieberegister zu laden (in der Skizze habe ich klare Erklärungen abgegeben).

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


Montagefunktionen


In Bezug auf die Installation ist es besser, den LED-Streifen in einem speziell dafür erstellten Profil zu verlegen, aber die Kosten sind recht hoch. Ich nahm ein 12 × 12-Kanal-Kabel, schnitt den Überschuss mit einem glühenden Schreibmesser ab und Folgendes geschah.

Bild

Um die HC-SR04-Sensoren zu verstecken, habe ich eine 20-mm-IEK-Box für sie gefunden.

Bild

Die Installation der Abschirmung war ebenfalls nicht schwierig, da die Installation von Schraubklemmenblöcken im Voraus auf der Platine geplant war.

Bild

Zusammenfassung


Das resultierende Projekt erfüllte alle Aufgaben, während des Betriebs der Automatisierung wurden keine Fehler oder Kommentare festgestellt.

Das einzige, was meiner Meinung nach sein könnte, könnte sein, den Schild kompakter zu machen und ihn vor neugierigen Händen vollständig zu schließen.



Paketpaket


Arduino Pro Mini Atmega 328 Controller 5V 16MHz1
Ultraschallsensor HC-SR042
Spannungsversorgung 12 V 8,3 A 100 W.1
LED-Streifen 5050 SMD 5 m IP652
Chip 74NS595N2
Integrierte Schaltung ULN2003A2
PBS 1 × 40 2,54 Steckplatz1
MGShV-Draht 0,75
PUNP-Kabel 2 × 2,5
Telefonkabel SHTLP-4 0,12 × 7
1 Ein einpoliger Leistungsschalter1
Einpoliger Leistungsschalter 10 A.1
Fotowiderstand Gl55161
Spannungsregler L7805CV1
Keramikkondensator 0,33 uF1
Keramikkondensator 0,1 uF2
10k Ohm Widerstand1
Buchse für SCS-14-Chip2
Buchse für SCS-162
Verteilerkasten IEK 20 mm2
Zweipoliger Schraubklemmenblock13
Glasfaser 95 × 105 mm
Textolite
SRK durch Durchgangsterminal12
Kabelkanal 12 × 12 × 2000
Kabelkanal 16 × 16 × 2000
Verbrauchsmaterialien (Schmelze, Moment Crystal Kleber, Lot, Kolophonium, TAGS-Flussmittel)
Befestigungselemente (Bolzen, Muttern, Schrauben, Dübel, Klemmen)

Vielen Dank für Ihre Aufmerksamkeit.

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


All Articles