Tucoplexing: nuevo Charliplex para botones e interruptores
Averiguar el número máximo de periféricos que se pueden detectar o controlar con un número mínimo de E / S es una trampa de optimización clásica con muchos de soluciones viables. Lo más fácil podría ser algo como la expansión i2c IO que le daría N salidas para 4 cables (SDA, SCL, Power, Ground). Las expansiones IO se interconectan fácilmente y no son demasiado caras, pero eso arruina la diversión. Esto es Hako¡Un día, no un ingeniero de ahorro óptimo! Por lo tanto, existen numerosos esquemas para usar modos de alta impedancia, la directividad de diodos, RC analógicos y más para lograr lo mismo con la máxima agilidad y el mínimo costo parcial. Tucoplejante es la variante más nueva que hemos visto, probada por el fértil [Micah Elizabeth Scott] (ALINOME [scanlime]) y no es la primera cosa que lleva el nombre de su gato Tuco.
[Micah’s] un problema original era que tenía un excelente conmutador USB de 4 puertos con una pequeña interfaz de un botón. Olvídese del reemplazo; La solución del hacker fue invertir y reprogramar el micrófono para crear una nueva interfaz más fácilmente transferible al lugar de trabajo. Con IO limitado, Tucoplex ofrece 4 LED controlables individualmente y 4 botones, combinando varios conceptos diferentes de una manera nueva.
Arriba tenemos 4 LED de diseño Charlieplex estándar de 3 cables. En lugar de los 2 LED restantes del plex de 3 cables en la parte inferior, tenemos un par Charlieplex de dos botones más dos botones adicionales en un circuito RC. Teniendo en cuenta el aterrador circuito analógico, el método de escaneo es agradablemente simple. Conduciendo las líneas R y T rápido el micro puede verificar si hay un corto, lo que indica un interruptor presionado. Una vez que esto se establece, puede iniciar el mismo escaneo nuevamente, esta vez haciendo una pausa para dejar que la tapa se cargue antes de detectar. Después de soltar la línea si no está cargada, entonces la tapa debe acortarse, lo que significa tío se presionó el interruptor. De lo contrario, tiene que ser el otro interruptor sin sentido. Eche un vistazo al repositorio de fuentes de hardware y hardware.
La última vez que hablamos sobre un tema similar, un grupo de lectores intervinieron para contarnos sus formas favoritas de agregar más dispositivos a IO limitadas. Si tiene soluciones más inteligentes a este problema, ¡déjelas a continuación! Si desea ver el hilo de Twitter con esquemas más antiguos y nombres de Tucoplexing, eche un vistazo después del salto.
lo llamo tucopleksing, funciona, y tendré que echarle un vistazo ahora pic.twitter.com/7YWJYXHilT
- micah elizabeth scott (@scanlime) 11 de febrero de 2019
Sancho dice:
Sé que los estándares piratas lo considerarán poco convincente, pero aún usaría MCP23008. 2 líneas para i2c, incluso puedo ingresar la tercera para interrumpir ...
Gravis dice:
Las expansiones de IO son buenas si tiene una interfaz gratuita / disponible para usar y no le importa el costo adicional. Este es un caso de uso de GPIO y elementos generales.
dassheep dice:
Un maestro I2C se puede morder fácilmente y no tiene que ser rápido, porque eres tú quien proporciona el reloj. El precio no es tan importante cuando está construyendo unidades individuales, especialmente porque el tiempo que ha dedicado a probarlo, configurarlo y depurarlo valdrá más. Pero, por supuesto, si planea construir un millón de unidades, entonces cada optimización es importante.
Moryc dice:
La superación de bits de una interfaz I2C con solo unos pocos bytes para enviar y recibir sería mucho más simple y rápido que esta solución. Un amigo mío conversó con una interfaz I2C solo porque era más fácil que lidiar con hardware dedicado y sus errores ...
Tampoco hay una frecuencia de reloj mínima para I2C, solo los tiempos de subida y bajada deben ser inferiores a 1 ms y 300 ns. Entonces puede hacer un patrón I2C con algunos NE555 y cambiar registros ...
rubypanther dice:
Kevin Darrah hizo un video donde mordió I2C con simples botones en una placa usando EEPROM como dispositivo esclavo.
Sin embargo, tengo dudas sobre errores en el hardware.
Moryc dice:
Elija dsPIC o cualquier otro PIC de 16 o 32 bits. Abra la errata. Elija otro y abra su Errata. Algunos errores de silicio en los productos Microchips son más multiplataforma que GCC ...
deshipu dice:
¿Qué pasa con HT16K33? I²C, controladores de corriente constante para 128 LED y una matriz de 39 teclas con detección incorporada.
Lucas dice:
En realidad, no se trata de un problema de optimización, porque ya se conoce la mejor solución, solo se trata de implementarla.
Si tiene un pin IO que tiene tres estados posibles como bajo, alto, alto-Z, ya ha definido la información máxima que puede representar y, por lo tanto, el número máximo de botones que puede leer a través de él. Es solo cuestión de averiguar cómo implementarlo.
Lucas dice:
Dicho esto, si haces trampa y usas retrasos RC para medir botones, técnicamente puedes hacer un número infinito: te limitas solo a la resolución de tus temporizadores para medir diferencias sutiles en el retraso de carga.
Eso tampoco lo convierte en un problema de optimización. Una sola línea de E / S puede leer una fila completa de botones que están emparejados con resistencias, y si sigue la serie binaria para los valores de resistencia, el retraso depende linealmente de la combinación binaria de los botones presionados.
Ostraco dice:
Use tonos como el teclado de un teléfono.
ROBÓ dice:
No ilimitado porque tiene que calcular tolerancias compuestas.
Pero aún así, podría obtener una gran parte del ancho de banda de CPU y gpio.
Sería interesante ver esta técnica utilizada para LED.
deshipu dice:
Como puede ver, puede hacerlo mejor si envía / recibe más información a tiempo. Y luego, si al menos uno de los pines tiene un ADC (o puede construir un ADC primitivo antes), entonces tiene aún más opciones. En última instancia, todo depende de qué tan rápido deba ser y cuánto trabajo esté dispuesto a hacer.
Lucas dice:
Medir los retrasos de tiempo de RC es un ADC primitivo.
Dependiendo de los estados lógicos simples (estados constantes), tres pines con tres estados tienen 3 ^ 3 configuraciones, lo que significa que puede detectar o producir 27 estados diferentes de sus botones y lámparas.
duderino dice:
He visto que algunos sistemas de sonido usan solo 1 pin y una resistencia específica además de cada botón para encadenar muchos de ellos ... es extraño que nunca lo haya visto mencionado o usado en proyectos de elaboración de cerveza casera.
dtremit dice:
https://la-tecnologia.com/2012/03/02/r2r-ladder-connects-multiple-buttons-to-one-adc-pin/
Mate dice:
GM también está haciendo esto con sus volantes.
tiopepe123 dice:
La codificación de resistencia es muy mala, estoy reparando monitores y el botón táctil del televisor falló
Lucas dice:
Cuando los contactos fallan, los valores de resistencia van por todos lados y un botón se lee como otro.
Arturo Mezins dice:
Varios de los enlaces del artículo son incorrectos o están inactivos.
miqueas dice:
Mucha gente aquí sugiere I2C, pero la gran ventaja que he visto en este diseño sobre I2C es que no requiere mantener una fuente de energía estable en el otro extremo. No tenía un pin para eso, y también quería que todo en el cable de 1/8 ″ fuera tolerante a un cortocircuito porque cada inserto de cable causa cortocircuitos.
rubypanther dice:
Odio usar expansiones I2C porque si necesitaba una expansión, probablemente ya usé el hardware I2C para otra cosa. Y si tengo que convertirlo en un programa, puede ocupar mucho espacio.
Creo que quiero probar esta técnica. ¡Gracias!
Y muchas gracias por escribir un código tan limpio. El firmware será fácilmente portátil. 🙂 🙂
Garrett Mace dice:
Es bueno recordar que no todo tiene que resolverse mediante una cadena de funciones especiales. Considere si su problema puede resolverse con algunos elementos pasivos y evitará limitar sus habilidades como diseñador electrónico.
Aldea dice:
Cualquier primer complejo de "Nombre" me parece un poco ofensivo. Solo mi 2ct.
macegr dice:
Te equivocas, porque en este caso es el nombre de un gato.
Ungüento Pinta dice:
Esto me recuerda a un truco que implementó I2C (IIRC) usando solo un microcontrolador y un circuito RC simple. ¿Alguien más recuerda eso?
Además, el tweet vinculado parece haber sido eliminado.
Ungüento Pinta dice:
Esto me recuerda a un truco que implementó I2C (IIRC) usando solo un microcontrolador y un circuito RC simple. ¿Alguien más recuerda eso?
purificar67 dice:
¡Este es un truco muy inteligente! Me tomó alrededor de un minuto descubrir cómo mirar el esquema. Fue una buena noche un rompecabezas mental 🙂
Leí el comentario de que muchos sugieren resolver un problema con I2C, pero Micha lo resuelve con tres cables: I2C requeriría cuatro cables, dos para datos más uno a tierra y uno para alimentación.Alana Semuels dice:
Como "Charlieplexing", este concepto avanza HaD.
El escaneo de cambios también, junto con varias otras versiones, se encuentra en el folleto de Consejos y trucos de Microchip. Buena lectura, que se escribió principalmente en los años 90, pero que sigue vigente hoy en día.
Creo que llamaré a esta técnica “Cambiar la técnica de escaneo originalmente inventada por un ingeniero de microchip pagado”.
..o corto ESTODO.