martes, 27 de septiembre de 2016

Entradas Digitales. Conexión de Pulsadores a arduino.


Muy buenas ;) En entradas anteriores vimos como encender y apagar aparatos desde el ordenador. Sin embargo, cuando tu entras a una habitación lo mas normal es que para encender la luz, por ejemplo, le des al interruptor o conmutador. Bien aunque son 2 elementos muy prácticos en una instalación eléctrica normal son muy limitados en una instalación domótica.. ya que solo tienen 2 posiciones: On - Off. Por eso yo siempre prefiero el Pulsador.. que a diferencia de estos dos tiene la particularidad de que mientras esta pulsado esta en On y cuando lo sueltas esta en Off. Que ventaja tiene esto?? pues a simple vista ninguna, debido a que para que la luz este encendida tendremos que estar apretando constantemente el pulsador, ya que al soltarlo se va a apagar.

Ahora imaginemos que a través de programación creamos un programa que detecte cada vez que el pulsador a sido apretado y nos guarde la información en una memoria. entonces la cosa ya cambia.. se abre un mundo lleno de posibilidades. solo por poner un ejemplo:

- apretamos una vez y encendemos la luz, volvemos a apretar y la luz se apaga.

- apretamos una vez y encendemos una luz, volvemos a apretar y se enciende el ventilador, volvemos a apretar y nos lo apaga todo.

- apretamos menos de 2 segundos y se enciende una luz, apretamos mas de 2 segundos y se enciende la calefacción.

Como vemos, con un interruptor solo podemos controlar un único elemento, con un único pulsador podemos controlar todos los elementos que queramos. ventajas?? donde??

Bien, hay 2 formas de conectar un pulsador a arduino, a través de una resistencia pull-up o a través de una resistencia pull-down. No os preocupéis si os habéis quedado con cara de locos sin entender nada ya que es electrónica pura y dura y no es mi intención daros la brasa con explicaciones teóricas. Así que solo conectarlo como os diré y os va a funcionar. Decir que las 2 formas de conexión son correctas pero en esta entrada me centrare a la conexión a través de la resistencia pull-up. Si alguien se anima a conectarlo de la otra forma va a tener que modificar la programación para que le funcione correctamente. (No es difícil, pero para alguien que no sabe programar puede dar lugar a dolores de cabeza serios). A continuación los esquemas.

Conexión pull-up

Conexión pull-down
A continuación os dejo el código de programación para que lo podáis subir a vuestro arduino y ver su funcionamiento. De momento os dejaré el ejemplo mas fácil que se trata de encender y apagar una luz mediante pulsaciones.

CÓDIGO DE PROGRAMACIÓN:

const int buttonPin = 2;  
const int ledPin = 13;    
int ledState = HIGH;      
int buttonState = LOW;          
int lastButtonState = LOW;
long lastDebounceTime = 0;
long debounceDelay = 50;  

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, ledState);
}

void loop() {
  int reading = digitalRead(buttonPin);
  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;
      if (buttonState == HIGH) {
        ledState = !ledState;
      }
    }
  }
  digitalWrite(ledPin, ledState);
  lastButtonState = reading;
}

El código no tiene ningún secreto, de hecho es uno de los ejemplos que trae el programa Arduino, mas adelante vamos a ver como modificar este código para darle mas funcionalidad y que se adapte mas a una instalación real. También recordar que para que la luz se encienda o apague esta deberá ir conectada a través de un rele conectando sus terminales al pin GND y Pin 13 de Arduino como vimos en una entrada del blog anterior.

PREGUNTA??

Que pasa si en vez de conectar el rele al Pin 13 quiero conectarlo al 12?? se puede??

- Claro que se puede, de hecho por ejemplo la placa "Arduino Uno" dispone del pin 0 al pin 13 para conectarle lo que quieras, aunque el pin 0 y 1 se recomienda utilizarlos para fines de transmisión rx - tx. Tan solo tendrás que modificar el código descrito arriba para que funcione de la siguiente manera:

En la linea de código const int ledPin = 13; deberás cambiar el 13 por un 12 y listo!! que fácil!! lo mismo si quieres conectar tu pulsador en otro pin que no sea el numero 2. cambias el valor de la linea de código const int buttonPin = 2; por el numero del pin al que lo quieras conectar.

Y POR ULTIMO...

Comentar que una instalación normal, dependiendo del país, los interruptores o conmutadores manejan voltajes en su interior de 220v por lo que el cableado suele ser de 1,5 mm para controlar el alumbrado. En caso de una instalación domotica hecha con Arduino los pulsadores se conectan a la placa y esta, es la que controla el encendido o el apagado. Debido a que esta placa maneja voltajes y intensidades muy inferiores nos permite reducir la sección del cableado a cable telefónico por ejemplo, reduciendo así el gasto económico de la instalación.  











No hay comentarios:

Publicar un comentario