Mostrando entradas con la etiqueta PULL-DOWN. Mostrar todas las entradas
Mostrando entradas con la etiqueta PULL-DOWN. Mostrar todas las entradas

viernes, 8 de enero de 2016

Pulsador antirrebote con contador de pulsaciones


Cuando activamos o desactivamos un pulsador, se producen una serie de rebotes o fluctuaciones (ruido) hasta que se asienta el valor que el pulsador va a transmitir. La mayoría de microcontroladores, incluyendo Arduino, debido a su alta velocidad de procesamiento de instrucciones son capaces de detectar estos rebotes y como consiguiente nos encontramos con un problema a la hora de trabajar con pulsadores, ya que Arduino será capaz de interpretar falsos niveles lógicos cuando activemos o desactivemos un pulsador (sin la eliminación de rebotes, al presionar el pulsador una sola vez, Arduino puede creer que lo hemos presionado repetidas veces).

Rebotes en un pulsador
 
En la mayoría de programas simplemente se utiliza un delay (retardo) de unos cuantos milisegundos (100 ms por ejemplo) entre cada lectura del estado del pulsador para evitar el problema de los rebotes, puesto que con ese tiempo de retardo es suficiente para que el pulsador haya estabilizado su estado y Arduino no detecte fluctuaciones.
En este POST os muestro una manera mucho más profesional y lógica de solucionar el problema de los rebotes, lo que conlleva comprobar el estado del pulsador dos veces en un corto período de tiempo para asegurarnos de que definitivamente se ha presionado el pulsador, además de conectar un display LCD a nuestro Arduino para mostrar el número de veces que se presiona el pulsador.

 
Lista de Materiales: 

·         Arduino UNO Rev.3.
·         Cable USB tipo A-B.
·         Pulsador.
·         Resistencia de 10KΩ.
·         Módulo LCM 1602 I2C V1.
·         Display 16x2 LCD 1602.
·         Protoboard.
·         Cables de conexión.
 

Código del programa:  


 
 
 

 Video:
 
 


viernes, 18 de diciembre de 2015

Pulsador con enclavamiento de estado


Los pulsadores son elementos muy utilizados para mandar señales “todo” o “nada” a dispositivos electrónicos que trabajan con lógica TTL (lógica transistor a transistor), como es el caso de los pines digitales de Arduino.  
Detalle de un Pulsador

 
Si realizamos una conexión PULL-DOWN entre el pulsador y una entrada digital cualquiera de Arduino, cuando activemos el pulsador, Arduino estará recibiendo +5V, que los codifica como estado alto (HIGH o “1” lógico), mientras que si el pulsador permanece en reposo, Arduino estará recibiendo un estado bajo (LOW o “0” lógico).
Conexión PULL_DOWN


Mediante programación vamos a ser capaces de implementar un pulsador con enclavamiento de estado, para que cuando activemos el pulsador, una salida digital de Arduino se ponga a “nivel alto” si se encontraba a “nivel bajo” y viceversa, es decir, seremos capaces de almacenar el estado de la salida digital para que esta cambie de “HIGH” a “LOW” o de “LOW” a “HIGH” cada vez que activemos el pulsador.
En la salida digital de Arduino con la que estemos trabajando, conectaremos un LED para poder comprobar que de verdad está cambiando el estado de la salida cada vez que activamos el pulsador (ON/OFF), aunque podríamos utilizar este tipo de configuración para “activar” o “desactivar” multitud de dispositivos electrónicos como relés, buzzers, motores, etc… 

Lista de Materiales:

·         Arduino UNO Rev.3.
·         Cable USB tipo A-B.
·         LED 5mm (de cualquier color).
·         Pulsador.
·         Resistencias de 10KΩ y 220Ω.
·         Protoboard.
·         Cables de conexión.


Código del programa:
 

 
 
 
Video:
 

 
 



martes, 15 de diciembre de 2015

Conexiones PULL-UP y PULL-DOWN


Una de las cosas más importantes a la hora de trabajar con entradas digitales, es la de asegurar los niveles lógicos que le estamos entregando a Arduino (o cualquier otro dispositivo electrónico).
Por ejemplo si utilizamos un pulsador como entrada, puede suministrar 0V o 5V (lógica TTL) a una entrada digital de Arduino (la que nosotros queramos), para que Arduino detecte un estado alto (HIGH o “1” lógico) o un estado bajo (LOW o “0” lógico) cuando activemos el pulsador, dependiendo de si el pulsador está conectado a GND o VCC (+5V). El esquema de conexión se muestra en la siguiente imagen.
Conexión de entrada digital directa

 
Aquí es cuando nos viene el “problema”, ¿Qué pasa cuando el pulsador no está activado? Pues simplemente que el circuito quedaría abierto, el pin digital queda desconectado de cualquier tensión y permanecería en un estado de alta impedancia. Como en la entrada no tenemos en ese momento ni 0V o 5V, permanecería en un estado lógico “indeterminado”, no siendo el Arduino capaz de reconocer un estado lógico definido (HIGH o LOW), con lo que no sabría qué hacer y como consiguiente se darían una serie de errores.
Para evitar este tipo de incomodas situaciones, disponemos de dos tipos de conexiones que nos solucionan el problema, las conexiones PULL-UP y PULL_DOWN.

Conexión de entrada PULL-UP y PULL-DOWN

En la conexión en "PULL-UP" tendremos a la entrada un nivel alto (+5 v) cuando el pulsador esté desactivado, y al presionar el pulsador el circuito pasará a bajo (0V).
La conexión en "PULL-DOWN" funciona al revés que la anterior, es decir,  cuando el pulsador esté desactivado tendremos un nivel bajo a la entrada (0V) y al presionar el pulsador pasara a un nivel alto (+5V).
Al accionar el pulsador estamos conectando directamente los valores de 0V y 5V, lo que significa que estamos causando un cortocircuito. Esto provocaría el paso de una corriente elevada, produciéndose un rápido calentamiento de componentes y conductores. La solución al problema es colocar una resistencia de 10KΩ (aunque también puede ser de 4K7Ω), para no crear un cortocircuito entre la alimentación y masa al presionar el pulsador.
 ¿Hay que hacer este tipo de conexiones en todas las entradas? No, solo es necesario en las entradas que estemos utilizando, y por supuesto que tengamos configuradas mediante programación.

Aunque estas conexiones se pueden realizar externamente, Arduino (que piensa en todo) incorpora internamente una serie de resistencias preparadas para conexión PULL-UP únicamente, que pueden ser configuradas mediante programación como se muestra en el siguiente “sketch” y que nos sirven para no tener que añadir componentes adicionales a nuestros proyectos.
 

Lista de Materiales:

·         Arduino UNO Rev.3.
·         Cable USB tipo A-B.
·         LED 5 mm (Cualquier color).
·         Pulsador.
·         Resistencias de 10KΩ y 220Ω.
·         Protoboard.
·         Cables de conexión. 

 
Código del programa:


 
 
  Video: