As a reference to the less-known invention of first rubber balloon by Michael Faraday, otherwise known for his contributions to the study of electromagnetism and electrochemistry, I named the project in his name. Realization started in autumn 2015 and with some bigger delays on 5/8/2017 it resulted in successful mission. During the realization I was inspired by several web pages, so let this article serve to share information and experiences in some similar projects as well.


Conception

As a hobby project with the uncertain outcome the low-cost DIY attitude has been chosen. The goal was (apart the fun) to find out accessible height for this types of equipment and to measure the behaviour of chosen technology in environment of the middle stratosphere.

During the flight it is required to measure external pressure, sets of temperatures and to also take some pictures. Therefore the console is equipped with the data logger, collecting data from one pressure sensor and three temperature sensors. As it turned out, cheap camera is not ideal. Some more resistant to environment would be better.

To indicate position after landing the GPS tracker is installed. Communication via GSM sim card.

 

Realization

For construction of cubical, aluminium L-profiles have been used, riveted together. Walls have been made of extruded polystyrene.

Total weight of console and payload m=0,92kg

 

 

 

 

 

 

 

 

PARTS

Balloon

Ordered from

http://novalynx.com

weigth300 g
gross lift2.33 kg
inflation volume2.1 m3
inflation diameter1.6 m
ascent rate400 m/min

 

Data logger

Control board with ARDUINO UNO

ETHERNET shield added for saving log file to SD card.

Onto control board is connected power supply. One LED shows voltage presence. Other two is used with control buttons for program status. Controller switching the second and third LED when the program is running, blink LED while writing to SD, blink several time fast when the erasing memory button is pressed.

With I=226mA gives input power P=U.I=8,5.0,226=1,9W

I have chosen Lithium battery for good range of working temperatures. A discharge characteristic shows discharging curve for constant load of I=115mA.

It is assumed for arduino working, discharging up to 7V. For double current load it gives approx. 3,5 hours of operation.
 
Westinghouse CR9V
capacity1200 mAh @ 1mA
working temperature-40°C .. +60°C
source code for Arduino:

// projekt faraday_v7.2

<OPEN>

#include <BMP180.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <OneWire.h>
#include <DallasTemperature.h>

BMP180 barometer;
double seaLevelPressure = 101325;

//definice pinu teplotnich cidel
#define T2 2
#define T3 3
#define T9 9

OneWire T2val(T2);
OneWire T3val(T3);
OneWire T9val(T9);



DallasTemperature sensor1(&T2val);
DallasTemperature sensor2(&T3val);
DallasTemperature sensor3(&T9val);

// SD chip setup
const int chipSD = 4;

// promenne

int wrtdelay = 250; //prodleni zapisu

// definice pinu
int L7 = 7; //LED7
int L8 = 8; //LED8
int S1 = 5; //tlacitko S1 - vymaz log souboru

// alokace
int S1stat = 0;
int dat1 = 0; //krok zapisu
int dat2 = 0; //cas

void setup() {

Serial.begin(9600);

sensor1.begin();
 sensor2.begin();
 sensor3.begin();

Wire.begin();
 
barometer = BMP180();



if(barometer.EnsureConnected())
 {
 Serial.println("Connected to BMP180.");
 barometer.SoftReset();
 barometer.Initialize();
 }
 else
 { 
 Serial.println("No sensor found_BMP180");
 }



// definice I/O
 pinMode(L7, OUTPUT);
 pinMode(L8, OUTPUT);
 pinMode(S1, INPUT);
 pinMode(T2, INPUT);
 pinMode(T3, INPUT);
 pinMode(T9, INPUT);



//nacteni SD
 Serial.println("nacteni SD ...");

if (!SD.begin(chipSD)) {
 Serial.println("err SD nacteni");
 return;
 }



}

void loop() {

// smazani datalog souboru
S1stat = digitalRead(S1);
if (S1stat == HIGH) {
SD.remove("data_ard.log");
Serial.println("soubor data_ard.log byl smazan");
for (int x = 0; x < 40; x++) {
digitalWrite(L8, HIGH);
delay(20);
digitalWrite(L8, LOW);
delay(40);
}

dat1 = 0;
}

//progstat1
 digitalWrite(L7, HIGH);

//pocitani casu
 dat1 = dat1 + 1;
 dat2 = millis() / 1000;



// zapis na SD
 File datalog = SD.open("data_ard.log", FILE_WRITE);

// analog vstupy
double U1 = analogRead(1);
 
double U1V= U1*(1.0/106.0);

// data z teplotnich cidel
 sensor1.requestTemperatures();
 sensor2.requestTemperatures();
 sensor3.requestTemperatures();

double currentPressure = barometer.GetPressure();
 double altitude = barometer.GetAltitude(seaLevelPressure);


if (datalog) {
 digitalWrite(L8, HIGH);
 datalog.print(dat1); datalog.print(","); datalog.print(dat2); datalog.print(",");
 datalog.print(sensor1.getTempCByIndex(0)); datalog.print(",");
 datalog.print(sensor2.getTempCByIndex(0)); datalog.print(",");
 datalog.print(sensor3.getTempCByIndex(0)); datalog.print(",");

datalog.print(altitude);datalog.print(",");
 datalog.print(currentPressure); datalog.print(",");
 
 
datalog.print(U1V);
 
 datalog.println('/n');
 datalog.close();

// prodleni zapisu
 delay(wrtdelay / 2);

// progstat2

digitalWrite(L8, LOW);

// prodleni zapisu
 delay(wrtdelay / 2);



Serial.print(dat1); Serial.print(";"); Serial.print(dat2); Serial.print(";");



Serial.print(sensor1.getTempCByIndex(0)); Serial.print(";");
 Serial.print(sensor2.getTempCByIndex(0)); Serial.print(";");
 Serial.print(sensor3.getTempCByIndex(0)); Serial.print(";");

Serial.print(altitude);Serial.print(";");
 Serial.print(currentPressure);;Serial.print(";");


Serial.print(U1V);

Serial.println("");
 }



else {
 Serial.println("err SD zapis");
 digitalWrite(L8, HIGH);
 }



// konec smycky
}

>CLOSE<

 

Pressure sensor
BOSH BMP180
pressure range30 .. 110 kPa
supply3.6V (from arduino)
protocolI2C

Although the sensor range is from 30 kPa (+9000m), normally can operates below. At least to achieved altitude.

Nice advantage is communication via I2C protocol, which has digital output in Pa, but also calculated absolute altitude.

 

Temperature sensors
DALLAS DS18S20
range-55 .. +125 °C
supply5V (arduino)
protocolI2C

There are 3 temperature sensors used. 2 standard – on control board and on battery, one encapsulated sensor outside.

Supply is fed from 5V arduino output to sensor external pin directly, to communication link through 4.7k resistor.

 

GPS/GSM tracker
TK106
supply3.7 V
battery1200 mAh Li-ion

 

Gas

 

filling gasHydrogen 3.0
gas cylinder40 l
filling pressure150 bar
reduction valve output pressure0 .. 10 bar

It gives me more sense to use Hydrogen as filling gas, rather than Helium. It is cheaper and has got lower atomic number. Mind the open fire only.

During inflation output pressure was reduced slightly above the atmospheric, thus filling rate could be slow.

 

Mission

Trajectory precalculation

Can be easily done on the Wyoming university web site for trajectory forecast:

http://weather.uwyo.edu/upperair/balloon_traj.html

 

Weather conditions
air temperature33 °C
barometric pressure96970 Pa

 

Landing coordinates

Flight range was 109,5 km from take off point. Assumed calculated landing point was 26,5 km away, so I find

the precalculation quite accurate. Azimuth error was 13°0′.

 

Measured data
altitude at burstH_{max}=21597m
minimal pressurep_{min}=3030Pa
ascent ratev=345m/min
flight timeascending70min
descending 49min
total119min
data logger operation time184min
number of records4048

graph H,p = f (t)

graph H = f (T)

 

 Data postprocesing

Signal filtering and graph printing has been done in Matlab. Structure of log file is CSV.

Sensors, especially temperature sensors, give a peak nonreal value occasionally. Therefore 1-D median filter has been applied to suppress these singular values.

postprocesing m-file:

log_prnt.m

<OPEN>

clc; clear all;
% 1 2 3 4 5 6 7 8
% iterace, cas, T2(bat), T3(board), T9(out), H, p, Unap

Mp = csvread('DATA_ARD.LOG');

M = medfilt1(Mp,3);

figure(1)
[hAx,hLine1,hLine2]=plotyy(M(:,2),M(:,6),M(:,2),M(:,7)); grid on; xlabel('t [s]');
ylabel(hAx(1),'H [m]'); ylabel(hAx(2),'p [Pa]');
xlim(hAx(1),[0,8e3]); xlim(hAx(2),[0,8e3]);
ylim(hAx(1),[0,25e3]); ylim(hAx(2),[0,1e5]);
set(hAx(1),'YTick',[0:5e3:25e3]);set(hAx(2),'YTick',[0:2e4:1e5]);

figure(2)
plot(M(:,3),M(:,6),M(:,4),M(:,6),M(:,5),M(:,6));
xlabel('T[°]');ylabel('H [m]');
legend('battery','board','outside');
ylim([0,25e3]);
set(gca,'YTick',[0:5e3:25e3]);
grid on

>CLOSE<

 

Conclusion

Lower temperature above 10 km has been assumed. Regarding the International standard atmosphere model has been expected values around -50°C. The lowest measured temperature was -24°C. So There is a probability of measurement error of external temperature. The error could be caused by influencing the inside cubical temperature or warming the sensor by its internal resistance.

The landing area was fortunately open field with practically zero barriers, so the console with parachute could be clearly seen from longer distance. On the other hand, there was a quite big chance for the balloon to land in nearby full-grown corn field where would be really tricky to find it. For these purpose would be good to equip the console with some kind of sound generator to locate it easily.

On altitude course could be seen that the parachute, just before the landing, catches a thermals for a short time. At time 7000 s it lifts the parachute by 57m from 1443m to 1500m.

 


Comments

weather balloon \ project Faraday — 1 Comment

  1. Hello there,

    My name is Aly and I would like to know if you would have any interest to have your website here at g6.cz promoted as a resource on our blog alychidesign.com ?

    We are in the midst of updating our broken link resources to include current and up to date resources for our readers. Our resource links are manually approved allowing us to mark a link as a do-follow link as well
    .
    If you may be interested please in being included as a resource on our blog, please let me know.

    Thanks,
    Aly

Leave a Reply to Aly Chiman Cancel reply

Your email address will not be published.