Tabla de contenido:

LEDs de Charlieplexing: la teoría: 7 pasos (con imágenes)
LEDs de Charlieplexing: la teoría: 7 pasos (con imágenes)

Video: LEDs de Charlieplexing: la teoría: 7 pasos (con imágenes)

Video: LEDs de Charlieplexing: la teoría: 7 pasos (con imágenes)
Video: Pantalla De 7 Segmentos Direccionable PCB | Pr#93 2024, Noviembre
Anonim
LEDs de Charlieplexing: la teoría
LEDs de Charlieplexing: la teoría
LEDs de Charlieplexing: la teoría
LEDs de Charlieplexing: la teoría

Este instructivo es menos una construcción de su propio proyecto y más una descripción de la teoría de charlieplexing. Es adecuado para personas con los conceptos básicos de electrónica, pero no para principiantes. Lo escribí en respuesta a las muchas preguntas que recibí en mis Instructables publicados anteriormente.

¿Qué es 'Charlieplexing'? Está impulsando muchos LED con solo unos pocos pines. En caso de que se esté preguntando, Charlieplexing lleva el nombre de Charles Allen en Maxim, quien desarrolló la técnica. Esto puede resultar útil para muchas cosas. Es posible que deba mostrar la información de estado en un pequeño microcontrolador, pero solo le quedan unos pocos pines de repuesto. Es posible que desee mostrar una elegante matriz de puntos o una pantalla de reloj, pero no desea utilizar muchos componentes. Algunos otros proyectos que demuestran charlieplexing que puede querer ver son: Cómo manejar muchos LED desde unos pocos pines del microcontrolador. por Westfw: - https://www.instructables.com/id/ED0NCY0UVWEP287ISO/ Y un par de mis propios proyectos, el reloj Microdot: - https://www.instructables.com/id/EWM2OIT78OERWHR38Z/ El reloj Minidot 2: - https://www.instructables.com/id/E11GKKELKAEZ7BFZAK/ Otro ejemplo genial del uso de charlieplexing está en: https://www.jsdesign.co.uk/charlie/ El reloj Minidot 2 presenta un esquema de charlieplexing avanzado para desvanecimiento / atenuación que no se discutirá aquí. ACTUALIZACIÓN 19 de agosto de 2008: agregué un archivo zip con un circuito que puede aprovechar el charliplexing de matriz para LED de alta potencia discutido (en detalle:)) en la sección de comentarios. Tiene un codificador de posición de botón + para hacer una interfaz de usuario, además de circuitos para control de computadora USB o RS232. Cada uno de los rieles de alto voltaje se puede configurar en uno de dos voltajes, digamos 2.2V para LED ROJOS y 3.4V para verde / azul / blanco. El voltaje para los rieles laterales altos se puede configurar mediante trimpot. Imagino que se enchufaría un cable plano IDC de 20 hilos en la placa y que se agregarían conectores IDC de 20 pines a lo largo de la cinta, cada placa LED tiene enlaces a los cables de la matriz que se deseen. El circuito está en Eagle Cad y se muestra en la imagen secundaria a continuación. El circuito del lado alto se implementa mediante optoacopladores que creo que podrían ser adecuados. En realidad, no he probado este circuito ni he escrito ningún software por falta de tiempo, pero lo he puesto para comentar, estoy particularmente interesado en la implementación del optoacoplador. Cualquiera lo suficientemente valiente como para intentarlo … por favor publique sus resultados. ACTUALIZACIÓN 27 de agosto de 2008: Para aquellos que no usan EagleCad … A continuación se agrega un pdf del esquema

Paso 1: algo de teoría LED

Algo de teoría LED
Algo de teoría LED
Algo de teoría LED
Algo de teoría LED

Charlieplexing se basa en una serie de aspectos útiles de los LED y los microcontroladores modernos.

En primer lugar, qué sucede cuando conecta un LED a la electricidad. El diagrama principal a continuación muestra lo que se llama la curva If v Vf de un LED típico de baja potencia de 5 mm. Si significa 'corriente directa' Vf significa 'voltaje directo' El eje vertical en otras palabras muestra la corriente que fluirá a través de un LED si coloca el voltaje del eje horizontal a través de sus terminales. También funciona al revés, si mide que la corriente tiene algún valor, puede mirar hacia el eje horizontal y ver el voltaje que presentará el LED en sus terminales. El segundo diagrama muestra una representación esquemática de un LED con las etiquetas If y Vf. En el diagrama principal también he etiquetado las áreas del gráfico que son de interés. - La primera área es donde el LED está 'apagado'. Más exactamente, el LED emite luz tan tenue que no podrá verlo a menos que tenga algún tipo de intensificador de imagen superdifícil. - La segunda área tiene el LED emitiendo un ligero brillo tenue. - La tercera área es donde generalmente se opera un LED y emite luz según la clasificación del fabricante. - La cuarta área es donde se opera un LED más allá de sus límites de operación, probablemente está brillando mucho, pero por desgracia solo por un corto tiempo antes de que el humo mágico del interior se escape y no vuelva a funcionar … es decir, en esta área se quema porque demasiada corriente fluye a través de él. Tenga en cuenta que la curva If / Vf o la curva de funcionamiento del LED es una curva "no lineal". Es decir, no es una línea recta … tiene una curva o torcedura. Por último, este diagrama es para un LED rojo típico de 5 mm diseñado para funcionar a 20 mA. Los diferentes LED de diferentes fabricantes tienen diferentes curvas de funcionamiento. Por ejemplo, en este diagrama a 20 mA, el voltaje directo del LED será de aproximadamente 1,9 V. Para un LED azul de 5 mm a 20 mA, el voltaje directo puede ser de 3,4 V. Para un LED luxeon blanco de alta potencia a 350 mA, el voltaje directo puede ser de alrededor de 3,2 V. Algunos paquetes de LED pueden ser varios LED en serie o en paralelo, cambiando nuevamente la curva Vf / If. Por lo general, un fabricante especificará una corriente de funcionamiento en la que es seguro usar el LED y el voltaje directo en esa corriente. Por lo general (pero no siempre) obtiene un gráfico similar al siguiente en la hoja de datos. Debe consultar la hoja de datos del LED para determinar cuál es el voltaje directo a diferentes corrientes de funcionamiento. ¿Por qué es tan importante este gráfico? Porque muestra que cuando hay un voltaje a través del LED, la corriente que fluirá será de acuerdo con el gráfico. Baje el voltaje y fluirá menos corriente…..y el LED se apagará. Esto es parte de la teoría de charlieplexing, a la que llegaremos en el siguiente paso.

Paso 2: Las leyes (de la electrónica)

Las leyes (de la electrónica)
Las leyes (de la electrónica)
Las leyes (de la electrónica)
Las leyes (de la electrónica)
Las leyes (de la electrónica)
Las leyes (de la electrónica)

Todavía no estamos en la magia de charlieplexing todavía … Necesitamos ir a algunos conceptos básicos de las leyes de la electrónica. La primera ley de interés establece que el voltaje total a través de cualquier serie de componentes conectados en un circuito eléctrico es igual a la suma del individuo voltajes a través de los componentes. Esto se muestra en el diagrama principal a continuación. Esto es útil cuando se utilizan LED porque el pin de salida promedio de su batería o microcontrolador nunca tendrá exactamente el voltaje correcto para hacer funcionar su LED a la corriente recomendada. Por ejemplo, un microcontrolador normalmente funcionará a 5 V y sus pines de salida estarán a 5 V cuando esté encendido. Si solo conecta un LED al pin de salida del micro, verá en la curva de operación en la página anterior que fluirá demasiada corriente en el LED y se calentará y se quemará (probablemente dañando el micro también) Sin embargo, si introducimos un segundo componente en serie con el LED, podemos restar algo de los 5V para que el voltaje a la izquierda sea el correcto para hacer funcionar el LED a la corriente de operación adecuada. Por lo general, se trata de una resistencia y, cuando se usa de esta manera, se denomina resistencia limitadora de corriente. Este método se utiliza con mucha frecuencia y conduce a lo que se llama 'ley de ohmios'….así llamado así por el señor Ohm. La ley de ohmios sigue la ecuación V = I * R donde V es el voltaje que aparecerá a través de una resistencia R cuando una corriente I fluye a través de la resistencia. V está en voltios, I está en amperios y R está en ohmios. Entonces, si tenemos 5V para gastar, y queremos 1.9V a través del LED para que funcione a 20mA, entonces queremos que la resistencia tenga 5-1.9 = 3.1 V a través de él. Podemos ver esto en el segundo diagrama. Debido a que la resistencia está en serie con el LED, la misma corriente fluirá a través de la resistencia que el LED, es decir, 20 mA. Entonces, reordenando la ecuación podemos encontrar la resistencia que necesitamos para que esto funcione. V = I * RsoR = V / Is Sustituyendo los valores en nuestro ejemplo obtenemos: R = 3.1 / 0.02 = 155ohms (nota 20mA = 0.02Amps) Aún conmigo hasta ahora … genial. Ahora mire el diagrama 3. Tiene el LED intercalado entre dos resistencias. Según la primera ley mencionada anteriormente, tenemos la misma situación en el segundo diagrama. Tenemos 1,9 V en el LED, por lo que funciona de acuerdo con su hoja de especificaciones. También tenemos cada resistor restando 1.55V cada uno (para un total de 3.1). Sumando los voltajes juntos tenemos 5V (el pin del microcontrolador) = 1.55V (R1) + 1.9V (el LED) + 1.55V (R2) y todo se equilibra. Usando la ley de ohmios, encontramos que las resistencias deben ser de 77.5 ohmios cada una, que es la mitad de la cantidad calculada a partir del segundo diagrama Por supuesto, en la práctica, sería difícil encontrar una resistencia de 77,5 ohmios, por lo que simplemente sustituiría el valor disponible más cercano, digamos 75 ohmios y terminaría con un poco más de corriente en el LED o 82ohms para estar seguros y tener un poco menos. ¿Por qué demonios deberíamos hacer este sándwich de resistencia para impulsar un LED simple? y resulta útil para el siguiente paso.

Paso 3: introducción de la 'unidad complementaria'

Presentamos 'Drive complementario'
Presentamos 'Drive complementario'

Otro nombre que es más exacto para describir 'charlieplexing' es 'impulso complementario'.

En su microcontrolador promedio, puede decirle en el firmware al micro que establezca un pin de salida para que sea un '0' o un '1', o que presente un voltaje de 0V en la salida o un voltaje de 5V en la salida. El siguiente diagrama ahora muestra el LED intercalado con un socio invertido…. O un LED complementario, por lo tanto, unidad complementaria. En la primera mitad del diagrama, el micro emite 5 V al pin A y 0 V al pin B. La corriente fluirá de A a B. Debido a que el LED2 está orientado hacia atrás al LED1, no fluirá corriente a través de él y no lo hará. brillo. Es lo que se llama sesgo inverso. Tenemos el equivalente a la situación de la página anterior. Básicamente, podemos ignorar LED2. Las flechas muestran el flujo actual. Un LED es esencialmente un diodo (de ahí el diodo emisor de luz). Un diodo es un dispositivo que permite que la corriente fluya en una dirección, pero no en la otra. El esquema de un LED muestra esto, la corriente fluirá en la dirección de la flecha …… pero está bloqueada en el otro sentido. Si le indicamos al micro que ahora envíe 5V al pin B y 0V al pin A, tenemos lo contrario. Ahora el LED1 tiene polarización inversa, el LED2 está polarizado hacia adelante y permitirá el flujo de corriente. El LED2 se iluminará y el LED1 se apagará. Ahora podría ser una buena idea mirar los esquemas de los diversos proyectos mencionados en la introducción. Debería ver muchos de estos pares complementarios en una matriz. Por supuesto, en el siguiente ejemplo, estamos impulsando dos LED con dos pines de microcontrolador … se podría decir por qué molestarse. Bueno, la siguiente sección es donde llegamos a las entrañas de charlieplexing y cómo hace un uso eficiente de los pines de salida de un microcontrolador.

Paso 4: Finalmente … una matriz Charlieplex

Finalmente … una matriz Charlieplex
Finalmente … una matriz Charlieplex
Finalmente … una matriz Charlieplex
Finalmente … una matriz Charlieplex

Como se mencionó en la introducción, charliplexing es una forma práctica de manejar muchos LED con solo unos pocos pines en un microcontrolador. Sin embargo, en las páginas anteriores realmente no hemos guardado ningún pin, manejando dos LED con dos pines … ¡gran grito!

Bueno, podemos extender la idea de unidad complementaria a una matriz charlieplex. El siguiente diagrama muestra la matriz charlieplex mínima que consta de tres resistencias y seis LED y utiliza solo tres pines del microcontrolador. ¿Ves lo útil que es este método? Si quisiera manejar seis LED de la manera normal… necesitaría seis pines de microcontrolador. De hecho, con N pines de un microcontrolador, potencialmente puede conducir N * (N - 1) LED. Para 3 pines, esto es 3 * (3-1) = 3 * 2 = 6 LED. Las cosas se acumulan rápidamente con más alfileres. Con 6 pines puede conducir 6 * (6 - 1) = 6 * 5 = 30 LED … ¡guau! Ahora a la parte de charlieplexing. Mira el diagrama de abajo. Tenemos tres pares complementarios, un par entre cada combinación de pines de salida micro. Un par entre A-B, un par entre B-C y un par entre A-C. Si desconectara el pin C por ahora, tendríamos la misma situación que antes. Con 5 V en el pin A y 0 V en el pin B, el LED1 se iluminará, el LED2 tiene polarización inversa y no conducirá corriente. Con 5V en el pin B y 0V en el pin A, el LED2 se iluminará y el LED1 tiene polarización inversa. Esto sigue para los otros micro pines. Si desconectamos el pin B y establecemos el pin A en 5V y el pin C en 0V, entonces el LED5 se iluminaría. Invirtiendo para que el pin A sea 0V y el pin C sea 5V, entonces el LED6 se iluminaría. Lo mismo para el par complementario entre los pines B-C. Espera, te escucho decir. Veamos el segundo caso un poco más de cerca. Tenemos 5V en el pin A y 0V en el pin C. Hemos desconectado el pin B (el del medio). Bien, entonces una corriente fluye a través del LED5, la corriente no fluye a través del LED6 porque tiene polarización inversa (al igual que el LED2 y el LED4) … pero también hay una ruta para que la corriente tome desde el pin A, a través del LED1 y el LED3 no hay ¿Por qué estos LED no se iluminan también? Aquí está el corazón del plan de charlieplexing. De hecho, hay una corriente que fluye tanto en el LED1 como en el LED3, sin embargo, el voltaje en ambos combinados solo será igual al voltaje en el LED5. Por lo general, tendrían la mitad del voltaje a través de ellos que el LED5. Entonces, si tenemos 1.9V a través de LED5, entonces solo 0.95V serán a través de LED1 y 0.95V a través de LED3. De la curva If / Vf mencionada al principio de este artículo, podemos ver que la corriente a esta mitad de voltaje es mucho menor que 20mA…..y esos LED no brillarán visiblemente. Esto se conoce como robo de corriente. Por lo tanto, la mayor parte de la corriente fluirá a través del LED que queremos, la ruta más directa a través del menor número de LED (es decir, un LED), en lugar de cualquier combinación de LED en serie. Si miró el flujo de corriente para cualquier combinación de poner 5V y 0V en cualquiera de los dos pines de la matriz charlieplex, verá lo mismo. Solo se iluminará un LED a la vez. Como ejercicio, observe la primera situación. 5 V en el pin A y 0 V en el pin B, desconecte el pin C. El LED1 es la ruta más corta para la corriente y el LED 1 se iluminará. Una pequeña corriente también pasará a través del LED5, luego retrocederá el LED4 al pin B…..pero nuevamente, estos dos LED en serie no podrán desviar suficiente corriente en comparación con el LED 1 para brillar intensamente. Así se realiza el poder de charlieplexing. Vea el segundo diagrama que es el esquema de mi reloj Microdot…..30 LEDs, con solo 6 pines. Mi reloj Minidot 2 es básicamente una versión ampliada del Microdot … los mismos 30 LED dispuestos en una matriz. Para hacer un patrón en la matriz, cada LED a iluminar se enciende brevemente, luego el micro pasa al siguiente. Si está programado para iluminarse, se vuelve a encender durante un breve período de tiempo. Al escanear rápidamente a través de los LED lo suficientemente rápido, un principio llamado 'persistencia de la visión' permitirá que una matriz de LED muestre un patrón estático. El artículo de Minidot 2 tiene una pequeña explicación sobre este principio. Pero espera … Aparentemente he pasado por alto un poco la descripción anterior. ¿Qué es esto de "desconectar el pin B", "desconectar el pin C"? Siguiente sección por favor.

Paso 5: Tri-estados (no triciclos)

Tri-estados (no triciclos)
Tri-estados (no triciclos)
Tri-estados (no triciclos)
Tri-estados (no triciclos)

En el paso anterior mencionamos que se puede programar un microcontrolador para generar un voltaje de 5 V o un voltaje de 0 V. Para que la matriz de charlieplex funcione, seleccionamos dos pines en la matriz y desconectamos los demás pines.

Por supuesto, desconectar manualmente los pines es un poco difícil de hacer, especialmente si estamos escaneando cosas muy rápidamente para usar el efecto de persistencia de la visión para mostrar un patrón. Sin embargo, los pines de salida de un microcontrolador también se pueden programar para que sean pines de entrada. Cuando un micro pin está programado para ser una entrada, entra en lo que se llama 'alta impedancia' o 'tri-estado'. Es decir, presenta una resistencia muy alta (del orden de los megaohmios, o millones de ohmios) al pin. Si hay una resistencia muy alta (ver diagrama), entonces básicamente podemos considerar que el pin está desconectado, por lo que el esquema charliplex funciona. El segundo diagrama muestra los pines de la matriz para cada combinación posible para iluminar cada uno de los 6 LED de nuestro ejemplo. Normalmente, un tri-estado se indica con una 'X', 5V se muestra como un '1' (para el 1 lógico) y 0V como un '0'. En el micro firmware para un '0' o '1', programarías los pines para que sean una salida y su estado está bien definido. Para tri-estado, lo programa para que sea una entrada, y debido a que es una entrada, en realidad no sabemos cuál puede ser el estado … de ahí la 'X' para desconocido. Aunque podríamos asignar un pin para que sea de tres estados o una entrada, no es necesario que lo lea. Simplemente aprovechamos el hecho de que un pin de entrada en un microcontrolador es de alta impedancia.

Paso 6: algunos asuntos prácticos

La magia de charlieplexing se basa en el hecho de que el voltaje individual presentado a través de múltiples LED en serie siempre será menor que el de un solo LED cuando el único LED está en paralelo con la combinación en serie. Si el voltaje es menor, entonces la corriente es menor y, con suerte, la corriente en la combinación en serie será tan baja que el LED no se encenderá. Sin embargo, este no siempre es el caso. Digamos que tenía dos LED rojos con un típico voltaje directo de 1.9V en su matriz y un LED azul con un voltaje directo de 3.5V (digamos LED1 = rojo, LED3 = rojo, LED5 = azul en nuestro ejemplo de 6 LED). Si encendiera el LED azul, terminaría con 3.5 / 2 = 1.75V para cada uno de los LED rojos. Esto puede estar muy cerca del área de operación tenue del LED. Puede encontrar que los LED rojos brillarán tenuemente cuando se ilumina el azul. Por lo tanto, es una buena idea asegurarse de que el voltaje directo de cualquier LED de diferentes colores en su matriz sea aproximadamente el mismo en la corriente de funcionamiento, o use el mismo color LED en una matriz En mis proyectos de Microdot / Minidot no tuve que preocuparme por esto, utilicé LED SMD azul / verde de alta eficiencia que afortunadamente tienen el mismo voltaje directo que los rojos / amarillos. Sin embargo, si implementé lo mismo con LED de 5 mm, el resultado sería más problemático. En este caso, habría implementado una matriz charlieplex azul / verde y una matix roja / amarilla por separado. Habría necesitado usar más pines … pero ahí lo tienes. Otro problema es mirar tu consumo actual del micro y qué tan brillante quieres el LED. Si tiene una matriz grande y la está escaneando rápidamente, entonces cada LED está encendido solo por un breve tiempo. Esto parecerá relativamente tenue en comparación con una pantalla estática. Puede hacer trampa aumentando la corriente a través del LED reduciendo las resistencias limitadoras de corriente, pero solo hasta cierto punto. Si extraes demasiada corriente del micro durante demasiado tiempo, dañarás los pines de salida. Si tiene una matriz de movimiento lento, digamos una pantalla de estado o de ciclón, podría mantener la corriente a un nivel seguro pero aún tener una pantalla LED brillante porque cada LED está encendido durante más tiempo, posiblemente estático (en el caso de un Indicador de estado). Algunas ventajas de charlieplexing: - utiliza solo unos pocos pines en un microcontrolador para controlar muchos LED - reduce el recuento de componentes ya que no necesita muchos chips de controlador / resistencias, etc. Algunas desventajas: - su micro firmware necesitará manejar la configuración Tanto el estado de voltaje como el estado de entrada / salida de los pines, deben tener cuidado al mezclar diferentes colores. El diseño de la PCB es difícil porque la matriz de LED es más compleja.

Paso 7: referencias

Hay muchas referencias sobre charlieplexing en la web. Además de los enlaces en la parte delantera del artículo, algunos de ellos son: El artículo original de Maxim, esto tiene mucho que decir sobre la conducción de pantallas de 7 segmentos, lo cual también es posible. https://www.maxim-ic.com/appnotes.cfm/appnote_number/1880Una entrada de wikihttps://en.wikipedia.org/wiki/Charlieplexing

Recomendado: