miércoles, 23 de octubre de 2013

Entrada analógica microprocesador.Cálculo de una botonera.

Ahora me dedico al cacharreo con el microprocesador Arduino Uno. Este microprocesador dispone de varias entradas o salidas digitales y de varias entradas analógicas. Las entradas analógicas hacen la conversión de un valor de tensión analógico (de 0 a 5V) a un valor digital comprendido entre 0 y 1023. Una botonera son varios botones, normalmente mas de uno, que según se pulse uno u otro botón la acción a realizar es distinta. 

Este diseño de botonera ocupa una sola entrada analógica del microprocesador Arduino UNO. Consta de N resistencias en serie y de N-1 pulsadores de los que cierran el circuito al pulsarlos. Mientras no se pulse el botón el circuito permanece abierto.




  • Uno de los terminales de los pulsadores va a la línea de tensión positiva y el otro terminal se situa entre dos resistencias.
  • Los pulsadores cortocircuitan todas las resistencias situadas entre sus  contactos, según el gráfico. El primer interruptor cortocircuita todas las resistencias situadas por encima de R0, el segundo todas las situadas por encima de R1, el tercero todas las situadas por encima de R2, etc...
  • La  entrada analógica va conectada al punto de unión de R0 y R1, salida de la botonera. 
  • Al pulsar cada uno de los botones varía el nivel de tensión de salida. El cálculo de los valores de R para obtener un valor deseado es sencillo, pero un poco pesado. Por eso he preparado un libro excel que realiza estos cálculos.
  •  Parto del supuesto que  dos botónes consecutivos presentan un salto de tensión equivalente (1023/Num. Int.).
  •  Una vez calculados los valores teóricos de las resistencias busca los valores comerciales mas próximos.
  •  Una vez conocidos los valores comerciales de las resistencias calcula los valores que leerá la entrada analógica del microcontrolador.
  •  El libro excel está preparado para calcular botoneras de hasta 20 botones.


  • En  la columna B de la hoja "Botonera" calculo el valor digital que debe tomar la salida.
  • No voy a explicar como se despeja una ecuación con una incógnita. En la columna C de la hoja "Botonera" calculo un factor X por el que hay que multiplicar R0 para obtener las distintas Rn.
  •  Con esto encuentro los valores teóricos exactos que satisfacen las necesidades de la botonera.
  • Los valores teóricos obtenidos normalmente no coinciden con los valores comerciales de las resistencias. Para encontrar los valores comerciales mas próximos a los teóricos utilizo =COINCIDIR($E2;Resistencias;1). Esta formula devuelve la línea en la que está el último valor menor o igual al buscado.
  • Con los valores comerciales encontrados repito los cálculos para saber el valor digital correspondiente.
  • Repito los cálculos con los valores comerciales inmediatamente superiores a los teóricos.
  • Hay que repetir los cálculos n veces, una para cada resistencia, este es un trabajo típico de hoja de cálculo.