BallastHalo 4

Launch Attempt 2

  • Partial Success!
    • Very good launch, only 5mins behind schedule - Launch Video (Youtube)
    • Initally a near perfect ascent rate @ 2.5m/s
    • Ascent rate dropped as passed through clouds - flight computer detected this and turned pump on to drop some ballast, this caused the GPS module to lose lock (currently thought to be due to noise from the motor) and as it didn't know where it was it didn't know to turn the pump off.
    • Flight computer continued to transmit in “no lock” mode but with valuable temperature and light sensor data. Were able to triangulate a rough position.
    • GPS restarted when pump ran out of batteries - at this point the payload was descending slowly (2m/s), local Dutch hams were able to get some telemetry of position, last know position: 51.8716,4.7891 at 1450m.
    • Dutch hams have been searching for the payload around Ottoland, CW beacon has been heard from 51 52'49” 4 51'53” - will continue the search soon! Rx'd CW Beacon (Youtube Video)
    • Payload has now been recovered (23/2/10) - more information soon!
    • Pictures of the payload recovery: flickr
    • Reviewing the data the pump certainly worked - it managed to pump out “4500” mls of ballast and looking at the pump temperature it got quite warm in the compartment (up to 23degC) so something worked. Appears that we didn't make float and instead didn't get very high, certainly lower then 22km - this was probably due to a leaky valve so we vented too much helium

Launch Attempt 1

LAUNCH FAILED. WILL TRY ANOTHER DAY (13/2/10)

Hi all,
Apologies for the disappoint with the lack a flight today! Thank you
all for getting involved. Unfortunately the weather conditions while
good on arrival at the site progressively got worse - at one point we
had sleet, the winds picked up just as we started to fill the balloon
and following our protocol for calculating free lift it appeared as if
we had got the right amount, in hindsight this may have been due to
the pull of the wind. We then prepared for launch and as soon as we
let go to our horror realised that the balloon didn't have enough lift
to carry the payload, instead it dragged and bounced the payload, we
chased after it and caught it after about 1mile and a number of
obstacles, to avoid it escaping and going further we quickly burst the
balloon. The payload has survived pretty well and it even had a GPS
lock! a testament to the lassen IQ module obviously - apart from some
scratches and quite a bit of mud, a fresh set of batteries, some more
ballast and we can fly it again. You never stop learning in high
altitude ballooning - this is my 12th payload and I've assisted in a
lot of launches and yet things still go wrong.

However there have been some success to the day - I'm certainly happy
the payload is still working, if it can survive a bit of bouncing then
it should do well in the air, secondly the flight path wasn't ideal -
we were going to fly over a number of tricky places, late changes to
the forecast unfortunately. But most importantly we managed to rally a
large team of listeners both in the UK and in France (and also Germany
and perhaps slightly unrealistically the USA as well) - sure there
weren't any signals to decode but it shows that people are willing to
take part and those who are new to this I hope you stick around and
help out in the future - once the balloon is in the air it gets very
exciting, there are going to be lots of flights this year both in the
UK, in France and also potentially trans-atlantic which will
definitely require some help!

So whats the plan? The aim is to launch as soon as possible, real life
commitments slightly cloud the schedule and so does the weather of
course. The other question is where will the payload go - remember
this isn't a normal up/down flight - there is the possibility
(hopefully) of floating which will extend the range a long way, with
lots of listeners in France hopefully it'll go there! Therefore
potential times maybe the upcoming weekend or the weekend/week/weekend
of 27/2/10 - i'll be fixing the payload and running lots of flight
predicitions and simulations in the mean time.

If you want to get involved or just keep track of future launches
either get in contact with me and I'll try and email you next time or
sign up to the UKHAS mailing list
(http://groups.google.com/group/ukhas) its open to anyone (even those
not in the UK!). Also visit our IRC chat channel #highaltitude on
irc.freenode.net , its a busy place with discussions both on and off
topic and its the best place to keep up to date with the progress of
various projects. A slightly newer place to keep in touch is via
twitter, I'll definitely keep that updated with plans and progress:
http://www.twitter.com/jamescoxon/

Thank you again for all the work and support - next time we'll
actually get it into the air...

James
M6JCX

http://www.pegasushabproject.org.uk

Intro

BallastHalo 3 was a partial success - we managed to get another balloon to float though it was far higher then planned and took a lot longer to settle down and actually float. This is pretty much down to too late a launch coupled with too fast an ascent rate. The other issue is that we didn't actually test the ballast tanks though we did test the ballast sensor which is far to inaccurate and added a lot of complication to the payload. So the plan for BallastHalo 4 is to build and update BallastHalo 3 and create a payload that'll actually test the tanks. BallastHalo 4 will be simpler, cheaper and construction will be quicker - aiming to launch by the end of January!

Plan

  • Drop the concept of 2 boards and instead combine it onto a single AVR probably the ATmega328 which has double the capacity of the ATmega168.
  • Drop the ballast sensor - instead use a peristaltic pump, by counting the revolutions we can calculate the volume of ballast dropped.
  • Perhaps microswitch on shaft of pump, trigger a counting interrupt - then translated into volume pumped

Components

  • Single ATmega328 (got Earthshine Design )with:
    • 28 pin DIP Socket (got)
    • GPS : Lassen IQ + breakout board (got from BH3),
    • Radiometrix NTX2 434.075Mhz 10mW on 2 pins with resistors to create carrier shift (got)
    • Photocell on ADC (got)
    • 3x DS18B20 Temperature Sensor on 1-Wire network (Internal and External) (got 1) (ordered RS)
    • LED on GPIO (got)
    • Williamson 100series Pump (Relay and transistor attached to 1 GPIO) (got Williamson Pumps)
    • Barbed Connectors + Tubing (ordered)
    • Photogate + Shaft Rotation Counter - microswitch on shaft - 1 GPIO (got)
    • 3.3v Power Reg (got)
    • 2 4xAA Battery Holders (got)
    • 4x AA Lithium Energizers (got)
    • Stripboard
  • Backup CW beacon - complete
    • ATmega168 (got)
    • Radiometrix NTX2 434.075Mhz 10mW - single pin at 3.3v - CW (got)
    • LED (got)
    • 2x AA Lithium Energizers (got)
    • 2x AA Battery Holders (got)

Pseudo Code

  1. Read GPS and Parse
  2. Calculate ascent rate
        //Ascent rate calculation
void calc_ascentrate() {
	int diff_sec, diff_alt;
	if(ARtime == 0) {
				ARtime = ((hour * 3600) + (minute * 60) + second);
	} 
	else {
		currenttime = ((hour * 3600) + (minute * 60) + second);
		if(currenttime > ARtime) {
			diff_sec = currenttime - ARtime;
			diff_alt = ialt - last_alt;
			printf("Diff sec = %d, Diff alt = %d ", diff_sec, diff_alt);
			if (diff_sec > 30) {
				ascentrate = (float) diff_alt / diff_sec;
				printf("Ascentrate: %0.2f ", ascentrate);
				ARtime = currenttime;
				last_alt = ialt;
			}
		}
		if(currenttime < ARtime) {
			ARtime = currenttime;
			last_alt = ialt;
		}
		printf("Time: %d\n", currenttime);
	}
}
  1. Detect float
    1. -1 to + 1?
void floatdetecton()
{
	//Calculate if we have achieved float, monitor ascentrate if between +1 and -1 start float time if it strays out of +1 or -1 for more then 5 cycles - float has stopped
	currenttime = ((hour * 3600) + (minute * 60) + second);
	//Detect float
	if (ascentrate < 1 && ascentrate > -1 && ialt > 15000) {
	printf("Floating... ");
	//Now that we are at float we need to keep track of how long
	if (currenttime >= Floatstart) {
		//Start Timer or Continue Timer
		if(float_time == 0) {
			Floatstart = currenttime;
			atfloat = 10;
			float_time = 1 ;
			printf("Start float timer %d\n", atfloat);
			}
		else {
			atfloat = 10;
			float_time = currenttime - Floatstart;
			total_float_time = float_time + Float_rollover_time;
			printf("Float Time: %d, %d\n", total_float_time, atfloat);
		}
	}
	else if (currenttime < Floatstart) {
		atfloat = 10;
		//We must have rolled over 24hrs
		Float_rollover_time = float_time;
		printf("Rollover: %d\n", Float_rollover_time);
		Floatstart = currenttime;
	}
	}
	// If out of float - detect
	else {
		if (atfloat > 0) {
			//reduce float counter by 1
			atfloat = atfloat - 1;
			//in case this is just a blip continue float counter until we run out
			float_time = currenttime - Floatstart;
			total_float_time = float_time + Float_rollover_time;
			printf("Float Time: %d, %d\n", total_float_time, atfloat);
			}
		else {
		float_time = 0;
		}
		printf("No Float: %d ", atfloat);
	}
}
  1. Are we dropping ballast?
    1. No - Decide whether to drop ballast, set end point
    2. Yes - How much have we dropped? How many revolutions since last loop - Carry on or stop?
  2. Gather temperature data
    1. Use set address as is quicker
// gets temperature data from onewire sensor network, need to supply byte address, it'll check to see what type of sensor and convert appropriately
int getTempdata(byte sensorAddress[8]) {
  int HighByte, LowByte, TReading, SignBit, Tc_100, Whole;
  byte data[12], i, present = 0;
 
  ds.reset();
  ds.select(sensorAddress);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end
 
  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
 
  present = ds.reset();
  ds.select(sensorAddress);    
  ds.write(0xBE);         // Read Scratchpad
 
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
  }
 LowByte = data[0];
  HighByte = data[1];
  TReading = (HighByte << 8) + LowByte;
  SignBit = TReading & 0x8000;  // test most sig bit
  if (SignBit) // negative
  {
    TReading = (TReading ^ 0xffff) + 1; // 2's comp
  }
 
  if (sensorAddress[0] == 0x10) {
    Tc_100 = TReading * 50;    // multiply by (100 * 0.0625) or 6.25
  }
  else { 
    Tc_100 = (6 * TReading) + TReading / 4;    // multiply by (100 * 0.0625) or 6.25
  }
 
 
  Whole = Tc_100 / 100;  // separate off the whole and fractional portions
 
  if (SignBit) // If its negative
  {
     Whole = Whole * -1;
  }
  return Whole;
}
  1. Collect light sensor data
  2. Transmit down radio
    1. RTTY, 50baud, ASCII-8, 350, shift, no parity, 1.5 Stop

Construction

Main Payload

Jobs

  • Code
    • Fix float detection
    • Add backup code for ballast dumps
    • Add code to read photocell
    • Add code to measure rotations of pump (interrupts etc)
    • Clean Code
  • Hardware
    • Wire up photocell
    • Wire up Pump + Relay + Transistor
    • Wire up Rev counter
    • Find/Make disc for rev counter
    • Antenna
    • Fix GPS Antenna
    • Construct Payload Case
  • Test, Test, Test
  • Order Balloon + Parachute
  • Watch weather
  • Alert listeners

Backup CW Beacon

Due to having components lying around I started by making the backup beacon, I used a spare ATmega168 flashed with the arduino bootloader and a Radiometrix NTX2. I was originally considering using a Circuit Design CDP-TX-04S-R which is a 10mW transmitter but they are around £30 so instead went with the superior and cheaper NTX2 which is £13. As the frequency of the transmitter is dependent on the voltage on the TX pin I connected it directly to the AVR - to avoid clashing with the main downlink which uses the identical transmitter but feeds in a lower voltge. Finally I added an LED and resistor to indicate that the system was working.

Things to do:

  • Finish code, adding in sleep mode
  • Finish antenna end

Build Day

Jobs

  1. Tidy Desk
  2. Rig Photocell
     3.3v -- Photocell -- Analog0 -- R -- Gnd 
  3. Test GPS
  4. Rig Pump Relay - Transistor + Relay
  5. Solder Rev Counter
    1.  GND -- R -- Pin11 -- Photogate -- 3.3v 
    2. Issue - Interrupts are attached on pin2 and pin3 which are already being used - will need to cut the pin2 – En trace and replace it with another GPIO and then divert pin2 to the rev counter pin. -Fixed - using pin8
  6. Fix Code for controlling pump + counting revs
  7. Find circular disc to go on shaft - Instead using rectangle
  8. Ballast tank
  9. Create skeleton to hold pump and tank

Pictures

Build Weekend 2

  • Secure rev counter/interrupter etc
  • New rev counter
  • Construct payload from polystyrene
  • Test Radio transmissions
  • Code
    • Make sure backup dump works
  • Run simulations
  • Work on backup beacon
  • Construct Antenna
  • Order balloon + payload
  • Make spacer
  • Get caribina for easy rigging.
  • Send radio to natrium
  • Collect radio from post office
  • Visit Tropical Fish shop re: polystyrene boxes

Launch Plans

  • Most likely 20th Feb from Churchill
  • Sunset is at 17:24 (20/2/10)
  • Aim to float at ~24000m
    • Therefore: 20000m @ 2m/s = 12000s or 200minutes or 3:20hrs
    • As sunset at altitude is ~1hr after ground sunset we need to launch about 2hrs before ground sunset
    • Launch time: 15:00
  • Payload mass without ballast = 1.400g
  • Ballast = 450g
  • Total mass = 1850g (need to re-weigh)
  • Balloon = 1.5kg
  • Parachute = 30”
  • 10/2/10 Forecast: (runs till 04:25 14/2/10) Parameters: ascent rate = 2m/s, float altitude = 22000m kml
 
missions/ballasthalo/ballasthalo4.txt · Last modified: 2010/02/25 15:49 by jamescoxon
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki