Alternativa simple de ADC mediante el uso de un capacitor y un pin digital Arduino

4

Me gustaría medir una docena de potenciómetros con un Arduino UNO. Desafortunadamente, la UNO solo tiene 6 pines analógicos, pero tiene una docena de pines digitales.

¿Puedo medir efectivamente un valor analógico con un pin digital siguiendo este procedimiento?

  1. Conecte el potenciómetro en paralelo con un condensador.
  2. Conecte una unión a un pin digital de Arduino.
  3. Establezca este pin para escribir ALTO hasta que el capacitor se cargue por completo.
  4. Configure el pin para que lea LOW y luego use pulseIn () para medir el tiempo que tarda el condensador en descargarse a través del potenciómetro, lo que hace que el voltaje en el pin pase de 5V a 0. Este tiempo debe ser proporcional a la resistencia de la olla. p.ej. una olla con baja resistencia hará que la tapa se descargue muy rápido, mientras que una alta resistencia hará que la tapa se descargue más lentamente.
pregunta Cerin

3 respuestas

3

No confiaría en ello. Si bien puede funcionar, también podría haber alguna capacitancia parásita u otros factores que también afectan la lectura del tiempo y el valor de voltaje. Recuerde que hay una tierra de nadie entre alta y baja (donde estaría la señal analógica), que teóricamente podría cambiar con la temperatura, el tiempo o cualquier otra variedad de otras razones e invalidar su configuración. También se basa en saber el momento exacto de la descarga. Mantener un tiempo como este es algo que es muy difícil de hacer con precisión en cualquier microcontrolador.

Tomemos, por ejemplo, esto funciona y lo calibran para que sepa que lee low cuando la entrada llega a 1.7v. Pero vuelva en un día (o incluso un minuto) más tarde y ese umbral de 1.7v es ahora de 1.6v. La calibración que hiciste no sería válida y obtendrías resultados falsos.

Lo que haría en su lugar es usar los pines digitales para leer un ADC externo a través de un SPI u otra línea digital. Esto tiene la ventaja de ser más confiable y (en la mayoría de los casos) también más preciso.

Entonces, para responder a tu pregunta, es teóricamente posible. Sería un circuito difícil de diseñar, necesitaría desconectar la línea que se está monitoreando mientras carga el condensador, pero podría hacerse. Sin embargo, lo más probable es que no sea muy confiable.

    
respondido por el Reid
2

El diseño óptimo dependerá de la frecuencia con la que se deben leer las macetas, la estabilidad de los valores con el tiempo (por ejemplo, si configura la maceta en una posición particular hoy, le importará si la lectura es ligeramente superior o inferior ¿Mañana?), y qué tan pequeña es la resistencia del limpiaparabrisas en comparación con la resistencia total del recipiente.

Conectar una olla como un reóstato (un extremo desconectado) con cierta resistencia es una serie, descargar una tapa, y luego calcular el tiempo que tarda la tapa en cargarse a VDD a través de la combinación pot + resistor es una técnica muy antigua que se usó en la máquina Pong original y en muchas máquinas de juego desde entonces; No estoy seguro de si la Odisea que precedió a Pong utilizó la misma técnica. Los mayores problemas con esa técnica son que la estabilidad a largo plazo puede ser deficiente, y las variaciones en la resistencia de los limpiadores pueden producir una respuesta de control desagradable si las ollas se vuelven viejas y / o sucias.

Otro enfoque es cablear los extremos del recipiente entre VDD y VSS, probablemente con algunas resistencias para mantener el voltaje del limpiaparabrisas a cierta distancia de los rieles, y luego usar un comparador para detectar si el voltaje del recipiente es mayor o menor que un Tensión de referencia generada por la tapa que aumenta de VSS a VDD. Idealmente, uno debería usar una fuente de corriente constante para cargar el límite, pero si no se acerca demasiado a VDD o VSS, incluso una resistencia puede ser "lo suficientemente lineal".

Me gusta el segundo enfoque mejor que el primero, ya que, como los propietarios de Atari 2600 pueden atestiguar, los controladores estilo reostato se ponen "nerviosos" después de un tiempo como consecuencia de la cambiante resistencia de los limpiaparabrisas. Sin embargo, el segundo enfoque requeriría un par de chips de comparación cuádruple para leer seis potes, mientras que el primero no lo haría.

    
respondido por el supercat
2

Si pudiera descargar el límite a una corriente constante y utilizar un comparador real, esto sería muy parecido a un A / D basado en la pendiente. Es una forma común de lidiar con los termistores. Según el tamaño de la tapa y la velocidad de sus temporizadores, este método puede tener una mejor resolución que un A / D a bordo. Sin embargo, recomiendo un comparador real.

    
respondido por el Scott Seidman

Lea otras preguntas en las etiquetas