Quiero diseñar un proyecto muy pequeño para un anotador portátil. Consiste en usar un microcontrolador para controlar 4 conjuntos/grupos de LED en una pequeña placa de circuito impreso. Es un proyecto de muy pequeña escala (3.5in X 1.5in). 2 de los 4 conjuntos constarán de 4 LED cada uno y los otros 2 constarán de 7 LED cada uno. Un total de 22 LED, pero solo necesitaré 4 LED encendidos a la vez. Me gustaría usar botones pulsadores para incrementar y disminuir la puntuación que encenderá un LED. Los LED estará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 establecida.
Me preguntaba si esto era posible y cómo lo haría. ¿Hay un microcontrolador lo suficientemente pequeño como para poder tener 8 entradas de botón pulsador para manipular 4 conjuntos/grupos separados de múltiples LEDS?
Estoy planeando usar baterías simples de celda de moneda de 3V por ahora, pero buscaré pequeñas fuentes de alimentación recargables. Hice un prototipo de interruptor DIP muy simple utilizando LED de montaje en superficie muy pequeños en una placa de circuito impreso delgada con una batería de celda de moneda. El interruptor DIP era voluminoso y ocupaba mucho espacio. Quisiera adelgazarlo y hacerlo más elegante con menos interruptores implementando estas ideas si es posible.
Cualquier palabra de consejo y ayuda será apreciada. Muchas gracias :D
Oli dio una buena respuesta, pero espera, ¡la mía será mejor! :-)
Oli comentó sobre la corriente limitada de la celda de moneda, y eso es algo que hay que vigilar. Esta celda CR2430 da 5 mA como máximo continuo. Vamos a ver si podemos manejar eso.
Es bueno que solo necesite un LED encendido a la vez, de lo contrario, incluso consideraría la celda de moneda. Esto parece un buen LED: típicamente 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 E/S, 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 E/S.
Los sospechosos habituales de un microcontrolador son Atmel AVR y Microchop PIC. Por lo general, evitaría PIC para la conducción de LED porque no puede generar o absorber 20 mA, pero tenemos una corriente de LED baja, por lo que no hay problema. PIC también es más barato que AVR. El PIC16F57 tiene 20 E/S, eso 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 que a 3 V todavía estará 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 desplazamiento.
Esto es ciertamente posible con casi cualquier pequeño micro. Puede obtener uno con suficientes pines o hacer un poco de multiplexación para los botones y hacer que los LED sean controlados por registros de desplazamiento.
Para 4 LED más micro, una celda de moneda realmente no va a funcionar, tienen una impedancia interna muy alta y, por lo general, solo pueden suministrar unos pocos mA antes de que el voltaje caiga por debajo de un nivel "utilizable". Algunos 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 haya una necesidad apremiante de usar celdas de monedas, las evitaría.
Algo como el PIC16F1828 de 20 pines , algunos botones y algunos registros de desplazamiento serían una forma económica y fácil de hacerlo. Obviamente, si prefiere otra marca de micro, hay muchos equivalentes.
EDITAR - algunos detalles:
Registros de desplazamiento
Un registro de desplazamiento básicamente convierte los datos en serie en datos paralelos o viceversa. El que necesitará es un registro de desplazamiento de serie a paralelo como el 74HC595. Tiene 3 entradas de control principales, una entrada de reloj, una entrada de datos y una entrada de pestillo. El 595 tiene 8 flip-flops en una cadena (los flip-flops almacenan 1 o 0) como este (se muestran 4):
Cuando el reloj cambia, cualquier valor que esté en el pin de entrada de datos (1 o 0) se cambia al IC, y el último valor se cambia (ya sea olvidado o enviado a otro 595 si están encadenados). Entonces, "cambia" los datos en un bit a la vez hasta que haya configurado los 8 flip flops al valor deseado.
Luego, para generar esos datos, configura el pin de cierre y los datos aparecen en los 8 pines de salida. Entonces, se pueden usar 3 pines para controlar 8 pines (o 16, 24, 32, etc.).
Aquí hay una imagen de 2 595 encadenados y controlados desde un Arduino:
Hay un montón de tutoriales que entran en mucho más detalle que los anteriores, busque en Google "tutorial de registro de turnos" y obtendrá cosas como:
Tutorial de registro de desplazamiento PIC
Arduino 74HC595 tutorial
Otro tutorial 74HC595
Botones
Puede usar un multiplexor como el que mencioné anteriormente (vea cosas como el 74HC4051 , 4052 y 4053), pero como estamos hablando de registros de desplazamiento, vale la pena mencionar que podemos usar un registro de desplazamiento de entrada en paralelo y salida en serie para leer los botones. Las mismas conexiones, pero al revés: enganchamos los estados del botón en las chanclas, luego registramos los datos poco a poco en el pin de su microcontrolador (es decir, leemos en cada reloj y almacenamos para que termine con 8 valores binarios)
Aquí está un ejemplo:
Pensamientos finales
Por los comentarios y después de haber tenido algo de tiempo para pensar, me inclino por usar solo un micro con suficientes pines para tener 1 por LED y botón. Esta será una huella más pequeña que los registros de desplazamiento e involucrará el firmware más simple. Iría por esto al menos para empezar mientras prototipaba.
Steven dio una muy buena respuesta, y la multiplexación usando pines IO es una forma común de hacer las cosas (vea Charlieplexing para un método de multiplexación muy económico) y ciertamente vale la pena conocerlo.
La unidad de celda de moneda es ciertamente posible como se mencionó. Para tener una idea aproximada, aquí tengo un prototipo de proyecto que usa uno de los PIC16F1828 mencionados anteriormente que manejan una pantalla de 7 segundos, 2 botones (el 16F1828 tiene pull ups internos, por lo que no se necesitan resistencias) y 2 LED, que se ejecuta desde una celda de moneda y duerme entre operaciones: la celda dura hasta un año con un uso normal. Entonces, ciertamente es posible, solo agrega complejidad que es posible que desee guardar para más tarde.
Entonces, en resumen, hay muchas maneras de hacer esto: si tiene una placa de prueba, ¿por qué no toma los componentes para las opciones que desea probar (use las versiones dip y luego cambie a SMD para la versión final si es posible) y experimente en su tiempo libre.
Oli Glaser
stevenvh
Oli Glaser