Apakah ada batasan berapa banyak pin saat ini bisa tenggelam?

13

Saya telah bereksperimen dengan matriks LED 8x8 yang dikendalikan oleh Arduino Uno. Karena menurut saya tipikal, matriks menggunakan anoda umum untuk setiap baris, dan katoda umum untuk setiap kolom.

Saat ini, saya sudah mendapatkan semua pin matriks yang terhubung langsung ke pin IO di Uno, dan saya belum punya masalah dengan menyalakan LED satu-per-satu. Akan melalui seluruh matriks seperti ini membuat pembaruan sedikit lambat, artinya LED tidak secerah yang saya inginkan.

Sejauh yang saya tahu, saya tidak bisa dengan aman menerangi seluruh baris sekaligus, karena pin individu pada Uno tidak mampu sumber arus yang cukup untuk menggerakkan 8 LED terpisah pada saat yang sama (masing-masing membutuhkan setidaknya 10mA untuk cukup cerah).

Terpikir oleh saya bahwa kebalikannya mungkin lebih aman. Jika saya menerangi seluruh kolom sekaligus, maka setiap pin hanya memiliki sumber arus yang cukup untuk satu LED, yang seharusnya tidak menjadi masalah. Namun, itu bergantung pada satu pin yang berpotensi menenggelamkan arus dari semua 8, dengan total setidaknya 80mA.

Apakah ini mungkin, atau saya akan menggoreng papan saya?

Peter Bloomfield
sumber
Tampilan persis apa yang Anda gunakan (datasheet) dan apakah Anda menggunakan resistor seri? Mungkin Anda menggoreng tampilan jam daripada Arduino Anda.
jippie
Tidak ada nomor bagian di dalamnya sehingga saya tidak memiliki lembar data yang tepat. Saya berasumsi setiap LED memiliki tegangan maju 2V, dan saya konservatif menggunakan resistor seri 390 ohm saat ini (saat pengujian). Itu berarti saya mengendarainya sekitar 8mA setiap saya pikir.
Peter Bloomfield
itu seharusnya baik-baik saja.
jippie
Bisakah Anda menjelaskan sedikit lebih banyak tentang apa yang Anda lakukan. Alasan mengapa saya bertanya adalah karena saya ingin melakukan hal yang sama, dan saya seorang pemula. Saya RTFMing dan pertanyaan Anda adalah hit tertinggi untuk pencarian saya. Saya [email protected]. Terima kasih.
user1928764

Jawaban:

13

Apakah saya akan menggoreng papan saya?

Hasil yang sangat mungkin. Inilah alasannya:

The Arduino Uno menggunakan mikrokontroler atMEGA328, yang memiliki peringkat maksimum absolut sumber 40 mA atau sink per GPIO. Juga, arus total melalui rel pasokan atau tanah (yaitu total dari semua OP saat ini ingin pin GPIO untuk tenggelam, atau sumber) dinilai hingga maksimum 150 200 mA.

Secara realistis, grafik saat ini dalam lembar data atMEGA328 bahkan tidak mencapai 40 mA, oleh karena itu paling aman untuk membatasi arus hingga total 20 mA per GPIO.

Dengan kata lain, apakah GPIO digunakan sebagai sumber atau bak cuci, batasnya tetap sangat rendah, dan dalam praktiknya, harus dijaga jauh lebih rendah daripada peringkat maksimum absolut. Bahkan di bawah maksimum absolut, menjalankan mikrokontroler ke suhu yang terlalu tinggi mengurangi harapan hidup.

Solusi :

Gunakan baik BJT, MOSFET, atau IC driver seperti ULN2003 untuk benar-benar menggerakkan arus melalui LED.

Anindo Ghosh
sumber
2
Di mana Anda menemukan 150mA maks. untuk paket? Saya memiliki 200mA di bawah peringkat maksimum absolut .
jippie
@ jippie saya melakukan kesalahan :-)
Anindo Ghosh
9

Saya akan mencuri jawaban saya dari ketika saya menjawab pertanyaan ini pada upaya SE Arduino terakhir.


Ini agak rumit. Pada dasarnya, ada sejumlah faktor pembatas:

Garis IO dari mikrokontroler (yaitu pin analog dan digital) memiliki batas arus agregat (misalnya total), dan batas per-pin:

masukkan deskripsi gambar di sini
Dari lembar data ATmega328P .

Namun, tergantung pada bagaimana Anda mendefinisikan "Pin" Arduino, ini bukan keseluruhan cerita.

Pin 5V dari Arduino tidak terhubung melalui mikrokontroler . Dengan demikian, dapat sumber daya yang lebih besar secara signifikan. Saat Anda memberi daya arduino dari USB, antarmuka USB membatasi konsumsi daya total hingga 500 mA. Ini dibagikan dengan perangkat di papan Arduino, sehingga daya yang tersedia akan sedikit kurang.
Saat Anda menggunakan catu daya eksternal, melalui konektor daya laras, Anda dibatasi oleh regulator 5V lokal, yang memiliki peringkat maksimum 1 Amp . Namun, ini juga terbatas secara termal , artinya saat Anda menarik daya, regulator akan memanas. Ketika terlalu panas, itu akan ditutup sementara.

Output yang diatur 3.3V mampu memasok 150 mA max, yang merupakan batas regulator 3.3V.


Singkatnya

  • The maksimum absolut untuk setiap IO pin tunggal 40 mA ( ini adalah maksimum . Anda harus pernah benar-benar menarik penuh 40 mA dari pin. Pada dasarnya, itu adalah ambang di mana Atmel tidak bisa lagi menjamin chip tidak akan rusak. Anda harus selalu memastikan bahwa Anda aman di bawah batas saat ini. )
  • Arus total dari semua pin IO bersama adalah 200 mA maks
  • Pin output 5V baik untuk ~ 400 mA pada USB, ~ 900 mA saat menggunakan adaptor daya eksternal
    • 900 mA adalah untuk adaptor yang menyediakan ~ 7V. Dengan meningkatnya voltase adaptor, jumlah panas yang harus dihadapi regulator juga meningkat, sehingga arus maksimum akan turun saat voltase meningkat. Ini disebut pembatasan termal
  • Output 3.3V mampu memasok 150 mA .
    • Catatan - Setiap daya yang ditarik dari rel 3.3V harus melalui rel 5V . Oleh karena itu, jika Anda memiliki perangkat 100 mA pada output 3.3V, Anda harus juga menghitungnya terhadap arus total 5V.

Catatan: Ini tidak berlaku untuk Arduino Due, dan kemungkinan ada beberapa perbedaan untuk Arduino Mega. Ini umumnya berlaku untuk Arduino yang berbasis mikrokontroler ATmega328.

Connor Wolf
sumber