¿Puede esto funcionar como una configuración de entrada ADC y es común?

8

¿Funcionaría esto? Estoy bastante seguro de que en teoría debería, pero no lo veo a menudo o en absoluto. En teoría, el divisor de voltaje de 2: 1 a 1: 2 debería dar 3.3v en un extremo y 1.6v en el otro extremo del bote, dando al ADC un amplio rango para trabajar. Y si se presiona el botón, el R1 + RV actuará como un pullup máximo de 20k, por lo que la línea se reducirá a 0v, que el ADC se puede codificar para reconocer como un evento único, permitiendo que existan un botón y un bote. en el mismo pin de entrada, permitiendo que el ADC sirva para ambos propósitos.

Se guarda un pin de entrada, sin cambios significativos en el código, ya que el adc ya se está sondeando para el bote.

esquemático

simular este circuito : esquema creado con CircuitLab

¿Funcionaría? Y si es así, como curiosidad, ¿por qué no es esto más popular?

Transeúnte
fuente
3
Funcionaría bien. Quizás agregue un pequeño condensador a través del interruptor, para evitar los picos de barrido de la olla y proporcionar un poco de rebote al usar el interruptor.
Anindo Ghosh
No es exactamente lo mismo, pero mira este diagrama de circuito e intenta encontrar algo que te resulte
jippie
@jippie no, conozco las escaleras resistivas como botones múltiples, eso es bastante común (controles de radio en el volante del automóvil, controles en línea para iPod / iPhone). Es específicamente el uso de una olla y botones en el mismo adc que estaba preguntando, nunca lo he visto.
Passerby
2
Sacrificas algo de resolución en la lectura de la posición del bote de esta manera. Eso puede ser perfectamente aceptable, dependiendo de su aplicación y de la naturaleza del control que el usuario cree que está activando.
RBerteig
1
Puede identificar un segundo interruptor que tire de la entrada a VCC, siempre que no haya posibilidad de que ambos interruptores se presionen simultáneamente. Por lo tanto, decodificar un ajuste analógico y dos cierres de interruptor mutuamente excluyentes con una sola entrada de ADC no es malo, y puede ser un truco útil en un micro de bajo conteo de pines. Piense en el sentido de posición con interruptores de límite duro en cada extremo. Entonces son mecánicamente exclusivos e incluso se ajustan a la señal analógica.
RBerteig

Respuestas:

6

Sí, debería funcionar, aunque hay algunos problemas a tener en cuenta.

El problema es que debes tener cuidado de detectar e ignorar las transiciones entre el nivel del interruptor de 0 V y el nivel del bote. Algunos de ellos se verán como niveles de bote válidos, por lo que debe tener en cuenta varias muestras para decidir si lo que parece ser un nivel de bote es real o solo un voltaje intermedio mientras se mueve entre el interruptor y el bote. Tenga en cuenta que los interruptores reales rebotan, por lo que esto es más complicado de lo que probablemente imagina. Una cosa que sabes sobre un voltaje de pote válido es que no puede cambiar tan rápido. Esto debería ayudar a eliminar las lecturas intermedias.

Otro problema es que no se puede leer el bote cuando se presiona el interruptor. No hay nada que pueda hacer al respecto con esta configuración. Si eso importa depende del sistema y cuál es el significado de la posición del bote y un interruptor presionado.

No puedo decir si esto se hace "a menudo" o no. Las entradas de bote en sí mismas son inusuales, pero por supuesto existen. Para que este esquema tenga sentido, debe tener un sistema que necesite un botón y una configuración continua del usuario, y en el que realmente no quiera gastar el pin adicional. Si esta es la diferencia entre encajar en un micro de 28 pines o tener que usar un micro de 44 pines, probablemente lo haría. Si me sobran otros pines, no haría esto porque es mejor mantener baja la complejidad. Los pines separados para el bote y el botón serán más fáciles y, por lo tanto, menos propensos a tener errores en el firmware.

Olin Lathrop
fuente
2

He usado ADC como entradas sin problema, en una topología muy similar a la suya.

No tenía el bote, pero tenía un divisor de dos resistencias para reducir el voltaje de entrada (estaba en un ATxmega, que tiene una entrada ADC máxima de 2/3 Vcc), y un interruptor para tirar de la entrada a suelo.

Creo que funcionará bien.

Una cosa que probablemente deberías tener en cuenta es que el botón puede no llevarte completamente al suelo. Dependiendo de la resistencia del interruptor, aún puede tener algunos milivoltios en la entrada, por lo que no debe suponer que el botón que se presiona da como resultado un valor de ADC de 0, sino más bien un valor de ADC de <~ 10 recuentos, o por ahí ( prueba esto!).

Connor Wolf
fuente
He visto utilizar ADC para interruptores de goma conductores, con la razón de que el software podría compensar el aumento de la resistencia debido al envejecimiento.
starblue
2

Todas estas respuestas y sus comentarios son buenos y agregan mucha información. Estoy tratando de ver cuál merece la recompensa, pero también quería agregar esto.

Encontré una nota de aplicación detallada sobre esto mismo. No solo cambia, sino que cambia más un potenciómetro en la misma entrada de adc. Versión PDF con gráficos

ingrese la descripción de la imagen aquí

El artículo incluye fórmulas (y una hoja de cálculo de Excel 2007 para automatizar las cosas) sobre cómo seleccionar las resistencias de polarización y la olla, aunque el código de ejemplo para un microcontrolador ya no está disponible.

La limitación de esta técnica es que no puede presionar más de un botón a la vez. Además, el microcontrolador puede leer la posición del potenciómetro solo cuando no está presionando ningún otro botón. Este ejemplo muestra cómo usar dos botones, pero el número de botones puede variar. Los rangos de entrada están disponibles para hasta 10 botones y un potenciómetro, todos los cuales comparten el mismo pin de entrada (Figura 2). Aunque los rangos calculados no se superponen y son únicos, es dudoso que su hardware ADC pueda distinguir de manera confiable estas bandas en todas las circunstancias. Elegir valores de resistencia más pequeños mantiene estas bandas más separadas, creando un mayor rango de protección.

Usar esta técnica con cuatro botones y un potenciómetro está dentro de lo razonable. Experimentar con la hoja de cálculo ayuda a determinar rápidamente los valores correctos de resistencia en serie para cada interruptor y su rango de salida.

Hilo de comentario de Hackaday en esta nota de aplicación .

Más de un botón en el mismo pin también es una buena pregunta de recursos.

Transeúnte
fuente
Un sistema integrado que diseñamos utiliza voltajes codificados para identificar la mayoría de sus botones, siguiendo un ejemplo establecido en un diseño de referencia para el SOC en su núcleo. Muchas llaves, un pin GPIO. Funciona bastante bien ya que todos los botones están físicamente separados entre sí y no hay razón para que un usuario intente presionar más de uno a la vez.
RBerteig
1

Esto funcionará para detectar la posición de una olla que no está conectada a tierra, o con otras fuentes analógicas que sabe que no se acercarán a tierra, siempre que no le importe perder alguna resolución ADC.

En el caso más general, muchas entradas de sensores analógicos se referenciarán a tierra, y pueden ir a tierra en algunas circunstancias, por lo que este esquema no podría utilizarse. Además, muchas fuentes analógicas pueden oponerse a la conexión a tierra, a menudo emitiendo el humo mágico.

Este circuito podría usarse si realmente estás desesperado por una entrada digital más y conoces las limitaciones, pero no lo recomendaría para uso general.

Peter Bennett
fuente
1
Y eso es probable que la razón no es que común. Pero si tiene una perilla y un interruptor (¿hacer clic en el eje para ingresar?) Permitiría leer ambos desde un solo pin.
RBerteig
@RBerteig Olvidé por completo esos tipos de potes / interruptores combinados cuando pregunté esto. Esa es una aplicación muy apropiada.
Passerby el
@PeterBennett cuando dice que las entradas del sensor analógico pueden ir a tierra o fuentes analógicas que se oponen a la conexión a tierra, ¿puede explicar / explicar eso? En mi caso específico, es una entrada de MCU adc general, que no debería tener ningún problema para obtener una entrada directa de referencia VCC o Gnd.
Passerby el
@Passerby: si la salida del sensor que comparte la entrada del ADC con el botón va a tierra (o cerca de él), su programa no podrá distinguir entre una lectura baja del sensor y presionar un botón, y no detectar una pulsación de botón cuando la salida del sensor analógico es baja. Si el sensor analógico tiene una salida de "tótem" u otra etapa de salida de baja impedancia, puede dejar que la magia se escape cuando el botón empuja la línea hacia abajo.
Peter Bennett
@PeterBennett, ¿eso es solo una preocupación si estoy compartiendo esa entrada de ADC entre el potenciómetro / botón y otro sensor? Si solo estoy haciendo el combo de puerto / botón anterior, no debería ser un problema, ¿verdad?
Passerby
1

Esto debería funcionar. Pero podría mejorarlo, por lo que dudo que sea común.

  1. Suponiendo que tiene un ADC de rango completo (0 a 5V), la reducción de R1 y R2 aumentará su rango dinámico y, por lo tanto, la resolución de la posición del potenciómetro. Por supuesto, no puede reducir R2 a cero o perder la distinción de una activación del interruptor.

  2. No es tan baja potencia como podría ser. Si puede permitirse un condensador de cerámica, digamos 10nF, para conectarse a través del interruptor, puede aumentar fácilmente sus resistencias en un factor de 10 o incluso 100, reduciendo el consumo de energía en consecuencia. El condensador también ayudará a la precisión y la repetibilidad, al filtrar el paso bajo del voltaje visto por el ADC y proporcionar una fuente de voltaje de baja impedancia. Y, finalmente, eliminará el interruptor (probablemente sepa que casi todos los interruptores mecánicos exhiben rebote de contacto, haciendo contacto rápidamente y rompiéndolo varias veces cuando se opera una vez, lo que requiere un rebote ya sea en software o hardware). Como se señaló anteriormente, dicho condensador también es importante para obtener un comportamiento bien definido cuando se gira el potenciómetro, ya que esto puede producir transitorios, al menos en forma de alta impedancia intermitente.

    Por supuesto, con dicho condensador, C * R será su constante de tiempo (por lo tanto, cuando desee una precisión (1-e) ^ 3 dentro de 0.1 s de la liberación de un interruptor, será mejor que se mantenga por debajo de la combinación de 10 nF y 3 Mega- ohm...)

  3. Su software requiere un poco de cuidado. Verá transitorios, tanto del interruptor como del movimiento mecánico dentro del potenciómetro. No es difícil codificar, pero es más complicado que simplemente consultar un único resultado de conversión de ADC. Al menos deberá verificar si el valor que lee es lo suficientemente estable en varias conversiones para asumir que no está en un transitorio.

  4. Puede incluir componentes innecesarios: ¿para qué sirve R1 (suponiendo que su rango de entrada ADC llegue hasta el riel positivo)?Si se supone que R1 limita el voltaje de salida máximo para que se ajuste a su rango de ADC, entonces ¿por qué el potenciómetro no funciona con un voltaje de referencia en o cerca del riel de ADC positivo? Eso requeriría una resistencia limitadora de corriente en la salida del potenciómetro, pero sería mejor. Como tal voltaje de suministro analógico podría fácilmente hacerse mucho más estable que el voltaje de suministro de IC (que supongo que su batería de 5 V debe simbolizar), puede obtener menos ruido técnico en sus conversiones de ADC.

    Y finalmente, incluso si R1 no es necesario para reducir el voltaje de salida máximo, el mismo cambio en el circuito, si se combina con un movimiento a una fuente analógica que podría ser tan simple como conectarse a + 5V en otro lugar, trae el beneficio combinado de arriba y de utilizar mejor su rango de entrada ADC sin ningún componente adicional.

pirámides
fuente
1
El punto 4 está mal. R1 tiene un propósito necesario, que es limitar la corriente de la fuente de alimentación cuando se presiona el interruptor y el bote está en su posición más alta. Sin R1, el interruptor acortaría la fuente de alimentación cuando la olla esté en la parte superior.
Olin Lathrop
¡Tienes razón! Estoy corregido. Todavía no estoy seguro de cómo salvar el resto del punto 4, pero sí, no todo es correcto como está ahora.
pirámides
Creo que logré corregir el error mientras ofrecía la misma mejora potencial.
pirámides
Deshice el voto negativo porque corrigió el error evidente. Sin embargo, todavía no estoy de acuerdo. Es mejor dejar la parte superior de R1 conectada a la misma fuente que alimenta el A / D porque eso hace que la medición sea radiométrica con la fuente. Cuando la cadena divisoria A / D y resistencia utiliza los mismos voltajes de referencia, las variaciones en ese voltaje se cancelan.
Olin Lathrop
Gracias. Con una configuración radiométrica, el +5 V es el voltaje de referencia apropiado, y eliminar R1 no cambia eso. Pero ayuda aprovechando un rango más amplio de la configuración todavía radiométrica. La única desventaja concebible es si R2 y Rv tienen coeficientes de temperatura muy diferentes. Luego, el circuito original cancela el efecto si, y solo si, el potenciómetro se ajusta exactamente al 50%. Pero el efecto es muy pequeño y, como se dijo, esto, bueno, la compensación funciona solo para un ajuste de potenciómetro de todos modos.
pirámides
1

Yo no lo recomendaría divisor de tensión por una razón:

Cuando conecte cualquier dispositivo de alta impedancia para medir, tendrá una resistencia equivalente entre el dispositivo y cualquier resistencia del circuito (equivalencia paralela), cambiando la relación de las resistencias.

Por ejemplo, si configura las resistencias y la olla en un 50-50%, cuando conecte el dispositivo tendrá un 49-51%. No cambiará demasiado debido a la alta impedancia del ADC, pero perderá precisión. Quiero decir, puedes ver el ADC como otra resistencia que cambiará la resistencia equivalente.

esquemático

simular este circuito : esquema creado con CircuitLab

Chirry
fuente
¿No significaría que cualquier uso de una olla con un adc tendrá esa inexactitud inherente?
Passerby
No solo debido a la olla, porque el ADC en sí tiene una impedancia y si lo conecta al divisor de voltaje, la relación cambiará porque sería como tener una resistencia paralela a R2.
Chirry