Notes on U4B user telemetry by Dave VE3KCL, 18-Dec-2024.

Many thanks Dave for these notes. 

NOTE: in the listings below, Dave has added a comment after / on many of the lines; in actual U4B BASIC you would not enter this comment and U4B BASIC does not currently support comments; these comments are shown here for explanatory purposes only. 


TELEN (user telemetry)

The U4B has the TELEN Extended Telemetry feature that was repaired in the latest QRP-LABS firmware 1_00_004 and now can be used by U4B owners. Hans intends to modify the TELEN protocol to comply to comply with Doug’s Traquito mapping when it is finally coded and tested. I use the laissez-faire method of transmitting a series of numbers from the balloon to represent the data to be decoded. This laissez-faire system creates a series of numbers that when decoded reveals the wanted extended telemetry in an order that can be understood by just reading the numbers of the decode. The laissez-faire method is inefficient in data usage but easy to encode, and understand. The original Telen method transmits 2 six digit numbers the first cannot exceed 632735 and the second cannot exceed 153900 by comparison Doug's new scheme will transmit a larger yet undetermined single number that should be able to be reproduced on decoding. The data from the balloon will be placed into these laissez-faire numbers prior to transmission and after the decoding should yield the same numbers and exactly the same data from the balloon using either Telen or Doug’s method of encoding. With that use in mind, here is some detail of how I gather the data from the balloon to be encoded into the extended telemetry. In the U4B the data is assembled using Basic commands.


How to measure GPS LOCK timing

Below is how I generate gps lock time data using Basic from the U4B radio under the 1_00_004 firmware but the methods can be applied to the new coding system when it is completed.

IF R > 1                        / check to see if tx count (R) is >1 to make sure it is not the first tx
  LET G = VAL "#2.1TM"          / let G be the initial time in hours 
  LET G = G * 60 + VAL "#3.2TM" / G converted to minutes 
  LET G = G * 60 + VAL "#5.2TM" / G converted to seconds 
GPS 140 / run the gps to lock measure time again
LET H = VAL "#2.1TM" / H in hours
LET H = H * 60 + VAL "#3.2TM" / H converted to minutes
LET H = H * 60 + VAL "#5.2TM" / H converted to seconds
LET I = H - G / subtract end seconds from start seconds to get I the gps lock time
ELSE / if R=0 just run the gps if it is the first spot
GPS 140
ENDIF
IF I > 99 / if lock time is >99 limit lock time to 99 for using only 2 digits of Telen
LET I = 99
ENDIF

The variable I is now the lock time in seconds from 0 to 99 seconds and can be scaled into part of the Telen number to be transmitted.


Measuring an External Temperature Sensor LM75B

The Basic has to read the I2C buss to find out the external temperature. I average it 3 times with a pause between measurements and massage the numbers so they are in Kelvin as this sensor does not immediately retrieve temperature in Kelvin. This produces a 3 digit number in Kelvin that can be transmitted by extended TELE.

LET Q = 0                       / zero the previous variable Q
FOR T = 1 TO 3             / start a count of 3 measurements to get an average temperature
LET P = I2CR 146 0        / check the external lm75 by reading the sensor
IF P  > 100                   / adjust temperature scale
LET P = P + 17
ELSE
LET P = P + 273           / adjust temperature results for kelvin
ENDIF
DELAY 300                 / let the thing rest between temp measurements 300ms
LET Q = Q + P            / add the measurements 3 times
NEXT
LET P = Q / 3             / get the average temperature in Kelvin to be transmitted (3 digits)

Alternating Telemetry transmissions by creating odd and even transmissions

For sending Extended Telemetry with the U4B I alternate transmissions on the first Telen transmission (QRP-Labs) and Slot 2 (Traquito)

The reason for this change of transmissions is that some data does not need to be refreshed every 10 minutes and a 20 minute refresh is fine …examples would be transmission count or cloud reflection numbers….  so that data is sent every other transmission. This saves battery in after dark transmissions and reduces the bandwidth of the Telemetry using less transmission slots.

In Basic this is how I get an odd and even number variable D from the Transmission count variable R that increments from the first morning startup. The value of D can be used in Basic to send one telemetry or another at alternate times.

IF R % 2 = 0                    / if the counter R is even let D=0 ( the % modulo function)
 LET D = 0                     / assign variable D as even
ELSE
 LET D = 1                     / assign variable D as odd
ENDIF

Creating a stress test voltage check for the Battery by loading an I/O with a load resistor.

A load resistor that will draw 20ma @ 3.3v is soldered between I/O #7 and ground so when the I/O is turned on the resistor will draw 20ma and will produce a 4 digit voltage in Millivolts that can be transmitted as extra telemetry. When M is transmitted the Received data of 3654 would indicate 3.654 volts. This test is done in a time after GPS lock and before any transmissions.

OUT 7 1                         / turn on load resistor at I/O 7
LET M = 0              / set variable M to 0
FOR T = 1 TO 20
 LET M = M + BT            / count the battery voltage 20 times
NEXT
LET M = M / 20            / average the battery voltage by dividing by 20
OUT 7 0                   / turn off load resistor at I/O 7

Changing the transmission schedule timing to conserve power 

One may want to experiment to change the transmission schedule timing to see if battery power could be saved at night.

Making the U4B transmit on a 20 minute schedule instead of a 10 minutes schedule could help the night transmission endurance and increase battery life after dark. To accomplish this one way was to identify the odd and even days and on even days change the transmission schedule from the normal 10 minute tx schedule to every 20 minutes instead so one day the U4B can transmit every 10 minutes and the next day every 20 minutes except where the date rolls over from 31 to 01 at the beginning of the month.

The first part is to identify the date as odd or even. 

LET E = VAL "#1.2DT"            / check the gps date and get a number for the last digit of the date
IF E % 2 = 0                    / modulo 2 the value E to see if it is even
 LET J = 0                     / assign the variable J as the value 0 if even                   
ELSE
 LET J = 1                     / J is 1 if odd
ENDIF

The next thing is to assign a different timing to the transmission. In this example the the next code is after the gps statement and I usually send some QRSS transmission before the normal WSPR and telemetry. I send a QRSS balloon glyph with a identifier for the flight number (like the blue glyph beside my call) so it will show up on a QRSS grabber. In the following example, on this channel, the normal Wspr starts on minute 4 but I send the QRSS starting on minute 3 one minute early.

This code looks like the following

IF J = 0
  SLEEP 10 3             / if the day is odd start on minute 3 ( if J is not odd so it goes to the else option)
ELSE
  SLEEP 20 3             / if the day is even, wait one transmission cycle and start on minute 3
ENDIF
60 CW 0 14096860 5 0 "*01IFLCNAP8Q7R6R5S0S0S5R6R7*"   / tx balloon glyph code
CW 0 14096872 5 0 "*0155  36396303         9630*"     / tx  flight number identifier

If one did not want to send a QRSS Balloon glyph but just wanted to send a different schedule on different days one could delay the timing with the SLEEP command by sleeping past the normal next transmission timing... the shorter code below should work:

IF J = 0                        / if the day is even go to 20 min schedule
  SLEEP 10 0         / sleep past the normal 10 minute cycle and transmit on the next cycle
ENDIF

Flashing the U4B LED for status indication

It can be useful to flash the LED on the U4B to tell you things about the condition of the radio. 

There is one built in LED on the U4B that normally comes on when you apply power but with BASIC you can use that LED to tell you what is going on with the radio when it is powered up and not connected to the monitor. In fact there are a number of I/O ports that you could solder a resistor and a smd LED to so they could also show you want the radio was doing. You could have the GPS flash once when you started the power and 3 times when the GPS lock was complete. By looking at the radio under battery power you could determine the GPS lock time by counting the seconds between the types of flashes.

Two flashes or more

30 FOR N = 1 TO 2               / set number of flashes to 2  (if you want 5 flashes set it to 5)
OUT 19 0              / make sure the LED is off
 OUT 19 1              / turn on LED at I/O 19
 DELAY 1000          / wait one second (1000 milliseconds)
 OUT 19 0               / turn off LED
 DELAY 1000          / wait one seconds (you may want a shorter off time so this could be 500)
NEXT
40 ... / continue the rest of the program at ...

The flash routine could be applied to any I/O with a suitable LED and resistor indicating the condition or results of your BASIC subroutines. It could also flash a code when all is ok and ready to launch… After launch you would want to look at the altitude and in BASIC and turn oft the flashing permanently above say 3000 meters so it did not use resources. To have the flash turned off in flight you could use the following lines ahead of line 30

25 IF AT > 3000                 / if the altitude is > 3000 meters jump to 40 and miss the LED flash routine
GOTO 40
ENDIF

Measuring cloud reflection with a primitive light sensor using a SMD LED

One might want to measure the intensity of the light from below the balloon and it is quite easy to measure (although uncalibrated) using an LED as a sensor.

It turns out that an orange LED (perhaps other colours will work just as well or better) provides a voltage when light is shone on it. On the U4B it only requires a 2 megohm or so parallel resistor across the LED to put some loading on the I/O to pull the voltage down to zero when the light is low. A PCB is not necessary, just wires from an LED and a resistor will work.

In the picture above, a small pcb was made to connect an external LM75B temperature sensor and LED light sensor to the U4B. In the image the LED is soldered on its edge, and the opposite end of the PCB is glued into the foam box containing the U4B so the LED points down towards earth. The LM75B is connected to power and the I2C bus and the LED is connected to an I/O pin, any free I/O will work. In this case I/O 6 was chosen for the LED input. Note on the image the SMD LED has a green mark which is negative or connected to ground. The LED device is not linear when looking at light and a linear treatment of the data would be out of range on the bright side or insensitive on the low light side. If LED value F is above 50, the scale was changed so it was much less sensitive and could adapt to higher light levels.

For testing I aimed a bright flashlight into the sensor and got a maximum value of 75. I was looking for a result in 2 digits so limited the value to 99. In actual flight I think cloud reflection numbers of 70 were achieved as a maximum. Since only 2 digits of information were planned for cloud reflection extended telemetry the maximum was limited to 99 and the minimum was changed from zero to 1.

LET F = INA 6                   / read the analog input from I/O 6
FOR T = 1 TO 50             / set up 50 readings for averaging
 LET F = F + INA 6            / Total 50 readings
NEXT
LET F = F / 100                / divide by 100 for some scaling
IF F > 50                       / if F is more than 50 do some scaling
  LET F = F / 10 + 50          / divide F by 10 and add it to 50 ( so 60 would end up being 56)
ENDIF
IF F = 0                        / check to see if F is zero as we do not want a non zero number
  LET F = 1                     / if F is zero make it 1
ENDIF
IF F > 99                       / if F is greater than 99 make it 99 because we are using 2 digits for tele
  LET F = 99
ENDIF

Sending accurate location in CW

If your Balloon is in trouble below a certain altitude you may want to send out a CW message with its accurate location.

A location call should have your call the Latitude and Longitude and be slow enough that someone could copy it easily and maybe even include your email address or phone number if you really want the balloon back. This CW could be sent before or after the WSPR transmissions.

One should time how long it takes to send the CW to make sure there is enough time so at 10 words per minute the U4B could send about 50 characters in one minute.

  • Your call would be 6 characters
  • Your Latitude would be about 12 characters
  • Your Longitude would be about 12 characters
  • You could send your call again for another 6 characters

So this sequence of 36 characters should fit inside a minute 50 character transmission.

There are tags that can be used like CS for callsign, LN for Longitude, and LT for Latitude. The form for sending a normal speed CW looks like this

CW 0 14096800 10 0 “#CS”

This should send normal CW at 14096800 Hz (just below the WSPR band) at 10 words per minute with zero frequency shift and the message would be the Callsign registered on your U4B.

Since you know the message will take less than a minute you may want to send it just before the WSPR transmission. If you know your WSPR transmission starts on minute 4 then you can send the CW starting on minute 3 by using the SLEEP command. SLEEP 10 3 will wake up and start the next command on minute 3

Now this Basic will transmit CW on the way up also, until the 3000m altitude is exceeded. With a few more lines of BASIC you could eliminate the CW on ascent by saving and comparing the previous Altitude and if the previous Altitude was lower than the present one, you would know the balloon was ascending not descending and skip the CW transmission.

10 GPS 140
IF AT > 3000      / if the attitude is greater than 3000m do not transmit CW message and goto 20
GOTO 20           / if the altitude is less than 3000m it will transmit the CW message
ELSE
SLEEP 10 3          / wake up on minute 3
CW 0 14096800 12 0 “#CS #LT #LN #CS”    / transmits Callsign Latitude Longitude Callsign (more accurate than M6)
ENDIF
20 TELE
GOTO 10

Switching between high and low power

U4B can operate in low transmit power (9mW) and high transmit power (27mW) mode. In high power mode the two legs of the dipole are driven 180-degrees out of phase. In low power mode one leg is "grounded". 

Summer and winter are a little different. If you do not have a battery that is being charged, a simple way to switch is count the transmissions. Usually after 2 transmissions it is safe to switch to high power. This should work you can test it on the monitor and change the values to send Telen or add other lines but the basic counting of the transmissions seems to work.

10 LET R = 0
LET HP = 0              / initially set low power
15 GPS 140
LET R = R + 1            / count the transmissions 
IF R > 2 
 LET HP = 1                / after 2 transmissions shift to high power
ELSE 
 LET HP = 0
ENDIF
TELE 
20 GOTO 15

Laissez-faire user telemetry to zoom altitude for a more accurate look at the altitude and include assembling a transmission that also includes a zoomed battery voltage.  

It is possible to take the last two digits of the altitude reading on the U4B and just send those 2 smallest digits by user telemetry (a.k.a. extended telemetry). If the existing Telemetry that increments in 20m steps, indicates 10520m and the 2 zoomed smallest digits are 33 then the actual GPS altitude determined by the GPS on the U4B would be 10533m. This technique could be used on any numeric value from the U4B than could benefit from zooming in on the smallest digits to get a closer look and finer resolution of the data..

If normal telemetry is accurate to 20 meters one could get the altitude reported by the GPS and isolate the 10's and the ones digits and just send those digits instead of wasting data by sending the complete altitude correct to 1 meter. *** Now the GPS may not be accurate to that kind of resolution, but as an experiment, a higher resolution of the GPS altitude could be transmitted to enhance the accuracy of the telemetry of many different parameters to detect incremental changes in the data without sending the complete data segment.

LET N = AT + 100000    /  if the altitude is 1234 meters add the altitude to 100000 for scaling in a string ( N is now 1234 meters +100000 or 101234)

LET M = VAL “#VN” 5 2        / this line should Isolate the 5th and 6th digit of the Numeric variable VN and make that number equal to M or 34 ( it looks at the 6 digit number VN  101234 and starts on the 5th digit including 2 digits )

TELE M 0                   / this will send 000034 in the first Telen and 000000 in the second Telen transmission

(In the Traquito extended transmission program it may be slightly different as it has not been tested on the U4B. For example with Traquito, we could insert the first laissez-faire transmission in slot 2 and would follow the TELE command and may look the same).

TELE M  

Next one may want to send more data like a battery voltage that was more accurate than the 0.05 volt accuracy on normal telemetry. You could use the BT tag that would print out a 4 digit battery voltage in millivolts eg. 4321 would be 4.321volts … you may not need all 4 numbers of the voltage (to save data) but for accuracy you could send the last 3 digits 321. In U4B BASIC you could use the following commands to isolate the 3 digits that are less than a volt  

LET D = VAL “#BT” 2 3   / this would take the 4 digit number 4321 and start on the second digit 3 and include 3 numbers so it would make D = 321

At this point a 6 digit telemetry number we have a 3 and 4 in the tens and ones column and we need to add 3 more digits in the 10k 1k and 100’s column so we multiply D by 100 to raise 321 up to 32100

LET D = D * 100   / now D = 32100 and which we will add to M to make M that has both voltage and altitude numbers and the total should look like 32134 

LET M = M + D   / M is now 32134 and contains voltage and altitude information and this number could be transmitted with extended telemetry.

There is still more space to be utilized using the laissez-faire method in the U4B system there is up to 632735 on the first TELEN transmission and up to 153900 on the second TELEN transmission and so about ten 10 digit numbers and about one 5 digit numbers could be sent with TELEB.

With the Traquito code, there is a possibility of 8 10 digit numbers and about one 5 digit number (less data with Traquito but the ability to graph the results more easily)

So putting a laissez-faire telemetry sequence together on the U4B looks a bit like the lines below that should send 6 numbers of extended telemetry.

10 GPS 140                      / start gps
LET N = AT + 100000    / add 100k to altitude
LET M = VAL “#VN” 5 2     / grab the last 2 digits of altitude
LET D = VAL “#BT” 2 3    /  gram 3 lower digits of battery voltage
LET D = D * 100    / scale battery voltage
LET M = M + D    / add the two numbers to M now equals 32134
TELE M 0       / transmit regular and then extended tele ( on Telen it would transmit 0032134 0000000 and on Traquito it would transmit  a single number 000032124
GOTO 10           

Laissez-faire user telemetry to transmit transmission spot numbers for the day; also how to switch to low power mode on the first transmissions and in the cold if there is a battery present, to save power load on the battery.

The battery low power mode is not needed in most cases.

Under normal circumstances the U4B transmitter will send about 70 to 80 spots in a day in the summer time, but if the balloon is flying far north in the summer the balloon can transmit continuously due to the elevation of the sun over the horizon all day.  In the summer and in some cases where a battery is used the spot count can number 300 or more.

What is interesting about a spot count data, is in remote parts of the world, the first spots may not be received due to the U4B being in low power mode or the radio transmitting in a difficult part of the world. Extended telemetry can verify that the first spot heard and logged may actually be the 3rd spot that was transmitted. On occasion the 9th spot transmitted is the first one that is logged by WSPR.

The spot number can be transmitted at different schedules, every ET transmission, every other ET transmission or even once every 5 or more transmissions, but for simplicity this example will transmit a spot number every transmission.

There is a slight data advantage in the Native U4B TELEN code but the same information can be sent using the Traquito code. In this example the advantage in TELEN will be used. TELEN can send two numbers after the TELE command the first number being limited to 632735 and the second number limited to 153900. We will use the first 3 digits of 153900 (153) to send the spot number. We will count the spots and adjust for an overflow condition to keep the number less than or equal to 150 and then multiply the spots by 1000 to move 150 spots from last 3 digits 150, to the first 3 digits 150000 in TELEN.  With most flights the overflow code will not be required and 2 digits would be adequate for spot count data.

The code will also include the calibration numbers for the system frequency and TCXO frequency that was initially calibrated in the hardware configuration setup of the U4B. It may not be required but for safety I send the TCXO calibration every transmit cycle.

The code will restrict TX to low power if the temperature in the foam box is less than 5C for a possible battery present. This may seem very cautious but the daytime flight is often greater than 5C after 4 or 5 spots in the summer and gives a better usage profile for the LiPo battery. This code can be shortened for no battery flights.

6 LET R = 0                     / set the transmission count to zero on startup
7 LET HP = 0                 / set the power to low on startup
LET FS = 8001385           / set the system calibration frequency
12 LET FR = 25000006       / set the TCXO frequency
GPS 140                         / start GPS
21 LET R = R + 1                / add one to the transmission count
IF R > 3                        / if the tx count is > 3 transmit high power
 LET HP = 1                    / transmit high power mode
ELSE
 LET HP = 0                    / transmit lower power
ENDIF
IF TK < 278                  / if the temp in the box is <5c change from high to low power
 LET HP = 0                    / transmit low power
ENDIF
IF R > 150                      / check tx count number is > 150
 LET R = 51                    / if the count > 150 change the count to 51 (make sure #<153)
ENDIF
LET U = AT                      / puts altitude into the first Telen number (any data will do)
LET V = R * 1000            / puts the spot count * 1000 into the second Telen number
TELE U V                       / transmits  wspr  wspr tele and telen
50 GOTO 12

Sending QRSS images with the U4B

QRSS can be sent from the U4B with a few commands. The QRSS band is often just below the 200 Hz WSPR frequency band. In the image below, one can see a partial balloon glyph, a dash and a flight identifier (40) and then another Dash below the balloon in frequency. This low dash indicates low power mode. If the balloon was transmitting in high power the Dash would be above the balloon. One could use QRSS to transmit various patterns as a visual short form to indicate altitude, voltage, temp or just any parameter that had a good bad margin. A high dash could indicate > 13km and a low dash could indicate < 11km. There are probably 10 easily identifiable levels that could indicate some special visual information in a short transmission. One would want to keep the QRSS transmissions short, as to not interfere with others transmitting QRSS. Also seen in the image is FSK QRSS that shows Dots and Dashes at different frequencies. VDM from the Nova Scotia Canada is clearly visible to the left of the right balloon image. This QRSS Grabber image was recorded and uploaded to the internet from Reykjavik Iceland by TF3HZ.
https://swharden.com/qrss/plus/#KL7L-4

On balloon flight 40 the start of the WSPR transmission is on minute 8 so a sleep command is used to start the QRSS on minute 7 one minute before the normal WSPR TELE TX sequence.

In the BASIC code below, the numbers and letters following the 01 represent the frequency shift from the base frequency to generate the transmissions and points of light on the QRSS Grabber. You get to design your own shapes and images with these frequency shift numbers and letters.

Since there are occasions where there is not enough solar power to send a full WSPR sequence, sometimes only a QRSS transmission will be seen and image recorded on a QRSS Grabber. As it is transmitted first, in this case, QRSS can foreshadow an upcoming WSPR transmission or in extreme low light situations show that the balloon is alive and be the only communication of the day.

10 GPS 140                      / start GPS
SLEEP 10 7          / sleep to minute 7
CW 0 14096860 5 0 "*01IFLCNAP8Q7R6R5S0S0S5R6R7*"    / send balloon shape
CW 0 14096872 5 0 "*0155  36396303   6819090815*"   / send dash space send 4 space send 0
IF HP = 1               / if high power
 CW 0 14096890 1 0 "T"        / send the T dash above the balloon
ELSE
 CW 0 14096850 1 0 "T"         / send the T dash below the balloon
ENDIF
TELE
GOTO 10

Dropping Ballast with the U4B and indicating heater conditions with Extended Telemetry  Part 1

It may be fun to change the free lift of your balloon in flight. In this test the free lift can only increase and never decrease as the lift would be changed by dropping 2 gram weights (3 of them)

(the weights would be designed so they would not be a safety hazard below)

When to drop Ballast and a little background:

There are a number of possibilities here but in this experiment, I would drop one weight every 10 days. This requires looking up the date on the GPS and picking a certain day. The date DT is a 6 digit number with the first two digits being the day for example 040125 is 4th of January 2025.

If you wanted to drop on the 8th and the 18th and the 28th of the month you could assign D the drop day indicator by

LET D = VAL “#DT” 2 1           / in this case the number in the date above D would = 4  

In BASIC you would be looking for D = 8 to get the ballast drop started.

Prior to the drop I would want to check a few things before dropping ballast

  1. Is the spot count greater than 6? (this will tell you there is enough solar energy to burn the drop resistor)
  2. Is the temperature in the box high enough? (in the summer temperatures can go over 30c in the daytime but for enough power to melt nylon, I would guess the temp should be over 10c)
  3. Is the heating wire that will melt the nylon filament holding the ballast in the circuit? (for this test we take a 10K resistor from an I/O and turn that digital I/O on, (say this is I/O #1) and connect I/O #1 to make a current sense through 10K resistors to the I/O numbers we want to sense for heater resistance integrity.
OUT 1 1

(this will put 3.3V approx. on I/O #1 and send a little bit of current to I/O #2 through the 10k resistor (10k resistors are also connected from I/O#1 to I/Os #3 and #4)
(this system may have to be tested as it may require pairs of I/Os one for source and one for heating)

The heating wire to melt the ballast nylon filament is between I/O #2 and ground and in this example heating wires are on I/O #2, #3 and #4 and ground so when turned on, the sense current goes from the I/O#1 through 10K resistors to ground through the heating wire.

After we make I/O #1 high, if the heating wire is good in I/O #2 the analog value on I/O #2  will be a low number like 100 or less and if the heating wire is burned out and there is no resistance between I/O #2 and ground we will get a high number like 4096

LET N = INA 2                   / this will check the analog value of the voltage on the I/O and will assign N a value related to the voltage on heating wire at I/O #2

So if we know N is low (heater in circuit) then we can go ahead and ask a few more questions in BASIC; if the result of the heater resistance test was high it would mean that the heating resistor had failed and already burned out and one could test the other heating element. With the INA 3 or 4 command as they all would have a 10K source resistor from I/O #1 to sense the condition of the heating elements

To drop the ballast at I/O #2 we would just use the command below

OUT 2 1 

and it should apply 3.3v to I/O#2 and start heating the heater and melt the nylon filament holding the ballast weight and it should drop from the U4B. (some testing would be required to get the heating element to completely burn out like fuse and break the connection)

It might be interesting to see what happens to the balloon as it gains more free lift as the ballast is dropped.

The internal pressure of the balloon will increase with more free lift and this may stretch the balloon which could make it have a larger volume and fly at a different altitude. We usually find that these balloons seem to survive a static test of slightly over 0.6psi.

On the current flying balloon, using Steve’s spreadsheet, one can check the change in internal pressure as the free lift is changed.  In flight U4B-40 the pressure to free lift ratio looks a bit like this:

  • 7 grams of free lift   internal pressure 0.28psi
  • 9 grams of free lift  internal pressure 0.36 psi
  • 11 grams of free lift internal pressure 0.44 psi
  • 13 grams of free lift internal pressure 0.53 psi

By having 3 dropable 2 grams weights over the flight of a month one could see how long it would take to crash the balloon or what would happen to the altitude with more free lift.

Extended telemetry could scan the 3 heating elements and report their condition (I expect ET transmitted once daily, and immediately after dropping ballast, would be enough information as the heater burnout condition should only change once every 10 days if the preconditions are met).


Dropping Ballast with the U4B and indicating heater conditions with Extended Telemetry Part 2

The ballast drop mechanism proposed design:

The ballast drop mechanism may take a few forms to get right but here is a possible solution.

The safe current available at a U4B I/O is about 25ma. If two I/Os are used in parallel then the safe current would be about 50mA. With the U4B not transmitting or using the GPS as much as 50 milliamps of current at 3.3V should be available at two of the I/Os without excessive loading of the solar panels. The normal High power transmission mode of the U4B consumes about 59mA, so there should be enough power to energize the wire heater if the U4B was not transmitting in high power.

Assuming only the one I/O #2 was used in this test, the maximum safe resistance over the I/O to ground would be a max of around 132 ohms. That is a pretty high resistance for wire, but there is a special wire used for heating called Kanthal A1 which does have high resistance.

The wire chosen from Ebay was AWG 49 that has a resistance of about 132 ohms in 2.4 inches of length or 2140 ohms/ meter.  This 2.4 inches of wire would be coiled around a small form and soldered to an external link from the U4B Ground and to I/O #2. A nylon thread would pass through the coil and be anchored above the coil and would hold the 2 gram drop weight below the coil. If it the Kanthal wire requires more heat to work, two I/Os could be used in parallel providing power to a shorter 1.2 inch coil of wire.

This method may not get hot enough to burn through the Kanthal wire and allow the continuity to be tested, but other methods could be used to test if the weight had been dropped after burning through the nylon thread holding the ballast weight .

A small amount of Potassium nitrate and Icing sugar mix (rocket fuel) would be mixed and applied wet to the center of the coil of Kanthal wire and nylon thread and then dried to a solid. As the Kanthal wire heated a very small amount of rocket fuel this could ignite as the ignition temperature was reached. The fuel would then burn through the nylon dropping the ballast weight. 

Comment from Steve G8KHW / AJ4XE:

IMO That's going to be challenging to get to work - especially at -60C - you have a long way to go from there to the auto-ignition temperature of KN03/sucrose.  

I've experimented with this sort of stuff for latex balloon flights - the thing I reliably got to work is firing Daveyfire N28B igniters from a low Z Capacitor (about 2200uF) charged from a diode pump circuit driven from an I/O pin. The N28B will fire at 0.5A for 50ms (yes 50ms) - resistance about 2 ohms.  The capacitor is charged over a few seconds and the igniter is fired using a FET driver from another I/O line. Really its about dumping the energy from the capacitor into the igniter quickly enough to fire the pyrogen - but no so fast that the filament burns out before transferring enough heat - too slow and the heat will leach out and not reach the auto-ignition temperature. I used a 2200uF cap charged to about 10V - but I'm sure it would work with a bigger valued capacitor at 3V, A capacitor that sores about 0.1J is sufficient.

I believe N28Bs use a pyrogen which has an auto-ignition temperature of around 170C.  N28Bs heads are around 0.2g

N28Bs are pretty common in the Model Rocketry world - used for firing ejection charges etc.

Dave VE3KCL reply:

Good Rocket information to know Steve.
I do have a plan B if the Kanthal cannot achieve the heat required to ignite rocket fuel.

The U4B radio often reports much higher temperatures at altitude than -60C at float during the day in the summer in the box.... up to around 10C, mostly above freezing so the -60C may not be a big problem but there may be issues with the ignition temperature of the fuel.

Plan B uses Soy wax that melts at 45 to 53c .... the idea is similar, only a piece of  soda straw is attached to the radio and inside the straw is the nylon string to the ballast weight with the wax holding the nylon ballast string in place in the coil of Kanthal heating wire inside the straw.  This way only the delta from 5 degrees to 55 degrees would be needed to melt the wax and release the ballast weight. I cannot wait to try this business out but unfortunately the Kanthal is coming from Bulgaria end of January haha.

Comments from Kevin AD6Z:

Igniter: christmas tree bulb (non-led?) or similar and black powder claiming to fire with 20mA at 1.2V. I guess the question is whether you can get these old non-led bulbs now?
Oh look, amazon has them? (2.5v 0.17a) https://www.amazon.com/Mudder-Incandescent-String-Lights-Indoor/dp/B0DJ8NP27B
Many home made low-power igniters at https://www.nakka-rocketry.net/igniter.html

http://www.perfectflite.com/Downloads/Ejection.pdf
From that pdf:

They will fire on as little as 2 Volts and 0.2 Amps of current
Extensive testing has demonstrated superb reliability. Dozens of ground tests and over 80 flights have been logged without a single failure. The low current characteristics of the igniter also allows the use of redundant charges wired in parallel for an even greater degree of confidence.

Maybe a mix of black powder and potassium nitrate?

https://www.nakka-rocketry.net/igniter.html

An easy to make pyrotechnic igniter can be made in a manner similar to the igniter shown in Figure 1, except that instead of utilizing a nichrome bridgewire, a Xmas-tree mini-bulb can be used in its place. This particular light bulb has the advantages of minimal cost and very small size, which conveniently fits within a soda straw, and requires only a small electrical current to fire the charge. The tiny tungsten filament is instantly vaporized when current (such as from a 9V battery) is applied, and as such, is referred to as an "exploding bridgewire" igniter. This igniter design is based on a concept pioneered by rocketry experimenter Rob Furtak, who has used the Mini-bulb igniter with great success in his rocketry work.

Ultra-low Current Igniter

The following is a description of an igniter that requires very low electrical power, requiring only 20 mA at 1.2V (= 25mW) to fire. As such, this design is exceptionally reliable and especially useful in cold weather operation, which greatly reduces a typical battery's available power.

This igniter may be used for either motor ignition or for firing a parachute ejection charge.

The "Ultra-low Current Igniter" was developed for EARco (Experimental Aerospace Research) by Ken Tucker to increase the safety of Rocketry.

Ran into those links from here:
https://www.apogeerockets.com/Rocket-Motors/Motor-Starters/Quest-First-Fire-Micro-Initiator-Starters

REST OF DISCUSSION is on the PicoBalloons forum starting at https://groups.io/g/picoballoon/message/19397