Índice:

LEDs Charlieplexing - a teoria: 7 etapas (com imagens)
LEDs Charlieplexing - a teoria: 7 etapas (com imagens)

Vídeo: LEDs Charlieplexing - a teoria: 7 etapas (com imagens)

Vídeo: LEDs Charlieplexing - a teoria: 7 etapas (com imagens)
Vídeo: VUMETER TEST 7 2024, Junho
Anonim
LEDs Charlieplexing - a teoria
LEDs Charlieplexing - a teoria
LEDs Charlieplexing - a teoria
LEDs Charlieplexing - a teoria

Este instrutível é menos uma construção do seu próprio projeto e mais uma descrição da teoria do charlieplexing. É adequado para pessoas com noções básicas de eletrônica, mas não para iniciantes. Eu o escrevi em resposta às muitas perguntas que recebi em meus Instructables publicados anteriormente.

O que é 'Charlieplexing'? Ele aciona muitos LEDs com apenas alguns pinos. Caso você esteja se perguntando, Charlieplexing tem o nome de Charles Allen da Maxim, que desenvolveu a técnica. Isso pode ser útil para muitas coisas. Pode ser necessário exibir informações de status em um pequeno microcontrolador, mas ter apenas alguns pinos sobressalentes. Você pode querer mostrar uma matriz de pontos extravagante ou um display de relógio, mas não quer usar muitos componentes. Alguns outros projetos que demonstram o charlieplexing que você pode querer examinar são: Como conduzir muitos LEDs de alguns pinos do microcontrolador. por Westfw: - https://www.instructables.com/id/ED0NCY0UVWEP287ISO/ E alguns de meus próprios projetos, O relógio Microdot: - https://www.instructables.com/id/EWM2OIT78OERWHR38Z/ O relógio Minidot 2: - https://www.instructables.com/id/E11GKKELKAEZ7BFZAK/ Outro exemplo legal do uso de charlieplexing está em: https://www.jsdesign.co.uk/charlie/ O relógio Minidot 2 apresenta um esquema de charlieplexing avançado para desvanecimento / escurecimento que não será discutido aqui. ATUALIZAÇÃO 19 de agosto de 2008: Eu adicionei um arquivo zip com um circuito que pode ser capaz de explorar o charliplexing da matriz para LEDs de alta potência discutido (em comprimento:)) na seção de comentários. Ele tem um codificador de botão de pressão + posição para fazer uma interface de usuário, além de circuitos para controle de computador USB ou RS232. Cada um dos trilhos de alta tensão pode ser configurado para uma de duas tensões, digamos 2,2 V para LEDs VERMELHOS e 3,4 V para verde / azul / branco. A tensão para os trilhos laterais altos pode ser definida pelo trimpot. Eu imagino que um cabo de fita IDC de 20 fios seja conectado à placa e conectores IDC de 20 pinos adicionados ao longo da fita, cada placa de LED tendo links para quaisquer fios desejados na matriz. O circuito está em Eagle Cad e renderizado na imagem secundária abaixo. O circuito do lado alto é implementado usando optoacopladores que eu acho que podem ser adequados. Não testei este circuito nem escrevi nenhum software por falta de tempo, mas coloquei para comentar, estou particularmente interessado na implementação do optoacoplador. Alguém corajoso o suficiente para tentar … por favor, poste seus resultados. ATUALIZAÇÃO 27 de agosto de 2008: Para aqueles que não usam EagleCad….adicionado abaixo está um pdf do esquema

Etapa 1: alguma teoria do LED

Alguma Teoria LED
Alguma Teoria LED
Alguma Teoria LED
Alguma Teoria LED

Charlieplexing depende de vários aspectos úteis de LEDs e microcontroladores modernos.

Em primeiro lugar, o que acontece quando você conecta um LED à eletricidade. O diagrama principal abaixo mostra o que é chamado de curva If v Vf de um LED típico de 5 mm de baixa potência. If significa 'forward current' Vf significa 'forward voltage' O eixo vertical em outras palavras mostra a corrente que fluirá através de um LED se você colocar a tensão do eixo horizontal em seus terminais. Ele funciona ao contrário também, se você medir que a corrente tem algum valor, você pode olhar para o eixo horizontal e ver a tensão que o LED apresentará em seus terminais. O segundo diagrama mostra uma representação esquemática de um LED com If e Vf rotulados. No diagrama principal, também identifiquei as áreas do gráfico que são de interesse. - A primeira área é onde o LED está 'desligado'. Mais precisamente, o LED está emitindo luz tão fracamente que você não será capaz de vê-la, a menos que tenha algum tipo de intensificador de imagem super-duper. - A segunda área tem o LED emitindo levemente um brilho fraco. - A terceira área é onde um LED normalmente é operado e emite luz de acordo com a classificação do fabricante. - A quarta área é onde um LED é operado além de seus limites de operação, provavelmente está brilhando muito forte, mas, infelizmente, por apenas um curto período de tempo antes que a fumaça mágica de dentro escape e não funcione novamente … ou seja, nesta área ele queima porque muita corrente flui através dele. Observe que a curva If / Vf ou curva operacional do LED é uma curva 'não linear'. Ou seja, não é uma linha reta … tem uma dobra ou dobra. Por último, este diagrama é para um LED vermelho típico de 5 mm projetado para operar a 20 mA. LEDs diferentes de fabricantes diferentes têm curvas operacionais diferentes. Por exemplo, neste diagrama a 20 mA, a tensão direta do LED será de aproximadamente 1,9 V. Para um LED azul de 5 mm a 20 mA, a tensão direta pode ser 3,4 V. Para um LED luxeon branco de alta potência em 350mA, a tensão direta pode ser em torno de 3,2V. Alguns pacotes de LEDs podem ser vários LEDs em série ou em paralelo, alterando a curva Vf / If novamente. Normalmente, um fabricante especificará uma corrente operacional que é segura para usar o LED e a tensão direta nessa corrente. Normalmente (mas nem sempre) você obtém um gráfico semelhante ao mostrado abaixo na folha de dados. Você precisa consultar a folha de dados do LED para determinar qual é a tensão direta em diferentes correntes de operação. Por que este gráfico é tão importante? Porque mostra que quando uma tensão passa pelo LED, a corrente que vai fluir será de acordo com o gráfico. Abaixe a tensão e menos corrente fluirá … e o LED ficará 'desligado'. Isso faz parte da teoria do charlieplexing, que abordaremos na próxima etapa.

Etapa 2: As Leis (da Eletrônica)

As Leis (da Eletrônica)
As Leis (da Eletrônica)
As Leis (da Eletrônica)
As Leis (da Eletrônica)
As Leis (da Eletrônica)
As Leis (da Eletrônica)

Ainda não conhecemos a magia do charlieplexing … precisamos conhecer alguns princípios básicos das leis da eletrônica. A primeira lei de interesse afirma que a tensão total em qualquer série de componentes conectados em um circuito elétrico é igual à soma do indivíduo tensões nos componentes. Isso é mostrado no diagrama principal abaixo. Isso é útil ao usar LEDs porque a bateria média ou o pino de saída do microcontrolador nunca terão exatamente a tensão correta para operar o LED na corrente recomendada. Por exemplo, um microcontrolador normalmente funciona a 5 V e seus pinos de saída estarão a 5 V quando ligado. Se você apenas conectar um LED ao pino de saída do micro, verá pela curva de operação na página anterior, muita corrente fluirá no LED e ficará quente e queimará (provavelmente danificando o micro também). No entanto, se introduzirmos um segundo componente em série com o LED, podemos subtrair alguns dos 5 V para que a tensão restante seja a certa para operar o LED na corrente operacional adequada. Normalmente é um resistor e, quando usado dessa forma, é chamado de resistor limitador de corrente. Este método é usado muito comumente e leva ao que é chamado de 'lei de ohms' …. assim chamado após o Sr. Ohm. A lei de hms segue a equação V = I * R onde V é a tensão que aparecerá através de uma resistência R quando uma corrente I está fluindo através do resistor. V está em volts, I está em amperes e R está em ohms. Portanto, se tivermos 5 V para gastar e quisermos 1,9 V no LED para fazê-lo funcionar a 20 mA, então queremos que o resistor tenha 5-1,9 = 3,1 V através dele. Podemos ver isso no segundo diagrama. Como o resistor está em série com o LED, a mesma corrente fluirá pelo resistor que o LED, ou seja, 20mA. Então, reorganizando a equação, podemos encontrar a resistência de que precisamos para fazer isso funcionar. V = I * RsoR = V / Substituindo os valores em nosso exemplo, obtemos: R = 3,1 / 0,02 = 155ohms (observe 20mA = 0,02Amps) Ainda comigo até agora … legal. Agora veja o diagrama 3. Ele tem o LED imprensado entre dois resistores. De acordo com a primeira lei mencionada acima, temos a mesma situação no segundo diagrama. Temos 1,9 V no LED, então ele está funcionando de acordo com sua folha de especificações. Também temos cada resistor subtraindo 1,55 V cada (para um total de 3,1). Somando as tensões, temos 5 V (o pino do microcontrolador) = 1,55 V (R1) + 1,9 V (o LED) + 1,55 V (R2) e tudo se equilibra. Usando a lei dos ohms, descobrimos que os resistores precisam ser 77,5 ohms cada, que é a metade da quantidade calculada a partir do segundo diagrama. Claro que na prática você teria dificuldade em encontrar um resistor de 77,5 ohms, então você apenas substituiria o valor mais próximo disponível, digamos 75 ohms e acabaria com um pouco mais de corrente em o LED ou 82 ohms para ser seguro e ter um pouco menos. Por que diabos deveríamos estar fazendo esse resistor sandwhich para acionar um LED simples … bem se você tiver um LED é tudo um pouco bobo, mas isso é instrutível em charlieplexing e é útil para a próxima etapa.

Etapa 3: Apresentando 'Drive complementar'

Apresentando 'Drive complementar'
Apresentando 'Drive complementar'

Outro nome que é mais preciso para descrever 'charlieplexing' é 'unidade complementar'.

Em seu microcontrolador comum, você pode, no firmware, dizer ao micro para definir um pino de saída como '0' ou '1', ou para apresentar uma tensão de 0 V na saída ou uma tensão de 5 V na saída. O diagrama abaixo agora mostra o LED em sanduíche com um parceiro invertido … ou um LED complementar, portanto, unidade complementar. Na primeira metade do diagrama, o micro está emitindo 5 V para o pino A e 0 V para o pino B. A corrente irá, portanto, fluir de A para B. Como o LED2 é orientado para trás em relação ao LED1, nenhuma corrente fluirá através dele e não brilho. É o que se chama de polarização reversa. Temos o equivalente à situação da página anterior. Podemos basicamente ignorar o LED2. As setas mostram o fluxo atual. Um LED é essencialmente um diodo (portanto, Light Emitting Diode). Um diodo é um dispositivo que permite que a corrente flua em uma direção, mas não na outra. O esquema de um LED meio que mostra isso, a corrente fluirá na direção da seta … mas é bloqueada na direção oposta. Se instruirmos o micro para agora produzir 5 V no pino B e 0 V no pino A, teremos o oposto. Agora o LED1 é polarizado reverso, o LED2 é polarizado direto e permitirá o fluxo de corrente. O LED2 acenderá e o LED1 apagará. Agora pode ser uma boa ideia examinar os esquemas dos vários projetos mencionados na introdução. Você deve ver muitos desses pares complementares em uma matriz. É claro que no exemplo abaixo estamos conduzindo dois LEDs com dois pinos de microcontrolador … você poderia dizer por que se preocupar. Bem, a próxima seção é onde chegaremos ao âmago do charlieplexing e como ele faz um uso eficiente dos pinos de saída de um microcontrolador.

Etapa 4: Finalmente….a Matriz Charlieplex

Finalmente … uma Matriz Charlieplex
Finalmente … uma Matriz Charlieplex
Finalmente….a Matriz Charlieplex
Finalmente….a Matriz Charlieplex

Conforme mencionado na introdução, o charliplexing é uma maneira prática de acionar muitos LEDs com apenas alguns pinos em um microcontrolador. No entanto, nas páginas anteriores, não salvamos nenhum pino, acionando dois LEDs com dois pinos….grande uau!

Bem, podemos estender a ideia de impulso complementar em uma matriz charlieplex. O diagrama abaixo mostra a matriz charlieplex mínima que consiste em três resistores e seis LEDs e usando apenas três pinos do microcontrolador. Agora você vê como esse método é útil? Se você quisesse acionar seis LEDs da maneira normal … você precisaria de seis pinos do microcontrolador. Na verdade, com N pinos de um microcontrolador, você pode potencialmente acionar N * (N - 1) LEDs. Para 3 pinos, é 3 * (3-1) = 3 * 2 = 6 LEDs. As coisas se acumulam rapidamente com mais alfinetes. Com 6 pinos você pode conduzir 6 * (6 - 1) = 6 * 5 = 30 LEDs….wow! Agora, para a parte charlieplexing. Observe o diagrama abaixo. Temos três pares complementares, um par entre cada combinação de pinos de micro saída. Um par entre A-B, um par entre B-C e um par entre A-C. Se você desconectasse o pino C por enquanto, teríamos a mesma situação de antes. Com 5 V no pino A e 0 V no pino B, o LED1 acenderá, o LED2 terá polarização reversa e não conduzirá corrente. Com 5 V no pino B e 0 V no pino A, o LED2 acenderá e o LED1 terá polarização reversa. Isso se segue para os outros micro pinos. Se desconectarmos o pino B e definirmos o pino A em 5 V e o pino C em 0 V, o LED5 acenderá. Invertendo para que o pino A seja 0 V e o pino C seja 5 V, o LED6 acenderá. O mesmo para o par complementar entre os pinos B-C. Espere, eu ouço você dizer. Vamos examinar o segundo caso um pouco mais de perto. Temos 5 V no pino A e 0 V no pino C. Desconectamos o pino B (o do meio). OK, então uma corrente flui através do LED5, a corrente não está fluindo através do LED6 porque é polarizada reversa (e assim são LED2 e LED4) … mas também há um caminho para a corrente tomar do pino A, através do LED1 e LED3 não existe? Por que esses LEDs também não brilham? Aqui está o cerne do esquema de charlieplexing. Na verdade, há uma corrente fluindo tanto no LED1 quanto no LED3, no entanto, a voltagem entre os dois combinados só será igual à voltagem no LED5. Normalmente, eles teriam metade da voltagem que o LED5 tem. Portanto, se tivermos 1,9 V no LED5, apenas 0,95 V estará no LED 1 e 0,95 V no LED 3. A partir da curva If / Vf mencionada no início deste artigo, podemos ver que a corrente nesta meia tensão é muito inferior a 20mA … e esses LEDs não acenderão visivelmente. Isso é conhecido como roubo atual. Assim, a maior parte da corrente fluirá através do LED que desejamos, o caminho mais direto pelo menor número de LEDs (ou seja, um LED), em vez de qualquer combinação em série de LEDs. Se você olhou para o fluxo de corrente para qualquer combinação de colocar 5 V e 0 V em quaisquer dois pinos de unidade da matriz charlieplex, você verá a mesma coisa. Apenas um LED acenderá por vez. Como exercício, olhe para a primeira situação. 5 V no pino A e 0 V no pino B, desconecte o pino C. O LED1 é a rota mais curta para a corrente tomar e o LED 1 acenderá. Uma pequena corrente também passará pelo LED5, em seguida, retornará o LED4 para o pino B … mas, novamente, esses dois LEDs em série não serão capazes de sugar corrente suficiente em comparação com o LED 1 para brilhar intensamente. Assim, o poder do charlieplexing é realizado. Veja o segundo diagrama que é o esquema do meu relógio Microdot…..30 LEDs, com apenas 6 pinos. Meu relógio do Minidot 2 é basicamente uma versão expandida do Microdot … os mesmos 30 LEDs dispostos em uma matriz. Para fazer um padrão na matriz, cada LED a ser iluminado é brevemente ligado e, em seguida, o micro passa para o próximo. Se estiver programado para ser iluminado, ele será ligado novamente por um breve período. Ao escanear rapidamente os LEDs, um princípio chamado 'persistência da visão' permitirá que uma série de LEDs mostre um padrão estático. O artigo do Minidot 2 tem uma pequena explicação sobre esse princípio. Mas espere … Eu aparentemente encerrei um pouco a descrição acima. O que é este negócio de 'desconectar pino B', 'desconectar pino C'. Próxima seção, por favor.

Etapa 5: Tri-estados (não triciclos)

Tri-estados (não triciclos)
Tri-estados (não triciclos)
Tri-estados (não triciclos)
Tri-estados (não triciclos)

Na etapa anterior, mencionamos que um microcontrolador pode ser programado para produzir uma tensão de 5 V ou uma tensão de 0 V. Para fazer a matriz charlieplex funcionar, selecionamos dois pinos na matriz e desconectamos todos os outros pinos.

Claro que desconectar manualmente os pinos é um pouco difícil de fazer, especialmente se estivermos escaneando as coisas muito rapidamente para usar o efeito de persistência da visão para mostrar um padrão. No entanto, os pinos de saída de um microcontrolador também podem ser programados para serem pinos de entrada. Quando um micro pino é programado para ser uma entrada, ele entra no que é chamado de 'alta impedância' ou 'tri-estado'. Ou seja, apresenta uma resistência muito alta (da ordem de megaohms, ou milhões de ohms) ao pino. Se houver uma resistência muito alta (consulte o diagrama), podemos essencialmente considerar o pino como desconectado e, portanto, o esquema charliplex funciona. O segundo diagrama mostra os pinos da matriz para cada combinação possível para iluminar cada um dos 6 LEDs em nosso exemplo. Normalmente, um tri-estado é denotado por um 'X', 5V é mostrado como um '1' (para 1 lógico) e 0V como um '0'. No micro firmware para um '0' ou '1' você programa os pinos para serem uma saída e seu estado é bem definido. Para tri-state você o programa para ser uma entrada, e por ser uma entrada não sabemos realmente qual pode ser o estado … daí o 'X' para desconhecido. Embora possamos alocar um pino para ser tri-state ou uma entrada, não precisamos lê-lo. Nós apenas aproveitamos o fato de que um pino de entrada em um microcontrolador é de alta impedância.

Etapa 6: algumas questões práticas

A magia do charlieplexing depende do fato de que a tensão individual apresentada em vários LEDs em série será sempre menor do que em um único LED quando o único LED está em paralelo com a combinação em série. Se a tensão for menor, a corrente será menor e, com sorte, a corrente na combinação em série será tão baixa que o LED não acenderá. No entanto, nem sempre é o caso. Digamos que você tenha dois LEDs vermelhos com um típico tensão direta de 1,9 V em sua matriz e um LED azul com uma tensão direta de 3,5 V (digamos LED1 = vermelho, LED3 = vermelho, LED5 = azul em nosso exemplo de 6 LED). Se você acendesse o LED azul, acabaria com 3,5 / 2 = 1,75 V para cada um dos LEDs vermelhos. Isso pode estar muito próximo da área de operação fraca do LED. Você pode descobrir que os LEDs vermelhos brilharão levemente quando o azul estiver aceso. É uma boa ideia, portanto, certificar-se de que a voltagem direta de quaisquer LEDs de cores diferentes em sua matriz seja aproximadamente a mesma na corrente de operação, ou então use a mesma cor LEDs em uma matriz. Em meus projetos de Microdot / Minidot, não precisei me preocupar com isso, usei LEDs SMD azuis / verdes de alta eficiência que, felizmente, têm quase a mesma voltagem direta que os vermelhos / amarelos. Porém, se eu implementasse a mesma coisa com LEDs de 5 mm, o resultado seria mais problemático. Neste caso, eu teria implementado uma matriz charlieplex azul / verde e um matix vermelho / amarelo separadamente. Eu teria que usar mais pinos … mas aí está. Outro problema é olhar para o seu desenho atual do micro e quão brilhante você quer para o LED. Se você tiver uma matriz grande e a estiver fazendo a varredura rapidamente, cada LED ficará aceso apenas por um breve período. Isso parecerá relativamente escuro em comparação com uma tela estática. Você pode trapacear aumentando a corrente através do LED, reduzindo os resistores limitadores de corrente, mas apenas até certo ponto. Se você puxar muita corrente do micro por muito tempo, você danificará os pinos de saída. Se você tem uma matriz de movimento lento, digamos um status ou display de ciclon, você pode manter a corrente em um nível seguro, mas ainda tem um display de LED brilhante porque cada LED fica ligado por mais tempo, possivelmente estático (no caso de um indicador de status). Algumas vantagens do charlieplexing: - usa apenas alguns pinos em um microcontrolador para controlar muitos LEDs - reduz a contagem de componentes, pois você não precisa de muitos chips de driver / resistores etc Algumas desvantagens: - seu micro firmware precisará lidar com a configuração tanto o estado de tensão quanto o estado de entrada / saída dos pinos - precisa ter cuidado com a mistura de cores diferentes - o layout do PCB é difícil, porque a matriz de LED é mais complexa.

Etapa 7: Referências

Existem muitas referências sobre charlieplexing na web. Além dos links no início do artigo, alguns deles são: O artigo original da Maxim, isso tem muito a dizer sobre como dirigir displays de 7 segmentos, o que também é possível. https://www.maxim-ic.com/appnotes.cfm/appnote_number/1880A entrada de wikihttps://en.wikipedia.org/wiki/Charlieplexing

Recomendado: