What Hath Hack a Day Wrought?
Before I start the article here are a couple videos for dramatic effect.
That body is not dead. It has never lived. I created it. I made it with my
own hands from the bodies I took from graves, gallows, anywhere.
Look. It’s moving!
It’s alive. It’s alive.
It’s alive! It’s alive! It’s alive!
[after failing to bring the creature to life]
Dr. Frederick Frankenstein: Nothing.
Inga: Oh, Doctor, I’m sorry.
Dr. Frederick Frankenstein: No. No. Be of good cheer. If science teaches us anything, it teaches us to accept our failures, as well as our successes, with quiet dignity and grace.
[starts beating up the creature]
Dr. Frederick Frankenstein: Son of a bitch! Bastard! I’ll get you for this! What did you do to me? What did you do to me.
Inga: Stop it! Stop that! Stop it! You’ll kill him!
Dr. Frederick Frankenstein: I don’t want to live. I do not want to live.
Igor: Quiet dignity and grace.
Dr. Frederick Frankenstein: Oh… mama…
Initially I want to somehow wedge an Arduino into my dancing Santa. Where? I wasn’t sure, but his generous caboose would have been a good start. All those plans went up in smoke when Igor Electronics sent me a lowly 74HC14 instead of an Arduino.
OK. That’s not true. Let me start from the real beginning.
My very first test was to simply take Santa off his pedestal to see if his hip wiggling resulted in any sort of ambulation. He shuffled forward with a grace that is only witnessed by the privileged spectators of a professional walking competition… that is if all the participants were undead. After seeing this I realized I could probably make Santa walk better but if I failed at that I could always dress him up as a zombie and pretend he was locomoting just as I intended.
A day or so later after using a 555 to replace the epoxy blob’s motor driver signals I recalled that BEAM bots used an even simpler circuit called a bicore. A grounded bicore uses only two capacitors, two resistors, and two inverters from a 74HC14 Schmitt Hex Inverter. In BEAM terminology one capacitor, one resistor, and one inverter connected in a certain way is known as an Nv neuron. If you connect more than one BEAM neuron together you get a brain of sorts.
It was after learning this that I realized that I could give my Santa a simple brain and he would be less like a zombie and more like Frankstein’s monster. Franken-Santa! This was perfect because I’d already decided I wanted to do this project without a microcontroller. Additionally if I used scavenged components it would be like I was constructing Franken-Santa from the corpses of dead electronics. Plus there’s this:
To figure out Santa’s original circuit board I took a picture of both sides, then reoriented and composited them with the GIMP. Then I used simple colored rectangles to overlay components on the bottom of the boards wiring.
It’s driven by signals P30 and P31. A square pulse from P30 will turn Santa’s single motor in one direction and the same pulse from P31 will turn the motor in the opposite direction. It’s important to note that if either signal is high the other must be low otherwise a short circuit directly from DCIN to GND results. By alternating pulses Santa will wiggle his hips and if his feet are held stationary this looks like dancing. If Santa’s feet are removed from his stand and his ankles are hot glued to prevent pivoting while still using the pulses from the original chip on board he walks forward somewhat.
To see if I could improve Santa’s walking I made a simple remote with a couple of push button switches. I found that by alternating button presses at around 3 Hz that Santa walked much better. I also learned that he could be made to turn left and right by varying the ratio of left to right pulses.
So to make Santa walk I needed a simple square wave oscillator that ran at 3 Hz. A single Schmitt inverter is capable of doing this, but I want to be able to do PWM too so I used two inverters from a 74HC14 and wired them together as a BEAM grounded bicore.
The bicore’s frequency is f = 1/(t1+t2) where t1 = R1*C1 and t2=R2*C2. If t1 and t2 are equal then the oscillator will output a 50% duty cycle square wave. I determined I could easily adjust the pulse width by using a single potentiometer to create R1 and R2 with the wiper connected to ground. Adding a resistor between the wiper and ground increases t1 and t2 equally and therefore decreases the oscillator’s frequency. R3 also increases/decreases the minimum/maximum pulse width. I found that a 1 Megohm linear pot and a 1 Megohm resistor create an oscillator that runs at about 3 Hz.
When I tested out the bicore on Santa he walked much better than before, and when I glued the rubber bumpers from the bottom of his stand to the soles of his feet he walked better still.
Once I’d finished breadboarding the circuit I put it on veroboard alongside the original motor driver and zener voltage regulation circuit. I had plans for using the amplifier subcircuit too but ran out of time. I built the circuit so that it would fit inside Franken-Santa’s head. As you can see the pot was just a wee bit too big; his pointy hat covers it up completely though. The skull cap makes a decent indicator for the potentiometer’s position.
Of course, Franken-Santa wouldn’t be Franken-Santa without neck bolts. However, these bolts aren’t just for show they are wired to an internal speaker, so with a couple alligator clips and an MP3 player Franken-Santa can talk or play music.
Finally, as you can see in the picture at the top of the page, I colored Franken-Santa’s face green-gray and gave his clothes the “fresh from the grave” look with some potting soil. So without further delay here is a video of Franken-Santa doing his sassy Frankenstein walk.
Same video without music in case the first gets a DMCA taken down notice. I believe it’s fair use though.
Thanks for reading!
Franken-Santa won the prize for best presentation! Unfortunately, he was re-deadened by a mob of angry villagers when his drunken revelry got out of hand. Rest In Pieces, Franken-Santa.