Sunday, April 24, 2011

Tartine Bread Tips and Tricks, Part 2

It was over a month ago that I posted for the first time on Tartine Bread Tips and Tricks.  I linked it from the Recipes from Tartine Bread Facebook group and got a pretty positive response.  Well, I've been playing with my technique a little more since then and thought that you might find it interesting.  If not, I'll give you your money back.

Last time I said:
One thing I'm finding is that my fridge is too cool to get much action going during the final rise.  In other words, it really doesn't rise in there at all.  Setting the fridge warmer to get more rise is a sure recipe for spoiling the rest of the food in there and killing me.  Getting a second fridge just for this seems a little silly.
Yes, but there is a third option that I've thought of.  I have a Sous Vide controller that I built myself that can hold a temperature very accurately.  And it just so happens that winter is hanging on enough where I live that it still gets below freezing in the evenings.  It occurred to me that I don't need a second fridge.  What I need is something I can leave out in my unheated garage that will keep my dough warm enough, not cold enough.  See where I'm going with this?  Behold!
Baby, It's Cold Outside
On the bottom left corner, we have my Sous Vide controller.  The power cord for the heater and the output of the wall wart power supply (more on this in a sec) are squeezed in past the lid of my Coleman beer cooler.  The temperature probe is a little more fragile, so I threaded it through the cooler's drain spout on the lower right, and then closed off the remaining opening with Kleenex.  It is all set up on a Black and Decker Workmate bench in my garage.
Rube Goldberg Would Be Proud
Here's what we've got inside.  From left to right:
  • bread dough in a mixing bowl covered by a tea towel and plastic cap to keep drafts at bay
  • temperature sensor taped to a coffee mug to keep the sensor in place
  • light bulb for heat, clamped in a plastic vise, and controlled by my Sous Vide setup to keep an internal +46.5F (or +8C if you are metric inclined)
  • an old PC fan to circulate the air and keep things at an even temperature.  This is powered by the wall wart power supply I mentioned above
Did this work well?  No, it worked awesome.  The controller kept this thing at a rock solid +8C as the temperatures dipped to around the freezing in the evening.  And why this temperature?  Well, I read someplace on the fantastic Sourdough Home website that suggested a temperature between 45F and 48F for a long cool rise like this.  And being mathematically minded, I just took the average.  Anyhoo, I left my dough in this rig from 10pm Saturday night until my bake the next morning at 9am.  The only problem I've got now is that this setup isn't going to work in the summertime.  Oh well.  That is a problem for a later day.

Another thing that has been bugging me is that my bread is always darker on top than it is to the sides.  I figured that this is because I don't have the Lodge combo cooker that is recommended in the book.  All I've got is a KitchenAid dutch oven that I got for a steal at Canadian Tire this past fall.  I figured that the tall sides of the DO were shielding the bread from the heat on the sides somewhat.  I'd have to break down and get a combo cooker, or do the pizza stone / metal lid thing.

Or not.  Here is a picture of my KitchenAid dutch oven.  A combo cooker is really just an upside-down dutch oven.  I noticed that the concave indentation below the handle would provide a stable surface for the dutch oven if the handle wasn't there.  And it is just one screw on either side of the handle holding it on.  I had that bad boy off in a minute.
Am I the First Person to Hack A Dutch Oven?
I first took my boule out of the cooler and turned it upside on top of a piece of parchment paper I had pre-cut to the shape of the lid.  Then I made a deep X-shaped cut and used the parchment as a sling to set it on to my smoking hot dutch oven lid, blurrily seen below sitting on top of my stove. The stuff on top of the boule is wheat bran, which I use to prevent sticking instead of the wheat flour / rice flour combo recommended in the book (I think the wheat bran looks better and tastes better to boot).
Probably...
I had a bit of a screwup here.  The bread was heavy enough that it wanted to spill over the sides of my parchment sling as I carried it from the countertop to the lid.  That partly explains why the cut from top left to bottom right is so ridiculously open.  But only partly.  I was able to build up the tension very nicely after the final shaping, and the overnight rise in the cooler vs. what I normally get in the fridge surely helped as well.

Things were looking good.  I put the big part of the dutch oven over top of the lid and put the whole thing in the 500F oven.  I dropped the temperature to 450F, waited 20 minutes and went in to take the lid off.  Here is what I got.
WOW!
You heard me.  WOW!  We are talking some good looking oven spring here.  And I was pumped to see that a puff of steam escaped when I took the lid off.  And in that moment, it all made sense.  Inverted, the dutch oven is able to prevent the steam from escaping out the top.  When sitting as it normally does, the steam rises and sneaks out the gap in the oven's lid.

Back into the oven it went.  This is what I got 25 minutes later.
WOW WOW!
WOW WOW is right!  A beautiful deep brown all the way around, and just burned a bit at the thin edges of the ears.  Without a doubt, the best looking loaf I'd every pulled out of my oven.  And this was Try #18 at making this bread.  I set it on the cooling rack and was delighted to hear the song of the crackling crust as it cooled.

And no bread porn would be complete without a crumb shot.
Oh Baby
Nice and open.  Notice the funny curve underneath the bread though.  This is from sitting on the inverted concave surface of the oven's lid.  It actually makes the bread easier to cut through because the knife cuts through the top arch of the bottom crust first and then goes down progressively, rather than hitting all of the tough crust at one time.

And the pluses just keep on coming. The KitchenAid lid actually has a bunch of dimples on the concave part of the lid, probably so that steam condensing on the lid collects on the dimples and drops back in to the stew, or whatever. For upside-down bread making, it creates a bit of a gap between the bottom crust and the heat coming up from below. This does a great job in preventing scorching of the loaf's bottom.

All this wouldn't mean much if the taste wasn't there. But the taste was great. The crust was crispier and more flavorful than I'd ever tasted. The crumb wasn't too far different from previous efforts, but perhaps it was a bit lighter than previous attempts because of the great rise I got.

All in all, I was ecstatic. I got more rise and oven spring than ever. I got a beautiful deep brown crust and a flavorful crumb.  If you are making this bread and just putting your boule in the fridge overnight, you have got to try to find a way to do it in the range of 45F - 48F.  And if you are using a regular dutch oven, take a close look and see if there isn't some way to use it upside down.  Do both of these things, and then thank me later.  If you are going to all the trouble of making Tartine bread, it is worth it to go the extra mile to make it the best you can with tricks like these.

Both of these tweaks to my technique easily added up to the best bread I'd ever made. I don't know if this is the best bread I can make, but I have the feeling I'm getting pretty close. And that feels good.

Sunday, April 17, 2011

"No User Serviceable Parts Inside" Means Nothing To Me

So two guys pass each other in midair. The guy going down says "Hey, do you know anything about parachutes?" The guy going up says "No. Do you know anything about gas stoves?"

I was reminded of this slightly paraphrased joke during this weekend's hack. Meet my nemesis.
I Hate You
This is the control panel on our gas stove.  Lately it had decided to start fading out on us.  Pressing on the left side of the panel would bring the display back, but only temporarily.  Classic loose connection type of problem.  Since this was happening more frequently, and since I depend on this display's clock to keep an eye on how long I brush my teeth in the morning, I decided it was high time to tear my gas stove apart.

And tear it apart I did.  The burners came off first.  It takes about an 1/8th of a turn, but they basically just spin right off (once you get past the years of burned on crud sealing the burner to the stovetop, of course)  I left the wires for the igniters attached to the burners and just laid them on the stovetop.  Taking the burners off uncovered six screws that needed removing.  I took those out and then was able to slide the stovetop forward and then up to detach it from the rest of the appliance.  Six more screws held the front panel of the stove on, and they were easy to get at once the top was off.  The front cover on which the control panel was screwed to came off easily after removing the four knobs controlling the gas flow.

There are three connectors at the back of the control panel: two on the left and one on the right.  I pulled those off and and then took off the four screws holding the control panel to the front panel.  The control panel was now freed from its confines.

It turns out the control panel is actually a set of two circuit boards that were joined electrically by a couple flexible connectors, and mechanically by a couple of plastic clips that looked like they'd surely break if I tried to pry them open.  Hmmmm.....

Then I gave the control panel a shake and heard a rattle.  Not good:circuit boards don't rattle.  The rattle was coming from behind the keypad.  I pried away the six plastic clips holding the control panel to the keypad and was rewarded with a small piece of plastic dropping out.  I saw right away that this piece of plastic transferred a press on the up arrow of the keypad to a switch on the control board below.  Hmmmmm...

If I couldn't fix this, I was screwed.  So I first tried to glue the piece on with a bit of Krazy Glue.  They call it Krazy Glue because you must be batshit-crazy if you think that stuff will work on anything.  It did nothing besides make a mess and give me a headache.  Time to turn to Old Faithful.
Love This Stuff
Of course it wasn't quite this easy.  It seems that some of the epoxy had mixed together near the tip of the applicator and it was almost impossible to get the cap off.  But I prevailed.  I mixed up a bit of epoxy and put it on the plastic thingie, let it dry a bit, and put the keypad back on.  Seemed to work.  So far, so good.  Back to the problem at hand.

Like I mentioned, I didn't want to take a chance on breaking the plastic clips holding the two circuit boards together.  I figured the intermittent operation was just a poor contact on one of the three connectors at the back of the control panel anyway.  So I pushed them on and off a few times to clear the connectors of any crap, and pushed the pins off center a bit to ensure they'd make better contact when the connector was put back on.  I applied power back to the stove, wiggled the connectors, and everything looked solid.  Even my up arrow was working (thanks, LePage).  I put the stove back together and everything worked great.

For a couple hours.  FML.

So this morning, I took the damn thing apart again.  This time I'd have to dive into the circuit board sandwich held together by those plastic clips.  I held my breath, pryed the first one a bit, and it came off!  Without breaking in half!  Miracles can happen!  What about the second clip?  It came off cleanly too!  Time to buy a lottery ticket: I am on a freakin' roll here!

To make a long story less long, I saw the cracks around the solder joint on several connector pins within seconds of prying the two circuit boards apart.  It was just a few minutes work to rework these and the rest of the connector pins.  I put everything back together and so far, so good: I have been basking in the stove's green vacuum flourescent display for over ten hours now.  And I suspect it will be glowing just as brightly as I brush my teeth under its watchful eye tomorrow morning (I know you are having trouble wrapping your head around all this.  It might have helped to explain that I brush my teeth for ten minutes in the morning at the dining room table while surfing around from my laptop.  Don't you judge me.)

So what can we learn from all of this?
  1. Taking something apart goes quicker the second time around.
  2. You will always have to take something apart a second time because you won't find what was really wrong the first time.
  3. In general, I am cursed.  But sometimes I get lucky.
On the bright side, my spare time is pretty cheap.  Had I failed to find the problem, I'd have had to have gone to someplace like this and be out of pocket for $168.40.  Yay for ignoring those warning labels.

Monday, April 11, 2011

Crunching The Numbers

In my last post, I showed how I had used my $50 logic analyzer to sniff the initialization sequence of the Davis VP2 weather console's CC1021 RF chip.  This was an important step in figuring out how to build a compatible receiver.  The one problem was that there were a lot of 1's and 0's in there but not a lot of real numbers.  Figuring out the numbers requires digging into the datasheet, looking at the formulas, and seeing if what gets spit out makes sense.  Generally, they do.



The values for the various registers are taken from my last post.  The datasheet references for each formula used in the calculation are shown in the third column.  Values in grey are important.  Why?  Because it is those values that you can plug into SmartRF Studio7 to get compatible register definitions for other chips, such as the CC1110F that lies at the heart of the Pretty Pink Pager.

But "hey", I hear you thinking.  "What about that row in there colored yellow?"  Good question.  Glad you asked.  If you look at the Davis FCC certification report for the Vantage Vue that I discussed here, you'll see a spectrum picture that looks like this.
Hmmmmm....
The center frequency of this carrier is supposed to (nominally) be 902.355 MHz.  But if you look at the numbers I calculated during the initialization, I get 902.382375 MHz.  That is a 27 kHz error, and that is quite a bit for a narrowband device.  So I'm not exactly sure right now what is going on.  I am speculating right now that this is just a test signal and doesn't have anything to do with the normal hop sequence, but I don't know that for sure.  There will be one way to find out: write some code for the Pretty Pink Pager and see if I can see it.

Got time for one more picture?  Great.
Hmmmmm... #2
Most people, yours truly included, thought that the separation between the frequency hops would be a nice even multiple of 500 kHz.  Well, 914.9 MHz - 902.35 MHz is not an even multiple of 500 kHz.  So it would seem that they jostle the spacing around somewhat.  That is what I was seeing when I first uncovered the frequency hopping sequence, but I wasn't sure if that was really what was going on or if I was doing the calculations wrong.  Looks to be the former.

Now here is a different issue.  Winter is finally coming to a close.  That means I have to get off my butt and get some work done outside on weekends before the snow flies once again.  And that is going to mean a lot less time for weather station hacking.  I'll try to get some work done now and then over the summer, but don't be too surprised to see the frequency of posts here drop off a bit.  Such is life.

Having said all that, I'd be ecstatic is somebody were to jump in and pick this up.  Progress would certainly be quicker with an extra set of hands helping out.  I suspect I'll get there otherwise though, but it will just take a little longer.

Sunday, April 3, 2011

Peeling Back The Layers of the Onion

In my "past life", I worked with a guy who was designing a Phase Lock Loop (PLL) for a receiver that HAD to work if the company could possibly succeed (the company eventually failed, but for other reasons).  The chip at the heart of the receiver would be critical to the design's success.  The data rate that this thing operated at was insane, and that in turn drove the complexity of the chips he had to decide from.  He had been in the business for long enough to know that the datasheet only told part of the story.  Once the chip was decided on, he knew he was in for the long haul of peeling back the layers of the onion to get to the nitty-gritty of how the chip was designed.  Only then could be built the rest of the support circuitry up around that chip.

I'm feeling a little that way as I dig into the wireless transmissions between the Davis weather station ISS and the VP2 console that receives its data.  One of the things I really needed to know if I had any hope of building a compatible receiver was to understand how the console configures the key internal registers of the CC1021 chip.  Regular readers will know that I recently picked up a $50 logic analyzer and have been using that to analyze the console's frequency hopping sequence (this was a lot easier than using a scope to figure out the chip configuration between hops).  What I found during those exercises was that, quite sensibly, the console was only configuring the registers it needed to when it needed to.  I wasn't seeing some important registers configured on a regular basis.  It seemed reasonable to assume that these registers were configured as the console was coming out of reset.

Now the problem with buying a $50 logic analyzer is that you don't necessarily get the world's most powerful triggering capabilities.  This unit's weak spot is serial triggering.  The CC1021 is configured via an SPI serial interface.  I knew the bit pattern I wanted to see because I knew which registers would be configured, but I couldn't teach my little analyzer to recognize the bit pattern.  I tried powering on the console with the analyzer connected and hoping for the best, to no avail: I ran out of capture memory way before I got to any interesting activity on the SPI bus.  I tried various trigger conditions but couldn't set up what I needed.  There is enough crap going on during initial power-up that I couldn't find what I wanted.  Things started to look a little grim.

But there was still hope.  Anyone who has a VP2 knows that when you power it on, you get this:
  • BEEP
  • Pause
  • BEEP with associated LCD display test
  • Pause
  • "CONGRATULATIONS..." text thanking you for buying from Davis
  • "RECEIVING FROM..." text that starts the configuration
So what I tried doing was triggering my analyzer with a very simple setup that just waited for the MOSI data line to be low and the clock and chip select lines to be high (Note that Davis doesn't seem to use chip select when talking to the radio, but the line does toggle up and down with some valid SPI activity on it as the console boots up - not sure why yet).  That looks like this on the analyzer's user interface:
Needle in a Haystack Time
Next, I started the capture at various times as the console was powering up.  Doing so on initial powerup gave me nothing useful.  Same with starting the capture between the first and second beeps.  Starting it as the "CONGRATULATIONS..." text scrolls by is interesting, as that gives some data on how the console starts looking for an ISS (breaking that down will have to wait fo another day).  I said "interesting", but I still wasn't getting the information I wanted.  The key registers I needed to see still weren't showing up in the capture.

It wasn't until I triggered the capture right after the second beep during the LCD test.  This is the capture I refer to as "The Holy Grail".
"I Seek the Grail."
The key thing to see here is the value "0x5" on the MOSI line.  This is the console's processor writing to the CC1021's RESET register.  I had never seen this before in previous captures.  The next register it writes to ("0x7") is the SEQUENCING register.  Another new one!  It seems I had finally caught what I was looking for.

So let's make a long story less long.  I had captured all of the data from reset to the console's calibration of its Phase Locked Loop (there's that word again).  I put all the data into a spreadsheet and then went through the long and laborious process of documenting what all those register reads and writes actually mean.  Here is what they mean:


Yes, it did take forever to type all of that in, thanks for asking.

But here's the thing: in the time it took to enter all that stuff, I was able to wrap my brain about what Davis is trying to do here, both in the configuration and in the sequencing.  It also forced me to really dig in to the CC1021 datasheet.  So much so, in fact, that I saw several things that Davis seems to do either unnecessarily or just plain incorrectly.  Stuff like:
  • Setting the transmit PA power to zero every chance they get and then some.  I understand common code in subroutines, but this stuck me as a little much.
  • They reset the CC1021 in Byte 4 and 5, and then do so pointlessly again in Byte 10 and 11
  • They write all 1's to a RESET register at Byte 16 that is self-clearing anyway.  If you aren't writing some 0's to this register, ur doin' it wrong.
  • They write to register VGA4 in Byte 68 and then read it back in Byte 70.  Why?  These settings don't appear to be volatile.  Did they think the chip was going to forget?
Davis engineers who are reading this (and I'm sure there are some): no hard feelings... right?

I do need to take another pass through this spreadsheet to catch any errors that I made first time around (the thought of pouring through it again right this second makes me violently ill).  Let me know in the comments if you see anything I've screwed up.

A quick check against the datasheet will show that all the register information you need to build a compatible receiver around say, something like this, is here in this spreadsheet.  There are a couple more things I still want to do yet, though:
  • verify the CC1021 oscillator frequency in the console
  • take the oscillator frequency and the register settings and run through the various frequency and bandwidth calculations in the datasheet to make sure I get the numbers I expect
  • take a closer look at the console's signal acquisition process from the ISS
Stay tuned...