Pencahayaan tangga otomatis

Selamat siang, para pembaca yang budiman, saya ingin memperkenalkan Anda pada versi proyek saya untuk pencahayaan tangga otomatis berdasarkan pengontrol Arduino Pro Mini. Mungkin bagi seseorang artikel ini akan menjadi dasar untuk proyek mereka sendiri, tetapi bagi saya itu akan menyenangkan untuk membaca kritik yang ketat dalam komentar.

Tujuan proyek: untuk memasang pencahayaan tangga di lantai dua dalam kondisi berikut.
  1. Otomasi hanya berfungsi dalam gelap.
  2. .
  3. .
  4. .


Saya menggunakan Arduino Pro Mini yang akrab sebagai pengontrol.

Pertama, tentang tangga itu sendiri, jumlah langkahnya 11, lebarnya adalah 550 mm. Secara total, Anda memerlukan 6 m strip LED (dipesan 2 buah 5 m 5050 SMD), dengan tingkat perlindungan IP67 (yaitu, perlindungan terhadap debu dan air), sehingga Anda dapat menghapus debu dan tidak memikirkan apakah Anda mendapatkan tegangan atau kerusakan rekaman.

Setelah menghubungkan strip LED 5 meter, arus yang melalui itu ternyata hanya 2,5 A, yaitu, untuk strip LED 6 meter, dibutuhkan catu daya 36 W. Pilihan ditentukan pada catu daya Cina 12 V 8.3 A 100 watt. 100, tentu saja, banyak, tetapi 12 V diperlukan untuk proyek lain, jadi saya terhubung dengannya.

Saya menggunakan rangkaian reduksi tegangan sederhana menggunakan penstabil tegangan L7805CV dan dua kapasitor keramik 0,1 ฮผF dan 0,33 ฮผF sebagai catu daya untuk pengontrol itu sendiri, serta sensor (catu daya 5 V).

gambar

Sebagai sensor pengindera gerak, ia berhenti menggunakan sensor ultrasonik HC-SR04, karena sensor ini memancarkan sinar sempit pulsa ultrasonik dan Anda dapat mengatur jarak respons. Dengan demikian, dapat diatur untuk melacak persimpangan momentum di langkah pertama dan terakhir. Pergilah ke rincian karakteristik, metode koneksi, prinsip sensor Saya tidak melihat titik di Internet banyak informasi tentang mereka.

Masalah pengukuran pencahayaan juga diselesaikan dengan cukup sederhana dengan bantuan rangkaian pembagi tegangan di mana fotoresistor Gl5516 digunakan sebagai resistor variabel.

Selanjutnya, perhatikan jumlah kontak yang digunakan 11 digital untuk langkah-langkah, 4 untuk dua sensor dan satu analog untuk mengukur penerangan. Sebanyak 15 digital, yang tidak memberi kita Arduino. Tanpa berpikir dua kali, saya menggunakan chip 74NS595N, atau lebih tepatnya cascade dari dua register geser untuk meningkatkan jumlah output digital Arduino.

Setelah membaca literatur dan pendapat ham, saya meletakkan kapasitor keramik 0,1 ฮผF pada kaki ke-12 dari register pertama STcp, yang seharusnya meminimalkan kebisingan ketika pulsa โ€œlatchโ€ diterapkan. Ketika saya menguji kaskade "di atas meja", itu benar-benar berfungsi lebih baik dengan kapasitor, terutama ketika saya pertama kali memasok daya ke sirkuit mikro.

Satu hal untuk menghubungkan beban ringan, seperti LED, ke Arduino, hal lain adalah menghubungkan sepotong strip LED yang panjangnya 500-550 mm (arus maksimum dari output digital Arduino adalah 40 mA). Chip ULN2003A (perakitan Darlington) ternyata lebih mudah diakses bagi saya, arus maksimum melalui satu output yang 0,5.

gambar

Saya ingin mencatat bahwa pin Echo dari sensor kedua datang ke pin ke-13 Arduino, di mana LED dari pengontrol itu sendiri berada.

Ini dilakukan dengan sengaja, untuk kenyamanan, pada saat kondisi "apakah cukup gelap untuk memulai sensor pemungutan suara?" Apakah puas, LED pada kontak ke-13 mulai berkedip.

Saya menggambar papan di Sprint-Layout. Dia menekankan bahwa rangkaian mikro dan pengontrol dilepas, menyolder soket SCS-14 dan 16, serta soket pada papan PBS 2 ร— 12 2,54. Satu-satunya negatif adalah melengkungkan kaki chip 74NC595N ke arah lain.

gambar

Membuat sketsa


Saat menyusun sketsa, hanya satu perpustakaan Ultrasonik yang digunakan (untuk bekerja dengan sensor HC-SR04) dan itu bisa dihilangkan. Saya harus mengotak-atik operasi bit, karena itu perlu memuat dua byte ke kaskade register geser dengan cara tertentu (dalam sketsa saya membuat penjelasan yang jelas).

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


Fitur Pemasangan


Sekarang, tentang instalasi, lebih baik meletakkan strip LED di profil yang dibuat khusus untuk itu, tetapi biayanya cukup tinggi. Saya mengambil kabel saluran 12 ร— 12, memotong kelebihannya dengan pisau ulama merah-panas, dan berikut ini terjadi.

gambar

Untuk menyembunyikan sensor HC-SR04, saya menemukan kotak IEK 20 mm untuk mereka.

gambar

Pemasangan pelindung juga tidak sulit, karena pemasangan blok terminal sekrup sudah direncanakan sebelumnya di papan tulis.

gambar

Ringkasan


Proyek yang dihasilkan memuaskan semua tugas, selama operasi otomatisasi, tidak ada kegagalan atau komentar yang diperhatikan.

Satu-satunya hal, menurut saya, bisa membuat perisai lebih kompak dan benar-benar menutupnya dari mencongkel tangan.



Paket bundel


Arduino Pro Mini Atmega 328 Pengendali 5V 16MHz1
Sensor Ultrasonik HC-SR042
Catu daya 12 V 8.3 A 100 W1
LED strip 5050 SMD 5 m IP652
Chip 74NS595N2
Sirkuit terpadu ULN2003A2
PBS 1 ร— 40 slot 2,541
Kawat MGShV 0,75
Kabel PUNP 2 ร— 2.5
Kabel telepon SHTLP-4 0,12 ร— 7
1 Pemutus sirkuit kutub tunggal1
Pemutus sirkuit tiang tunggal 10 A1
Photoresistor Gl55161
Regulator Tegangan L7805CV1
Kapasitor Keramik 0,33 uF1
Kapasitor Keramik 0,1 uF2
10k ohm resistor1
Soket untuk chip SCS-142
Soket untuk SCS-162
Kotak distribusi IEK 20 mm2
Blok terminal sekrup dua pin13
Serat kaca 95 ร— 105 mm
Textolite
SRK melalui terminal lintas12
Saluran kabel 12 ร— 12 ร— 2000
Saluran kabel 16 ร— 16 ร— 2000
Habis (panas meleleh, lem Kristal Saat, solder, rosin, fluks TAG)
Pengencang (baut, mur, sekrup, pasak, klem)

Terima kasih atas perhatian anda

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


All Articles