Introduction: DIY Time Control Machine

Picture of DIY Time Control Machine

This project is about how to make a time machine! This machine looks like a glove, and can "stop" any moving subject. At first, watch a video with some demonstration and experiments, guess how it works, and then read about how to make it =)

This effect looks like better in real life (by naked eye, not through a camera), without black lines. Smooth perfect time stop effectc!! IT IS REAL "OH MY GOD" REACTION!

Step 1: All We Need

Picture of All We Need

Generally this project is about Arduino, high-power LED and some tricky magic with soldering iron. Here is some list with links to Aliexpress

Step 2: Wiring

Picture of Wiring

Step 3: Assembling Power Part

Picture of Assembling Power Part

At first connect battery, DCDC and MOSFET. Also you need to tune DCDC to 34 V output voltage.

Step 4: Assembling Logic Part

Picture of Assembling Logic Part

Connect potentiometer and IMU to arduino

Step 5: Fixing on Glove

Picture of Fixing on Glove

Fix all parts on glove, using cable ties and velcro strip.

Step 6: LED and Cooling Plate

Picture of LED and Cooling Plate

Fix LED on copper plate, and don't forget to smear thermal paste between them.

Step 7: Fixing LED

Picture of Fixing LED

Finely, place LED on it's place on glove in order:

  • Metal mount
  • Glove fiber
  • Lense
  • LED
  • Cooling plate

Step 8: Flashing Arduino

You can download sketch and schemes on project's project page on GitHub, also arduino code you can find in attached files.

Step 9: How to Control Time?

Picture of How to Control Time?

This "Time Machine" is just a stroboscope with frequency adjustment. Shake your hand in Z direction of accelerometer (fast move your hand forward), LED will be turned on. Shake again to turn it off.

Use potentiometer for coarse tuning, and glove tilt for accurate tuning. When frequency of object coincide with frequency of LED, it will "stop". And you can adjust "time" for it, tilting your hand, so object will slowly move at normal direction, or reverse. You can watch video about how it works and "freeze" some fast moving objects.

You can use this for pranks and demonstration of stroboscopic effect. Enjoy!

Comments

jamestanner (author)2017-12-10

This is awesome.... so awesome I followed the guide and made my own :) (pics to follow later) BUT, I'm having an issue.... I can't turn it on / off like you do in the video. I can't shake it in any direction to turn on/off?

Also, my light "flashes" what I mean is, other than the strobe effect it turns on and off, so let's say it strobes for 500ms then turns off for 500ms, it's not constant strobing like your video.

I've triple checked my wiring so I'm stuck. For what it's worth, during testing I'm powering from a 12v 2a mains supply, so no battery to go flat

jamestanner (author)jamestanner2017-12-10

Another quick update... For some strange reason, it didn't like the i2cread and i2cwrite method used in the sketch... I adjusted mine and now it works perfectly :)

Thanks again for an awesome project :)

For anyone curious, here is the "modded" code I used to get it working for me:

int light = 500; // LIGHTS ON delay, microseconds

int dark; // LIGHTS OFF delay

int min_dark = 1; // min dark delay

int max_dark = 50; // max dark delay

#define light_pin 3 // MOSFET pin // Was pin 2 - JT

#define potent_pin 6 // potentiometer pin

int angle;

boolean flag;

long lastchange;

#include <Wire.h>

#include "Kalman.h"

Kalman kalmanX;

Kalman kalmanZ;

const int MPU_addr = 0x68; // I2C address of the MPU-6050

/* IMU Data */

int16_t accX;

int16_t accY;

int16_t accZ;

int16_t tempRaw;

int16_t gyroX;

int16_t gyroY;

int16_t gyroZ;

double accXangle; // Angle calculate using the accelerometer

double accZangle;

double temp;

double gyroXangle = 180; // Angle calculate using the gyro

double gyroZangle = 180;

double compAngleX = 180; // Calculate the angle using a Kalman filter

double compAngleZ = 180;

double kalAngleX; // Calculate the angle using a Kalman filter

double kalAngleZ;

uint32_t timer;

void setup() {

Wire.begin();

pinMode(light_pin, OUTPUT);

Wire.beginTransmission(MPU_addr);

Wire.write(0x6B); // PWR_MGMT_1 register

Wire.write(0); // set to zero (wakes up the MPU-6050)

Wire.endTransmission(true);

kalmanX.setAngle(180); // Set starting angle

kalmanZ.setAngle(180);

timer = micros();

}

void loop() {

measure(); // obtain acceleration and angle speeds

if (accZ > 25000 && (millis() - lastchange > 300)) { // Z axis shake detection

flag = !flag; // toggle light

lastchange = millis(); // timer

}

//flag=1;

if (flag == 1) {

angle = 250 - kalAngleZ; // calculate angle (with 250 degrees offset)

// dark times calculation

dark = map(analogRead(potent_pin), 0, 1024, min_dark, max_dark);

digitalWrite(light_pin, 1); // lights up

delayMicroseconds(light); // wait

digitalWrite(light_pin, 0); // lights down

delay(dark); // wait

delayMicroseconds(2000 + angle * 10); // extra wait

}

}

// oh my god, it's some tricky sh*t

void measure() {

Wire.beginTransmission(MPU_addr);

Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)

Wire.endTransmission(false);

Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers

accX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)

accY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)

accZ=Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)

tempRaw=Wire.read()<<8|Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)

gyroX=Wire.read()<<8|Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)

gyroY=Wire.read()<<8|Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)

gyroZ=Wire.read()<<8|Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)

/* Calculate the angls based on the different sensors and algorithm */

accZangle = (atan2(accX, accY) + PI) * RAD_TO_DEG;

accXangle = (atan2(accY, accX) + PI) * RAD_TO_DEG;

double gyroXrate = (double)gyroX / 131.0;

double gyroZrate = -((double)gyroZ / 131.0);

gyroXangle += kalmanX.getRate() * ((double)(micros() - timer) / 1000000); // Calculate gyro angle using the unbiased rate

gyroZangle += kalmanZ.getRate() * ((double)(micros() - timer) / 1000000);

kalAngleX = kalmanX.getAngle(accXangle, gyroXrate, (double)(micros() - timer) / 1000000); // Calculate the angle using a Kalman filter

kalAngleZ = kalmanZ.getAngle(accZangle, gyroZrate, (double)(micros() - timer) / 1000000);

timer = micros();

}

HowToRandom (author)2017-11-29

Hi,

What led did you use?

I clicked on the link and saw that there were lots of different leds.

NathanR124 (author)2017-11-03

Quick Question: What is the precision of your Arduino nano's oscillator. I've tried doing this project a long time ago and failed because my fan was either moving too slowly clockwise or too slowly counter-clockwise. I could never make it still!

Did you get past this issue?

Also, great job man, I'm totally gonna make this. FYI: This project could've have been entered into a contest here on Instructables. You probably could've won first or second place! TTFN

Mad Gyver (author)NathanR1242017-11-14

Thanx =) Precision is good, look in the code. I use delay and delayMicroseconds to get a maximum "frequency step".

Oncer (author)2017-11-01

Cool! But why an arduino? Any oscillator would do and be cheaper wouldn't it? 555, 40106.

And also, since I have to put up warning signs at work when we use strobe effects, people with photosensitive epilepsy beware.

throbscottle (author) Oncer2017-11-01

It needs the 'duino to read the output from the acceleratometer.

Oncer (author)throbscottle2017-11-01

Oh of course, I missed the accelerometer. Thanks!

throbscottle (author)2017-11-01

Looks very impressive with the lens there, like one of the Goa'uld hand gadgets from Stargate! Neat project, I like that you can control the frequency by moving your hand. Extra nerd points for you I think ;)

DreamDabbler (author)2017-10-31

Really cool! As soon as I saw this in my e-mail list, I figured it would be based on a strobe light -- but to put it into a glove with motion control is sheer genius and really sets off my sense of nerd delight! Finding a bright light that would fit and a lens that would make the most of it -- very impressive.

rachl009 (author)2017-10-31

This is super cool, it should be a toy!

mr.knex13 (author)2017-10-31

Literally the coolest thing ever. Definetly going to build one!

LaurenceB23 (author)2017-10-31

Fantastic work!

RobotsMaking (author)2017-10-29

This is such a sssiiick project!!!! Realy, I know the science behind it, but wow that's creative. maaaassive tumbs up!!

Mad Gyver (author)RobotsMaking2017-10-31

thanx =)

circumlocutus (author)2017-10-31

Cool illusion. At first I thought it was crappy video editing, but very impressive implementation. Totally going to build this.

bewley59 (author)2017-10-31

Awesome. It's like your super power.

Fusepopper (author)2017-10-31

Too kewl...!!! Love the subwoofer.

Finally I can see if all of my 11.1 surround speakers are actually hooked up in phase.

Right on.

CrtSuznik (author)2017-10-29

Can the effect only ve seen on camera or is that what it looks like in real life too?

Mad Gyver (author)CrtSuznik2017-10-29

It looks like better in real life, without black lines. Smooth perfect time stop effectc!

About This Instructable

10,253views

125favorites

License:

Bio: I like to create things, handmade weapon, arduino projects, science and some crazy staff! Also I like to capturing videos about my projects and I ... More »
More by Mad Gyver:Automatic Trash BinDIY Time Control MachineDIY LED Spinner
Add instructable to: