¿Cómo puedo usar un microcontrolador para aumentar / disminuir 4 juegos de LEDs con 8 entradas de botón pulsador?

6

Quiero diseñar un proyecto muy pequeño para un guardián de puntuación portátil. Consiste en usar un microcontrolador para controlar 4 conjuntos / grupos de LED en una PCB pequeña. Es un proyecto a muy pequeña escala (3.5in X 1.5in). 2 de los 4 conjuntos constarán de 4 LEDs cada uno y los otros 2 consistirán de 7 LEDs cada uno. Total de 22 LED, pero solo necesitaré 4 LED encendidos a la vez. Me gustaría usar los botones para incrementar & disminuir la puntuación que se encenderá un LED. Los LEDs serán etiquetados por puntos de puntuación. El conjunto más pequeño será la puntuación del juego, mientras que el conjunto más grande será la puntuación del juego.

Me preguntaba si esto era posible y cómo lo haría. ¿Hay un microcontrolador lo suficientemente pequeño como para tener 8 entradas de botón para manipular 4 conjuntos / grupos de múltiples LEDS?

Por el momento, estoy planeando usar baterías de celda de moneda de 3V simples pero buscaré fuentes de alimentación pequeñas y recargables. He hecho un prototipo de interruptor dip muy simple usando LEDs de montaje superficial muy pequeños en una PCB delgada con una batería de tipo moneda. El dip-switch era voluminoso y ocupaba mucho espacio. Me gustaría adelgazar y hacerlo más elegante con menos interruptores implementando estas ideas si son posibles.

Cualquier palabra de consejo y ayuda será apreciada. Muchas gracias: D

    
pregunta user10916

2 respuestas

4

Oli dio una buena respuesta, pero espera, ¡la mía será mejor! :-)

Oli comentó sobre la corriente limitada de la celda de la moneda, y eso es algo que debemos vigilar. Esta celda CR2430 proporciona 5 mA como máximo continuo. A ver si podemos manejar eso.

Es bueno que solo necesites un LED encendido a la vez, de lo contrario incluso consideraría la celda de la moneda. Este parece un bonito LED: generalmente 15 mcd a 2 mA.

Oli optó por un registro de desplazamiento SIPO (Serial-In, Parallel-Out) para los LED y un PISO (Parallel-In, Serial Out) para los botones. Eso le ahorra una gran cantidad de E / S, pero cuesta componentes adicionales. ¿No podemos usar la E / S de un microcontrolador directamente? 22 LED y 8 botones son 30 I / Os, no hay problema, pero podemos hacerlo un poco más barato si multiplexamos los LED en una matriz de 4 x 5. Normalmente, esto disminuiría la luminosidad de los LED en un 75%, pero como solo tenemos que encender un LED a la vez, podemos seleccionar una fila y una columna de forma estática. Entonces necesitamos 4 + 5 + 8 = 17 I / Os.

Los sospechosos habituales de un microcontrolador son Atmel AVR y Microchop PIC. Por lo general, evitaría el PIC para la conducción de LED porque no puede generar ni hundir 20 mA, pero tenemos una corriente de LED baja, así que no hay problema. PIC también es más barato que AVR. El PIC16F57 tiene 20 I / Os, así que es suficiente. La hoja de datos dice un máximo de 22.5 µA para un reloj de 32.768 kHz a 2 V, por lo tanto a 3 V que aún estarán por debajo de 50 µA.

Eso es todo. Un microcontrolador, un cristal barato, 22 LED, 8 botones y 12 resistencias (4 para los LED y 8 para los botones. El PIC16F57 no parece tener pull-ups internos). No se necesitan registros de turno.

    
respondido por el stevenvh
4

Esto es ciertamente posible con casi cualquier micro pequeño. Puede obtener uno con suficientes pines o hacer un poco de multiplexación para los botones y hacer que los LED se controlen mediante los registros de desplazamiento.

Para 4 LEDs más micro una celda de moneda no va a funcionar, tienen una impedancia interna muy alta, generalmente solo pueden suministrar unos pocos mA antes de que la tensión caiga por debajo de un nivel "utilizable". Unas pocas AAA / AA / Li-Ion serían más capaces.
Si ejecuta los LED a una corriente muy baja y el micro a, por ejemplo. 32 kHz, entonces podría funcionar, pero a menos que exista una necesidad apremiante de usar celdas de monedas, las evitaría.

Algo como el PIC16F1828 de 20 pines, algunos botones y algunos registros de turnos Sé una manera barata y fácil de hacer esto. Obviamente si prefieres otra marca de micro entonces hay muchos equivalentes.

EDITAR - algunos detalles:

Registros de desplazamiento

Un registro de cambios básicamente convierte los datos en serie en datos paralelos o viceversa. Lo que necesitará es un registro de desplazamiento en serie a paralelo como el 74HC595. Tiene 3 entradas de control principales, una entrada de reloj, una entrada de datos y una entrada de cierre. El 595 tiene 8 flip-flops en una cadena (los flip flops almacenan 1s o 0s) como este (se muestran 4):

Cuandoelrelojcambia,elvalorqueseencuentraenelpindeentradadedatos(1o0)sedesplazaalIC,yelúltimovalorsedesplaza(seolvidaoseenvíaaotro595siseencadena).losdatosenunbitalavezhastaquehayaconfiguradolos8flipflopsalvalordeseado.
Luego,parageneraresosdatos,estableceelpindecierreylosdatosaparecenenlos8pinsdesalida.Porlotanto,sepuedenusar3pinesparacontrolar8pines(o16,24,32,etc.)
Aquíhayunafotode2595sencadenadosymanejadosdesdeunArduino:

Hay un montón de tutoriales que se detallan mucho más detalladamente que los anteriores, busque en Google "tutorial de registro por desplazamiento" y obtendrá elementos como:

Tutorial de registro de cambios PIC
Tutorial de Arduino 74HC595
Otro tutorial de 74HC595

Botones

Puede usar un multiplexor como lo menciono anteriormente (vea cosas como 74HC4051 , 4052 y 4053), pero como estamos hablando de registros de cambios, vale la pena mencionar que podemos usar un registro de cambios de entrada en serie y paralelo para leer los botones. Las mismas conexiones, al revés: cerramos los estados de los botones en los flip flops, luego sincronizamos los datos bit a bit en el pin del microcontrolador (es decir, leemos en cada reloj y los almacenamos para que termine con 8 valores binarios)
Aquí hay un ejemplo:

Pensamientosfinales

Apartirdeloscomentariosydespuésdehabertenidoalgodetiempoparapensar,meinclinoporusarsolounmicroconsuficientespinesparatener1porLEDybotón.Estaseráunahuellamáspequeñaqueladelosregistrosdeturnoseinvolucraráelfirmwaremássimple.Iríaporesto,almenos,paracomenzarconlacreacióndeprototipos.

Stevendiounamuybuenarespuesta,ymultiplexarutilizandopinesIOesunaformacomúndehacerlascosas(consulte Charlieplexing para un método de multiplexación muy económico) y ciertamente vale la pena conocerlo.
La unidad de celda de la moneda es ciertamente posible como se ha mencionado Para una idea aproximada, tengo un prototipo de proyecto aquí que usa uno de los PIC16F1828 mencionados anteriormente con una pantalla de 7 seg, 2 botones (el 16F1828 tiene pull ups internos, por lo que no se requieren resistencias) y 2 leds, que se ejecutan desde una celda de moneda y duerme entre operaciones: la celda tiene una duración de hasta un año con un uso normal. Por lo tanto, es ciertamente posible, solo agrega la complejidad que quizás desee guardar hasta más adelante.

En resumen, hay muchas formas de hacerlo: si tiene una placa de apoyo, ¿por qué no toma los componentes de las opciones que quiere probar (use las versiones Dip y luego cambie a SMD para la versión final si es posible) y experimente? en el ocio.

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas