Saya memiliki papan dengan empat relay di atasnya. Ini memiliki pin Vcc, Gnd, dan In1-In4 standar. Saya ingin mengendalikannya dengan Arduino atau dalam kasus saya ESP32. Namun, saya perhatikan bahwa ketika pin output pada controller saya ditarik TINGGI tidak ada yang terjadi ketika itu ditarik RENDAH relay akan terlibat.
Ini adalah masalah ketika papan disetel ulang karena semua sakelar relai akan diaktifkan hingga dan ini bukan sesuatu yang saya inginkan. Setelah menggali, saya membuat ini:
Ini berfungsi seperti yang diinginkan, selalu ada 5V pada relay dan relay tidak aktif sepanjang waktu. Saat saya mengeluarkan sinyal ke dasar Q1, ia akan menarik keluaran ke tanah dan relai akan diaktifkan.
Saat ini saya memiliki empat relay ini dan segera saya akan memiliki lebih banyak. Jadi, saya ingin menyelesaikan ini dengan IC. Secara khusus, saya melihat IC7404 yang merupakan sekelompok gerbang TIDAK, namun, saya tidak yakin ini akan menyelesaikan masalah saya.
Jadi, apakah ada IC yang akan menarik output ke tanah ketika sinyal ada pada input? Akankah 7404 bekerja dan saya tidak melihat sesuatu? :)
Sunting: Ini adalah modul relai yang saya gunakan . Saya tidak dapat menemukan lembar data yang berguna di dalamnya.
sumber
Jawaban:
Fakta bahwa relay diaktifkan saat reset ketika pin harus dalam mode impedansi tinggi mengkhawatirkan, dan sesuatu yang perlu Anda pahami sepenuhnya untuk memvalidasi sistem Anda dan memperbaikinya.
Sunting: sekarang jelas bahwa ini adalah bug perangkat lunak dalam kode Anda, untuk menyelesaikan drive yang tidak disengaja rendah selama memulai, konfigurasikan bit register data output pin ke tinggi sebelum Anda mengatur pin menjadi output.
Yang mengatakan, jawaban literal untuk pertanyaan awal Anda akan menjadi chip yang berisi beberapa
open collector inverters
.74xx05 adalah contohnya.
The 74xx06 serupa tetapi memungkinkan menerapkan tegangan yang dapat diterima untuk output bahkan ketika ini melebihi tegangan suplai, misalnya Anda dapat mengoperasikan bagian pada 3.3v tetapi menarik output dari 5v.
Tapi ini bukan solusi untuk masalah Anda yang sebenarnya .
sumber
Solusi paling sederhana adalah menukar koneksi pin NO dan NC pada relai.
Opsi selanjutnya adalah membalik logika pemrograman untuk pin itu. Anda dapat menambahkan beberapa konstanta
Untuk membiasakan relay ke kondisi tertentu selama reset (saat pin output memiliki impedansi tinggi) Anda dapat menambahkan resistor pull-up atau pull-down sesuai kebutuhan. Pin IO akan dengan mudah mengalahkan arus yang bocor melalui resistor dan masih beralih relay dengan benar.
Dengan menggunakan 2 teknik itu, Anda dapat memilih status default relai menjadi status tidak bertenaga. Entah karena itu yang paling sering digunakan atau karena itu opsi gagal-aman.
sumber
Ini adalah "Manual pengguna" untuk relai Anda. Anda harus benar-benar tidak pernah merancang sistem tanpa memiliki semua lembar data terlebih dahulu.
Dari skema disediakan situ bisa terlihat jelas Anda hanya dapat menghubungkan controller langsung ke pin Inx. Artinya, tidak ada skema yang Anda buat yang diperlukan.
Karena input optocoupler dapat beroperasi dalam mode kolektor terbuka, saya sarankan Anda untuk tetap menyimpan pin yang sesuai dari UC Anda sebagai input / High-Z ketika Anda ingin menjaga relay di NC.
Karena saya tidak terbiasa dengan controller Anda, berikut adalah beberapa pseudo-code untuk membantu Anda:
Inisialisasi, untuk setiap pin yang mengendalikan relai:
Perintah relay ke NO:
Perintah menyampaikan kembali ke NC:
Biasanya UC akan bangun dengan pinnya sudah sebagai input, jadi baris pertama inisialisasi berlebihan, tetapi selalu lebih aman untuk melakukannya untuk memastikan sistem berada pada kondisi yang diketahui. Pastikan Anda tidak memiliki beberapa kode yang melakukan init umum dari semua pin ke beberapa nilai sebagai bagian dari beberapa kode boiler-plate, pemula diketahui membuat kesalahan ini.
PS Untuk saat ketika Anda benar - benar akan memerlukan beberapa pembalik arus driver hanya menggunakan sesuatu seperti ULN2003A !
sumber