Apakah Multiplexing lebih unggul daripada Charlieplexing?

17

Saya telah meninjau kedua metode, dan multiplexing benar-benar hanya tampaknya memiliki satu keuntungan, bahwa akan lebih mudah untuk melacak LED yang gagal daripada dalam array Charlieplex.

Bisakah seseorang yang lebih berpengetahuan menjelaskan pengorbanan lain?

Chris B. Behrens
sumber

Jawaban:

26

Ya, multiplexing dan charlieplexing keduanya memiliki kelebihan, dan masing-masing paling cocok untuk tugas yang berbeda.

Keuntungan utama dari charlieplexing adalah dapat dilakukan pada mikrokontroler ukuran sedang, menggerakkan lebih banyak LED dengan pin I / O yang lebih sedikit, dan berpotensi tidak memiliki perangkat keras eksternal selain LED.

Sekarang, keuntungan dari "tidak ada perangkat keras eksternal" hanya berlaku untuk jumlah LED yang relatif kecil, hingga Anda mencapai batas saat ini dari mikrokontroler Anda, dan memaksakan batas kecerahan yang tidak dimiliki oleh array multiplexed. Jika Anda memilih untuk tidak menggunakan perangkat keras eksternal, Anda umumnya terbatas hanya mengendarai satu LED dalam matriks pada saat tertentu - tidak seperti array multiplex di mana Anda mengendarai baris penuh pada suatu waktu.

Setelah Anda menambahkan perangkat keras eksternal untuk mendorong LED dengan kecerahan lebih tinggi agar sesuai dengan array multiplexed, pencetakan charlieplex kehilangan kilauannya.

Pertama, array multiplexed ditangani secara ketat oleh baris dan kolom; sangat mudah untuk melakukan ini. Nyalakan baris 1, nyalakan semua kolom untuk baris 1, matikan baris 2, nyalakan semua kolom untuk baris 2, dan seterusnya. Sebaliknya, array charlieplexed jauh lebih mudah. Selalu ada baris diagonal yang tidak berguna, dan saya pribadi menggunakan tabel pencarian untuk menghubungkan antara array saya dan array persegi panjang tempat saya menyimpan data saya.

Kedua, dan seorang pembunuh, adalah bahwa charlieplexing umumnya memerlukan driver tri-state. Multiplexing, bagaimanapun, dilakukan dengan logika biner on-off yang ketat. Jika Anda memiliki mikrokontroler jumlah pin rendah dan ingin menggerakkan array besar LED, mudah untuk menggunakan chip logika eksternal (misalnya, register geser dan / atau driver LED) untuk mengontrol kedua sumbu X dan Y. Kebanyakan chip tipe register geser tidak mendukung tristating yang diperlukan untuk melakukan hal yang sama dalam array charlieplexed. Driver charlieplexed khusus tersedia, tetapi hampir tidak serbaguna.

Ketiga, dalam array charlieplexed, setiap pin yang tidak aktif melakukan sesuatu masih terhubung ke LED melalui koneksi lemah ("impedansi tinggi"). Dan sementara koneksi lemah, itu bukan nol. Misalkan Anda memiliki 25 pin I / O yang terhubung ke kisi-kisi LED. Jika Anda menyalakan satu LED - dengan mengambil salah satu dari 25 garis tinggi dan satu dari 25 garis rendah, itu menyisakan 23 jalur impedansi tinggi. Setiap tempat di mana garis I / O tinggi melewati LED ke garis netral, ada beberapa kemungkinan untuk membocorkan arus. Tidak banyak. Mungkin microamp di sini atau di sana. Tetapi dengan LED modern dan efisien, itu sering kali cukup untuk menciptakan ghosting yang terlihat.

Keempat, lebih sulit untuk mengontrol kecerahan LED dalam array charlieplexed. Dalam larik multipleks, Anda dapat menggunakan sejumlah chip driver LED "tenggelam" pengatur arus yang tersedia yang mengatur kecerahan setiap kolom secara terpisah, dengan menggunakan pengaturan saat ini dalam kombinasi dengan driver PWM. Sejauh lokasi matriks charlieplexed ditangani secara individual dan hanya menggunakan resistor per baris atau kolom, jauh lebih sulit untuk melakukan koreksi dot-brightness dan animasi skala abu-abu / warna penuh dalam array charlieplexed.

Windell Oskay
sumber
1
Baca bagus. Memberikan beberapa wawasan tentang desain peggy Anda ...
NickHalden
Baru saja membeli led regular redup tetapi ghosting masih menjadi masalah. Apakah lebih baik menggunakan resisitor untuk setiap dipimpin alih-alih setiap baris? Saya mengendarai 6 led dengan menggunakan Attiny85. Sebelumnya saya menggunakan 330 Ohm resistor untuk setiap baris dan sekarang saya menggunakan 1K. Dengan 1K chosting kurang tapi masih ada, juga lednya tidak secerah 330 Ohm ofcourse. Jadi lebih baik setiap LED memiliki resistor sendiri untuk menghilangkan ini?
Codebeat
3

Kerugian paling signifikan dari lampu "Charlieplexing" adalah bahwa ia membatasi jumlah LED yang dapat digerakkan dengan multiplexing 'n'-way menjadi n (n-1). Saya tidak melihat persyaratan pengemudi tri-state sebagai masalah besar dengan teknik secara keseluruhan. Tentu saja harus menggunakan dua driver konvensional alih-alih driver tri-state akan mengurangi manfaat dari CharliePlexing, tetapi dalam beberapa kasus keuntungan masih tetap ada (misalnya dapat mengurangi jumlah kabel interkoneksi antara panel dengan driver dan panel dengan lampu atau sakelar).

Adapun switch Charlieplexing, artikel Wikipedia gagal menyebutkan kerugian terbesar: Charlieplexing tidak memungkinkan pengontrol untuk secara pasif menunggu tombol ditekan. Di sisi lain, itu terlalu pesimis tentang persyaratan komponen. Pada tahun 1997, saya menghasilkan perangkat yang memindai delapan tombol menggunakan tiga pin I / O dan satu pin input-satunya pada PIC12C508, tanpa perlu dioda eksternal atau komponen lain kecuali IIRC pull-up untuk pin PIC yang tidak punya satu built in; pendekatan bisa menangani sepuluh tombol dengan penambahan resistor pull-up lain (untuk pin I / O lain yang tidak memilikinya), tetapi pelanggan hanya perlu delapan tombol sehingga tidak perlu.

supercat
sumber
Apakah Anda memiliki skema tentang itu di suatu tempat di internet?
Codebeat
@ Erwinus: Semua kabel dari CPU mendapatkan pull-up. Hubungkan sebuah saklar ke setiap pasangan kabel yang memungkinkan (jadi jika ada empat kabel, itu akan menjadi enam switch; jika lima kabel, 10; jika enam, tujuh, atau delapan, 15, 21, atau 28). Sambungkan sakelar antara setiap kabel dan arde (satu sakelar tambahan per kabel).
supercat