Code glitch floored Reg reader altimeter
LOHAN barometric kit off for reprogramming
Reader Neil Barnes says he's nailed the reason his barometric altimeter failed the Rocketry Experimental High Altitude Barosimulator (REHAB) test last week, and is poised to reprogram the device for another pop in our shed-built hypobaric chamber.
The key component of the altimeter is an Intersema MS5534 temperature compensated pressure sensor, which according to the spec, is good to 100k+ feet (30,480m+).
There's only one way to find out if that's true: stick it in the REHAB chamber and suck the living daylights out of it (see pic, below). The test proved entertaining, as we reported last Friday.
The altitude reading rose slowly, peaking at 32,707ft (9,969m), then dropped to approximately 22,000ft (6,706m) for a couple of minutes, at which point we shut off the chamber isolation valve.
Then, over 15 minutes, the indicated altitude rose to 30,000ft (9,144m) before the altimeter shut itself down.
We're still not sure why the altimeter turned itself off, but we do now know why the altitude was all over the place. Reader John Browne 1 commented:
I doubt that you busted the sensor, it's quite robust and well protected. The batteries should be well enough sealed for short-term use.
Nope, my suspicions were aroused by the maximum altitude figure of 32707ft, which, as any fule kno, is close to the upper limit of 32767 for a signed 16 bit integer. Any more than that and the top bit will be set, which will make the value negative. What happens after that is up to the software. This time RTFM could be misleading; the MS5534 datasheet says 'All calculations can be performed with signed 16-Bit variables.' Maybe so if you deal only in metres.
You're not the first to be had by this one, I found in 1986 that FS II on the Amiga would fly into the ground if you set the autopilot for more than 32767 feet, and the first Ariane 5 launch was downed by almost exactly the same bug.
You might need to reset the thing to get back the calibration data, but it's probably not broken, unlike the Ariane. Have fun!
Neil went back, had a shufti at the code, and replied:
Altitude is a 32 bit variable, so that should be ok.
Arse... >> show_altitude((int)altitude,1);
ints are 16 bit on this compiler/processor... good spot, John. In my defence, it was intended to stop within *breathable* atmosphere!
Neil later elaborated:
The conclusion we came to in discussion (it's a bit spread out in the thread) is that it measured to approximately 33k feet and then effectively counted down, so a total of 33k+(33k-22k) = 44k feet, and then started leaking back down once the pump was off. 44k feet is a pressure of about 15kPa, 4.5 inches of mercury – which gives you an idea of the scaling problems as the pressure drops... not many millibars across a huge height difference.
The calculation of pressure, and therefore altitude, had sufficient resolution (32 bits) to give the range required. However, my original software never expected to display above ten thousand feet or so – that's when you start needing oxygen, not good for a paraglider! – so the display routine showed five digits of a signed value cast to 16 bits – signed because one of the operating modes is 'height relative to takeoff'. When that got past 32767 it went negative and started counting down. The five digits didn't leave room for the minus sign, so it didn't show.
Neil says he'll now rewrite the code and "get rid of the variometer code (rate of climb) and display pressure as well as altitude (probably in little teeny tiny writing on that screen!) to give a double check, use a longer averaging period, and generally simplify stuff".
So, our barometric trigger plan still has legs, and once the code's sorted, it'll be back to the REHAB chamber for the altimeter to see how it fares second time around.
For those of you asking 'Just who is this Neil Barnes of whom you speak?', he tells us he trained as a BBC broadcast engineer back in the late '70s, and worked in TV and radio until 2010, when he took time out to write an MSc dissertation.
He's now "freelancing in contract electronics and software", and currently "testing and developing control and measurement systems for deep drilling, basically robots that have to work three miles underground at very high temperatures and pressures".
Crikey. We assume then it's a nice aside for Neil to work on something which has to work at very low temperatures and pressures, and we're sure you'll all join us in thanking Neil for his efforts in support of the audacious Low Orbit Helium Assisted Navigator (LOHAN) mission. ®
Further LOHAN resources:
- New to LOHAN? Try this mission summary for enlightenment.
- You can find full LOHAN coverage right here.
- Join the expert LOHAN debate down at Reg forums.
- All the LOHAN and Paper Aircraft Released Into Space (PARIS) vids live on YouTube.
- For our SPB photo archive, proceed directly to Flickr.
- We sometimes indulge in light consensual tweeting, as you can see here.