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?
sumber
Jawaban:
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
150200 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.
sumber
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:
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
Catatan: Ini tidak berlaku untuk Arduino Due, dan kemungkinan ada beberapa perbedaan untuk Arduino Mega. Ini umumnya berlaku untuk Arduino yang berbasis mikrokontroler ATmega328.
sumber