Alternativas a un interruptor DIP clásico

Estoy buscando una parte que permita a un usuario cambiar con frecuencia una configuración. En este momento estoy utilizando un interruptor DIP SMD conectado a un expansor de E/S I2C.

Lo que me molesta es el gran tamaño de estos componentes (interruptor DIP combinado con IC de expansión de E/S), así como la interfaz de usuario bastante tediosa. ¿Hay interruptores DIP o algo que tenga la misma función con la que puedo hablar a través de un bus digital como I2C para leer su estado?

También estoy abierto a enfoques completamente diferentes. Todo lo que necesito es algo que pueda ser alterado mecánicamente de forma permanente y que permita al menos 64 estados diferentes. Es importante que la configuración se pueda realizar cuando el circuito no está encendido y proporciona información visual de la configuración exacta al usuario. La única forma en que estaría bien encender el circuito es si la configuración y la retroalimentación visual son independientes sin la necesidad de control desde un microcontrolador o SoC.

La pregunta está algo relacionada con esta pregunta de hace 6 años: reemplazo del interruptor DIP

Editar: hay algunas sugerencias excelentes en las respuestas y creo que dejo esta pregunta sin responder, los votos de la comunidad deberían decidir qué es útil y qué no. Si tienes el mismo problema que yo, revisa todas las respuestas.

Si quiere que sea elegante, conecte el módulo bluetooth y configure todos los interruptores a través del teléfono inteligente.
Mi primer pensamiento es que no es la huella real lo que hace que un interruptor DIP sea grande; son los interruptores reales. Pasar a un protocolo en serie no necesariamente lo haría más pequeño.
¿Podría enseñar a los usuarios a contar en Hex y usar uno o dos de estos ?
Bueno, me gustaría deshacerme del multiplexor/expansor de puertos I2C. Si es solo el interruptor DIP, estaría bien. Entonces, si hay algo como un "interruptor DIP digital", sería genial.
A menudo, un interruptor DIP no requerirá pines adicionales. Quizás los pines se puedan compartir si eres un poco inteligente al respecto.
¿Cuánto más pequeño que un paquete pequeño de 6 interruptores espera que se pueda hacer antes de que ya no sea manipulable mecánicamente?
¿Con qué frecuencia los usuarios manipulan los interruptores? ¿Funcionaría un tipo de placa de ruptura?
Yo digo que no use interruptores DIP. Si los proporciona, los usuarios jugarán con ellos, haciendo que las cosas no funcionen.

Respuestas (11)

Podría usar un conmutador SIP en lugar de un DIP. El ahorro en el área de la placa le daría espacio para su interfaz I2C (o una interfaz más simple como un registro de desplazamiento con pestillo de entrada):

ingrese la descripción de la imagen aquí

La imagen lo muestra horizontal pero en realidad se monta verticalmente.

De hecho, son agradables y los estoy considerando para mi diseño, aunque en una placa SMD multicapa es un poco difícil usar uno de estos sin bloquear un área grande para el enrutamiento.
Puede haber versiones SMD. Los paquetes SMD SIP suelen tener pies escalonados.
SMD podría ser un desafío, Apem (quien hace el de la imagen) no los hace, no recuerdo haberlos visto en ningún otro lado. Normalmente los tendría cerca del borde de la PCB donde el enrutamiento no siempre es tan crucial.

"Dip switch

En primer lugar, un interruptor "DIP" no tiene que ser grande. Aquí hay un interruptor SMD de 6 bits con pines de gancho en J y un paso de 1,27 mm:

CHS-06TAingrese la descripción de la imagen aquí

Potenciómetro

Si está desesperado por reducir el espacio ocupado y puede incomodar un poco al usuario, podría usar un potenciómetro conectado a un convertidor A/D. Dado que necesita 64 configuraciones, un convertidor de 12 bits debería tener un margen de resolución más que suficiente para discernir entre los pasos, dados algunos filtros y umbrales eléctricos y de software. Aquí hay una solución de 2 por 2 mm:

PVF2A

Sin embargo, nunca he visto un potenciómetro analógico con 64 retenes físicos. Esto significa que no tendrá ningún comentario táctico confiable para el usuario al configurar el dispositivo. También es difícil encontrar de manera confiable la configuración correcta en el arranque, ya que se puede dejar justo en un umbral entre dos configuraciones: almacenaría la configuración anterior en una EEPROM, y si el potenciómetro está lo suficientemente cerca del valor almacenado en el arranque, yo los consideraría iguales.

Además, probablemente no usaría ese trimmer de 2 por 2 mm, pero hay miles de trimpots diferentes.

Interesante idea con el potenciómetro. Aunque la retroalimentación visual de la configuración exacta sería importante.
Hay mini codificadores rotatorios disponibles, de perfil similar a un potenciómetro pero con salidas binarias, generalmente de 4 bits/16 pasos marcados 0-F con muescas claras.
@JohnU Necesita dos de esos, lo que lleva a una solución más grande.
Dos de ellos (quizás verticales en lugar de planos) podrían facilitar el embalaje.
@PTS Si ya hay algún tipo de pantalla disponible en su dispositivo, puede abusar del software para leer el valor y mostrarlo. Suponiendo que ya tiene cargado algún tipo de menú de configuración, esto tampoco necesita ser mucho trabajo. Por supuesto, no podrá leer la pantalla mientras el dispositivo esté apagado.

¿Tienes un ADC de repuesto?

Si tiene un ADC de 8 bits de repuesto en un microcontrolador cercano, probablemente podría deshacerse del expansor de IO en favor de una red de resistencias, ya sea una escalera R-2R o una escalera ponderada binaria. Eso codificaría las posiciones del interruptor como un nivel analógico. Las escaleras de resistencia están disponibles en paquetes muy pequeños, pero no sé si obtendrá una más pequeña que su expansor I2C.

¿ Cuántas líneas de E/S de propósito general tiene?

Si puede arreglárselas con menos líneas de E/S, ¿quizás pueda deshacerse del expansor de E/S y usar las que tiene? Puede multiplexar los conmutadores en menos de seis líneas de E/S. De hecho, si tiene espacio para 3 diodos y su microcontrolador tiene pines de tres estados, puede manejarlo con solo 3 pines.

¿Tus usuarios pueden manejar algo un poco técnico?

Si sus usuarios pueden seguir las instrucciones y la configuración solo cambia en raras ocasiones, podría tener terminales abiertos donde puedan colocar una resistencia. Mediría la resistencia con un ADC, o midiendo la constante de tiempo que produce contra un capacitor. Debería poder distinguir 64 valores de resistencia, lo que podría ser complicado con el último enfoque. Y, por supuesto, sus usuarios necesitarán tener a mano los valores de resistencia/estilos de caja correctos.

Con las resistencias, también puede hacer 2 resistencias, luego solo necesita un convertidor A / D de 4 bits y necesita menos resistencias para distribuir, por lo que ahorra el precio
Reescribí mi pregunta. No es necesariamente el tamaño del interruptor DIP lo que me preocupa, sino la necesidad del componente adicional en forma de un expansor de E/S. Aparte de mi bus I2C, solo me quedan 3 IO.
Tres líneas de E/S de tres estados son suficientes para direccionar seis conmutadores. En general, puede direccionar n ^ 2-n interruptores con n líneas IO y n diodos. ¿Debo agregar un esquema?

Uno o más interruptores giratorios codificados son lo que está buscando.

Teóricamente , los puentes ofrecen más configuraciones cuando se requieren cientos de opciones porque los usuarios pueden acortar cualquier número de ellos en diferentes configuraciones, agregar resistencias, capacitores, diodos, etc. ¡pero eso es muy técnico para los usuarios y para que la placa lo descifre!

Lo siento, debo haberme perdido tu respuesta cuando agregué la mía. De hecho, son una excelente alternativa a los interruptores DIP.

NFC NTAG de NXP + teléfono inteligente. Es básicamente una EEPROM I2C, que también se puede leer y escribir a través de NFC sin alimentación del sistema.

Mientras investigaba esto, obtuve una recomendación para los interruptores codificados giratorios. Su huella es comparable a un interruptor DIP de paso de 1,27 mm equivalente en bits. Aunque, en mi opinión, ofrecen interfaces de usuario muy superiores en comparación con los interruptores DIP/SIP.

En lugar de tener que convertir un número decimal o hexadecimal a binario y accionar un montón de pequeños interruptores, simplemente puede girar 1 o 2 de estos interruptores giratorios y trabajar con números hexadecimales. Es mucho más fácil decirle a un usuario que "ingrese" E6 que indicarle que active muchos interruptores en un patrón específico.

ingrese la descripción de la imagen aquí

¡Muchas opciones geniales aquí! Uno más un tanto oscuro: use un receptor IR y luego use un control remoto de TV o una computadora para transmitir la configuración. Así es como lo hacen las luces RGB.

IR proporciona un poco de energía, por lo que podría funcionar cuando el dispositivo en sí no está alimentado, pero ¿cómo se daría cuenta de eso en el hardware?

¿Codificadores de ruedecilla? Estos van de 0 a 9, son apilables y tienen salidas binarias:

Codificadores de ruedecilla

¿Es esto realmente más pequeño que un interruptor DIP SMD?
Ay, no. Es tan grande como mi incapacidad para leer una pregunta simple... Vote como mejor le parezca. Lo siento por hacerte perder el tiempo.

Un enfoque diferente podría ser un codificador rotatorio, una EEPROM y 6 LED pequeños.

El estado se guarda en la EEPROM y los LED indican el modo seleccionado actual.

Girar el codificador cambiará entre modos.

Probablemente tampoco ahorre mucho espacio: su codificador típico tiene un eje de 6 mm y también necesita espacio para los LED.

El solo uso de un solo interruptor giratorio no parece prometedor. Con 64 posiciones, terminaría con poco menos de 6° por posición, sintiendo que o etiquetar será difícil.


Solo lea su comentario @Trevors answer, por lo que este enfoque también es inútil.

Sin embargo, gracias de todos modos, su idea al menos no requeriría que se inicie todo el sistema. Agregué eso como una forma aceptable de responder a la pregunta.
Sin embargo, un pequeño botón con los LED para ciclismo podría funcionar. Apuesto a que esa es la forma en que usan para reprogramar tricorders en Star Trek TNG

Tres opciones.

  1. Cosa análoga. Un divisor de voltaje ajustable. El usuario proporciona sus propias resistencias de rango estándar del 5 % para establecer el valor.

  2. PWM. Un circuito de estilo PWM o RC opto aislado con 64 pasos que lee su dispositivo. Se pueden alimentar por separado o desde la misma fuente, pero dado que está optoaislado, su dispositivo no estará encendido. Puede deshabilitar el circuito PWM después del arranque.

  3. Digital. Un potenciómetro digital con control de botón pulsador. Nuevamente, el circuito se puede alimentar independientemente de su dispositivo.

Siempre puede mostrar el I2C u otra interfaz, tal vez USB, y dejar que el usuario conecte su teléfono con una aplicación personalizada que le permita configurar alguna dirección EEPROM interna.

Sin embargo, usar una aplicación de teléfono puede ser bastante problemático. Necesitará admitir la aplicación y mantenerse actualizado con las últimas tecnologías, y deberá admitir muchos proveedores de teléfonos.

O puede proporcionar un "Dongle" personalizado que se conecte y le permita hacer algo similar.

Pero dudo que te ahorre mucho espacio.

Si tiene otras entradas de usuario, digamos dos o tres botones y algún tipo de indicador, también es posible, con la entrada adecuada del usuario en los botones (mantener presionado el tiempo, etc.), poner el dispositivo en un modo de programación y configurarlo. de esa manera. Lo mismo que se ve en electrodomésticos como termostatos, ablandadores de agua, computadora de lata, etc.

Puedes hacer muchísimas cosas con dos o tres botones y un LED.

Si necesita configurarse mientras no está encendido, está prácticamente atascado con interruptores o puentes.

El uso de una aplicación de teléfono puede ser bastante problemático, ya que los teléfonos son bastante volátiles. Un sistema integrado puede sobrevivir fácilmente de 5 a 10 generaciones de teléfonos y brindar soporte durante todo el período puede ser problemático.
@AndrejaKo buen punto ... bueno suficiente para un complemento :)
Desafortunadamente, la aplicación requiere que el usuario pueda cambiar la configuración sin tener el circuito encendido, por lo que necesito que sea mecánicamente configurable. Aunque algunas ideas interesantes.
@PTS, entonces estás bastante atascado con interruptores o puentes.