Analog Reference switching time with a 0.1uF capacitor at 3.3V

When AREF isn’t AREF (yet)

I’d often noticed that measuring analog inputs on my ATmega, that the first round of values usually differed substantially from subsequent values. The datasheet even warns of a similiar-sounding issue:

The first ADC conversion result after switching reference voltage source may be inaccurate, and the user is advised to discard this result.

Knowing that the Arduino libraries don’t actually set the reference voltage until the time the first sample is made, it seemed logical that these first samples were an artifact of the voltage changing. However, it wasn’t just the first sample, or the first couple samples. It could take dozens of samples before the value returned had stabilized (i.e. stopped increasing by more than 2 LSB). Being a boot-only issue. I was content to ignore it until I started trying to read the on-chip temperature sensor.
More >

Construction complete!

Grill Control Project Part 3

Hardware construction time. Note: this is for the v3 version of the HeaterMeter controller.

I ordered the Arduino Duemilanove and buttons from SparkFun, the WiShield 2.0 from AsyncLabs, and the components and blower from DigiKey. What you end up with is a whole dining room table full of parts.

It helps to not be married if your dining room table is going to look like this for a week.

More >

The Arduino Duemilanove Hadware Platform

Grill Control Project Part 2

Based on Bob’s lead, I chose the Arduino platform as my microcontroller. Specifically the Arduino Duemilanove.

The Arduino Duemilanove Hadware Platform

  • ATmel ATmega168 Micocontroller
  • RISC 8-bit CPU running at 16MHz / 5V
  • 32kB code space (30,720 bytes usable)
  • 2kB RAM
  • 1kB Flash storage EEPROM
  • Integrated ADC, Digital PWM, SPI bus interface, UART TTL Serial
  • C/C++ programming environment

Yeah 2kB of RAM. For comparison, my blog front page is currently 250 times that. 30kB of usable code space? The default Delphi Project1.exe baseline with no user code is 13 times as large. Squeezing everything in to that space seems like a challenge: a web server, LCD and buttons with a menuing system, and I reckon it should control a grill too.

This post was going to be about the platform, but that’s boring. Let’s just jump into the project and I’ll introduce things as needed.
More >

The ACG Happiness Scale

Software Guy Builds Hardware

or: How I Learned to Stop Working at Making Things Burn, the Great Grill Control Project part 1.

Foods cooked on the grill are at the top of my food chain. I am a main predator of Kingdom Animalia, Phylum Grilledatas. The problem with grilling is that the grill is outside, in a place where it is usually hot, far away from my beer, and entertainment-starved unless observing the negative gravitropism of stenotaphrum secundatum is your thing. Barbecue further aggravates the situation by requiring long cook times which may even necessitate losing sleep. Sure you can “barbecue” in an oven, “barbecue” cooked in an oven isn’t barbecue all and bears as much resemblance to the real deal as K-rab does to stone crab. There has to be smoke, and the easiest way I know to get smoke it to light something on fire.

Contrary to what Frankenstein says, fire isn’t always bad, but it can require a good bit of fiddling make it do what you want, sort of light plate spinning. It certainly is a lot easier than plate spinning and you can’t eat anything when you’re done spinning plates for 8 hours, so I’m not sure why I used that analogy. Anyway, I’ve tried the Alton Brown Electric Pot smoker concept, which produced lackluster results even after several attempts and equipment swaps. The initial solution was to step up to the big leagues and buy a Big Green Egg, the self-described “World’s Best Smoker and Grill!” (emphasis theirs).
More >