12 dic 2014

Modificando un lámpara con Arduino: 3 modos de intensidad

Lámpara modificada con tres modos
Me regalaron una lámpara estropeada marca Interfan ref. 15-1021-21-210; por el pico de tensión de encendido el control Beamish B11 había quemado las pistas de los relés:

Control de encendido
Quedando dañado también su PIC ref.  2608 del que no fui capaz de encontrar repuesto (seguramente programado en fábrica):


Esta lámpara incorpora tres modos de fábrica; con un par de transformadores 230V a 12V AC alimenta 10 lámparas halógenas G4 de 20W cada una, y otro más pequeño de 230VAC a 75/150VDC y 16 mA para alimentar los 42 leds en serie que tiene.
Según accionamos el interruptor, se encienden sólo leds, sólo halógenas, o halógenas y leds, lo que es poco práctico ya que los leds quedan bonitos, pero no alumbran nada.


Tras darle vueltas se me ocurrió sustituir el Beamish por un arduino con 2 relés, haría la misma función de 3 posiciones, y aprovechando que había que repararla, reemplazé las halógenas (que ya son cosa del pasado), por 5 lámparas LED de 9W en lugar de las gastonas G4.

Halógenas G4 de 20W y 12V
Además hice un pequeño cambio; cambié los cables para que cada relé alimentara uno de los transformadores que alimentan las halógenas (cada uno alimenta 5 halógenas), de forma que en una posición se iluminaran 3 lámparas LED G4, en otra 2 lámparas, y con los dos relés activados todas las lámparas LED pequeñas y G4.
Es mucho más práctico; 3 intensidades diferentes según la necesidad. También se pueden orientar de forma que dependiendo de si estás en una zona u otra de la sala, que ilumine más el sitio. Podría mejorarse haciendo la iluminación más inteligente con algún sensor de presencia por ultrasonidos, comprobando el movimiento cada minuto y cambiando cada 5 según dónde se desarrolle la actividad, pero para que fuera realmente "inteligente" y no molestara habría que dedicarle muchas horas.
Con 20€ le damos nueva vida a la lámpara

El programa del arduino es sencillo; comprobamos el valor de la posición 0 de la EEPROM, dependiendo de su valor activamos los relés, y finalmente guardamos el nuevo valor en la misma posición. Lo único malo de este sistema, es que las luces tardan 2 seg. en encender por el arranque de la placa Arduino (nada grave teniendo en cuenta lo que tardan algunas fluorescentes), y para cambiar de modo tienes que apagar y esperar 1 seg. a que se queden sin alimentación los relés, para volver a encender (por lo que no es recomendable para sitios donde estemos poco tiempo).
Hay que tener en cuenta que cada posición de la EEPROM del Atmel puede grabarse 100 mil veces, calculo que con un uso normal de 6 encendidos diarios nos duraría ¡45 años!. Y si no es suficiente, siempre podemos hacer un poco más complejo el programa para que contee los usos y vaya "anulando" posiciones colocando un 255 de valor...

Este sería el sencillo programa:


/*
 * 3 MODES LAMP storing last state on EEPROM
 *
 * La EEPROM (hasta 100.000 escrituras por byte)
 * la utilizamos para guardar el estado en cada encendido,
 * de forma muy sencilla.
 */

#include <EEPROM.h> 

void setup()
{// set the digital pin as output:
  pinMode(7, OUTPUT); //Relé 1
  pinMode(8, OUTPUT); //Relé 2
  //Serial.begin(9600); //(líneas anuladas, para depuración)
}

void loop()
{
  int val=0;
  val=EEPROM.read(0);
//  Serial.print(val);
//  Serial.println();
   if (val==2)
  {
    digitalWrite(7,HIGH); //Activamos los dos relés
    digitalWrite(8,HIGH);
  }
   else if (val==1) 
{
    digitalWrite(7,HIGH); //Activamos el relé conectado a la digital 7
    digitalWrite(8,LOW);
  }

   else if (val==0) 
{
    digitalWrite(7,LOW); //Activamos el relé conectado a la digital 8
    digitalWrite(8,HIGH);
  }
  else 
    EEPROM.write(0, 0); //la primera ejecución puede tener cualquier cosa
  }
   
  if (activo==1); //incrementa el valor
    {val=val+1;
    if (val==3) {
      val=0;
      }
   }
  EEPROM.write(0, val); //Guarda en la EEPROM
//  Serial.print(val); //(Para depurarlo)

  while(1) {
  delay(1000); //Bucle infinito en espera
  }
}



Estos relés "Keyes" son muy prácticos, les vasta con 5V y 0,7A (aprovechada de un cargador de móvil) para activarse, por lo que pude utilizar la misma fuente de alimentación para el arduino y para los relés, guardando la fuente dentro de la misma caja del Beamish, y los relés aislados con cinta americana blanca. Además están protegidos por lo que tu Arduino los usará de forma segura (sin peligro de retornos de la fuente principal):

El Arduino lo pegué a la base con silicona, separado 5 mm. de la chapa

He soldado los cables de la fuente en la parte inferior de la alimentación del circuito de relés, y conectado con cables el VCC de los relés al Vin del arduino, conectando también la masa (GND) entre ambos, para alimentar ambas cosas. Al final se queda en 4 cables que van de uno a otro.

Y este es el resultado; con todas encendidas son ¡4500 lúmenes! (y no más de 40ºC):


Espero que os haya gustado, yo lo he disfrutado... ¡a seguir inventando con Arduino!

4 comentarios:

  1. Por cierto, si os interesa poner el Arduino con el mínimo consumo posible (en este caso es útil porque sólo realiza una operación y se puede echar a "dormir", lo mejorcito es la librería JeeLib: http://www.openhomeautomation.net/arduino-battery/

    ResponderEliminar
    Respuestas
    1. Eso combinado con la bajada de velocidad del procesador para tareas simples como esta, es la bomba: http://playground.arduino.cc/Main/PowerSaving

      Eliminar
  2. Y por cierto, si os preguntáis cuánto puede durar el arduino funcionando, la conclusión es que con una fuente de alimentación de calidad, mínimo 50.000 horas; entre 5 y 10 años. Aquí una interesante discusión sobre su fiabilidad: http://forum.arduino.cc/index.php?PHPSESSID=ciugkruoste43jm04dhbc5igq2&topic=131944.0

    ResponderEliminar
  3. Buenos días donde podría comprar esas piezas para unas lámparas que han dejado de funcionar la Beamish b-11 ? Muchas gracias

    ResponderEliminar

Puede dejar su comentario, que tratará de ser moderado en los días siguientes. En caso de ser algo importante/urgente, por favor utilicen el formulario de arriba a la derecha para contactar.