Got crazy with the cheese whiz and decided to try my hand at all-grain brewing. Found this recipe and thought I’d give it a try. Due to availability, this is what I ended up with:
- 7# RAHR 2-row malt
- 0.75# CaraFoam
- 0.5# Crustal 15L
- 0.5# German Vienna
- 1 package Safeale US-05
- 1 0z Centennial hops @8.3%
- 1 oz Cascade Hops @8.7%
- ~$20 worth of ingredients
How it happened (brew batch #4):
- Mashed with 4 G of water. This is 1.5 to cover the false bottom and 2.5 to wet the grain. This was a mistake and should have used about 3 – 3.5 G
- Mashed with Mashed at 150-152˚F for 60 minutes and then brought up to 170˚F.
- Sparged with ~2.25 G hot liquor. Needed more sparge volume and less mash volume.
- Yielded 5.0 G of wort after sparge.
- IG preboil: 1.041, which yields about 64% efficiency. Not shabby for the first all-grain attempt — but leaves some room for improvement (damn my perfectionist tendencies)
- Added .5 G of water during the boil to help maintain volume.
- Racked to keg on 3/5 — 9 days in primary. Put on CO2. Probably should have let it settle in secondary.
- FG: 1.008 — 4.3% ABV
Newcaslte Nut Brown Ale is made from a blend of two different beers. Working from this recipe as my guide, I’m attempting to do a single-batch replication using extract.
- 4# light dry malt extract
- 0.6# corn sugar
- 0.5# Carapils malt
- 0.5# Crystal malt 15L
- 0.5# Crystal malt 60L
- 0.33# Belgium Special B 180L
- 0.25# Chocolate malt 350L
- 0.5oz Target hops 11% boil for full hour. (possible subs: Nugget, Fuggle, Willamette, Admiral)
- .25oz East Kent Golding 5% — last 15 minutes. (possible subs: Fuggle, Progress, First Gold)
- Safeale S-04 yeast
- Batch size: 5.5 Gallons
Batch #3 Notes:
- Mini-mashed for 1 hour at 155-157˚F in a grain bag. Brought up to 170˚F and then rinsed with 170˚F water.
- Broke the siphon out of the kettle through the chiller. Had to restart.
- Pitched late on 2/3/2010
- Held primary @69-71˚F. Finished bubbling after ~3 days Racked 2/10
- Bottled 26 bottles worth on 2/20. Other half went into a keg.
- ~$25 worth of ingredients
- OG: 1.045 (calculated after measuring prior to dilution — might be rough)
- FG: 1.010 — 4.6% ABV. The real stuff is 4.7%, so, just about nailed that.
Second batch of beer finished up — a Belgian Trappist Dubbel (double).
Ingredients:
- 6 lbs Coopers Dry Malt Extract (DME)
- 0.5 lb corn sugar
- 1.5 lb (16 Fl Oz) Belgian Dark Candi Syrup — D2
- 1 lb Munich malted grain (1.4L)
- 0.5 lb Belgian aromatic malted grain (20L)
- 0.5 lb Belgian caramunich malted grain (50L)
- 0.5 lb Belgian special B (130L)
- 6 AAU Amarillo Hops
- White Labs Abbey ale yeast WL530 — 3 vials, or a large starter
Method:
- Put 6 gallons of water in the brew kettle
- Put the grains in the kettle inside of a grain bag.
- Heat to 155˚F and steep for 60 minutes.
- Remove grain bag and drain. Rinse with hot water but do not squeeze the bag.
- Add DME and bring to boil
- Add hops and boil for 60 minutes
- Add candi syrup and corn sugar and then boil for 5 minutes
- Cool as quickly as possible.
- Add yeast and aerate thoroughly
- For best result, cool to 65˚F and let the temp rise slowly to 70˚F during fermentation.
Batch Notes
Batch #2:
- Pitched the evening of 1/17/2010
- Brewed in 5G pot.
- Pitched at 73˚F. First use of wort chiller — took about 1 hour to cool to 73˚F w/ top-up water. Needs more work.
- FU#1: Pre-heated the water. Added grain when it was 120˚F
- Volume in fermentor: 5.25G
- IG: 1.073
Made my first attempt at brewing beer last night thanks to Valerie’s thoughtful Christmas gift of a brewing starter kit. I now have a bucket of malty goodness that’s burping CO2 at me.
She included a ready-to-brew kit for a German style hefeweizen. From what little bit I know of brewing, it’s about as simple as it gets and make a good first batch (hopefully!).
Ingredients:
- 6# wheat malt extract syrup
- 1# wheat malt
- 1# 2 row malt
- 1 oz Tettnanger pellet hops
- 1 pkg wheat ale yeast
- 1 cup sugar (for priming)
- ~6 G water
Method:
- Heat 2 qts water to 159˚F then add malted wheat and 2 row. Let steep for 30 minutes
- Bring 2 G water to boil in brew kettle.
- Drain grain brew into kettle, squeezing out as much from grain as practical.
- Remove heat from kettle and add malt syrup. Stir well to dissolve.
- Return to heat and bring to a boil.
- Once boiling, add hops and boil for 60 minutes
- Remove heat. Remove hops.
- Gently pour 3 G of chilled water into wort. Chill wort as quickly as possible to below 75˚F.
- Let stand 30-60 minutes to settle the trub.
- Siphon into fermenter, leaving trub in the kettle.
- Add sufficient water to bring final volume upto 5.25 G.
- Rehydrate yeast with 1/2 cup water at 90˚F for 15 minutes and then add to fermenter.
- Initial SG: 1.055
- Ferment for 7-12 days at 62-72˚F.
- Final SG: 1.015
- Dissolve 1 cup sugar in 1 cup boiling water and add to beer to prime for bottling.
- Bottle age 2-3 weeks at 65-75˚F.
Notes from Batch #1:
- Pitched 1/4/10 @ 1:00AM
- Bottled 1/13 at 10:00 PM
- 1.0 oz Tettnag Hops, 4.7% alpha acid by package
- 11.5 gm Safbrew WB-06 yeast
- Didn’t have chilled 3G of water (still warm from boiling)
- Initial SG: 1.040
- Added about 6 cups of water to get to 5.25 G — this was a mistake as I should have taken an gravity reading first.
- Final SG: 1.010
- 3.9% alcohol (by vol)
- Tasting results: The nose is very much like a German weissbier should be. A healthy yeasty finish. Not bad for the first brew. Also, the noggin tells me this is stronger than 3.9% ABV.
My first Arduino project was to build a battery capacity tester. I’ve got a box of rechargeable AA batteries, and it seams they’ve been less and less effective. Since most applications require 4 batteries, invariably one of them problem battery makes the rest of them look bad.
The Atmel ATMega328 microcontroller has 6 analog inputs with 10-bit A-to-D converters and a external AREF that allows you to define what voltage 0×3FF represents. In other words, it’ll give you ~1.4mV precision measuring 0-1.5V when given a 1.5V analog reference. Plenty accurate for a battery capacity measurement.
The principle is fairly simple. Apply a known load to a battery, record the voltage periodically while the battery discharges, stop recording at some point, and integrate to arrive at the area under the curve in order to derive the amp-hours delivered from the battery.
Enough theory, let’s see how it works. The UI starts with a helpful message:
Insert Battery

NIKON D70, ISO 500, ƒ/2.0, 1/20sec, 50mm focal L.
While the battery discharges, the UI prints the voltage, real-time capacity measured thus far, and the duration that the measurement has been taking place.
Battery In

NIKON D70, ISO 500, ƒ/2.0, 1/25sec, 50mm focal L.
When the cut-off voltage of 0.9V has been reached, the “usable” capacity is saved at the top. The real-time data continues so the capacity below 0.9V is measured. For the NiMH batteries I’ve tested, the capacity below 0.9V is minimal (~100mAH).
After the cut-off is reached, an LED starts blinking to attract attention that the test is effectively over.
Done

NIKON D70, ISO 500, ƒ/2.0, 1/20sec, 50mm focal L.
Here’s the code:
/*
Battery Characterization Tool
11/7/2009 John Terry
Compiled on Aurdino 0017 in 4930 bytes.
This uses the analog in to measure the voltage of a battery under a known load and
integrates the area under the curve to arrive at the useful capacity of the
batterin in mAH.
*/
#include
// Set some constants -- these will need to be adjusted for your setup
//
// Connect a ~10K Ω (Rr) resistor from 3.3V supply pin to the AREF pin,
// creating a voltage divder with the internal 32KΩ resistor on AREF.
// aRefVoltage = supply_voltage * 32K / Rr
// Alternatively, measure the actual AREF voltage applied with a good DMM:
// my measured aRefVoltage = 2.62;
const float aRefVoltage = 2.62;
// Connect a load resistor (Rl) to the battery. ~2.2 Ω restistor gives ~500mA drain which
// is about right for a battery rated at 2500mAH. Note, this should be a >=1W resistor!
// Dont trust your DMM to meausre such a low resistance accurately. I measured the current
// and back-calculated the resistance. Best just to trust rated resistance.
// my resistance = 2.18;
//
// The integrator works by accumulating the sampled voltage values from the start until
// hitting a pre-determined low-voltage threshold. Since they are sampled at a
// known period, the number of samples taken cancels out and the accumulation of all samples
// simply needs to be scalled by a factor
//
// Let's make some definitions to show the derivation of how this is so:
// I = current
// V = load voltage
// Rl = load resistance
// samples = number of voltage samples made
// sensor = value read out of analog A->D
// rate = number of samples taken per second
//
// ave(V)
// capacity = ∫I ~= ave(I) * time = -------- * time
// Rl
//
// Where:
// ∑(V) ∑(sensor) * aRefVoltage/1024
// ave(V) = ------- = ---------------------------------
// samples samples
//
// time = samples/rate
//
// Thus:
// ∑(sensor) * aRefVoltage samples
// capacity = ------------------------- * ---------
// samples * 1024 * Rl rate
//
// ∑(sensor) * aRefVoltage
// capacity = ------------------------- = ∑(sensor) * quanta
// 1024 * Rl * rate
//
// quanta = aRefVoltage/(1024 * Rl * rate ) * 1000/3600 // scaled for mA Hours
const double quanta = 0.00032602;
// Define low voltage threshold where any remaining capacity is "unusable"
// lowThreshold = 0.9V * 1024/aRefVoltage
const int lowThreshold = 354;
int sensorPin = 0; // select the analog input pin for the voltage measurement
int ledPin = 13; // select the pin for the LED
int sensorValue = 0; // unscaled sensor output
float voltage = 0; // measured voltage
double mAH = 0; // Calculated current
long accumulator = 0; // sum of all unscalled sensor values sampled
int epoch = 0; // seconds since battery was inserted
int lowVolts = 0; // debounce the low voltage threshold
boolean done = false;// Voltage has dropped below threshold
boolean batteryIn = false;// Battery present
// initialize the the LCD library with the numbers of the interface pins
// LCD Pins -- RS, EN, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
// set analog reference to external
analogReference(EXTERNAL);
// set up the LCD's number of rows and columns:
lcd.begin(16, 2);
// Print a helpful start-up message to the LCD.
lcd.print("Insert battery");
// DEBUG initialize serial communications at 9600 bps:
// Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin);
if (!batteryIn && (sensorValue > 20)) {
// Initialize upon the insertion of a "fresh" battery
batteryIn = true;
done = false;
epoch = 0;
accumulator = 0;
lowVolts = 0;
digitalWrite(ledPin, LOW);
// clear out when LCD when starting over
lcd.setCursor(0, 0);
lcd.print("vlts mAH Time ");
lcd.setCursor(0, 1);
lcd.print(" ");
}
else if (batteryIn && done && (sensorValue < = 20)) {
// consider the battery removed only after finishing the last measurement to
// debounce a glitchy concact
batteryIn=false;
}
else if (batteryIn) {
// Running state during discharge state
accumulator += sensorValue;
voltage = sensorValue*aRefVoltage/1024.0;
// print voltage
lcd.setCursor(0, 1);
lcd.print(voltage);
// print mAH
mAH = accumulator*quanta;
if (mAH < 10) { lcd.setCursor(8, 1); } // adjust to make it perdy
else if (mAH < 100) { lcd.setCursor(7, 1); }
else if (mAH < 1000) { lcd.setCursor(6, 1); }
else { lcd.setCursor(5, 1); }
lcd.print(int(mAH));
lcd.setCursor(11, 1);
lcd.print(epoch/60.0);
lcd.setCursor(15, 1);
lcd.print("m");
if (!done) {
// lowVolts requires 10 seconds in the last 20 before being done
if (sensorValue < lowThreshold) { lowVolts++;}
else if (lowVolts > 0) { lowVolts--;}
// If it's below threshold for 10 of 20 samples, bail out
if (lowVolts > 10) {
done=true;
lcd.setCursor(0, 0);
lcd.print(" mAH in ");
lcd.setCursor(1, 0);
lcd.print(int(mAH));
// put the time, in minutes in the upper right
lcd.setCursor(11, 0);
lcd.print(epoch/60.0);
lcd.setCursor(15, 0);
lcd.print("m");
}
}
epoch++;
} // batteryIn -- main routine
if (done) {
// When done, flash the LED to get attention
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(499);
} else {
// Since the processing takes some time prior to the delay, we'll assume 1mS
// This could stand to be improved with an interrupt routine that is kicked off
// before all the processing starts for each loop
delay(999);
}
/* DEBUG
Serial.print("\nsensor = " );
Serial.print(sensorValue);
Serial.print("\t lowvolrs = " );
Serial.print(lowVolts);
*/
}
Compiles into 4930 bytes.
Success has been had … finally!
A couple of days ago, a tiny little package arrived from Sparkfun Electronics with my first Arduino kit. Valerie’s response upon finding said package in the mail box, “well, so much for seeing my husband for the rest of the week”. In all fairness, I waited till the second day (night, really) to get sucked in. I’ll be back tomorrow…
Last night, I just plugged it into the USB port and loaded a pre-canned example that made the LED blink. Did some experimenting with modulating in and out with a few for loops just to refresh my C code.
Tonight was all about getting the LCD wired in. Soldered a header onto it to mash into the bread board to keep the wiring flexible.
Opened up the LiquidCrystal tutorial and wired it all up and measured the resistance between power and ground to make sure I didn’t have any shorts. Finally plugged it in to the USB spigot and dumped the “hello, world” example program, and … nothing.
Hmmph. Take some measurements — voltages are good. Contrast voltage bias is about half-way, that ought to be close. Let’s try a little higher: nope. Lower? Nope.
OK, rip it all out and move to a different section of the breadboard. Still nothing. The LCD doesn’t so much as blink. Must be dead.
In fit of desperation, I grab pair of random resistors and jumper them across my voltage divider that’s biasing the contrast, first moving contrast closer to VDD, then moving it much closer to VSS and — presto — it was running all along.
It’s alive!

NIKON D70, ISO 500, ƒ/1.8, 1/30sec, 50mm focal L.
For the record, this particular 5-volt LCD contrast likes to biased at about 1.3 volts. 2.5 volts get’s you nothing.
My first real “project” is to build a rechargeable battery characterization tool. More on that later…
Working through the picture back-log … cleared out 80+ this evening. Only 1640 left to work through. But, on a plus note, there are now 2 new photo galleries posted — Woo hoo!
The twinsoes must really hate the stroller. This is how they’ll “remember” their first visit to Spina Farms last year:
Lonely — Sleeping babes, abandoned in the stroller last year…

NIKON D70, ISO 200, ƒ/5.6, 1/320sec, 40mm focal L., map
And their second visit must have caused them déjà vu:
Starting off just like last year — That is, the twins being abandoned in the stroller.

NIKON D70, ISO 200, ƒ/6.3, 1/160sec, 50mm focal L., map
But, they quickly were set free to terrorize the pumpkins.
Maia begins the sorting project

NIKON D70, ISO 200, ƒ/4.5, 1/500sec, 50mm focal L., map
Stand in the nose — Valerie had to toddler wrangle to get this shot

NIKON D70, ISO 200, ƒ/6.3, 1/400sec, 34mm focal L., map
Self portrait. Hard to confirm the focus when you aren’t actually looking through the viewfinder.
2 out of 5 — That’s about all you can expect to look at the camera.

NIKON D70, ISO 250, ƒ/4.5, 1/500sec, 34mm focal L., map
Lots more photos posted in the gallery linked above.
For those just finding this, click to start at the begining.

[ Click to go interactive ]
Some trip facts
- Mileage: 5230 on the odometer (GPS was almost always on, but, not quite)
- Stops for gas: 39, or ~134 miles per tank. (F800 range: ~230 miles, Goldwing range: ~150-160 miles).
- Gallons used: 95.25 gallons which makes for 54.9 MPG average for the trip — not shabby at all.
- Fuel cost: $262.03, or an average price of $2.84 per gallon for mid-grade fuel.
- States covered: 13
- State line signs successfully captured for the ride report: 3 — and it wasn’t for lack of trying. But, I wasn’t going to stop, just to snap a photo of a sign…
- Family feuds: about 4 minor ones over stupid trivial crap like: being too hungry to function and not stopping soon enough when I knew better (sorry Dad); or wondering: what’s the next highway number? How far till that? How far till we get to such and such? What time will we get there? Where will we stop next for gas? (“I don’t know, look at the map. I don’t know, here’s the map” …. *long pause of indignant silence* …. “Feel free to lead if you’d like” — It’s OK Dad, pay-backs are a bitch and I’m glad you didn’t give me the indignant silence when I’d ask you a bazillion questions about things as a kid
); or pulling away from intersections too quickly and without waiting (Really? OK, sorry Dad), or staying up too late/getting up too early (I always knew that’d be an issue!).
(Hi Dad! — Don’t let me get away without you telling your side of the story! I love you too!)
Gear that rocked
- The Airhawk seat cushion was the best money spent on comfort mods.
- The silly o-ring cruise control. Just engage by rolling into the crack between the bar-end weight and the throttle grip and relax the right hand! I left it “engaged” for most of the highway miles, even with both hands on the bars.
- Mesh pants/jacket — great in the heat. Although the trip was *much* colder than I ever would have anticipated, the ability to layer a wind-proof shell outside, and warmth inside worked out very well to stay comfy.
- My home-brew GPS setup. It’s a Garmin car GPS inside of a RAM Aquabox with a homemade bracket mounting it to the homemade “dash”. I’ve got it hard-wired into ship’s power and an audio jack by the seat to plug into headphones to listen to music as well as the turn-by-turn directions. The best part about the mounting location is that it’s in front of the bars which make a perfect arm rest to steady the hand when working the interface.
What I’d do different
- Skip the 6K service on the road. I’d have changed the oil prior to leaving, and then had the bike serviced some place I knew I’d be stopping at for a while (like the Boise area). That half-a-day in the Nebraska dealership could have been spent doing much more interesting things.
- The tire situation certainly could have been planned better. While I’ll never buy another tire with no tread in the middle, I’ll also be more proactive once the tire has squared off.
- I’d pack food/snacks and stop at some roadside places to eat a snack, rather than stopping for sit-down lunch every day. Anything to make the stops more flexible is a bonus as the majority of the stops are at the least comfortable/interesting places: gas stations.
Final thoughts
This was my third multi-day trip (first, & second) on the cycle, and by far the most ambitious. The first two were definitely helpful to get things dialed in and this trip worked out amazingly well in part because of already having 5 long days in the saddle to figure things out (BTW — Thanks, Mark, for helping make both of those other trips happen!)
I’d like to have left a day earlier and taken my time along some of the route, but, the cookie didn’t crumble that way. Although, it seams that we didn’t spend any time checking the sights along the way, the reality is we spent our sight seeing time on slower roads, seeing things that wouldn’t have been possible rolling the super slab. After all, the trip was all about getting some place, seeing the sights there (airplanes!), and then getting back. The only way to really do it more leisurely is to take more time — the miles still have to be covered one way or another.
Someday I’d like to do an open ended trip with no particular time to be at no particular destination. Probably spend several days touring the Rockies, amongst other places. Definitely do some camping along the way.
All joking aside about family feuds and such, I had a great time traveling with my father. We seamed to work well as travel buddies going down the road and our mutual love of the aviation made the destination all the more enjoyable to share with one another. This trip was too long in the making, and now I’m regretting not having purchased a bike sooner that was capable of doing the distance and joining in on past trips. Thanks, Dad, for asking if I’d like to go, year after year. It wouldn’t have happened otherwise.
Which, leads me to my lovely bride — a big thanks to her for taking care of our three kiddos for the ~2 weeks that I was gone prior to meeting in Idaho. And then having the courage to take the 3 kids on a road-trip to Idaho all by yourself — I’m just in awe of how patient you are.
To the readers that have made it this far, thank you too! I hope you’ve enjoyed reading this as much as I have putting it together. All thoughts and comments are greatly appreciated
– Fin –
Day 19: The last push home — 406 miles
Sadly, this trip came to an end on this last day of travel.
The day started with a happy toddler that awoke in her giant “hooo tell” sized bed, as she likes to call it. After packing up the baby cribs and toys and other stuff you can’t live without when traveling with kids, we made a quick stop into the motel breakfast to get some food in the tiny grumbly tummies.
Maia (oldest at 3) saw the cereal bin full “multi-colored Ohhs” (ala Fruit Loops), and she was very excited and wanted to try them. She doesn’t get sugar-bomb cereal at home, and she most certainly doesn’t get it just prior to being cooped up in a car all day. Bad parent that I am, I lied to her and said it was yucky and we couldn’t eat it, but the flake cereal was OK.
With a long, dejected look of disappointed, she proffered that maybe we should try and see if it really was yucky. To which, I assured her it was yucky and prepared a bowl of corn flakes for her.
Later, Maia keenly observed someone getting a bowl of Fruit Loops and she was very concerned that other people were eating the “yucky” cereal and maybe we should throw it away to keep even more people from getting the yucky cereal. Hmmm, this is why you don’t tell “little” white lies to your kids…

[ Click to go interactive ]
Continue reading Oshkosh Trip day 19
Day 13-18: Hang’n around Weiser, ID and the start of the trip home. — 342 miles
Dad and I got home to Weiser on a Saturday evening. The stomach bug was working its way through my family at a rate of one person per day, starting with one of the twins. I was the last person to come down with it in the wee hours of Tuesday morning. It’d knock you down for 24 hours and then you’d be back to normal. Well, normal minus all your energy since you weren’t able to keep anything down for the previous day.
As nice as it was to be back home visiting my folks, it was mostly an exercise in disinfecting the house in hopes of keeping others from getting sick. It sort-of worked since Mom and Dad, thankfully, managed to avoid it and we also managed to avoid re-infections of those that already had it (which, sounds odd, but we’d heard anecdotal evidence that this was happening with this particular bug).
Living in the SF Bay area, it’s easy to forget about severe weather — it just happens so rarely there. This particular week, there were all sorts of evening storms that rolled through western Idaho. I could do without the fires they cause, but, I’m fascinated by lightning storms. I tried to capture it for the first time and I found it to be rather difficult to get the shot. Between the wind and the rain, I wasn’t well situated to get the best view of the most likely places it was striking. Below was from Monday night (8/3/09):
Sparks — Don’t see these often in San Jose.

NIKON D70, ISO 200, ƒ/25.0, 30sec, 27mm focal L.
Continue reading Oshkosh Trip: day 18
|
|
Recent Comments