Wednesday, October 1, 2014

Sunrise Alarm Clock

I usually get pretty aggravated when I get asked if I'm bored by someone who sees me yawn, especially at work. There's a major difference between being bored and being tired! To that end, I decided I'd make a sunrise alarm clock to help improve my sleeping habits. The idea here is that a gradual increase in light helps one's body wake up more naturally, instead of being jarred awake by an audio cue.

The first step was to take an old Wal-Mart alarm clock I had lying around and cut all up into it! As Tim "The Tool Man" Taylor says, before there can be CONstruction there must be DEstruction. He was very wise.

There is clearly one pair of wires going to the speaker, so to keep from reinventing the wheel I used the alarm and timekeeping functionality of the clock and simply cut the speaker out of the circuit, and attached the speaker wires to some input pins on an ATtiny microcontroller. (The Arduino in the picture below is only being used to program the ATtiny.) I didn't want to program a whole clock from scratch if I didn't have to.

I really like this picture because it looks like that one scene in Contact when Ellie Arroway is about to drop through the extremely energetic center of the second machine:

Anyway! The theory seemed to work. When the buzzer sounds, the microcontroller in the clock would send a six volt square wave with a range of +12V to +6V. The ATtiny microcontroller I'm programming sees this signal instead and starts a PWM signal which drives an array of eight high-intensity LEDs. (The speaker is now disconnected.) The PWM increases a little less than half a percentage (1/256th to be exact) every eight seconds, which means that when the alarm starts, the LEDs gradually increase in brightness from off to full brightness over the course of about fifteen minutes. The time can be adjusted in the program if I find that this interval is too long or too short.

The clock had a 16VAC transformer in it, which I tapped off of (green wires) to get power for the ATtiny microcontroller. I built a full-wave bridge rectifier from scratch and regulated the output voltage down to +5VDC. The picture above is the rectifier part of the circuit before I soldered it all together. The red and black wires are from the speaker.

I used 8 LEDs. They draw a little over 100 mA when they're all on at full brightness. I wasn't sure if this extra current draw would overload the clock's transformer but so far everything seems to be OK.

I like the industrial look of exposed electrical components. My personal rule is anything over 40V is dangerous and anything under that is totally OK. (In my job I routinely work with 500 kV so this seems very reasonable!) Your mileage may vary however. Don't be an idiot. The picture above was taken with an extremely short shutter period, while the picture below I think more accurately represents how bright the LEDs are.

One problem I was having at first was that the LEDs would pulse very slightly. It seemed like they pulsed along with the square wave for the alarm which had about a 1 second duty cycle. It turned out that this was entirely coincidental, and they were pulsing because the rectifier I built didn't have a capacitor big enough to keep the voltage across the LEDs high enough. The LEDs would draw current, the voltage would drop, the LEDs would dim as a result, and then when the current dropped the voltage would increase again, and this cycle would repeat about every 1 second. Totally coincidence that this is how often the alarm would buzz, which had me pretty confused for a while. Once I realized they only pulsed when they got brighter (which means a higher current draw) I just threw a huge capacitor in the circuit, which is clearly visible in the picture. For the non-electrical engineers out there, it's that big cylinder on the top left. For the electrical engineers out there, this has the effect of increasing the RC time constant of the circuit. Remember college? Fun times.

This thing is crazy bright although it doesn't do a good job of uniformly illuminating the whole room. Mostly it just blinds me when I go to hit the snooze button. But it does work and it has succesfully woken me every time I've used it. I did wire the LEDs on the board in such a way that I could easily cut into the power wire for them and splice in more lights, though, which I could theoretically put anywhere. That'll be a project for the future though. 

Monday, September 15, 2014

FAA Light

A few weeks ago I got an FAA warning light to play around with. The light goes on top of tall poles or buildings to warn airplanes. As it happens I was looking for a red LED to go in my bathroom. The idea is that red won't confuse my brain into thinking it's daytime if it isn't. That's probably enough information, so here are some pictures! All I had to do was wire a three-prong plug to it so I could plug it into the wall. The only problem is that the FAA warning light is really, REALLY bright. For obvious reasons. Anyway!

Monday, August 11, 2014

Pictures from the Beetle's Carburetor Rebuild

A lot has been going on lately. I sold a house, moved to the city, started a second job, and just started studying for the Professional Engineering exam. So putting pictures of the Beetle's carburetor (34 PICT-3) has kind of taken a back seat, so to speak. Anyway, here are some of the highlights!

The freshly-removed carburetor, before I removed any of the bits. It's a little dirty.

I found out later that this solenoid is the "idle air cutoff". I don't really know what this means and I can't get anyone to tell me, but I found out later that the Beetle was stalling a lot when it would slow down, which was presumably caused by this little valve being loose. So after I screwed this in tightly it stopped stalling.

Automatic choke collar.

Removing the automatic choke. This had a little problem where it wasn't set properly. I had to turn the whole assembly clockwise after I reinstalled it to make sure it would actually choke the engine when it was cold.

Automatic choke parts

Removing the top half

I don't remember what this part is for.

Automatic choke housing.

Fuel inlet needle. (Controlled by the float)

Old float removed. I lost the pin when I put the new float in and ended up making a new one from a long screw. Then later on I found the pin right in the middle of my work bench. Murphy's Law of carburetor rebuilds.

Another valve I don't remember what it does off hand.

Replacement gaskets.

After I put it all back together it's pretty easy to see the color difference. The car ran amazingly after this, and even better once I figured out that that solenoid was making the car stall.

Don't worry, I put the air filter on after I flooded the engine and killed the battery. Learn by doing!

Thursday, May 22, 2014

The Beetle!

So I haven't been doing a whole lot of electronics projects lately because a few months ago I decided my mechanical skills could use some work, and my latest project has tested my limits in that field! It's...


What makes it "super" is that the front suspension is a MacPherson strut assembly rather than the old style torsion bar/kingpin setup which basically just saves some space in the "frunk" and makes replacing suspension parts a little harder, but improves ride quality and turning radius. Great!

There are some minor problems, what with the car being 42 years old at the time of this writing, namely the four-ish oil leaks in the engine. The pushrod tubes, valve guide seals, valve cover gaskets, and some other things leak a minuscule amount of oil each that adds up to me having to put a half quart of oil in about every 200 miles.

This is ok though because from what I can tell the piston rings are still in good shape so it's a ways off from REALLY needing an engine rebuild.

Also cool is that it was made in "West" Germany:

It has the Wolfsburg crest on the steering wheel too, for further proof of its authentic German-ness:

Apparently the Nazis built Wolfsburg to start building Volkswagens. Another brief history of that car was that Ferdinand Porsche needed to build the Beetle really quickly for Hitler, and so based a lot of it on the Tatra, a car Hitler liked from Czechoslovakia. Well, Tatra sued Volkswagen over that and Porshe asks Hitler what to do, to which he replied basically "Don't worry, I'll take care of it." Then he invaded that country and shut down the Tatra plant. Tatra eventually won a lawsuit in 1968 but not before the Beetle became world famous!

Also, my Beetle was made after Volkswagen acquired Audi, so it shares some of the same parts as Audis from that time:

All in all, this car is brilliant. It runs well but it needed to have the carburetor rebuilt (which I've done, that'll be the next post here). I've always wanted a Beetle but I was finally convinced to buy one because the ECU (computer) on my truck went bad and cost me a huge chunk of money to fix (plus the dealer had to program it), so I decided I needed a car that I could fix anything on. They're easily the simplest cars ever built. The air-cooled engine means no radiator, it's simple to remove from the engine from the car if I ever need to, plus there's no A/C or power steering or anything else to complicate things, and parts are everywhere. Plus it's just fun to drive and downright cool.

I was accidentally in a car show and might have been a little out of place though!

Friday, November 1, 2013

Before and After!

After over three and a half years, I finally needed a new set of tires for my unstoppable beast of a pickup truck. My last set were 31" 10.50 BFG All-Terrains (thanks for the graduation present, Mom and Dad!) which did very well in the relatively dry mountainous South Carolina trails where I used to venture off-road. In South Florida, it's almost 100% mud, so I decided to go with a slightly different tire: 

These are 32" 11.50 BFG Mud-Terrains. They are a much more aggressive tire which will hopefully help with Florida's flat swampiness. Since I have put a 3" lift on my truck since I got out of college, there was no problem fitting the new tires (except a piece of the front mud flaps had to be cut off, no big deal). 



The only problem is that the rainy season (summer) is over and the dry season (winter everywhere else, but pretty much spring here) is starting, so all the mud holes are drying up. I'll have to give them a real test in May when it starts raining again!

PS: If anyone knows a decent body shop in South Florida somewhere that will paint my truck for a reasonable price, I think it might be about time for that.

Sunday, October 27, 2013


I decided that it was about time to restore my old turntable. It's a Technics SL-D35 direct-drive turntable which I believe is a model from the late-70's or early-80's. I had to fiddle around with the motor control electronics because it was playing at a very inconsistent speed. Then I cleaned everything with electronics cleaner, lubed the motor shaft, and went to town with some Led Zeppelin. It's good to remember one's roots.

Thursday, September 12, 2013

Entertainment Center Thermostat

I use a china hutch from my grandmother's old house as my entertainment center. I never really liked displaying all of one's electronics and wires and stuff where everyone can see them, so this suits my needs quite nicely. HOWEVER! This particular piece of furniture doesn't have very good ventilation for all of my heat-producing electronics, and it has a tendency to get a bit toasty inside the cupboard unless I left a door open. I decided to fix that by putting some exhaust fans on the outside and hooking them up to an ATtiny45 microcontroller and a temperature sensor. Now, when the temperature inside the hutch rises beyond a certain level (around 95 degrees F) the fans are turned on so the Playstation 3 and Crown amplifier don't overheat in the modified entertainment center.

The first step was the prototyping! I had a HUGE problem here with what should have been a simple circuit. The output of the voltage sensor was supposed to be around 0.75V at room temperature, and it would increase linearly as the temperature increased. (I used a hair dryer to model temperature fluctuations.) I was not getting any sort of reliable data from the sensor whenever the microcontroller was attached to the power rails of the circuit, but I found out that this was due to a lack of "decoupling capacitors" that I had failed to place near the sensor and on the power rail. I'm not 100% sure how this solved my problem, but as an engineer I'm not bound by the need to find answers, but rather simply by a need to get whatever it is working.

Soldering everything together. The red/black wires sticking out of the top of the circuit go to the power supply, which I stole from an old cell phone charger. +5V from a SMPS saves me the time of building a power supply (trivial, but sometimes frustrating). The wires to the right are my dead-bug soldering of the temperature sensor and decoupling capacitor. These will be outside of the enclosure that the rest of the electronics will reside in:

I mounted the fans to the cardboard backing of the "entertainment center". The one on the bottom right blows in, and the one on the upper left blows out, for a nice circulating effect.

Everything put together! I was told that my color scheme is a little off, but at least it looks better now without the doors wide open any time I want to turn the TV on or listen to music.

HERE'S THE CODE! I've had to make some changes to the temperature settings. At first the fans would kick on and off once every five to seven minutes, which I thought was too fast. Then I changed the settings and they wouldn't come on at all. I think I have it JUST RIGHT now.

this program turns a switch on at approximately 90 degrees
it turns the switch off at approximately 85 degrees
it is designed to be used with a TMP36 temperature sensor
output signal on/off is ATtiny pin 5 (digital pin 0)
input signal from TMP36 is ATtiny pin 7 (analog pin 1)

#include <avr/io.h>
#include <util/delay.h>
//setFlag keeps the program from continuously writing pins
//if it doesn't need to. this makes it one-shot and hopefully
//saves a few bits of energy
int setFlag = 0;

void setup() {
  //set pin modes
  pinMode(0, OUTPUT);
  pinMode(2, INPUT);
  //turn on the fans to make sure the program is working
  digitalWrite(0, HIGH);
  //then turn them off to allow the program to run
  digitalWrite(0, LOW);

void loop() {
  //measure the voltage at pin 7:
  int sensorValue = analogRead(1);
  //calculate the voltage. at room temperature it should be around .760V
  float volts = sensorValue * (5.0 / 1024.0);
  //calculate the temperature in Celsius
  float degC = (100.0 * volts) - 50.0;
  //make a decision about whether or not to turn the fan on or off
  //the microcontroller effectively acts as a schmitt trigger
  if (degC > 32 && setFlag == 0) {
    digitalWrite(0, HIGH);
    setFlag = 1;
  if (degC < 25.5 && setFlag == 1) {
    digitalWrite(0, LOW);
    setFlag = 0;
  //only take a reading once every 10 seconds