Cómo hacer un reloj antigravedad gracias al efecto estroboscópico
No se si te acordarás de un proyecto que hicimos y que se llamaba «Slow Dance Frame» , pero con este marco lo que conseguíamos era el efecto estroboscópico. Este efecto lo consigues cuando mueves un objeto a mucha velocidad y lo iluminas con unos leds que parpadeen a la misma velocidad, pero con un poco de retraso o adelanto. Cuando haces esto parece que el objeto se mueve a super cámara lenta y el efecto visual es impresionante.
Pues hoy vamos a hacer un proyecto basado en este mismo efecto. Consiste en un reloj que hace parecer que el agua sube gota a gota, como si levitara. La palabra «parecer» es muy importante. Realmente el agua cae desde la parte de arriba del reloj hasta la parte de abajo. Pero con un electroimán hacemos vibrar el tubo que transporta el agua a una frecuencia (velocidad) determinada. Al hacer parpadear los leds a la misma frecuencia pero con una pequeña diferencia, conseguimos el efecto visual. Dependiendo de la diferencia entra la frecuencia de movimiento y la frecuencia de parpadeo, el efecto será diferente.
Resumen del proyecto reloj antigravedad
Realmente el reloj antigravedad, que es como hemos llamado al proyecto, lleva en la parte de arriba un reloj digital que hemos comprado en una tienda local. Como no cabía el reloj entero porque la carcasa era muy grande, le hemos sacado la electrónica, es decir, la placa de control, la pantalla y un fondo blanco que tenía.
Nosotros realmente nos tenemos que encargar de conseguir el efecto estroboscópico, para el cual necesitamos una tira de leds y un electroimán. También hay que hacer que el agua suba de la parte de abajo del reloj (la base) a la parte de arriba. Para ello puedes utilizar una bomba de agua pequeña.
Respecto a la estructura, hemos diseñado la base y la parte de arriba del reloj con Fusion 360 para poder imprimirlas. En la base irá la bomba de agua junto al propio agua y en la parte de arriba los leds, el reloj digital y el resto de la electrónica.
Aviso: para las columnas del reloj, lo mejor que puedes utilizar son tubos de acero inoxidable. Si no tienes acceso a ellos asegúrate de aislar la parte de los tubos que entra en la base del reloj la cual almacena el agua. Por ejemplo lo puede hacer con silicona. Nosotros no lo hemos hecho y hemos tenido problemas de oxidación.
Lista de materiales
Hay algunos materiales, como por ejemplo el reloj digital, que no tienen enlace porque los hemos comprado en una tienda local.
Esquema eléctrico del reloj antigravedad

En cuanto a la electrónica necesitamos un electroimán de 12V, para hacer vibrar el tubo por el que va el gua, los leds, el driver modelo L298N para controlar tanto los leds como el electroimán, un Arduino Nano, que es el cerebro del proyecto, la bomba de agua, el reloj digital y una fuente de alimentación de 12 Voltios.
Cada componente trabaja con un voltaje específico, pero solo queremos utilizar una fuente de alimentación. Para ello una opción sería utilizar transformadores de voltaje, pero como todos los componentes pueden funcionar con 12 voltios excepto la bomba de agua y el reloj digital, que necesitan 5 y 3.3 voltios respectivamente, vamos a alimentarlos directamente con el Arduino.
Como la bomba de agua es pequeña, no hay problema por alimentarla directamente con el microcontrolador, no lo vas a dañar. El reloj digital igual, también consume muy poca corriente así que tampoco hay problema.

Hemos hecho una segunda versión del esquema eléctrico en la que alimentamos la bomba de agua con la fuente externa. Para ello hemos utilizado un regulador de tensión, ya que es necesario reducir los 12 Voltios de la fuente a 5 Voltios, que es el voltaje con el que trabaja la bomba. Nosotros te recomendamos seguir este esquema.
Código
Aquí tienes el código por si quieres repetir el proyecto. Básicamente lo que hace es controlar las salidas del driver L298N al cual están conectados el electroimán y la tira led. Si has utilizado los mismos componentes electrónicos que nosotros, para cambiar el efecto del agua simplemente tienes que cambiar el valor de la variable «DEF_OFFSET».
«DEF_OFFSET» es la diferencia entre la frecuencia de vibración del tubo que transporta el agua y la diferencia de parpadeo de los leds. Puede tener valores negativos y positivos. Nosotros hemos obtenido los mejores resultados con valores que se encuentran entre -250 y 250.
Si no sabes cómo subir este programa a tu placa de Arduino puedes aprender aquí.
#define DRV_1 6
#define DRV_2 7
#define DRV_LEDS 5
#define EXPO 600
#define PERIOD 5000
#define DEF_OFFSET 100 //Entre 100 y 250
boolean flashState, motorState;
uint8_t valColor;
uint16_t flashDelay, lightTimer;
uint32_t lightPrev, motorPrev;
void setup() {
pinMode(DRV_1, OUTPUT);
pinMode(DRV_2, OUTPUT);
pinMode(DRV_LEDS, OUTPUT);
delay(500);
bitWrite(PORTD, DRV_LEDS, 1);
flashDelay = PERIOD * 2 + DEF_OFFSET;
delay( 3000 ); // power-up safety delay
}
void loop() {
if (micros() - lightPrev >= lightTimer) {
lightPrev = micros();
flashState = !flashState;
bitWrite(PORTD, DRV_LEDS, flashState);
if (flashState) lightTimer = EXPO;
else lightTimer = flashDelay - EXPO;
}
if (micros() - motorPrev >= PERIOD){
motorPrev = micros();
motorState = !motorState;
bitWrite(PORTD, DRV_1, motorState);
bitWrite(PORTD, DRV_2, !motorState);
}
}