Sensor posisi sakelar lampu darurat

Sebelum semua orang yang merancang sistem penerangan darurat otonom, cepat atau lambat, muncul masalah menyalakan dan mematikan lampu darurat. Bagaimana melakukan ini dengan cara yang paling nyaman dan transparan, agar tidak merusak desain kamar dengan sakelar tambahan?


Salah satu solusi di bawah luka.


Latar Belakang


Di dunia modern, banyak hal terkait dengan catu daya yang tidak terputus. Sebagian besar jenis kegiatan intelektual sudah tak terbayangkan tanpa komputer dan komunikasi yang beroperasi 24/7. Ini tidak baik atau buruk, dan Anda harus hidup dengannya. Terutama jika tempat kerja Anda tidak di kantor modern, diisi dengan UPS dan generator diesel cadangan, tetapi di apartemen sebuah bangunan bertingkat tinggi perumahan biasa. Dan kebetulan bahwa keandalan pasokan energi perumahan di sebagian besar kota-kota bekas Uni Soviet meninggalkan banyak hal yang diinginkan. Akibatnya, ulir yang menghubungkan outlet rumah dan pembangkit listrik terdekat memiliki kebiasaan buruk putus secara berkala. Kapan setiap enam bulan, dan kapan dan tiga kali sehari.

Itulah sebabnya, ketika memulai perbaikan di apartemen baru, saya awalnya memasang kabel paralel dalam proyek untuk catu daya dan penerangan yang tidak terputus.

Saya ingin sekali memiliki generator kuat dengan ICE, yang mampu memberikan daya normal ke seluruh apartemen, tetapi saya harus meninggalkan ide ini. Di rumah pribadi, pertanyaannya tidak akan muncul sama sekali, tetapi apartemen adalah hal lain.

Masalah pertama adalah penghapusan gas buang, yang sama sekali tidak bisa ditempatkan di apartemen rumah dengan pemanas sentral. Nah, Anda tidak akan membuang selang tepat di luar jendela, di mana asap langsung tersedot ke jendela tetangga terdekat yang terbuka.

Masalah kedua adalah kebisingan. Ya, generator empat-stroke inverter modern, ketika Anda mendengarnya di jalan, dapat tampak sangat sunyi. Dan jika Anda menggantung peredam tambahan, maka benar-benar diam. Tapi percayalah, dalam keadaan deenergisasi, yang berarti bangunan apartemen yang benar-benar sepi, bahkan gemuruh yang sepi seperti itu akan dapat didengar oleh semua tetangga.

Singkatnya, ide dengan generator mati, begitu jelas dan tidak lahir. Dari opsi nyata yang tersisa, hanya baterai yang tersisa.

Lebih jauh, saya membiarkan diri saya sebuah narasi sederhana tentang cobaan emosional dan keputusan yang dibuat pada orang pertama tanpa klaim kebenaran universal. Dan saya segera memperingatkan bahwa argumen saya kepada seseorang mungkin tampak tidak meyakinkan, dan keputusan yang diambil kontroversial. Tetapi, bagaimanapun, semua yang dijelaskan di sini saat ini diimplementasikan dalam perangkat keras dan berhasil melakukan tugas-tugas.

Dan jika ada orang yang tertarik pada sisi praktis masalah ini dan tidak peduli bagaimana saya dapat hidup seperti itu, ia dapat melewatkan banyak surat dan langsung ke deskripsi solusi yang sudah jadi.

Secara singkat tentang memilih jenis baterai


Dan meskipun masalah ini tidak ada hubungannya dengan topik artikel, saya ingin memasukkan lima sen saya di sini juga. Selain itu, yang tak terhindarkan muncul di bawah pernyataan seperti diskusi sering membawa banyak informasi yang berguna lulz .

Saat ini, di abad perkembangan pesat energi alternatif, sistem catu daya tak terputus yang diproduksi secara industri yang terjangkau untuk rumah, dikombinasikan dengan pembangkit listrik tenaga surya atau angin, telah mulai muncul. Yang paling canggih di antara mereka menggunakan baterai lithium-ion dengan tumpukan "penambah" elektronik yang efektif dari keseluruhan sistem.

Dalam kasus saya, tidak ada pembicaraan tentang pembangkit listrik mini karena alasan obyektif, dan hanya sumber cadangan, yang dapat diperbarui dari outlet biasa selama “pencerahan”, yang menarik. Oleh karena itu, diputuskan untuk mengumpulkan semua barang elektronik UPS apartemen secara mandiri. Dan karena tangan saya benar-benar terlepas, hal pertama yang perlu diputuskan adalah jenis baterai yang digunakan.

Pada awalnya, saya berpikir seperti ini: "Mengapa tidak lithium? Pemuda trendi yang trendi. Disegel, hemat energi, tahan lama. " Tetapi ketika saya melihat harga, semangat lithium saya terasa mereda. Pencarian cepat dalam kombinasi dengan aritmatika sekolah menunjukkan bahwa bahkan bank "26650" Cina yang sangat "bodoh" dengan (tentu saja) 5.000 mAH yang paling jujur ​​akan berharga lima kali lebih banyak daripada baterai asam dengan intensitas energi yang sama. Dan jika Anda memilih sesuatu yang bukan dari bawah harga yang diurutkan berdasarkan harga, perbedaannya dengan mudah mencapai 8-10 kali.

Dan bagaimana Anda bisa menebus perbedaan yang begitu besar dalam nilai?

Ya, lithium menyimpan energi lebih efisien untuk setiap kilogram dan meter kubik, dan baterai seukuran balok rokok dengan mudah mencurahkan baterai timbal-asam sepuluh kilogram. Tetapi apakah fakta ini sangat penting untuk penggunaan alat tulis?

Tentu saja, "lithium" yang bagus, tetapi dengan pendekatan yang tepat akan bertahan lebih lama. Tapi sepuluh kali?

Pada saat yang sama, di sisi lain dari skala, potensi ledakan baterai yang tidak diketahui asalnya, algoritma pengisian yang lebih kompleks, masalah dengan pembuangan (di mana setiap orang tunawisma tahu cara menggunakan baterai timah, sedangkan lithium jauh lebih rumit).

Singkatnya, dengan jumlah faktor, saya memutuskan untuk menunda ide lithium sampai iterasi berikutnya. Mungkin dalam beberapa tahun sesuatu akan berubah, tetapi untuk sekarang, memimpin adalah segalanya bagi kita.

, , . , , , .

Adapun baterai timbal, ada juga beberapa opsi. Pilihan "benar" adalah baterai cadangan khusus, yang digunakan dalam UPS, di stasiun pangkalan komunikasi seluler, dan tempat-tempat serupa lainnya di mana mereka diharuskan untuk dapat mengambil dan mengirimkan arus besar, kadang-kadang mengalami pelepasan yang kuat, dan memang bekerja tanpa mengganggu orang. untuk layanan.

Pilihan "benar" lainnya adalah baterai traksi untuk pemuat-otomatis listrik atau, apa-apaan, kapal selam diesel. Baterai ini memiliki daya tahan tinggi dan toleransi yang baik terhadap pelepasan yang dalam, sementara tidak menghilangkan kesempatan dari pemilik untuk "mengisi air."

Nah, opsi "salah" adalah baterai starter dari bengkel mobil terdekat. Baterai seperti itu dapat secara singkat memberikan daya hingga satu kilowatt ke gunung, tetapi pelepasan apa pun sangat menyusahkannya, seperti bekerja untuk orang yang malas. Dan kemuliaan baterai sekali pakai umumnya tertanam dalam baterai kalsium modern: "habis - ganti."

Baiklah, kalau begitu, saya harap tidak ada yang meragukan pilihan mana yang akhirnya saya pilih untuk implementasi? Benar, ketiga. Dan alasan di sini tidak hanya terletak pada amfibi berkutil yang terkenal, tetapi juga dalam perhitungan pragmatis sederhana. Baterai starter beberapa kali lebih murah daripada semua opsi lain, terkadang mendekati nilai lithium. Dan alih-alih mengguncang baterai yang mahal, Anda merasa jauh lebih bebas dalam situasi ketidakpedulian yang sehat, ketika penggantian menghasilkan kerugian dalam jumlah yang dibutuhkan untuk makanan selama beberapa minggu. Selain itu, jika Anda tidak membiarkan baterai ini habis sebelum kehilangan denyut nadi, maka masa pakai mereka dalam peran cadangan dihitung selama bertahun-tahun. Anda selalu dapat menempatkan baterai dengan kapasitas lebih besar, mengatur batas debit lebih lembut, dan masih mendapatkan rasio harga / kapasitas yang lebih baik daripada baterai "benar",menderita keputihan yang dalam.

Hal utama dalam hal ini adalah menyediakan ventilasi setidaknya pada tingkat "lubang di dinding" di tempat pemasangan baterai. Nah, atur perlindungan dangkal terhadap arus pendek, karena tegangan rendah dari sumber arus menumpulkan kewaspadaan dan semuanya bisa berakhir sangat buruk.

Perang saat ini di satu apartemen


Setelah beberapa jaminan moral yang disebabkan oleh keputusan akhir tentang jenis baterai, alasan baru segera muncul untuk berpikir dengan hati-hati.

Biarkan saya mengingatkan Anda bahwa pada awalnya saya ingin mendapatkan generator arus bolak-balik untuk 230 V. Namun, setelah berdamai dengan realitas objektif dan secara mental beralih ke baterai, inersia pemikiran telah membawa saya ke pasar online Cina yang terkenal untuk memilih konverter DC ke AC yang sesuai. Dan dalam proses mempelajari karakteristik, istilah "gelombang sinus yang dimodifikasi", yang dilupakan, pertama kali muncul, dan kemudian akal sehat mulai mengajukan pertanyaan tidak nyaman.

Inti pertanyaan adalah sebagai berikut. Untuk menutupi semua kebutuhan energi apartemen dengan baterai kecil masih tidak akan berfungsi. Boiler, microwave, mesin cuci, komputer desktop yang kuat akan tetap tak tertahankan daya. Dan kulkas, kap mesin, dan bahkan kipas dangkal tidak akan dapat berfungsi dengan baik karena gelombang sinus yang sangat dimodifikasi ini. Tentu saja, ada inverter dengan gelombang sinus yang sebenarnya, tetapi mereka tidak hanya lebih mahal, tetapi juga kurang efisien. Dan masalah konsumen yang kuat masih belum terselesaikan.

Konsumen apa yang tetap dalam anggaran? Tidak begitu banyak dari mereka: elektronik konsumen seperti laptop dan telepon / tablet, router, server ARM, mood adalah TV, dan, tentu saja, pencahayaan. Selain itu, pesan awal artikel (dan motivasi pribadi saya) justru untuk memastikan fungsi workstation cadangan dalam bentuk laptop dan kenyamanan rumah tangga minimal, seperti lampu di toilet.

Hampir semua perangkat ini memerlukan voltase konstan dari 5 hingga 21 V untuk operasinya dan tidak perlu obyektif untuk pertama-tama meningkatkan voltase baterai menjadi 230 V AC, kemudian untuk menurunkan dan meluruskannya lagi untuk menambah atau mengurangi level awal. Pada transformasi ini, mudah untuk kehilangan hingga 50% energi, yang saya tidak tersenyum sama sekali.

Singkatnya, itulah ide yang mulus untuk menggunakan jaringan arus searah bertegangan rendah sebagai alternatif. Dan setelah perhitungan perkiraan kerugian di kabel, awal 12 (13,8) V berubah menjadi lebih praktis 24 (27,6) V.

Pada awalnya saya ingin mengambil bahkan 36 (41,4) B, tetapi setelah mempelajari karakteristik beberapa komponen elektronik yang saya rencanakan untuk digunakan untuk bekerja dengan semua ekonomi ini, saya harus mengurangi nafsu makan saya.

Jadi, dalam perkawatan alternatif dengan penampang 3,5 mm 2 tembaga murni, tegangan pada akhirnya diterapkan dari dua aki mobil yang dihubungkan secara seri.

, . ( ) . , .

Untuk memungkinkan konsumen di dalam kamar, satu outlet lagi ditambahkan ke setiap blok outlet "besar". Dan agar tidak ada yang mengacaukan outlet biasa dengan yang cadangan, produk tipe "Amerika" dengan kontak datar dengan lebar berbeda dipasang sebagai yang terakhir. Ini, pertama, tidak akan memungkinkan penyedot debu terhubung ke jaringan DC, dan kedua, outlet seperti itu, tidak seperti yang Eropa, selalu menggunakan polaritas yang sama ketika menggunakan steker "benar".


Untuk outlet ini dibuat adaptor laptop, menurunkan tegangan ke 18-20 V yang diinginkan dan dilengkapi dengan konektor yang sesuai. Jelaslah bahwa tumit dibuat dari muatan USB lima volt yang biasa untuk setiap hal kecil. Nah, untuk berjaga-jaga, sepasang konverter 24/230 V kecil dibeli, dengan daya 50 dan 200 watt.

Kasing untuk pengisian daya dengan colokan Amerika, kabel daya yang sama, dan papan konverter pulsa turun siap dipesan dari Cina. Sebuah besi solder dibutuhkan hanya untuk menghubungkan kabel.

Saya tidak akan berbicara tentang pembangkit listrik dalam artikel ini, terutama karena tidak ada yang menarik di dalamnya, jadi saya akan langsung menuju ke salah satu masalah "bawah", yaitu masalah pemanfaatan energi yang diakumulasikan oleh baterai untuk keperluan penerangan.

Petir


Jadi, ketika kabel apartemen secara paralel dengan kabel utama, kabel dari jaringan DC alternatif dengan tegangan 24 (27,6) V ditarik.Di antara lain, sebuah loop yang terdiri dari sepasang kabel tersebut terpotong ke setiap kotak saklar dan kemudian bersama-sama dengan kabel jaringan 230 V mengarah ke lampu langit-langit (jika ada beberapa di dalam ruangan, maka kawat alternatif hanya mengarah satu).

Apa yang harus dilakukan dengan output dari jaringan DC di bidang lampu adalah masalah pendekatan individual. Sebagai sumber cahaya, strip LED 24 volt biasa dipilih. Segmen dengan panjang yang berbeda (sebanding dengan luas ruangan), tergantung pada desain perlengkapan, baik dipasang langsung di rumah mereka atau terpaku pada permukaan yang darinya akan bersinar dengan baik, dan dari tempat itu tidak akan sangat mencolok.

Bagaimanapun, ini lebih estetika daripada masalah teknis, dan sekarang ini adalah sesuatu yang lain.

Jadi, dalam kotak masing-masing sakelar, saya memiliki lilitan kawat fase dari jaringan 230 V untuk menyalakan lampu "biasa", dan lilitan kedua kabel jaringan DC untuk penerangan darurat. Dari sini dan menari.

Pada akhirnya, tantangan di depan saya adalah menciptakan perangkat tertentu yang dapat memisahkan tiga status dari satu sama lain:

  • Listrik AC OK → matikan lampu darurat.
  • Jaringan AC tidak aktif, kontak sakelar ditutup → nyalakan lampu darurat.
  • Jaringan AC tidak aktif, kontak sakelar terbuka → matikan lampu darurat.

Kami menganggap tindakan itu satu sisi, yaitu, misalnya mematikan lampu yang sudah dimatikan tidak akan mengubah apa pun. Status ini dapat dibedakan satu sama lain jika tugas menentukan operasi jaringan AC dan posisi kontak sakelar terpecahkan. Pada saat yang sama, saya memiliki kondisi awal berikut:

  1. Manajemen pencahayaan utama dan darurat harus benar-benar transparan dari satu badan pengelola, tidak ada “kebun kolektif” dari tombol tambahan.
  2. , , , .
  3. , .
  4. – , .
  5. - .
  6. ( ), .
  7. .

Tentu saja, tidak adanya listrik AC di kotak nol ternyata menjadi salah perhitungan desain yang sangat rumit. Tanpanya, penentuan keberadaan tegangan pada input sakelar menjadi tidak mungkin. Secara teknis, dimungkinkan untuk menggunakan kabel negatif dari jaringan arus searah sebagai nol, tetapi ini bertentangan dengan paragraf 5 yang sama sekali tidak dapat dihancurkan dari ketentuan referensi saya.

Sensor


Namun demikian, alternatif untuk mengukur tegangan listrik ada. Tidak perlu bagi saya untuk menentukan keberadaan tegangan, itu cukup untuk menentukan keberadaan arus dalam kawat fase dengan kontak saklar ditutup. Lagi pula, jika ada arus, maka ada tegangan. Selain itu, "pembacaan" dari arus yang tepat memungkinkan penerangan darurat diaktifkan tidak hanya jika terjadi kegagalan daya, tetapi juga jika terjadi pemadaman bola lampu dangkal. Metode ini tidak memungkinkan untuk menentukan keadaan jaringan AC ketika saklar dimatikan, tetapi keadaan ini tidak mengganggu saya, karena setelah sakelar dimatikan, penerangan darurat juga tidak akan berfungsi.

Untuk mengetahui keberadaan arus dalam kawat cukup sederhana, terutama jika arus ini bolak-balik. Di sini Anda dapat menerapkan, misalnya, sensor Hall yang mendeteksi medan magnet di sekitar kawat. Tapi Anda bisa bertahan dengan trafo arus biasa , yang terdiri dari sirkuit magnetik cincin dengan belitan. Kawat arus bolak-balik dilewatkan melalui cincin, yang menciptakan medan magnet dalam sirkuit magnetik. Bidang ini pada gilirannya menginduksi arus sekunder pada belitan, sebanding dengan arus primer pada kawat. Dengan demikian, perangkat sederhana ini memungkinkan Anda untuk mengukur kekuatan arus bolak-balik pada kabel apa pun, tanpa memutusnya dan umumnya tanpa koneksi galvanik dengan sirkuit utama.

Pekerjaan klem saat ini, alat yang sangat berguna bagi teknisi listrik, didasarkan pada prinsip yang sama.

Jika ada trafo di dekat sakelar, cukup untuk mengukur tegangan pada belitan sekundernya untuk mengetahui apakah ada arus yang mengalir dalam rangkaian lampu. Kehadiran arus, seperti yang saya katakan, dalam perkiraan pertama menunjukkan dua fakta: ada tegangan di jaringan 230 V, dan saklar ditutup. Yang pertama dari fakta ini sangat penting untuk pengoperasian perangkat aktivasi pencahayaan darurat.

"Parameter input" kedua dari perangkat saya yang akan datang harus menjadi posisi kontak sakelar.

"Brainstorming" yang diprakarsai di antara rekan-rekan hobi membawa berbagai opsi untuk menentukan posisi sakelar, yang dirubah terutama untuk memodifikasi desain untuk menambah pasangan kontak ke dalamnya. Di sini ruang lingkup imajinasi cukup besar.

Dimungkinkan untuk mengambil saklar ganda alih-alih sakelar tunggal dan secara mekanis "menyejajarkan" bagiannya sehingga mereka menjadi satu kesatuan tunggal. Pilihan ini tidak berbeda dalam estetika eksternal dan tidak memecahkan masalah di ruangan-ruangan di mana pencahayaannya adalah sirkuit ganda dan saklar awalnya ganda.

Pilihan lain melibatkan pengenalan sakelar mikro atau sakelar buluh dengan magnet di mekanisme sakelar. Tetapi setelah mempelajari desain dari pemutus sirkuit yang diterapkan, opsi ini juga menghilang. Basis keramik monolitik dari sakelar yang baik tidak meninggalkan peluang bahkan untuk microswitch yang ringkas, dan sakelar magnet dan buluh tidak bekerja karena terlalu sedikit perjalanan kunci dan histeresis dalam kurva operasi / pelepasan sakelar buluh.

«» , . , , , . , , , .

Singkatnya, itu perlu untuk datang dengan suatu metode yang tidak akan memerlukan modifikasi dari saklar. Dan metode ini ditemukan.

Di atas, saya menggambarkan transformator arus, yang memungkinkan Anda untuk menentukan keberadaan arus bolak-balik dalam kawat tanpa pecah dan kontak galvanik. Tetapi setiap transformator adalah perangkat dua arah (berbeda dengan sensor Hall yang sama), belitan primer dan sekundernya dapat dipertukarkan.

Jika kita menerapkan arus bolak-balik ke belitan sekunder dari transformator seperti itu, itu menginduksi tegangan pada ujung kawat yang diulir ke ring. Dan, yang paling penting, energi yang dikonsumsi oleh belitan dari sumber akan tergantung pada apakah arus sekunder di kawat menemukan jalannya untuk gerakan memutar.

Dan di sini menjadi lebih menarik. Sebuah kawat melewati cincin, yang segera, dalam beberapa sentimeter, terhubung ke salah satu kontak sakelar. Tetap hanya untuk memberikan arus ini dengan jalur balik dari sisi lain saklar untuk mendapatkan perangkat untuk "merasakan" posisi kontak. Dan untuk alasan bahwa arus ini bolak-balik, kapasitor konvensional dapat menjadi jembatan untuk itu.


Pada prinsipnya, untuk menutup rangkaian ini dalam kondisi tertentu, kapasitor tidak diperlukan. Jika arus dengan frekuensi yang cukup tinggi “dipompa” ke transformator, maka kapasitansi yang tersesat di antara kabel akan cukup untuk melintas.


Jadi, apa yang diperlukan untuk mengatur detektor seperti itu:

  1. Trafo arus.
  2. Meter tegangan output transformator.
  3. Sumber arus bolak-balik frekuensi tinggi.
  4. Meteran arus mengalir melalui belitan transformator terbalik.

Yang paling sulit dalam hal memilih parameter optimal adalah transformator, yang dalam mode transformator saat ini harus memberikan tegangan yang dapat diterima dengan frekuensi 50 Hz, dan dalam mode “sensing” aktif dari keadaan pemutus sirkuit, memiliki koefisien transmisi yang dapat diterima pada frekuensi ratusan KHz. Elemen ini tidak mungkin untuk disimulasikan dalam program untuk memodelkan sirkuit elektronik, dan bahkan dengan perhitungan matematis, semuanya ternyata sangat sulit. Saya harus mengambil besi solder di tangan saya dan menghabiskan waktu berjam-jam mengendarai berbagai pilihan untuk mencari yang terbaik.

Jumlah belokan dan tahanan beban optimal dipilih secara empiris dan bukan fakta bahwa saya tidak melewatkan rasio terbaik. Sebagai hasil dari percobaan, konstruksi berikut ini muncul:

  • Inti ferit dengan permeabilitas 10.000, ukuran 10x6x4 mm.
  • Berliku 30 putaran dengan kawat enamel 0,25 mm.
  • Beban aktif belitan adalah 1 kOhm.

Permeabilitas magnetiknya cukup besar, mungkin, masuk akal untuk menggunakan cincin untuk 5000 atau bahkan 2000 unit, tetapi dalam jumlah yang cukup saya memiliki cincin ini. Secara umum, permeabilitas dalam hal ini adalah nilai kompromi. Terlalu rendah membuat trafo tidak cocok untuk operasi pada frekuensi 50 Hz, dan terlalu tinggi merusak semuanya pada frekuensi di atas ratusan kilohertz.

Berbagai percobaan mengukuhkan kenyataan gagasan itu dan hasil-hasil berikut diperoleh:

  • Dalam mode transformator arus, koefisien transmisi ternyata sekitar satu milivolt per watt daya yang mengalir (tegangan 220-230 V).
  • Dalam mode probe, tergantung pada frekuensi dan kapasitansi kebocoran, perbedaan arus dengan kontak tertutup dan terbuka dari saklar mencapai dua hingga tiga kali.

Itu saja. Kedua nilai lebih dari cukup untuk fiksasi yang andal dari arus yang mengalir, dan untuk menentukan posisi kontak sakelar. Hanya terserah implementasi spesifik.


Dalam besi


Berbeda dengan sebagian besar desain lainnya, di sini sudah dalam tahap awal musyawarah, diputuskan untuk segera menggunakan mikrokontroler. Berdasarkan kebutuhan dan pengalaman, pilihan jatuh pada ATtiny13A. Chip ini memiliki ADC, dan dengan kemampuan untuk menggunakan sumber referensi internal 1,1 V, bukan tegangan suplai. Ada PWM yang bagus untuk menghasilkan sinyal yang terdengar. Dan, yang kemudian ternyata penting, ada EEPROM yang memungkinkan Anda untuk menyimpan data kalibrasi.

, « , , - «» , ».

. . . , , , .

Di sini Anda perlu menggabungkan setidaknya generator, meter tegangan, dan beberapa jenis pemicu untuk menyimpan keadaan saat ini di antara pengukuran. Secara umum, setiap sketsa spekulatif membutuhkan setidaknya tiga kasus hanya pada "inti", dan pengontrol ternyata jauh lebih praktis.

Tegangan dari trafo arus dengan beban 10-20 W adalah 10-20 mV dan terlalu kecil untuk memasok ke input DAC dengan batas bahkan 1,1 V. Oleh karena itu, selain pengontrol, Anda juga memerlukan amplifier dengan koefisien transfer sekitar 100 untuk meningkatkan minimum tegangan sinyal hingga ratusan milivolt.

Secara umum, tegangan sinyal keluaran transformator arus tidak hanya bergantung pada daya beban, tetapi juga pada sifatnya. Muatan aktif murni seperti bola Ilyich, misalnya, memberikan gelombang sinus level millivolt. Bohlam LED dengan daya yang sama dengan daya pulsa sederhana memberikan ledakan singkat ke volt dan di atasnya. Kita dapat memainkan ini, tetapi, pertama, saya ingin membuat perangkat universal, dan kedua, di apartemen ada satu lampu dengan unit catu daya eksternal yang dilengkapi dengan sirkuit PFC (yaitu, memiliki karakteristik konsumsi yang dekat dengan aktif).

Saya tidak akan menyiksa pembaca dengan opsi perantara dan segera memberikan diagram terakhir perangkat.


Di sini tegangan DC melalui regulator linier ekonomis LM2931-5.0 memberi makan controller. Dalam hal perumahan, fungsionalitas, dan pinout, stabilizer ini mirip dengan 78L05 yang populer, tetapi berbeda dari itu dalam konsumsi intrinsik yang lebih rendah (sekitar 500 μA pada beban 10 mA) dan toleransi yang lebih besar terhadap ledakan tegangan input yang pendek. Jika Anda berencana untuk bekerja dengan tegangan tidak lebih dari 20 V, Anda dapat menggunakan analog LP2950-5.0 yang lebih ekonomis.

LP2950-5.0 30 . 24 . - , , , , . 50%, 100%.

Trafo tidak ditampilkan dalam diagram, tetapi belitannya terhubung ke pin TR1 dan TR2.

Sebagai elemen kunci untuk mengalihkan beban, digunakan transistor MOS saluran-rendah 2SJ196 P-channel saat ini (arus hingga 1 A harus mencukupi untuk lampu LED), tetapi yang lainnya cocok untuk pinout, arus maksimum, dan tegangan tiriskan maksimum dapat digunakan.

Selain pengontrol dan kunci dari elemen aktif, dua transistor digunakan. Satu diperlukan untuk mengontrol rana tombol, beroperasi di bawah tegangan sumber darurat. Yang kedua bertindak sebagai sinyal penguat dari output transformator saat ini.

Pada titik ini, Anda dapat menggunakan op-amp, tetapi dalam hal detail, keuntungannya minimal, dan Anda harus melupakan bekerja pada frekuensi di atas beberapa ratus kilohertz.

Ini bukan sinyal yang diperkuat dari transformator itu sendiri yang diumpankan ke ADC, tetapi amplopnya, yang dapat diukur dengan sampel tunggal, dan bukan dengan digitalisasi "streaming" untuk beberapa waktu. Untuk mengisolasi amplop, dua dioda Schottky digunakan, dihubungkan sesuai dengan rangkaian penggandaan tegangan. Inklusi semacam itu membentuk detektor amplitudo klasik, di mana penurunan tegangan melintasi dioda sendiri sebagian besar dikompensasi.

Prinsip pengoperasian sensor sederhana. Pertama, pertimbangkan algoritma tindakan yang diperlukan untuk mengukur arus di kawat.

Dalam mode pengukuran saat ini, pin PB0 dimasukkan ke mode output dan didasarkan oleh logika nol. Ini mencegah setiap sinyal dari pengontrol dikirim ke titik TR1. Secara paralel, tindakan yang sama dilakukan pada pin PB3, sebagai akibatnya output atas kapasitor C2 di-ground. Kapasitor ini bersama dengan resistor R1 menciptakan filter low-pass dengan frekuensi cutoff sekitar 1500 Hz. Berkat filter ini, peran berbagai noise frekuensi tinggi dalam pembentukan sinyal yang diukur sangat berkurang.

Kemudian level tinggi diterapkan pada PB4 untuk memberi daya pada penguat sinyal. Setelah penyelesaian transien, arus 50 Hz dari output transformator diperkuat dan sampai ke penyearah, di mana ia mengisi kapasitor C8.

Muatan kapasitor C8 diukur menggunakan ADC1 dan dari nilai tegangan yang diperoleh, ditarik kesimpulan tentang arus "primer" yang mengalir melalui transformator.

Penginderaan aktif dilakukan secara berbeda. Pertama, pin PB0 diterjemahkan ke dalam solver PWM, dan sebuah sinyal diumpankan dengan frekuensi dari ratusan kilohertz ke unit megahertz. Sinyal ini agak dilemahkan oleh pembagi resistif dan diumpankan ke belitan transformator arus pada titik TR1. Kapasitor C1, bersama dengan satu lengan atas pembagi R4, menciptakan filter low-pass dengan frekuensi cutoff sekitar 1,5 MHz, yang mengurangi tingkat harmonik frekuensi tinggi dari pulsa persegi panjang.

Setelah melewati belitan transformator, sinyal probe dari titik TR2 sampai ke amplifier dan detektor yang sama, juga pada akhirnya mengisi kapasitor C8 ke tegangan yang sebanding dengan beban dalam sirkuit "eksternal" transformator. Dengan cara yang sama, muatan kapasitor diukur menggunakan ADC mikrokontroler.

Sekarang penjelasan untuk beberapa "longgar".

Resistor R5 dirancang untuk membatasi tegangan di gerbang sakelar daya, yang untuk MOSFET tegangan rendah biasanya tidak boleh melebihi 20 V. Dalam kasus saya, jaringan DC memiliki tegangan hingga 30 V, yang menentukan kebutuhan akan pembagi 1: 3, yang diperoleh bersamaan dengan R3. Ketika diberdayakan dari sumber kurang dari 20 V, resistor R5 tidak diperlukan (diganti dengan jumper).

Kapasitor C4 dan C5 dihubungkan secara paralel untuk mencapai kapasitansi 2 μF. Pasangan kapasitor ini patut diperhatikan karena harus mengirimkan sinyal baik frekuensi rendah dan tinggi dengan baik. Di sini dimungkinkan untuk menggunakan koneksi paralel kapasitor elektrolitik beberapa mikrofarad dan keramik seratus atau dua nanofarad, tetapi "elektrolit" dengan kapasitas sekecil itu tidak memberikan kenaikan ukuran jika dibandingkan dengan "keramik" mikrofarad. Benar, itu tidak mungkin untuk membeli kapasitor keramik di 2 mikrofarad, jadi saya menempatkan mereka berdua sama.

, 50 2 , . , . . 100 , , . .

Resistor R4 dan R1 membentuk pembagi tegangan, yang kurang lebih menyamakan tegangan lima volt pada output PWM dengan tegangan output dari transformator arus.

Kapasitor C8, seperti yang disebutkan sebelumnya, mengakumulasi tegangan yang akan diukur. Lebih baik jika itu adalah kapasitor berkualitas tinggi dengan arus bocor minimum.

Penyebutan khusus layak mendapatkan "sisir" dua pin TP1 / TP2 yang terhubung ke kaki reset mikrokontroler. Kontak ini digunakan tidak hanya untuk reboot, tetapi untuk masuk ke mode kalibrasi, yang dijelaskan di bawah ini. Sederhananya, setelah implementasi semua Wishlist, controller tidak lagi memiliki pin gratis, dan kebutuhan untuk menambahkan satu kontrol sederhana muncul selama debugging firmware. Jadi saya harus menggunakan kaki pengontrol reset untuk tujuan ini.

«» AVR RESET GPIO. , . , . , , , , RESET.

Secara umum, rangkaian ternyata cukup sederhana, dan semua "sihir" diimplementasikan dalam firmware mikrokontroler. Namun, setelah pembuatan prototipe, ternyata kapasitansi kabel untuk operasi "probe" yang andal seringkali tidak cukup. Perbedaan arus melalui transformator ternyata sebanding dengan tingkat gangguan dan operasi rangkaian menjadi tidak dapat diandalkan.

Oleh karena itu, saya harus meninggalkan cincin ferit yang tergantung bebas di kabel, dan menambahkan sirkuit tegangan tinggi langsung ke papan dalam revisi perangkat yang baru, untuk memudahkan tugas penyelidikan.

Intinya di sini adalah menambahkan kapasitor khusus, dihidupkan sehingga cara terpendek untuk menutup jalur ke arus RF melalui kontak saklar.


Kapasitor C10 harus dirancang untuk tegangan setidaknya kilovolt, dan kapasitansinya harus dipilih sesuai dengan prinsip kompromi sehingga keandalan operasi cukup untuk penggunaan praktis, dan bahwa arus kapasitif liar melalui lampu tidak terlalu besar. Dalam praktiknya, Anda dapat mencoba "bermain-main" dengan denominasi ini, jika perlu.

Bagaimanapun, sebuah saklar yang dilengkapi dengan sensor semacam itu tidak lagi dapat dianggap ideal. Sebaliknya, ini mirip dengan sakelar dengan indikator, oleh karena itu, pertama, ia dapat menyebabkan cahaya nyasar atau kedipan lampu LED berkualitas rendah, dan kedua, dapat menyebabkan sengatan listrik, meskipun bukan yang kuat. Karena itu, Anda tidak perlu bekerja dengan kabel penerangan, hanya mengandalkan sakelar di dinding, selalu matikan "sakelar" di pintu masuk.

Dan, karena saya masih harus menambahkan bagian dari jaringan AC ke board, saya menambahkan dua choke shut-off di sana, yang tidak akan membiarkan arus probing frekuensi tinggi masuk ke kabel. Nilai praktis dari frekuensi tegangan probing dapat mencapai beberapa MHz dan saya, sebagai amatir radio, sangat muak dengan gagasan untuk meningkatkan jumlah gangguan dalam jaringan dengan tangan saya sendiri.

Tersedak L1 dan L2 harus kekuatan, luka dengan kawat dari ketebalan terlihat pada halter atau inti tipe cincin. Sinyal tersedak dalam desain aksial "resistor" tidak dapat digunakan.

Giliran utama transformator saat ini adalah seutas kawat yang diulir melalui cincin dan disolder ke titik TR3 dan TR4 di papan tulis. Lebih baik jika kabel ini dilindungi, saat menghubungkan layar ke TR5 dan TR6 di kedua sisi cincin.

TR6 , . - , . , .


Kode firmware dan file HEX yang dirakit terpasang pada akhir artikel bersama dengan sirkuit dan tata letak papan sirkuit yang dicetak.

Algoritma pendeteksi yang disetel sederhana. Sekali setiap tiga detik, pengontrol bangun dari tidur nyenyak, melakukan pengukuran, dan, jika perlu, mengubah status tombol kontrol dalam satu arah atau lainnya. Jadi, reaksi terhadap perubahan posisi sakelar mungkin memiliki penundaan hingga tiga detik. Tidak terlalu nyaman, tetapi ini dilakukan, pertama, untuk menghemat energi dari sumber cadangan, dan kedua, untuk secara signifikan mengurangi interval pemungutan suara tidak memungkinkan durasi transien pada berbagai tahap pengukuran. Interval minimum dapat dianggap sama dengan satu detik, tetapi kemudian rangkaian akan berada dalam mode konsumsi aktif hampir sepanjang waktu.

Kesimpulannya, tentang konfigurasi. Karena fakta bahwa sensor yang berbeda harus bekerja dalam kondisi yang sama sekali berbeda sesuai dengan arus yang dikonsumsi oleh lampu, panjang dan fitur pengkabelan lainnya, tingkat interferensi, dan sejenisnya, tidak mungkin untuk menempatkan satu set universal parameter adaptif ke dalam firmware. Oleh karena itu, setiap sensor setelah pemasangan memerlukan kalibrasi tunggal di lokasi.

Sensor memasuki mode kalibrasi setiap kali dihidupkan, sementara tidak ada data kalibrasi, atau setelah menutup kontak TP1 dan TP2. Memasuki tahap pertama kalibrasi ditandai dengan lampu darurat berkedip lima kali.

Setelah berkedip lima kali, diberikan 7,5 detik untuk mengatur sakelar ke posisi "mati", jika dihidupkan sebelumnya. Setelah waktu ini, tingkat gangguan selalu hadir dalam jaringan AC diukur. Nilai yang diperoleh digunakan sebagai titik awal untuk pengukuran dalam siklus tugas. Juga pada saat ini, pemutus sirkuit dirasakan pada frekuensi yang berbeda untuk pemilihan berikutnya dari frekuensi paling "kontras".

Selanjutnya, tahap kalibrasi kedua dimulai dan lampu darurat berkedip dua kali. Waktu 7,5 detik diberikan untuk mengalihkan sakelar ke posisi "on" dan setelah batas waktu program mengukur arus yang dikonsumsi oleh lampu. Jika lampu memiliki beberapa tingkat kecerahan, maka setelah dinyalakan, Anda harus segera mengubahnya ke level minimum, sehingga di masa depan sensor akan bekerja dengan benar dengan salah satu level yang tersedia.

Awal dari tahap kalibrasi ketiga dan terakhir ditandai dengan tiga kali flashing dari lampu darurat dan mensyaratkan bahwa sakelar tetap dalam mode “on”, dan jaringan pencahayaan dihilangkan energi pada level yang lebih tinggi (yaitu, dengan pemutus arus utama atau sekunder pada panel) selambat-lambatnya melalui yang sama 7,5 detik Dalam hal ini, bunyi kedua dari pemutus sirkuit sudah dihidupkan pada frekuensi yang berbeda dilakukan dan dengan mempertimbangkan nilai-nilai yang diperoleh pada tahap pertama, frekuensi dipilih di mana perbedaan arus melalui sakelar yang dinyalakan dan dimatikan adalah maksimum.

Penyelesaian kalibrasi yang berhasil diindikasikan dengan satu kedipan tunggal lampu darurat dan, jika jaringan penerangan setelah tahap ketiga masih tidak aktif, dengan menyalakan lampu darurat dalam siklus operasi pemungutan suara berikutnya.

Jika nilai arus dan resistansi yang diukur dalam kondisi yang berbeda terlalu dekat dan tidak dapat digunakan untuk deteksi yang andal, kalibrasi gagal. Dalam hal ini, lampu penerangan darurat berkedip dua kali ketika posisi sakelar tidak berhasil, atau tiga kali ketika konsumsi lampu penerangan standar terlalu rendah.

Dalam hal keengganan sensor untuk melakukan kalibrasi dengan double blink di final, Anda harus mencoba meningkatkan kapasitas C10.

Total


Perangkat ini ternyata cukup sederhana, cukup ringkas untuk dimuat dalam kotak saklar, tetapi tidak untuk mengatakan bahwa itu sangat mudah untuk dikonfigurasi. Tentu saja, itu tidak mengacu pada komponen "rumah pintar" modern, karena tidak memiliki 5G, kontrol cloud, dan bahkan WiFi dangkal dengan GPS tidak disediakan. Namun demikian, delapan perangkat ini menjalankan fungsi satu-satunya, dan tidak ada lagi yang diperlukan dari mereka dalam kondisi mati.

Kode sumber firmware (Atmel Studio 7)
#define F_CPU 9600000 //   (  : avrdude.exe -U lfuse:w:0x7a:m -U hfuse:w:0xff:m)

#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/eeprom.h>

//#define PROTEUS

typedef unsigned char bool; //   
#define true  (0 == 0)
#define false (0 != 0)

#define MAX_U10BIT 0b0000001111111111 //      

#define INTERVAL         3   //  , 
#define CUR_MINIMAL_DIFF 50  //      , LSB
#define RES_MINIMAL_DIFF 50  //      , LSB
#define FREQ_DIV_OFFSET  2   //     
#define FREQ_MAXIMAL_DIV 6   //     

EEMEM unsigned int  EEPROM_cur_edge;
EEMEM unsigned int  EEPROM_res_edge; 
EEMEM unsigned char EEPROM_frequency_dividor;

unsigned int cur_edge, res_edge; //   ,   EEPROM    
unsigned char frequency_dividor; //   ,   EEPROM    
unsigned char clk = 0; //   watchdog
bool tp_reset = false; //   TP1  TP2

//   
static void init_vars(void) {
  if(MCUSR & (1 << EXTRF)) { // ,       TP1  TP2
    tp_reset = true;
    MCUSR &= ~(1 << EXTRF); //  EXTRF       ,   
  }
}

//  
static void init_pins(void) {
  DDRB |= (1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB4); //       
}

//    watchdog
static void init_interrupts(void) {
  sleep_enable(); //   

  WDTCR = (1 << WDCE) | (1 << WDE); //  watchdog
  WDTCR = (1 << WDTIE) | WDTO_1S; // watchdog      ,  1 

  sei(); //  
}

//   
void init_settings(void) {
  cur_edge = eeprom_read_word(&EEPROM_cur_edge); //   
  res_edge = eeprom_read_word(&EEPROM_res_edge); //   
  frequency_dividor = eeprom_read_byte(&EEPROM_frequency_dividor); //   
}

//   
static void toggle_load(bool state) {
  if(state) {
    PORTB |= (1 << PB1);
  } else {
    PORTB &= ~(1 << PB1);
  }
}

//  
static void blink_load(unsigned char count) {
  for(unsigned char i = 0; i < count; ++i) {
    _delay_ms(200);
    toggle_load(true);
    _delay_ms(200);
    toggle_load(false);
  }
}

//   (   )
static void stop(void) {
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  while(true) sleep_cpu();
}

//   
static void toggle_amp(bool state) {
  if(state) {
    PORTB |= (1 << PB4); //     PB4
    _delay_ms(250);      //       200 .
  } else {
    PORTB &= ~(1 << PB4);
  }
}

//  
static void toggle_lpf(bool state) {
  if(state) {
    DDRB |= (1 << PB3); //  PB3    (  "0")     C2
  } else {
    DDRB &= ~(1 << PB3); //  PB3    ( )   C2  
  }
}

//    
static void toggle_gen(bool state) {
  if(state) {
    TCCR0A |= (1 << COM0A0) | (1 << WGM01); //    ( )    OC0A      OCR0A
#ifndef PROTEUS
    TCCR0B |= (1 << CS00); //    1
#else
    TCCR0B |= (1 << CS00) | (1 << CS02); //    1024
#endif
    OCR0A = FREQ_DIV_OFFSET + frequency_dividor; //   ,         OC0A
  } else {
    TCCR0A = 0; //  
  }
}

//  
static void toggle_adc(bool state) {
  if(state) {
    DDRB &= ~(1 << PB2); //  PB2    ( )
    ADMUX = 0b01 | (1 << REFS0); // PB2, 1.1v reference
    ADCSRA = (1 << ADPS0) | (1 << ADPS1) | (1 << ADPS2) | //       = 128 (75 )
             (1 << ADIE) |  //    
             (1 << ADEN);   //  
  } else {
    ADCSRA = 0; //  
    DDRB |= (1 << PB2); //  PB2    (  "0")   C8
    _delay_ms(50); //      C8
  }
}

//  
static unsigned int do_adc(void) {
  set_sleep_mode(SLEEP_MODE_ADC); //   "" 
  do {
    sleep_cpu(); //      ,      ,   
  } while(ADCSRA & (1 << ADSC)); //        ,  

  return ADC;
}

/*
//  
static void blink_bin(unsigned int value, unsigned char count) {
  for(unsigned char i = 0; i < count; ++i) {
    _delay_ms(1000);
    toggle_load(true);
    if(value & (1 << (count - i - 1))) {
      _delay_ms(500);
    } else {
      _delay_ms(50);
    }
    toggle_load(false);
  }
}
*/

//   
static unsigned int get_current(void) {
  unsigned int cur;

  toggle_lpf(true); //  
  _delay_ms(150);
  toggle_adc(true); //  
  _delay_ms(50); //    C8
  cur = do_adc(); //  
  toggle_adc(false);
  toggle_lpf(false);

  return cur;
}

//    
static unsigned int get_resistance(void) {
  unsigned int res;

  toggle_gen(true); //  
  _delay_ms(150);
  toggle_adc(true); //  
  _delay_ms(50); //    C8
  toggle_gen(false); //   ,   C8     
  res = do_adc(); //     
  toggle_adc(false);

  return MAX_U10BIT - res; //      ,      
}

//   
static bool is_current(void) {
  return (get_current() >= cur_edge);
}

//   
static bool is_toggled_on(void) {
  return (get_resistance() <= res_edge);
}

//  
static void do_main(void) {
  toggle_amp(true); //  

  if(is_current()) {
    toggle_load(false); //  ,  
  } else {
    if(is_toggled_on()) {
      toggle_load(true); //  ,  
    } else {
      toggle_load(false); //  ,  
    }
  }

  toggle_amp(false); //  
}

//    
static bool first_on(void) {
  return (frequency_dividor == 0xff); //   EEPROM   0xFF,        FREQ_MAXIMAL_DIV
}

//  
static void calibrate(void) {
  unsigned int cur_off, cur_on, res_off, res_on, res_on_tmp, res_off_array[FREQ_MAXIMAL_DIV + 1], diff, max_diff, frequency_dividor_tmp;

  blink_load(5); //    ,    
  _delay_ms(7500); //      

  toggle_amp(true); //  

  cur_off = get_current(); //      ( )

  //      
  for(frequency_dividor = 0; frequency_dividor <= FREQ_MAXIMAL_DIV; ++frequency_dividor) {
    res_off_array[frequency_dividor] = get_resistance();
  }

  blink_load(2); //     
  _delay_ms(7500); //      

  cur_on = get_current(); //     

  blink_load(3); //     
  _delay_ms(7500); //      

  
  res_off = MAX_U10BIT;
  res_on = MAX_U10BIT;
  frequency_dividor_tmp = 0;
  max_diff = 0;
  //      
  for(frequency_dividor = 0; frequency_dividor <= FREQ_MAXIMAL_DIV; ++frequency_dividor) {
    res_on_tmp = get_resistance();

    //   ,      
    if(res_off_array[frequency_dividor] > res_on_tmp) {
      diff = res_off_array[frequency_dividor] - res_on_tmp;
      if(diff > max_diff) {
        res_off = res_off_array[frequency_dividor];
        res_on = res_on_tmp;
        frequency_dividor_tmp = frequency_dividor;
        max_diff = diff;
      }    
    }
  }
  frequency_dividor = frequency_dividor_tmp;

  toggle_amp(false); //  
  
  if(cur_on > cur_off + CUR_MINIMAL_DIFF) { 
    cur_edge = cur_off + (cur_on - cur_off) / 2; //    ,     
 
    if(res_on + RES_MINIMAL_DIFF < res_off) {
      res_edge = res_off - (res_off - res_on) / 2; //    ,      

      //   
      eeprom_write_word(&EEPROM_cur_edge, cur_edge);
      eeprom_write_word(&EEPROM_res_edge, res_edge);
      eeprom_write_byte(&EEPROM_frequency_dividor, frequency_dividor);
      
      blink_load(1); //  
    } else {
      blink_load(2); //    
      if(first_on()) stop();
    }
  } else {
    blink_load(3); //    
    if(first_on()) stop();
  }
}

ISR(WDT_vect) {
  WDTCR |= (1 << WDTIE); //    watchdog   ""    
}

EMPTY_INTERRUPT(ADC_vect); //     ,     

int main(void)
{
  init_vars();
  init_pins();       
  init_interrupts(); 
  init_settings();

  if(tp_reset || first_on()) {
    calibrate(); //          
  }

  //  
  while(true) {
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_cpu(); //   watchdog

    if(++clk >= INTERVAL) {
      do_main(); //  
      clk = 0;
    }
  }
}


Arsipkan dengan diagram, perkabelan, dan proyek Atmel Studio 7 yang lengkap

All Articles