Sistem perlindungan kebocoran



Saya ingin berbagi pengalaman dalam membuat perangkat yang tidak hanya menarik untuk diterapkan, tetapi juga bisa bermanfaat. Mungkin seseorang akan mengatakan bahwa itu mungkin untuk melakukan sesuatu yang lebih sederhana, tetapi ini bukan cara kita ...

Semuanya berawal dari fakta bahwa setelah perbaikan apartemen ditemukan masalah potensial. Dalam hal terjadi kebocoran di suatu tempat, itu tidak akan berhasil untuk mendapatkan crane untuk memasuki apartemen tanpa upaya fisik dan ketangkasan tertentu, karena menetas menutup crane tidak terpasang dengan sangat baik. Oleh karena itu, dalam kasus kebutuhan mendesak (kecelakaan) untuk mematikan keran dengan cepat tidak akan berfungsi. Itu perlu untuk melakukan sesuatu dengan ini, dan solusi muncul - untuk merealisasikan peluang dari jarak jauh, mis. tanpa membuka palka, hentikan pasokan air. Dan sebagai bonus, untuk mengimplementasikan segala sesuatu yang dapat dipercaya dengan elektronik.

Beginilah tampilan perangkat.



Fitur utama:
  • Matikan pasokan air secara independen jika terjadi kebocoran
  • Matikan pasokan air "dalam mode manual" - di panel depan ada "tombol merah" dan sakelar sakelar dua posisi
  • Tampilan pembacaan meteran pada tampilan sendiri
  • Tampilkan informasi bermanfaat lainnya pada layar

Tidak bisa, tetapi merencanakan:
  • Bekerja dari sumber daya cadangan. Sekarang jika terjadi pemadaman listrik - perangkat tidak berguna
  • Bekerja dengan sensor kebocoran nirkabel
  • Bersihkan diri Anda. Agar tidak menjadi asam, disarankan untuk membuka / menutupnya sebulan sekali
  • Beri tahu tentang acara di smartphone dan dikendalikan oleh "udara"

Tidak bisa (dan betapapun diperlukan):
  • Memiliki beberapa saluran untuk membaca sensor kebocoran kabel yang berbeda, sekarang semua sensor (5 pcs) terhubung secara paralel
  • Kelola derek secara terpisah. Ada dua dari mereka (satu di panas, yang kedua di air dingin), dan mereka terhubung secara paralel
  • Kontrol kerusakan sensor

Berikut ini adalah deskripsi komponen dan tujuannya (harga per Juli 2015).

Tentu saja, saya juga memerlukan programmer / emulator, saya menggunakan yang ini: ARM Emulator, mendukung ARM7, ARM9, ARM11, inti Cortex-M3, ADS, IAR, STM32, antarmuka JTAG, versi V8 buffered ganda . Dari fitur, kita dapat menyebutkan bahwa selain kabel standar untuk pemrograman SW , saya harus menerapkan catu daya saat ini dari chip yang dapat diprogram, 3,3 volt, dalam kasus saya. Adalah penting bagi programmer untuk memahami level voltase dari nilai-nilai logis. Tanpa ini, chip yang dapat diprogram tidak ingin terdeteksi. Juga, programmer ini memiliki kemampuan untuk menyalakan perangkat yang dapat diprogram, pin disediakan untuk ini, tegangan dinyalakan / dimatikan oleh utilitas JLink.exe.

Lebih banyak tentang besi


Mikrokontroler


Otak seluruh sistem adalah mikrokontroler 32-bit dari ST yang disolder dengan rapi oleh pekerja Cina di pabrik-pabrik Cina ke papan yang "kompatibel" dengan Leaf Maple Mini .
Tentang Leaf Maple Mini
eta4ever
,
ยซยป , โ€ฆ

Memiliki 48 kesimpulan. Inti berjalan pada 72MHz, telah terintegrasi SRAM - 20KB dan Flash - 128KB. Lebih detail di sini . Parameter seperti itu pasti mendorong penggunaan alat dan alat tingkat tinggi, yaitu ini adalah FreeRTOS , tampilan warna grafis, C ++, dll. (dan bukan dua LED dan assembler). Secara umum, jangan menyangkal diri sendiri apa pun ... kecuali C ++, tapi ini bukan masalah chip.
Mengapa?
C++ , , , . , C++ , , , , .. STM32CubeMX , FreeRTOS. , .

Menggunakan kesimpulan dari mikrokontroler. Dari sini Anda dapat menebak apa yang terhubung.


Tampilan




Modul dengan layar TFT 320x240 piksel yang dibangun di atas pengontrol yang kompatibel dengan ILI9341 bertanggung jawab untuk menampilkan informasi, ia bekerja dengan SPI pada frekuensi maksimum yang dimungkinkan untuk bundel ini (18MHz). SPI terhubung ke mikrokontroler hanya dalam satu arah, output untuk membaca data dari modul display tetap menggantung di udara, karena Saya tidak menemukan fungsi ini, tetapi saya menyimpannya di kaki mikrokontroler yang bebas. Transfer data berfungsi pada DMA .

Konektor untuk menghubungkan kartu SD disolder ke modul di sisi belakang, saya belum diuji bekerja dengan kartu SD dan konektor tidak terlibat dalam proyek ini.

Modul RTC dan EEPROM




Jam pada modul diimplementasikan dengan chip DS3231. Saya tidak menyebabkan masalah khusus, satu-satunya ketidaknyamanan adalah bahwa semua nilai (tanggal, waktu) disimpan dalam register dalam format BCD , ketika dua digit desimal tercermin dalam satu byte (dalam empat bit atas - digit paling signifikan, di bawah - digit paling signifikan) . Misalnya, nilai "38 menit" disimpan sebagai nilai desimal 56 (ini adalah "38" dalam notasi heksadesimal). Itu tidak mungkin untuk mengetahui apakah mungkin untuk beralih ke format biner.

Modul ini memiliki baterai sendiri, jadi setiap kali Anda kehilangan daya, Anda tidak perlu mengatur waktu dan tanggal. Juga, mikrokontroler AT24C32 disolder pada papan modul, memiliki bit EEPROM sebanyak 32768! Sederhananya, itu adalah 4 Kbytes memori non-volatile. Jam dan memori berada di bus I2C yang sama. Saat ini, memori hanya digunakan untuk menyimpan pengaturan perangkat, nilai saat ini dari pembacaan counter, dan sesuatu yang lain. akhirnya ditempati ... 25 byte. Nantinya akan digunakan untuk menyimpan log dari berbagai acara, dan mungkin untuk menjaga statistik konsumsi (saya tidak tahu mengapa, tetapi akan ada kesempatan untuk memprogram tampilan grafik).

Selain kontak dan daya bus I2C, ada dua lagi di papan tulis. "SQW" adalah sinyal dari jam alarm yang dapat diprogram melalui register dan "32K" adalah frekuensi yang dihasilkan oleh DS3231 untuk perangkat lain. Proyek ini tidak berlaku.

Modul dengan sensor kelembaban




Ini digunakan sebagai penyangga antara dunia luar dan mikrokontroler. Kabel yang menuju ke probe secara total memiliki panjang sekitar 10 meter, tanpa layar. Kabel telepon dua kawat konvensional. Jika ada hit statis, saya harap hanya modul ini yang akan mati, tetapi bukan mikrokontroler. Ia mampu mengukur resistansi antara dua elektroda dan memberikan informasi ini dalam bentuk analog (tegangan dari 0 hingga tegangan suplai) dan dalam digital (0/1, modul memiliki resistor variabel yang dapat disesuaikan dengan batas operasi).

Ada masalah kecil dengan modul ini. Saat menerapkan dan melepaskan tegangan suplai, modul pada output digital memberi sinyal trip, ini dapat dilihat dengan LED berkedip selama sepersekian detik (pada papan modul, LED dipasang secara paralel dengan output digital). Mikrokontroler berhasil membaca sinyal abnormal ketika daya sistem diterapkan / direset (masalah No. 1). Solusinya diimplementasikan dengan melewatkan pulsa operasi pendek, untuk mengantisipasi kondisi tetap untuk sementara waktu.

Variabel resistor memiliki sudut penyesuaian yang sangat kecil di mana saya tidak dapat menemukan batas antara tidak adanya alarm palsu dan sensitivitas yang baik (masalah No. 2). Kemudian diimplementasikan membaca sinyal analog melalui mikrokontroler ADC. Pada saat yang sama, dimungkinkan untuk menetapkan batas respons di pengaturan perangkat sebagai parameter. Kemampuan untuk menyesuaikan tingkat respons sekarang dianggap berlebihan, dan mungkin lebih baik untuk meng-hardcode nilai batas.

Telah diperhatikan bahwa setelah beberapa menit operasi (pemanasan?), Modul tiba-tiba mulai memberi sinyal operasi spontan (masalah nomor 3, berapa banyak dari mereka?!).

Pada batas respon abnormal, intensitas cahaya LED (pada modul) secara bertahap meningkat atau menurun, seolah-olah dikendalikan oleh generator PWM, jelas bahwa ini adalah noise dan frekuensi tinggi, hal yang sama dapat diharapkan pada output "digital" dari modul (masalah No. 4 )

Saya akan mengklarifikasi bahwa semua masalah ini diselesaikan ketika membaca sinyal analog dari modul diimplementasikan.

Probe (bagian-bagian dari sensor yang terletak langsung di tempat-tempat penumpukan air jika terjadi kecelakaan) dibuat dari cara yang diimprovisasi. Ini adalah timah (baja) dan kotak persimpangan bundar kecil, dimodifikasi secara mekanis ke tipe yang diinginkan dan dengan kabel yang disolder di dalamnya. Ketika air masuk di antara pasangan elektroda, resistansi berkurang dan dianggap oleh pengontrol sebagai "kebocoran".



Pengujian laboratorium menunjukkan bahwa produk menjalankan fungsinya dengan baik dan bukan merupakan tautan lemah dalam sistem.

Nutrisi


Seluruh sistem bekerja dari pengisian daya untuk telepon - 5 volt, 2A (di sini dengan margin). Regulator tegangan 3.3V dipasang pada papan Mini Maple, tegangan input bisa sampai 12 volt, karakteristik stabilizer memungkinkan, tetapi tegangan besar seperti itu tidak nyaman digunakan, lebih lanjut tentang itu di bawah ini.

Dengan stabilizer, 3,3 volt juga digunakan untuk kekuatan RTC, modul TFT dan ke modul pengukuran kelembaban. Crane terhubung melalui unit saklar daya ULN2003AN, langsung dari catu daya, mis. bekerja dari 5 volt, minus drop pada tombol. ULN2003AN hanya menggunakan dua dari tujuh saluran.

Tentu saja, disarankan untuk mengganti catu daya dengan yang lain, dengan tegangan yang sedikit lebih tinggi, karena kadang-kadang, ketika menutup crane, salah satunya, pada posisi yang hampir ekstrem akibat pengoperasian trailernya sendiri (dua buah dipasang di badan katup, untuk mengerjakan posisi ekstrem), berhenti selama sepersekian detik, kemudian "rebound" terjadi (karena permainan di roda gigi gearbox) ), kemudian upaya berulang untuk mengencangkan katup bola dan seterusnya hingga pengontrol melepaskan tegangan suplai dari penggerak servo.

Penjual di situs memiliki informasi bahwa crane harus bekerja mulai dari 5 volt, dalam hal ini tegangan yang disediakan lebih sedikit. Perangkat lunak dibuat sehingga untuk membuka dan menutup keran, tegangan hanya disuplai untuk waktu tertentu (6 detik), selama itu keran harus memiliki waktu untuk membuka atau menutup. Perlu dicatat bahwa efek ini tidak mempengaruhi penutupan keran yang tidak lengkap momen ini datang setelah keran benar-benar mematikan aliran air. Dimungkinkan juga untuk menyebutkan bahwa terlalu banyak tegangan ke servos (diterapkan 9 volt untuk percobaan) membuat mereka bergerak dengan inersia lebih lanjut (setelah saklar batas dipicu) dan berbatasan dengan posisi ekstrem dengan suara karakteristik dampak.

Servo Ball Valves


Katup pemutus terlihat andal, tetapi bagian elektronik harus diselesaikan.



Jika Anda melihat sirkuit kontrol derek, Anda akan melihat bahwa mereka dikendalikan oleh tegangan positif. Kabel "minus" dan dua sinyal-kekuatan "plus", satu untuk menutup, yang lain untuk pembukaan. Tetapi ULN2003AN tidak dapat bekerja dalam mode ini, di dalamnya, ketika kunci dibuka, output yang dikelola terhubung ke minus. Solusinya adalah mengubah kontrol polaritas crane itu sendiri. Untuk melakukan ini, saya harus menukar sinyal "trailer", karena karena perubahan polaritas, motor listrik berputar ke arah yang berlawanan (dibandingkan dengan sirkuit stok), sedangkan posisi ekstrem sekarang dalam arah yang berlawanan. Akibatnya, kami memiliki crane dengan "plus" dan dua kontrol "minus" yang sama. Persis apa yang dibutuhkan!

Cranes dengan servo dalam kondisi "pertempuran".



Pembacaan meter


Tentu saja, tidak ada data yang disimpan di konter itu sendiri, yang dapat dibaca oleh dua kabel yang dihapus darinya. Ini hanya rantai dengan sakelar buluh dan magnet yang terletak pada impeller yang berputar. Pengukuran dengan multimeter tidak menunjukkan adanya resistensi atau kapasitansi listrik di sirkuit. Di penghitung saya, sirkuit (dengan pembukaan berikutnya) dari saklar buluh terjadi pada laju aliran satu liter air. Di suatu tempat ada informasi tentang meter, sinyal dari mana terbentuk setiap 10 liter. Itu mereka berbeda.

Mikrokontroler diperlukan untuk membaca pulsa ini. Antarmuka pengguna perangkat, tentu saja, memberikan nilai awal.

Dari masalah yang ada: dengan tidak adanya listrik, konsumsi air tidak akan diperhitungkan. Ada cacat perangkat keras, perlu untuk memperbaikinya - lakukan cadangan daya pada baterai, ini juga diperlukan untuk fungsi utama perangkat, jika tidak perangkat tidak akan dapat mematikan keran jika perlu.

Dari sini muncul dua tugas berikut:
  1. . , , ยซ ยป, , () / . , ( ), ยซยป, , (, ), , FreeRTOS.
  2. , , ยซ ยป.
    Matikan keran?
    , , , , , 11 , , ยซยป , , ยซยป , !

Kontrol


Encoder


Terletak di sebelah tampilan dan dirancang untuk menavigasi menu. Rotasi - pergi ke item menu berikutnya / sebelumnya, tekan - pilih / aktifkan item menu.

"Tombol merah"


Cara termudah untuk mematikan keran adalah dengan menekan tombol merah. Meskipun itu tidak boleh bermanfaat, karena beberapa waktu sebelumnya, perangkat itu sendiri harus melakukan segalanya. Tapi untuk jaga-jaga, tombol ada. Pers berulang, tahan lama, klik dua kali, dll. tidak dihitung, hanya pers pertama dan hanya itu. Mode "darurat" diaktifkan, hanya dapat dinonaktifkan melalui item menu khusus.

On / Off Toggle Switch


Mereka juga dapat dimatikan dengan ketukan, tetapi juga dapat dibuka, tentu saja, jika sistem tidak dalam mode "crash". Ini mungkin berguna untuk penghentian sementara pasokan air.

LED tiga warna


Semuanya di sini juga sederhana. Untuk menunjukkan mode saat ini: hijau - semuanya rapi, merah - tidak semuanya rapi, biru - keran ditutup menggunakan sakelar sakelar (lihat paragraf di atas). Warna pencampuran tidak digunakan, tiga sudah cukup. Tapi di sini muncul masalah. Cahaya sangat kuat sehingga menyilaukan ketika Anda melihat tampilan. 470 ohm untuk setiap warna tidak cukup. Diperbaiki secara terprogram. Ketika layar dalam keadaan aktif (dan itu aktif saat Anda menggunakan kontrol dan untuk sementara waktu), LED ini mati.

Kesimpulan


Perangkat berfungsi, pengujian berkala menunjukkan bahwa perangkat itu berfungsi dengan baik. Itu tidak membeku, tidak buggy. Meskipun saya tahu di mana ada potensi, tetapi kesalahan tidak kritis dalam kode, ini tidak dibahas dalam artikel ini.

Sumber, proyek uVision 5 Keil, file proyek untuk STM32CubeMX

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


All Articles