jueves, 1 de diciembre de 2016

Arduino. Abrir Menús con tres pulsadores

 Ya hemos interactuado con Arduino por medio del panel táctil. Pero si nuestro módulo tft no es táctil podemos hacerlo por medio de pulsadores o incluso usar la pantalla de nuestro móvil.



 Para ver esto, en un módulo TFT 1.8" vamos a dibujar un menú principal desde el que se pueda acceder a otros seis por medio de una sección de tres pulsadores o haciendo lo mismo desde la pantalla de nuestro móvil.
 En una segunda parte veremos el tema Bluetooth y su aplicación necesaria. 
 La cuestion en esta primera entrada está relacionada con el ADC de arduino (Convertidor Analógico-Digital ) para leer tensiones y usar con pulsadores .







  






   Pulsadores:



 Existen varias configuraciones posibles, esta es una que usa un solo pin analogico:

                                       


                                          SW1     Up
                                          SW2     Ok
                                          SW3     Down


 Dependiendo de cual sea el pulsador accionado ( sw1, sw2, sw3) se conectará al pin A6 un divisor de tensión formado por 2, 3, ó 4 resistencias en serie. Si se accionan dos o más pulsadores, solo influye el que menos resistencias encuentre hacia Vcc  (+5V). 

 El ADC de arduino ( en el sketch usamos el canal A6) puede leer y convertir estos voltajes en datos digitales, mapea  tensiones de entrada entre 0 y 5 voltios en valores enteros entre 0 y 1023 (cuando se utiliza la tensión de referencia analógica estándar 5V)  

  Es necesario calcular el valor  de las  tres posibles tensiones, entregadas por la sección  de pulsadores con su correspondiente valor digital :

   - Si se pulsa SW1. El circuito equivalente es:



 Como usamos 2 resistencias del mismo valor la tensión en el pin analogico (A6) es 1/2 de Vcc.

               Vcc/2 = 5V/2 = 2.5V .
               valor  ADC;    (2.5 x 1023) /5 = 511 

   - Si se pulsa SW2, el circuito equivalente es:



 Como usamos 3 resistencias del mismo valor la tensión en el pin analogico (A6) es 1/3 de Vcc.

              Vcc/3= 5V/3=1.66V .  
              valor  ADC;    (1.66 x 1023) /5 = 341

   - Si se pulsa SW3, el circuito equivalente es:





 Como usamos 4 resistencias del mismo valor la tensión en el pin analogico (A6) es 1/4 de Vcc.

            Vcc/4= 5V/4=1.25V .
            valor  ADC;    (1.25 x 1023) /5 = 256


 - Y si no se pulsan los pulsadores la tensión en el pin analogico (A6) es:  
   
      0V. 

     valor  ADC  =  0

 Conocidos estos cuatro valores solo es cuestion de implementarlos en el programa y asociarlos con sus correspondientes funciones. Podéis ver en el sketch como con estos valores, un condicional puede discriminar cuál ha sido el pulsador accionado pese a que los tres están conectados en el mismo pin. 




  Power bank state



 Podemos hacer más cosas con el ADC de Arduino. El menú 6 (POWER BANK state) abre una pantalla para monitorear el estado de la fuente de alimentación que uso para prototipos. Su función consiste en mostrar el voltaje de una batería de litio y un módulo DC-DC step up ajustable conectado a ella, este alcanza unos 37V. max. imprimir su valor, de forma gráfica, en voltios porcentualmente en el caso de la batería.


 Voltímetro 0-40 V ( necesarios 37 V, por seguridad 40 V) 


  Las entradas analógicas de Arduino se pueden utilizar para medir el voltaje DC entre 0 y 5V. este rango se puede aumentar creando un divisor de tensión mediante el uso de dos resistencias.
 Este es un circuito simple y útil que puede medir voltajes de entrada de CC en el rango de 0 a 40 V.

 Para calcular esto, considerar que la tensión max en A2 ( que es 5V) se da cuando el módulo DC-DC está ajustado en su máximo voltaje de salida ( que son 40v) gracias a la caída de tensión producida por las resistencias.
 A tener en cuenta que superar los 40V. implica dañar la placa Arduino. 

 Esta es la configuración:



    


 -Estado batería Li-ion



  La conexión a la batería podría realizarse directamente a un pin analogico pero esto sería  problemático dado que  esta conexión sigue estando activa aunque se corte la alimentación principal de Arduino. Por eso he vuelto a usar dos resistencias, en este caso es aconsejable que tengan un alto valor resistivo para reducir el consumo de corriente de la batería.

 Esta es la configuracion que estoy usando:



 Es un divisor de tensión a la mitad (multiplicar su lectura  x 2 en el programa)




 En una segunda parte sobre este mismo proyecto iniciaremos un módulo bluetooth HC-05 conectando con un dispositivo móvil.  Adelanto el Sketch de este programa que aunque incluye la funcionalidad Bluetooth puede funcionar correctamente solo con tres pulsadores .

HC-05._Menus_con_Bluetooth_y_tres_pulsadores


No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.