Kontrol LED bicolor hanya dengan satu pin

9

Apakah mungkin untuk mengontrol LED dua warna hanya dengan satu pin mikrokontroler?

Naluri mengatakan TIDAK, karena Anda dapat memiliki satu ujung ground dan yang lainnya pergi ke pin mikro, memungkinkan Anda untuk menghidupkan atau mematikannya tetapi tidak mengubah warnanya.

Tetapi mungkin seseorang memiliki ide yang lebih baik?

Thomas O
sumber
1
Anda dapat melakukan apa saja dengan satu pin mikro. Lebih spesifik tolong?
Nick T

Jawaban:

6

Anda dapat melakukan ini dengan LED dua warna yang memiliki dua LED saling berhadapan jika Anda menyambungkan satu terminal LED ke tegangan menengah mis. 2.5V pada desain 5V dan menghubungkan sisi lainnya ke MCU melalui resistor yang sesuai ( Saya menggunakan 560R).

Kemudian output rendah memberikan satu warna, tinggi memberikan yang lain dan tri-state meninggalkan LED. Modulasi lebar pulsa akan memungkinkan Anda untuk mengontrol kecerahan (mengalihkan output antara aktif dan tri-state) atau mencampur warna (mengalihkan output rendah ke tinggi).

Anda dapat menyesuaikan voltase antara untuk mengimbangi voltase maju LED yang berbeda juga.

Saya menggunakan op-amp LM2904 untuk memberikan tegangan menengah - ini bekerja dengan tegangan suplai ke 5V. Ada banyak perangkat lain yang dapat beroperasi pada tegangan lebih rendah dan masih tenggelam dan sumber arus yang cukup untuk menggerakkan LED.

John Gallant
sumber
3

Jika Anda tidak memerlukan kondisi mati, dan Voh Anda cukup besar (sunting: untuk mengatasi tegangan bias maju LED), Anda mungkin dapat menghubungkan satu ujung LED ke tegangan mid-rail. Mengeluarkan 1 menghasilkan satu warna, menghasilkan 0 mendapatkan warna lainnya. Untuk mematikannya ... ha, semoga sukses. Mungkin Anda bisa mencoba meletakkan kapasitor di sana, dan kemudian mendorong output dengan PWM yang tutupnya akan melicinkan ke tengah-rel?

ajs410
sumber
7
Saya sedang memikirkan hal yang hampir sama, mungkin keadaan mati dapat dicapai dengan mengatur pin keluaran mikro.
tcrosley
1
Sebuah saran luar biasa ... tri-menyatakan pin harus mematikannya tanpa PWM mewah. Namun, Anda harus berhati-hati untuk membiarkan input mengambang, mungkin perlu tarik ke bawah (BUKAN pembagi, jangan biarkan pin input melihat tegangan mid-rail!)
ajs410
1
Anda bisa menggunakan resistor bernilai tinggi (470k) yang ditarik tinggi atau rendah. LED akan menjadi bias atau satu warna atau yang lain, tetapi aliran saat ini akan sangat rendah sehingga Anda tidak akan melihat LED seperti pada.
akohlsmith
5
@ ajs410 - Saya pikir MCU dirancang lebih cerdas daripada chip logika bodoh. Pada mikro 8-bit rata-rata, sebagian besar pin dapat digunakan sebagai input analog (tanpa mengonfigurasikannya secara eksplisit) sehingga tidak boleh ada efek buruk (osilasi gerbang, penarikan arus berlebih) selama tegangan tetap di dalam GND dan VDD.
Nick T
2
Salah satu kelemahan (mungkin signifikan) dari topologi ini adalah bahwa Anda akan selalu memiliki penarikan arus yang cukup signifikan yang akan (tanpa modifikasi) memperbaikinya untuk aplikasi bertenaga baterai jangka panjang.
Nick T
0

Anda dapat Charlieplex itu

Tom
sumber
3
tapi itu membutuhkan minimal dua pin. OP meminta solusi menggunakan satu pin.
tcrosley
Sebenarnya, dalam beberapa kasus dimungkinkan untuk memperluas Charlieplexing untuk memberikan N * (N + 1) LED dengan pin N, jika tegangan suplai kurang dari dua kali penurunan tegangan LED, dan satu memiliki kombinasi yang tepat dari penurunan tegangan LED yang tersedia. Mari kita asumsikan untuk kesederhanaan bahwa tujuannya adalah untuk mengendalikan 12 LED dengan tiga pin; enam LED memiliki penurunan 2,5 volt, dan enam memiliki penurunan 1,7 volt, dan tegangan suplai 3,0 volt. Sasarannya adalah 5mA untuk dioda 2,5 volt dan 6,5mA untuk dioda 1,7 volt. Letakkan resistor 100ohm secara seri dengan setiap output. Tiga dari 2.5-volt LED menghubungkan output ke VDD, tiga ke VSS ...
supercat
... dan LED 1,7 volt menghubungkan output satu sama lain dalam bentuk Charlieplex "normal". Untuk menyalakan LED 1,7 volt, dorong satu output tinggi dan satu rendah. Resistor akan turun 0,65 volt, menyisakan 1,7 volt untuk LED, dan tegangan tidak cukup untuk LED 2,5 volt. Untuk menghidupkan led 2,5 volt, drive satu output tinggi atau rendah dan tidak ada yang sama sekali. Kemudian LED 2,5 volt akan memiliki cukup arus untuk menyala.
supercat
Seseorang dapat menambahkan lebih banyak resistor atau silikon dioda untuk menangani skenario tegangan yang berbeda jika perlu, tetapi itu akan menambah kompleksitas. @ tcrosley: Di atas digeneralisasikan untuk menggunakan satu pin untuk mengontrol dua LED.
supercat