SESAM
Saya pernah memiliki waktu yang lama lalu saklar ajaib sensitif sentuhan SESAM . Saya sangat menyukainya. Tetapi waktu terus berubah, tidak lagi cocok dengan interior, dan kemudian benar-benar tidak dirancang untuk bekerja dengan semua jenis lampu hemat energi yang modis. Saya menyukai prinsip manajemen di dalamnya. Sentuhan singkat sensor menyalakan / mematikan lampu, dan yang panjang menyesuaikan kecerahan. Siapa yang peduli - pemutus sirkuit adalah K145AP2 , analog dari Siemens S576B (K145AP2 masih dijual).
Di bawah cut, versi saya meniru operasi chip ini.
Belum lama ini, saya membuat lampu strip LED di profil aluminium dengan diffuser di atas meja untuk saya sendiri dan muncul pertanyaan tentang sakelar. Menempatkan siap entah bagaimana merepotkan. Sehingga menggantung di kawat - itu tidak indah, untuk meletakkan saklar biasa - merusak pemandangan, dan benar-benar tidak ada tempat untuk pergi.
Saya memutuskan untuk membangun sebuah saklar, dan untuk satu dan redup, di ujung chipboard 16mm. Menyentuhnya, tutup dengan stiker, yang dibaut oleh pembuat mebel.
Besi
Dimulai dengan sensor. Saya mencoba prinsip transfer biaya ke ATtiny13A . Opsi ini berfungsi, tetapi saya terlalu malas untuk repot dengan parameter penyetelan otomatis, dll. Dia juga tidak mengambil yang sudah jadi.
Kemudian saya memutuskan untuk mencoba menerapkan sensor pada perpustakaan QTouch . Sebagai sensor ATtiny10 . Ada utilitas siap pakai yang mengubah ATtiny10 menjadi tombol sentuh dengan semua barangnya . Tetapi pada output, biner sulit untuk menambahkan kode Anda di sana. Saya berpikir tentang apa yang harus dilakukan, menjelajahi Internet dan kemudian saya menemukan penyebutan TTP223 - pengontrol satu tombol sentuh. Opsi ini sangat cocok untuk saya.
Sebagai MK, pilihan jatuh pada ATtiny4 . Sekecil TTP223 , timer 16-bit. Ya, dan untuk waktu yang lama saya ingin melakukan sesuatu yang berguna pada tinki ini.
Sebagai kunci - P3055LD dari motherboard lama.
Papan sirkuit
Ketika mengembangkan papan sirkuit tercetak, saya melanjutkan dari kenyataan bahwa lubang di ujung chipboard membutuhkan seminimal mungkin, saya memutuskan bahwa diameter 7 mm akan cukup. Papan ternyata 7x28mm, dua lapisan.
Kemudian, ketika papan disolder, menjadi jelas bahwa papan tidak akan masuk ke dalam lubang 7mm, setidaknya 9mm - itu tidak memperhitungkan ketinggian elemen. Gagasan dengan stiker entah bagaimana juga tidak lagi suka. Dan kemudian sebuah rintisan furnitur menarik perhatian saya! Dirancang untuk lubang 10mm, dan diameter dalam persis 7mm! Semuanya bertepatan!
Sensor menempelkan dirinya pada syal terpisah yang disolder ke ujung utama. Dalam gambar Anda bisa melihat.
Programnya
Program kontrol ditulis dalam assembler. Setiap 32ms (Pengawas Waktu) sensor disurvei. Bergantung pada kondisi saat ini dan durasi penekanan, tindakan tertentu dilakukan. Logika kerja sedikit berbeda dari prototipe K145AP2
Jika lampu mati (keadaan setelah dihidupkan):
- Pers singkat menyalakan lampu pada tingkat yang sama dengan saat dimatikan. Saat dihidupkan untuk pertama kalinya pada kecerahan maksimum
- Tekan lama menyalakan lampu pada tingkat maksimum.
Jika lampu menyala:
- Tekan sebentar mematikan lampu
- Pers yang lama mengubah kecerahan. Arah perubahan kecerahan berubah dengan tekan lama berulang
Tekanan terlalu pendek (gangguan) oleh program diabaikan. Kecerahan diatur oleh koefisien PWM (16 bit). Frekuensi PWM sekitar 122 Hz (8.000.000 Hz / 2 16 ≈ 122 Hz)
Untuk mengimbangi persepsi psikofisiologis dari kecerahan pencahayaan dari kecerahan yang sebenarnya, perubahan yang terakhir terjadi di sepanjang bagian parabola kubik . Biasanya tabel digunakan untuk ini, tetapi dalam versi saya koefisien dihitung. Koefisien bervariasi dengan frekuensi PWM, yaitu, ketika kecerahan berubah, setiap pulsa diperoleh dengan durasinya sendiri. Nilai PWM minimum terbatas pada perangkat lunak.
Sebagian besar waktu MK tidur dan mengkonsumsi sekitar 16 microamps bersama dengan TTP223 . Artinya, rangkaian ini cukup cocok untuk perangkat dengan kekuatan otonom.
ATtiny4 memiliki enam pin. Dua untuk daya, satu default untuk reset. Saya sudah melibatkan dua. Hanya satu yang tersisa. Saya pikir bagaimana menggunakannya. Dan kemudian saya teringat laptop teman baru dengan trackpad Force Touch. Sebagai percobaan, saya memutuskan untuk melakukan hal serupa. Saya tidak memerlukan banyak keandalan respon, dan ada banyak vibromotors dari ponsel lama. Akibatnya, saya menerapkan fungsi seperti itu dalam program sehingga impuls pendek muncul pada output gratis, ketika batas penyesuaian tercapai. Dalam K145AP2, ketika batas penyesuaian tercapai, arah penyesuaian berubah. Oleh karena itu, beberapa keterampilan diperlukan untuk melepaskan tangan dari sensor secara maksimal atau minimum. Dalam implementasi saya, ketika perbatasan tercapai, penyesuaian berhenti. Total waktu penyesuaian dari satu batas ke batas yang lain adalah sekitar 4 detik.
Kode Tersedia di GitHub
TPI via Arduino
Secara terpisah, saya perhatikan pemrograman MK. JTAGICE3 saya tidak mendukung antarmuka pemrograman TPI. Tapi, untungnya, orang-orang baik menulis sketsa tentang Arduin untuk memprogram hal kecil ini. Tidak segera, tetapi semuanya bekerja untuk saya, firmware dibanjiri dan semuanya berfungsi. Selain arduins, 4 resistor diperlukan. Seluruh proses dilukis dalam sketsa.
Ringkasan
Tombol ajaib dipasang dan berfungsi sebagaimana mestinya. Konsumsi dan dimensi saat ini memungkinkannya tertanam di perangkat dengan daya otonom.
Saya tidak mendapatkan efek yang diharapkan dari getaran. Di sini rupanya percobaan dengan situs instalasi diperlukan.
Dalam prototipe K145AP2 dan analog Siemens S576B ada kesimpulan "Tidur". Ini adalah mode di mana kecerahan turun sangat lambat sampai benar-benar dimatikan. Seperti yang direncanakan oleh pabrikan, untuk ini sensor tambahan dipasang di dekat kepala tempat tidur. 16 bit timer PWM mengaktifkan mode ini.
Ini dari ide untuk masa depan.
Suka semuanya.
Terima kasih semuanya!
UPD: Seperti yang dijanjikan, saya menaikkan frekuensi PWM ke hampir 1kHz. Kode Github