Tabla de contenido:

Matriz de pantalla LED 5x4 con Basic Stamp 2 (bs2) y Charlieplexing: 7 pasos
Matriz de pantalla LED 5x4 con Basic Stamp 2 (bs2) y Charlieplexing: 7 pasos

Video: Matriz de pantalla LED 5x4 con Basic Stamp 2 (bs2) y Charlieplexing: 7 pasos

Video: Matriz de pantalla LED 5x4 con Basic Stamp 2 (bs2) y Charlieplexing: 7 pasos
Video: special effects LED warbler 2024, Noviembre
Anonim
Matriz de pantalla LED 5x4 con Basic Stamp 2 (bs2) y Charlieplexing
Matriz de pantalla LED 5x4 con Basic Stamp 2 (bs2) y Charlieplexing

¿Tiene un Basic Stamp 2 y algunos LED adicionales? ¿Por qué no jugar con el concepto de charlieplexing y crear una salida con solo 5 pines?

Para este instructable, usaré el BS2e, pero cualquier miembro de la familia BS2 debería funcionar.

Paso 1: Charlieplexing: qué, por qué y cómo

Primero aclaremos por qué. ¿Por qué usar charlieplexing con un Basic Stamp 2? --- Prueba de concepto: aprenda cómo funciona charlieplexing y aprenda algo sobre el BS2. Esto puede serme útil más adelante usando chips de 8 pines más rápidos (solo 5 de ellos serán e / s).-- Razón útil: Básicamente no hay ninguno. El BS2 es demasiado lento para mostrarse sin un parpadeo notable. ¿Qué es charlieplexing? --- Charlieplexing es un método para activar una gran cantidad de LED con una pequeña cantidad de pines de E / S del microprocesador. Aprendí sobre charlieplexing en www.instructables.com y tú también puedes: LED de Charlieplexing: la teoría Cómo controlar muchos LED desde unos pocos pines de microcontrolador. También en wikipedia: Charlieplexing¿Cómo puedo manejar 20 leds con 5 pines de E / S? --- Por favor, lea los tres enlaces en "¿Qué es charlieplexing?". Eso lo explica mejor que nunca. Charlieplexing es diferente de la multiplexación tradicional que necesita un pin de E / S para cada fila y cada columna (eso sería un total de 9 pines de E / S para una pantalla de 5/4).

Paso 2: hardware y esquema

Hardware y esquema
Hardware y esquema

Lista de materiales: 1x - Basic Stamp 220x - diodos emisores de luz (LED) del mismo tipo (color y caída de voltaje) 5x - resistencias (ver más abajo el valor de la resistencia) Auxiliar / Opcional: Método de programación de su BS2 Botón pulsador momentáneo como interruptor de reinicio 6v -9vFuente de alimentación dependiendo de su versión del BS2 (lea su manual) El esquema: Este esquema se ha elaborado teniendo en cuenta el diseño mecánico. Verá la cuadrícula de LED configurada a la izquierda, esta es la orientación para la que se ha escrito el código BS2. Observe que cada par de LED tiene el ánodo conectado al cátodo del otro. Luego se conectan a uno de los cinco pines de E / S. Valores de resistencia: debe calcular sus propios valores de resistencia. Verifique la hoja de datos de sus LED o use la configuración de LED en su multímetro digital para encontrar la caída de voltaje de sus LED. Hagamos algunos cálculos: Voltaje de suministro - Caída de voltaje / Corriente deseada = Valor de resistencia El BS2 suministra energía regulada de 5 V y puede generar 20 mA de corriente. Mis LED tienen una caída de 1.6v y operan a 20ma.5v - 1.6v /.02amps = 155ohms Para proteger su BS2, debe usar el siguiente valor de resistencia más alto de lo que obtiene con el cálculo, en este caso creo que sería 180ohms. Usé 220 ohmios porque mi placa de desarrollo tiene ese valor de resistencia incorporado para cada pin de E / S. NOTA: Creo que dado que hay una resistencia en cada pin, esto efectivamente duplica la resistencia en cada led, ya que un pin es V + y el otro es Gnd. Si este es el caso, debe reducir los valores de la resistencia a la mitad. El efecto adverso de un valor de resistencia demasiado alto es un LED de atenuación. ¿Alguien puede verificar esto y dejarme un PM o un comentario para que pueda actualizar esta información? Programación: He estado usando una placa de desarrollo que tiene un conector DB9 para programar el chip directamente en la placa. También utilizo este chip en mi placa de pruebas sin soldadura y he incluido un encabezado de programación en serie en circuito (ICSP). El encabezado es de 5 pines, los pines 2 a 5 se conectan a los pines 2-5 en un cable serie DB9 (el pin 1 no se usa). Tenga en cuenta que para utilizar este encabezado ICSP, los pines 6 y 7 del cable DB9 deben estar conectados entre sí. Reinicio: Un botón de reinicio momentáneo es opcional. Esto simplemente tira de la clavija 22 a tierra cuando se presiona.

Paso 3: Breadboarding

Breadboarding
Breadboarding
Breadboarding
Breadboarding

Ahora es el momento de construir la matriz en una placa de prueba. Usé una regleta de terminales para conectar una pata de cada par de LED y un pequeño cable de puente para conectar las otras patas. Esto se detalla en la foto de primer plano y se explica en profundidad aquí: 1. Oriente su tablero para que coincida con la imagen más grande 2. Coloque el LED 1 con el ánodo (+) hacia usted y el cátodo (-) lejos de usted. Coloque el LED 2 en la misma orientación que el Ánodo (+) en la regleta de terminales de conexión del cátodo del LED 1. Utilice un pequeño cable de puente para conectar el ánodo del LED 1 con el cátodo del LED 2.5. Repita hasta que se haya agregado cada par de LED a la placa. Uso lo que normalmente serían las tiras de bus de alimentación de la placa de pruebas como tiras de bus para los pines de E / S BS2. Debido a que solo hay 4 regletas de bus, utilizo una regleta de terminales para P4 (la quinta conexión de E / S). Esto se puede ver en la imagen más grande a continuación. Conecte la regleta de bornes del cátodo LED 1 a la regleta de bus P0. Repita para cada LED impar sustituyendo el P * apropiado para cada par (vea el esquema).7. Conecte la regleta de bornes del cátodo LED 2 a la regleta de bus P1. Repita para cada LED impar sustituyendo la P * adecuada para cada par (vea el esquema).8. Conecte cada barra de bus al pin de E / S apropiado en el BS2 (P0-P4).9. Verifique todas las conexiones para asegurarse de que coincidan con el esquema. Celebre NOTA: En el primer plano, verá que no parece que haya seguido el paso 7, ya que la conexión al segundo pin de E / S está en el ánodo de los LED impares. Recuerde que el cátodo de los LED pares está conectado al ánodo de los LED impares, por lo que la conexión es la misma en ambos sentidos. Si esta nota te confunde, ignórala.

Paso 4: Conceptos básicos de programación

Para que charlieplexing funcione, enciende solo un led a la vez. Para que esto funcione con nuestro BS2, necesitamos dos pasos básicos: 1. Configure los modos de salida para los pines usando el comando OUTS 2. Dígale al BS2 qué pines usar como salidas usando el comando DIRS Esto funciona porque al BS2 se le puede decir qué pines debe conducir alto y bajo y esperará para hacerlo hasta que especifique qué pines son salidas. Veamos si las cosas están conectadas correctamente por tratando de hacer parpadear el LED 1. Si observa el esquema, puede ver que P0 está conectado al cátodo (-) del LED 1 y P1 está conectado al ánodo de ese mismo LED. Esto significa que queremos conducir P0 bajo y P1 alto. Esto se puede hacer así: "OUTS =% 11110" que impulsa P4-P1 alto y P0 bajo. (% Indica que le seguirá un número binario. El dígito binario más bajo siempre está a la derecha. 0 = BAJO, 1 = ALTO) El BS2 almacena esa información pero no actuará sobre ella hasta que declaremos qué pines son salidas. Este paso es clave ya que solo dos pines deben ser salidas al mismo tiempo. El resto deben ser entradas, lo que establece esos pines en modo de alta impedancia para que no absorban corriente. Necesitamos controlar P0 y P1, por lo que los configuraremos en salidas y el resto en entradas de la siguiente manera: "DIRS =% 00011". (% Indica que le seguirá un número binario. El dígito binario más bajo siempre está a la derecha. 0 = ENTRADA, 1 = SALIDA) Pongamos eso en un código útil: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OUTS =% 11110 'Conduzca P0 bajo y P1-P4 alto DIRS =% 00011' Establezca P0- P1 como salidas y P2-P4 como entradas PAUSA 250 'Pausa para que el LED permanezca encendido DIRS = 0' Establezca todos los pines en Entrada. Esto apagará el LED PAUSE 250 'Pause para que el LED permanezca apagado.

Paso 5: el ciclo de desarrollo

Ahora que hemos visto trabajar un pin para asegurarnos de que todos funcionen, 20led_Zig-Zag.bse Este código adjunto debe iluminar cada uno de los 20 LED en un patrón de zig-zag. Notarás que después de que cada pin se haya encendido, utilizo "DIRS = 0" para convertir todos los pines en entradas. Si cambia las SALIDAS sin apagar los pines de salida, puede obtener un "efecto fantasma" donde un LED que no debería estar encendido puede parpadear entre ciclos. Si cambia la variable W1 al comienzo de este código a "W1 = 1" allí será solo una pausa de 1 milisegundo entre cada parpadeo del LED. Esto provocará un efecto de persistencia de la visión (POV) que hará que parezca que todos los LED están encendidos. Esto tiene el efecto de hacer que los LED se atenúen, pero es la esencia de cómo mostraremos los caracteres en esta matriz.20led_Interpreter_Proto.bse Decidí en este punto que tenía que desarrollar algún tipo de código de intérprete para convertir las locas combinaciones necesarias para encender LED en un patrón utilizable. Este archivo es mi primer intento. Verá que en la parte inferior del archivo los caracteres se almacenan en cuatro líneas de binario de 5 dígitos. Cada línea se lee, analiza y llama a una subrutina cada vez que es necesario encender un LED. Este código funciona, pasando por los números 1-0. Si intenta ejecutarlo, observe que está plagado de una frecuencia de actualización muy lenta que hace que los caracteres parpadeen casi demasiado lento para ser reconocidos. Este código es malo por muchas razones. En primer lugar, cinco dígitos binarios ocupan tanto espacio en la EEPROM como 8 dígitos binarios, ya que toda la información se almacena en grupos de cuatro bits. En segundo lugar, el SELECT CASE utilizado para decidir qué pin debe iluminarse requiere 20 casos. El BS2 está limitado a 16 cajas por operación SELECT. Esto significa que tuve que esquivar esa limitación con una declaración IF-THEN-ELSE. Debe haber una mejor manera. Después de unas horas de rascarme la cabeza lo descubrí.

Paso 6: un mejor intérprete

Cada fila de nuestra matriz está compuesta por 4 LED, cada uno puede estar encendido o apagado. El BS2 almacena información en su EEPROM en grupos de cuatro bits. Esa correlación debería facilitarnos mucho las cosas. Además de este hecho, cuatro bits corresponden a los números decimales 0-15 para un total de 16 posibilidades. Esto hace o SELECCIONAR CASO mucho más fácil. Aquí está el número 7 tal como está almacenado en la EEPROM: '7% 1111,% 1001,% 0010,% 0100,% 0100, cada fila tiene un equivalente decimal a 0-15 así que leemos un fila desde la memoria y alimentarlo directamente a la función SELECCIONAR CASO. Esto significa que la matriz binaria legible por humanos utilizada para hacer cada carácter (1 = led encendido, 0 = led apagado) es la clave para el intérprete. Para usar el mismo SELECT CASE para cada una de las 5 filas, utilicé otro caso de selección para establecer DIRS y OUTS como variables. Primero leí en cada una de las cinco líneas del carácter a las variables ROW1-ROW5. A continuación, el programa principal llama a la subrutina para mostrar el carácter. Esta subrutina toma la primera fila y asigna las cuatro posibles combinaciones de OUTS a la variable outp1-outp4 y las dos posibles combinaciones de DIRS a direc1 y direc2. Los LED parpadean, el contador de filas se incrementa y se ejecuta el mismo proceso para cada una de las otras cuatro filas. Esto es mucho más rápido que el primer programa de intérprete. Dicho esto, todavía hay un parpadeo notable. Echa un vistazo al video, la cámara hace que el parpadeo se vea mucho peor, pero te haces una idea. Trasladar este concepto a un chip mucho más rápido, como un picMicro o un chip AVR, permitiría la visualización de estos caracteres sin un parpadeo notable.

Paso 7: hacia dónde ir desde aquí

No tengo una fresadora cnc o suministros de grabado para hacer placas de circuito, por lo que no cablearé este proyecto. Si tienes un molino y estás interesado en colaborar para salir adelante de aquí, envíame un mensaje. Estaría feliz de pagar los materiales y el envío aún más feliz de mostrar algo de un producto terminado para este proyecto.

Otras posibilidades: 1. Portar esto a otro chip. Este diseño de matriz se puede utilizar con cualquier chip que tenga 5 pines de E / S disponibles con capacidad para tres estados (pines que pueden ser altos, bajos o de entrada (alta impedancia)). 2. Usando un chip más rápido (quizás AVR o picMicro) puede aumentar la escala. Con un chip de 20 pines, puede usar 14 pines para charlieplex una pantalla de 8x22 y usar los pines restantes para recibir comandos en serie desde una computadora u otro controlador. Use tres chips más de 20 pines y puede tener una pantalla de desplazamiento de 8x88 para un total de 11 caracteres a la vez (dependiendo del ancho de cada carácter, por supuesto). ¡Buena suerte, diviértete!

Recomendado: