I recount cobbling together a CNC clock from salvaged tech during my time in Tokyo. Inspired by Iron Man, I turned recycled parts into a time-scribing machine with a cool, industrial edge

“Tony Stark was able to build this in a cave! With a box of scraps!” - That iconic line from Iron Man had me shook as a kid. Sure, creating something fancy with top-notch components is cool, but crafting something legit with random pieces? Now that’s where the real skill shines.

Font View Font View
Back View Back View

During my exchange year in Tokyo at ‘The University of Electro-Communications (UEC)’, I stumbled upon this goldmine – a 3C recycling hub on campus. You name it, from computers, oscilloscopes, to printers, they had it. Many were ditched just for being vintage, yet they were still in prime working condition. That’s when it hit me: why not channel my inner Stark and craft a toy using these salvaged parts?

So, I scavenged heaps of CD-ROMs, Floppies, all to harness their stepper motors. My vision? A Computer Numerical Control (CNC) machine that scribes time – imagine a clock with a rugged, industrial vibe. Total game changer. During my time in Tokyo, I was armed with just a laptop, missing out on all the essential tools like an oscilloscope for firmware development. All I managed to borrow from my lab mates were a multimeter, soldering iron, and a drill. Anything I lacked tool-wise, I compensated with sheer grit, innovation, and some mad development skills. Let’s just say, my Tokyo adventure turned out to be a masterclass in making do with what you’ve got.

Demo

Github

Materials

  • CD-ROM *2
  • Floopy *2
  • LCD1602 *1
  • Ardunio NANO*1
  • ATMEGA328P *1
  • SN754410 *3
  • Switches from CD-ROM *5

Disassemble

Just get the important parts and make some fun with it.

CD-ROM Frame CD-ROM Frame
CD-ROM Details CD-ROM Details
CD-ROM Laser CD-ROM Laser

Simple Experiments

Tuning stepper motor controller and test limit protections

Simple Experiment Simple Experiment
With Limit Experiment With Limit Experiment

Assemble

Put hardware parts all together

Full assembled Full assembled
Back View Back View
Limit Switch Limit Switch
Drawing Base Drawing Base

Full Code Experiments

Control X, Y, Z axis in the same time with LCD control in separate MCU

Control X-Y axis First Control X-Y axis First
X-Y Drawing Test X-Y Drawing Test
LCD Test LCD Test
Full Function Full Function

Soldering Time

Breadboard is not stabe, so time to do some dirty job

LCD Controller Part Placement Planning LCD Controller Part Placement Planning
LCD Controller Pre-assembly LCD Controller Pre-assembly
LCD Controller Soldering LCD Controller Soldering
Motor Controller Part Placement Planning Motor Controller Part Placement Planning
Motor Controller Board Front View Motor Controller Board Front View
Motor Controller Board Back View Motor Controller Board Back View

Some System Details

Motor Controller Schematic Motor Controller Schematic
Motor Controller System Structure Motor Controller System Structure
LCD Controller System Structure LCD Controller System Structure

Firmware

The definition of excitation modes for stepper motors: 1-phase excitation, 2-phase excitation, and 1-2 phase excitation, can be conveniently controlled by defining them as a const array.

Some MCU port define and timer setup. The function GoHome() initializes the 3 axes to return to their origin point whenever the machine is started. Lines 7 and 8 initialize the timer interrupt, and line 9 informs the LCD control board that it can start transmitting data when the machine is turned on.

Every step must be completed before executing the next command, otherwise the machine may move on to the next stroke before completing the previous one.

This code directly controls the motor to move to its end and stops when it reaches the limit switch. Only the X-axis has «2 because the X-axis motor is connected starting from pin 2 and requires an initial shift for control. PORTD directly outputs to the motor command.

This code controls the motor to move a certain distance, and when the distance is reached, CNC.xOk=true is set to execute the next drawing command.

This code limits the movement of the motor using limit switches. PIND is used to read the status of the pins, and line 5 extracts the specific pin status using a mask. For the Z-axis, as it has only one limit switch, the distance of movement is limited using a counter on the other end.

Single-phase excitation for a stepper motor.

And just like that, amidst the neon lights and bustling streets of Tokyo, I discovered that real innovation doesn’t always require the newest tech; sometimes, it’s all about the art of the hustle, the spirit of resourcefulness, and a dash of Stark-inspired audacity. Keep it crafty, folks.