IC yang akan menarik output ke tanah, mungkin BUKAN gerbang?

8

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:

Inverter sederhana

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.

BigWhale
sumber
1
Selamat datang di EE.SE. Saya akan langsung ke depan dan memberi Anda +1 untuk skema Anda. Mungkin solvable dengan inverter, tetapi untuk menjawab bahwa kami perlu Anda tahu kebutuhan daya output Anda. Apakah Anda tahu berapa banyak beban yang Anda miliki?
Menang
1
Anda mungkin ingin menambahkan dioda bias terbalik dari Output ke 5 V jika Anda mengoperasikan relay. Googling flyback diode atau freewheeling diode akan memberikan informasi lebih lanjut
Colin
1
Berikan tautan ke lembar data untuk relay. Kita perlu tahu berapa banyak arus yang mereka butuhkan. A 7404 mungkin tidak akan bisa tenggelam cukup saat ini.
Elliot Alderson
Apa maksud Anda sinyal ada? Apakah tegangan tinggi + 5v pada "input" node dan apa "sinyal tidak ada", 0V atau tidak dikenal / terputus?
R.Joshi
Tidak jelas mengapa relay akan aktif saat reset, karena biasanya pin dalam keadaan impedansi tinggi kecuali jika Anda secara tidak sengaja memilih mode strapping pin atau yang terlibat dalam bootloader.
Chris Stratton

Jawaban:

2

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 .

Chris Stratton
sumber
Anda benar, saya harus memeriksa prosedur startup saya. Saya biasanya mengatur semua parameter I / O dan menginisialisasi semuanya kemudian saya menjaga keadaan default pin. Saat mengatur pin sebagai pin output, pin berjalan secara otomatis dalam kondisi RENDAH. Tampaknya ada cukup waktu antara pinMode () dan digitalWrite pertama () yang mengatur pin ke status TINGGI, mencegah relai untuk terlibat. Jadi solusi saya sekarang untuk memanggil pinMode () dan kemudian segera mengatur pin ke HIGH.
BigWhale
Atur ke tinggi sebelum Anda menjadikannya output, bukan setelahnya.
Chris Stratton
Anda memiliki driver untuk koil relay, ya? Tambahkan resistor pullup ke input mereka, lakukan dengan itu.
CrossRoads
1
@CrossRoads pull-up resistor tidak akan menyelesaikan masalah atau sedikit meningkatkan hal-hal sama sekali. Masalahnya adalah bahwa perangkat lunak penanya melakukan hal-hal dalam urutan yang salah, mendorong pin rendah sebelum membuatnya tinggi. Kesalahan mengemudi rendah akan mengatasi pull-up resistor Anda. Dan selain itu, ini mungkin adalah katoda LED optocoupler - pull-up tidak akan benar-benar melakukan apa pun di sana, apa yang dibutuhkan tidak salah menyelesaikan jalur ke tanah.
Chris Stratton
Pullup akan menjaga pin tetap tinggi saat perangkat melalui proses reset / boot dan pin melayang.
CrossRoads
0

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

#define RELAY_ON LOW
#define RELAY_OFF HIGH

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.

aneh ratchet
sumber
Saya kira kamu melewatkan poin itu. OP tidak ingin relay diaktifkan saat reset .
Elliot Alderson
0

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:

Set direction to input
Set level to "0" (do NOT change direction to output)

Perintah relay ke NO:

Set direction to output

Perintah menyampaikan kembali ke NC:

Set direction to input

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 !

Equilibrius
sumber
3
"ULN" bukan bagian. Tunjukkan nomor bagian yang sebenarnya, jangan sembunyikan di tautan
Chris Stratton
Ini adalah satu-satunya bagian dari seri yang pernah saya gunakan, jadi selalu "hanya ULN" untuk saya.
Equilibrius