Analisei os dois métodos e a multiplexação realmente parece ter apenas uma vantagem: seria mais fácil rastrear um LED com falha do que em uma matriz Charlieplex.
Alguém mais experiente pode explicar outras compensações?
Analisei os dois métodos e a multiplexação realmente parece ter apenas uma vantagem: seria mais fácil rastrear um LED com falha do que em uma matriz Charlieplex.
Alguém mais experiente pode explicar outras compensações?
Respostas:
Sim, a multiplexação e a charlieplexing têm suas vantagens e são mais adequadas para tarefas diferentes.
A principal vantagem do charlieplexing é que ele pode ser feito em um microcontrolador de tamanho médio, acionando mais LEDs com menos pinos de E / S e potencialmente nenhum hardware externo além dos LEDs.
Agora, a vantagem de "nenhum hardware externo" se aplica apenas a um número relativamente pequeno de LEDs, até atingir o limite atual do seu microcontrolador, e impõe um limite de brilho que as matrizes multiplexadas não possuem. Se você optar por não usar hardware externo, geralmente estará limitado a acionar apenas um LED na matriz a qualquer momento - ao contrário de uma matriz multiplexada na qual você dirige uma linha completa por vez.
Depois de adicionar o hardware externo para acionar os LEDs com brilho mais alto para corresponder ao de uma matriz multiplexada, o charlieplexing perde seu brilho.
Primeiro, uma matriz multiplexada é endereçada estritamente por linha e coluna; é muito simples fazer isso. Ative a linha 1, ative todas as colunas da linha 1, desative a linha 2, ative todas as colunas da linha 2 e assim por diante. Por outro lado, uma matriz com charlieplex é muito menos direta. Sempre há uma linha diagonal que é inútil, e eu pessoalmente uso tabelas de consulta para relacionar minhas matrizes e uma matriz retangular em que armazeno meus dados.
Em segundo lugar, e um assassino, é que o charlieplexing geralmente requer drivers de três estados. A multiplexação, no entanto, é realizada com lógica binária estrita on-off. Se você possui um microcontrolador de baixa contagem de pinos e deseja acionar uma grande variedade de LEDs, é fácil usar chips lógicos externos (por exemplo, registro de turno e / ou drivers de LED) para controlar os eixos X e Y. A maioria dos chips do tipo shift-register não suporta a tristagem necessária para fazer a mesma coisa em uma matriz com charlieplex. Drivers dedicados com charlieplexed estão disponíveis, mas não são tão versáteis.
Terceiro, em uma matriz com charlieplex, todos os pinos que não estão fazendo algo ativamente ainda são conectados aos LEDs por meio de uma conexão fraca ("alta impedância"). E enquanto a conexão é fraca, é diferente de zero. Suponha que você tenha 25 pinos de E / S conectados a uma grade de LEDs. Se você acender um LED - tendo uma dessas 25 linhas de altura e uma dessas 25 linhas de baixo, isso deixa 23 linhas de alta impedância. Cada local em que a linha de E / S alta passa por um LED para uma linha neutra, há alguma possibilidade de vazamento de corrente. Não muito. Talvez um microamp aqui ou ali. Mas com LEDs modernos e eficientes, isso geralmente é suficiente para criar fantasmas visíveis.
Quarto, é mais difícil controlar o brilho do LED em uma matriz com charlieplex. Em uma matriz multiplexada, é possível usar qualquer número de chips de driver de LED "afundando" com regulação de corrente comumente disponíveis que regulam o brilho de cada coluna separadamente, usando a regulação de corrente em combinação com um driver PWM. Na medida em que as localizações da matriz com charlieplexed são endereçadas individualmente e usam apenas um resistor por linha ou coluna, é muito mais difícil executar a correção do brilho dos pontos e a animação completa da escala de cinza / cores em um array com charlieplexed.
A desvantagem mais significativa das luzes "Charlieplexing" é que limita o número de LEDs que podem ser acionados com a multiplexação de 'n' vias para n (n-1). Não vejo o requisito de driver de três estados como um grande problema com a técnica como um todo. Certamente, o uso de dois drivers convencionais em vez de um driver de três estados reduzirá o benefício do CharliePlexing, mas em alguns casos ainda podem existir vantagens (por exemplo, pode reduzir o número de fios de interconexão entre um painel com os drivers e um painel com o luzes ou interruptores).
Quanto aos comutadores Charlieplexing, o artigo da Wikipedia não menciona a maior desvantagem: o Charlieplexing não permite que um controlador aguarde passivamente o pressionamento de um botão. Por outro lado, é excessivamente pessimista quanto aos requisitos de componentes. Em 1997, produzi um dispositivo que digitaliza oito botões usando três pinos de E / S e um pino somente de entrada em um PIC12C508, sem a necessidade de diodos externos ou outros componentes, exceto o IIRC de um pull-up para um pino PIC que não funcionava. tenha um embutido; a abordagem poderia lidar com dez botões com a adição de outro resistor de pull-up (para outro pino de E / S que não possuísse um), mas o cliente precisava apenas de oito botões, portanto não havia necessidade.