Alasan mengapa tidak baik untuk menghubungkan relay langsung dari pin digital Arduino


8

Setelah melihat berbagai skema untuk mengendalikan relai melalui Arduino, saya perhatikan bahwa, sebagian besar waktu, transistor digunakan untuk mengalihkan suplai terpisah ke koil relay daripada langsung memasok relai dengan output 5-Volt dari I / O pin dari Arduino. Sebagai contoh, saya memiliki estafet DPDT 5 volt dan juga motor dc kecil. Saya ingin mengendarai keduanya langsung dari Arduino UNO (klon SMD) saya dengan prosesor Atmel328? Apakah disarankan untuk melanjutkan?

Jika tidak (kemungkinan besar):

  1. Bisakah seseorang memberikan penjelasan terperinci dan mungkin juga memperingatkan tentang batasan dan hal-hal saat ini?

  2. Bagaimana seseorang bisa mengendalikan komponen seperti itu tanpa risiko Arduino? Apa beberapa cara umum untuk mencapai ini?

  3. Perangkat apa yang secara umum dapat merusak papan Arduino (atau unit mikrokontroler) dengan cara yang serupa?

Saya hanya seorang pemula yang ingin menjadi sangat berhati-hati. Terima kasih.


Meskipun baru-baru ini, dengan pertemuan pertama saya dengan Arduino, saya menggunakan pin I / O secara langsung untuk memberi energi pada motor mainan dc dan mengubah arahnya dengan menghidupkan dan mematikan relai DPDT dengan cara yang sama. Sejauh ini tidak ada yang salah.
DorkOrc

Jawaban:


8

Pin prosesor memiliki kemampuan drive yang sangat terbatas saat ini.

  • Nilai pengenal dapat bervariasi tergantung pada apakah Anda menginginkan drive tinggi atau rendah.
  • Beberapa prosesor hanya akan memasok beberapa mA dan yang paling sering Anda dapatkan secara resmi adalah dalam kisaran 20 hingga 30 mA.

  • Biasanya ada batas arus total untuk prosesor dan hanya beberapa pin yang dapat memberikan arus puncak secara bersamaan.

  • Pin prosesor memiliki ketahanan efektif yang signifikan dan tegangan tinggi akan "jatuh" karena meningkatnya arus yang ditarik dan tegangan rendah akan naik ketika beban meningkat. Pin MUNGKIN spesifik dengan arus hubung singkat maksimum tetapi pada saat itu pin tinggi akan ditarik rendah dan pin rendah akan ditarik tinggi sehingga arus hubung singkat memiliki penerapan yang terbatas.

Bahkan jika Anda memiliki 25 mA per pin dinilai prosesor daya yang tersedia kecil. 25 mA · 4V katakan (penurunan 1V pada 5V Vcc) = 100 mW. Sebagian besar motor akan mengambil lebih dari itu dan hanya motor yang sangat kecil akan berjalan dengan baik ketika hanya didukung oleh pin.

Motor listrik dan induktor akan menghasilkan voltase tinggi secara signifikan ketika arus terputus - voltase puluhan volt dapat dengan mudah dihasilkan dan voltase 100+ dapat terjadi. Menghubungkan motor induktor ke pin prosesor secara langsung adalah undangan untuk penghancuran. Murphy akan sering menurutinya.


Transistor (bipolar atau MOSFET) yang akan menggerakkan motor hobi khas berharga 10 sen (atau bebas dari peralatan yang dibuang) dan memungkinkan penggerak port pin saat ini untuk disangga dan "diperkuat". Penggunaan transistor atau buffer lain adalah ide yang sangat bagus jika Anda memiliki satu atau beberapa prosesor dan tidak ingin mereka mati secara semi-acak.

Driver motor MOSFET - dari sini - bagian 8.

Tegangan dan nomor bagian adalah contohnya - pilih yang sesuai.
Sebuah biploar NPN dapat digunakan dengan penambahan resistor input ke basis transistor.

masukkan deskripsi gambar di sini

Driver dua arah - jika Anda ingin pengemudi dapat menggerakkan beban tinggi dan rendah, sirkuit ini akan berfungsi. dari sini
Gerbang input dalam hal ini adalah driver prosesor internal. Kedua gerbang MOSFET terhubung langsung ke pin prosesor. Vdd biasanya tidak boleh lebih tinggi dari prosesor Vmax_drive_out. Sedikit lebih tinggi dapat dibuat untuk bekerja dengan desain yang sesuai. Beban tegangan yang jauh lebih tinggi dapat digerakkan dengan sirkuit ini (atau serupa) ditambah satu transistor tambahan.

masukkan deskripsi gambar di sini


Buffer seperti ULN2803 (dan anggota keluarga lainnya) akan menggerakkan 8 saluran x 500 mA / saluran dan beberapa dapat diparalelkan.


Sebuah ULN2803 pada dasarnya adalah 8 x "Darlington" transistor dengan emitor yang terhubung ke kesamaan, 8 x kolektor "terbuka" (tidak terhubung), dan 8 dioda flyback untuk menangani lonjakan tegangan berlebih (gunakan opsional). (Ada keluarga ULN280x dengan karakteristik input yang sedikit berbeda).

Perangkat ini menyediakan cara yang terjangkau untuk menyediakan driver pull down 8 x 500 mA. Beban yang terhubung dari output ke V + dihidupkan ketika pin input digerakkan tinggi. Setelah Anda menggunakannya beberapa kali, Anda akan menemukannya mudah untuk digunakan dan sangat berguna. (Ada juga keluarga ULN200x dengan 7 saluran per paket).

Video "cara" YouTube


Mengemudi motor stepper

masukkan deskripsi gambar di sini

Juga di sini


Mengemudi motor DC kecil - dan banyak lagi.

masukkan deskripsi gambar di sini Jutaan contoh

Digikey - tersedia dalam 1 jika diinginkan $ 0,72 / 1, $ 0,29 dalam 1000's.

Lembar data ULN2803


Dijual di Sparkfun - bisa didapat lebih murah tetapi ini tersedia


7

Output yang direkomendasikan (sumber atau sink) dari pin I / O adalah 20 mA. Maksimum absolut adalah 40 mA. Relai koil Anda cenderung mengonsumsi lebih dari itu, terutama saat berenergi awalnya. Ini akan merusak pin output Anda. Maka akhirnya akan gagal.

Sejauh ini tidak ada yang salah.

Tidak, belum. :)

Bagaimana seseorang bisa mengendalikan komponen seperti itu tanpa risiko Arduino? Apa beberapa cara umum untuk mencapai ini?

Gunakan transistor atau MOSFET.

Perangkat apa yang secara umum dapat merusak papan Arduino (atau unit mikrokontroler) dengan cara yang serupa?

Apa pun yang melebihi tegangan maksimum atau batas arus seperti yang didokumentasikan dalam lembar data. Kumparan (mis. Pada relai dan motor) khususnya cenderung memiliki tegangan balik yang tinggi ketika dimatikan, itulah sebabnya Anda memerlukan dioda snubber .

Apakah disarankan untuk melanjutkan?

Dianjurkan untuk memperhatikan apa yang saya tulis di atas, dan membaca banyak, banyak artikel di Web tentang cara mengendarai motor dan relay dari Arduino. Anda bukan orang pertama yang mencoba ini.


4

Lihatlah sirkuit sederhana pada PDF ini dari Arduino Playground. Ini menunjukkan satu transistor untuk menggerakkan relay kecil.

Seperti yang dikatakan Russell dalam jawabannya, ULN2803 atau sejenisnya adalah chip yang memungkinkan Anda mengemudikan beberapa relay kecil, yang lebih rapi daripada menggunakan beberapa transistor, jika itu yang Anda inginkan.

(Perhatikan juga dioda "D1" di sirkuit yang saya tautkan - Anda memerlukan ini, ini untuk melindungi transistor dari kerusakan oleh paku induktif yang dihasilkan saat relai mati. Beberapa chip gaya ULN memiliki dioda ini terpasang, itulah sebabnya Anda tidak selalu melihatnya dalam skema.)


3

Untuk benar-benar melindungi arduino Anda, ada baiknya Anda memasang photo-coupler pada pin dan menggerakkan sirkuit Anda dengan cara itu. Maka tidak ada muatan induktif yang menyimpang atau kekurangan yang dapat memengaruhi Arduino.

Mereka juga disebut OptoIsolators atau Optocouplers.

http://forum.arduino.cc/index.php?topic=143954.0


1
Anda benar, optoisolator adalah cara terbaik untuk melakukannya. Cara lain untuk melakukannya yang sedikit kurang mengisolasi tetapi masih berguna adalah dengan menggunakan Penguat Operasional (Op Amp) sebagai penyangga. Ini juga disebut 'folloer' Op Amps. Perhatikan bahwa Anda dapat melakukan ini dengan OpAmp off-the-shelf, Anda hanya meletakkan sirkuit dengan cara tertentu. en.wikipedia.org/wiki/Buffer_amplifier#Op-amp_implementation
Dan

3

Mari kita lihat beberapa dasar, ini tampaknya menjadi dasar dari banyak pertanyaan:

Kapasitor ketika daya dihidupkan akan menarik sejumlah besar arus yang berkurang saat ia terisi. Kurva ini juga disebut konstanta waktu RC (ini dekat tetapi tidak tepat " http://www.electronics-tutorials.ws/rc/rc_1.html " akan memberikan penjelasan yang lebih baik).

Ketika mematikan kapasitor, lepaskan pada laju eksponensial (konstanta waktu RC) tergantung pada nilai, tegangan muatan, dan beban. Ini membuat mereka bagus untuk menahan daya untuk waktu yang singkat ketika daya gagal.

Induktor tidak menarik apa-apa saat dinyalakan tetapi arus meningkat secara eksponensial sampai tegangannya mencapai tegangan suplai.

Ketika dimatikan bidang induktif dalam keruntuhan induktor menyebabkan polaritas terbalik. Tegangan akan naik tak terbatas hingga sesuatu yang eksternal membatasi. Semakin cepat dimatikan, semakin cepat waktu naik dan voltase. Energi akan berhenti mengalir ketika muatan induktif hilang. Tebak ke mana arus ini mengalir ketika beban induktif seperti relai terhubung ke pin port?

Untuk alasan ini Anda perlu meletakkan dioda (biasa disebut fly wheel diode) melintasi beban induktif. Google untuk: "kurva biaya induktor / kapasitor" Anda akan menemukan banyak grafik bagus yang menjelaskan hal ini. Jika Anda melihat rangkaiannya, ia memiliki katoda + yang terhubung ke sisi paling positif dari catu daya. Dalam konfigurasi ini tidak akan melakukan kecuali tegangan terbalik (ketika beban induktif dimatikan).

Kesalahpahaman umum lainnya adalah Anda dapat memuat mikroprosesor I / O secara maksimal. Ini desain yang buruk. Mereka memberi Anda maksimum per pin, per port dan untuk chip. Pada suhu kamar Anda mungkin akan lolos sebentar.

Mari kita asumsikan kita memiliki port dengan beban 40mA. Outputnya adalah 0,005 dari power rail. Menggunakan hukum Ohm, kami menghabiskan 20 miliwatt daya pada satu pin. Pada tingkat pemuatan ini, tidak perlu waktu lama untuk memanaskan perangkat karena disipasi daya internal.

Ketika pin output berubah keadaan, ia menarik lebih banyak arus karena harus mengisi atau melepaskan kapasitansi internal dan eksternal, 'lebih banyak panas', lebih cepat 'lebih banyak panas'.

Jika Anda melihat beberapa spesifikasi akan memberi Anda suhu maksimum, itu untuk persimpangan pada die, bukan suhu case. Plastik adalah konduktor yang buruk sehingga paket pendingin tidak banyak berfungsi. Sekarang pertimbangkan ini bersamaan dengan suhu sekitar. Peringkat biasanya diberikan dengan perangkat di 25C, coba tebak apa yang terjadi ketika semakin hangat.

Selamat bersenang-senang,

Gil

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.