An update and a request for some advice.
I updated the software and ran another test last weekend and still had problems keeping a constant temperature. The hardware/software worked great; I ran the controller for 5 hours and there were no crashes or disconnects. The PID algorithm seemed to be calculate good values. I ran this all on my old Droid and it used up only ~30% of the battery so I'm convinced that this is a viable platform for controlling the temperature once I figure out my problem. That's where I'm looking for advice.
I'm using the Minion method with lump. The smoker has a single 1/2" ball valve for intake. I got some lump pieces going and when the temperature inside the smoker got up to ~200 degrees I engaged the controller and set the ball value to about half-way open. Here's a graph of the result:
The red line is the pit temp, the blue (flat) line is the desired temperature, and the green line is the blower speed (0-255). (Ignore the magenta line for now.) As you can see the first hour or so was reasonable. Starting around 19:00 the temp begins to drop, even though the blower is going full speed. At about 19:30 I opened the ball valve a bit. You can see the temps rise for 45 minutes and then begin to fall again. At 21:00 I opened the valve a bit more, the temps rose then fell again. I shut off the controller at ~22:00.
I don't know why the temps keep falling even though the blower is going full blast. It looks like I still had plenty of lump in my basket, maybe around 2-3 inches deep. Any ideas?
As an aside, here's the initial screen: