Representación digital de 10 bits con interruptores SPDT y división de voltaje

Soy completamente nuevo en electrónica y he estado tratando de encontrar una forma de conectar 10 interruptores SPDT a un solo pin analógico en mi Ardiono Mega 2560 (y, por supuesto, conectado a 5V y tierra). La idea es habilitar tantos interruptores en un solo pin, para intentar liberar pines para otros usos.

He puesto 10 interruptores en serie, con valores de resistencia únicos en un polo de cada uno, y de esta manera, tratando de representar los valores de bits, 1, 2, 4, 8, 16, 32, 64, 128, 512, lo que me dará una resolución de 0-1023 valores integrales, que es el rango que entiendo que admite el ADC en el chip Arduino. El divisor de voltaje funciona y proporciona el voltaje correcto, pero SOLO cuando se activa un solo interruptor.

Mi circuito se ve de la siguiente manera:

ingrese la descripción de la imagen aquí

Aquí podemos ver que se activa el último interruptor y el voltaje de salida es de 2,5 V, lo que corresponde a un valor digital de 512 como se esperaba. Sin embargo, al usar más de un interruptor, el voltaje cae más, dándome el resultado inverso de lo que estoy buscando.

No sé si lo que muestro aquí tiene sentido, pero idealmente quiero poder detectar la posición de cualquier combinación de interruptores, convirtiendo el voltaje a binario y trabajar desde allí.

Eche un vistazo a esta discusión, que aborda algunos de los problemas y limitaciones de este enfoque: arduino.cc/forum/index.php/topic,8558.0.html

Respuestas (1)

Esto no va a funcionar. Entre la precisión de sus resistencias y la precisión del A/D, no obtendrá exactamente una lectura conocida para cada configuración única de los interruptores. Ni siquiera cerca.

En general, la forma de producir un conjunto de valores analógicos espaciados uniformemente a partir de diferentes configuraciones de interruptores es hacer lo que hacen la mayoría de los D/A, que es usar una escalera R-2R. Tengo que hacer otra cosa ahora, así que no tengo tiempo para entrar en lo que es una escalera R-2R, tal vez más tarde. Sin embargo, esta es una construcción bien conocida y fácilmente encontrará mucho sobre ella.

Mire cuidadosamente su presupuesto de error D/A y el de A/D. Con resistencias del 0,1 % y dependiendo de la precisión absoluta del A/D, es posible que pueda resolver 8 interruptores si todo sale bien. 7 o 6 interruptores suena mucho más factible. 10 está definitivamente en el rango de fallo garantizado.

¿Sería una mejor opción considerar usar un registro de desplazamiento como en este tutorial: arduino.cc/en/Tutorial/ShiftIn
Leeré sobre las escaleras R-2R en WikiPedia, vi un artículo allí que parecía bastante detallado.
El problema es que la tolerancia de la resistencia más grande hará que la más pequeña sea inútil: puede solucionar este problema midiendo cada resistencia con un ohmímetro de la resolución necesaria para la conversión D/A.