+ All Categories
Home > Documents > TubeSat Flight Readiness Report - WordPress.com

TubeSat Flight Readiness Report - WordPress.com

Date post: 30-Jan-2023
Category:
Upload: khangminh22
View: 0 times
Download: 0 times
Share this document with a friend
265
RyeSat -TubeSat Payload Design Page: 1 CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014 This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use, reproduce, reference or distribute the information contained in this document without the permission of Ryerson SSL. All Rights Reserved. AER813: SPACE SYSTEMS DESIGN PROJECT DEPARTMENT OF AEROSPACE ENGINEERING RYERSON UNIVERSITY 350 VICTORIA ST. TORONTO, ONTARIO, M5B 2K3 TubeSat Flight Readiness Report Version: V3.0 Author: Alexandra Bellini Amer Choudhury Anushree Soni Abhishek Trivedi Graeme Klim Gurvinder Singh Ilion Iljazi Jordan Hill Kody Baum Luis Adrian Astudillo Ninab Alwarda Nathan Budd Santiago Galvis Shivang Patel Ziad El Shaboury Supervisor: Dr. Krishna Dev Kumar Primoz Cresnik Date: April 10, 2015
Transcript

RyeSat -TubeSat

Payload Design Page: 1

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

AER813: SPACE SYSTEMS DESIGN PROJECT

DEPARTMENT OF AEROSPACE ENGINEERING

RYERSON UNIVERSITY

350 VICTORIA ST. TORONTO, ONTARIO, M5B 2K3

TubeSat Flight Readiness Report

Version: V3.0

Author: Alexandra Bellini

Amer Choudhury

Anushree Soni

Abhishek Trivedi

Graeme Klim

Gurvinder Singh

Ilion Iljazi

Jordan Hill

Kody Baum

Luis Adrian Astudillo

Ninab Alwarda

Nathan Budd

Santiago Galvis

Shivang Patel

Ziad El Shaboury

Supervisor: Dr. Krishna Dev Kumar

Primoz Cresnik

Date: April 10, 2015

RyeSat -TubeSat

Payload Design Page: 2

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table of Contents List of Figures ............................................................................................................................................... 7

1 Introduction ......................................................................................................................................... 13

1.1 Simulation ................................................................................................................................... 13

1.2 Structures .................................................................................................................................... 14

1.2.1 Current Issues ...................................................................................................................... 14

1.2.2 Changes since CDR ............................................................................................................ 14

1.3 Hardware/Electronics .................................................................................................................. 16

1.3.1 Current Issues ...................................................................................................................... 16

1.3.2 Changes since CDR ............................................................................................................ 16

1.4 Software ...................................................................................................................................... 17

1.4.1 Challenges throughout the Year .......................................................................................... 17

2 System Overview ................................................................................................................................ 19

2.1 Simulation ................................................................................................................................... 19

2.1.1 N2 Diagram ......................................................................................................................... 19

2.1.2 Gantt Chart .......................................................................................................................... 20

2.1.3 Work Breakdown Structure ................................................................................................ 21

2.2 Structures .................................................................................................................................... 23

2.2.1 Gantt Chart .......................................................................................................................... 23

2.2.2 Work Breakdown Structure ................................................................................................ 24

2.2.3 System Interface .................................................................................................................. 25

2.2.4 Design Definitions .............................................................................................................. 26

2.3 Hardware/Electronics .................................................................................................................. 27

2.3.1 System Overview ................................................................................................................ 27

2.3.2 N2 Diagram ......................................................................................................................... 28

2.3.3 Gantt Chart .......................................................................................................................... 29

2.3.4 Work Breakdown Structure ................................................................................................ 30

2.3.5 System Interface .................................................................................................................. 31

2.4 Software ...................................................................................................................................... 32

RyeSat -TubeSat

Payload Design Page: 3

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.4.1 N2 Diagram ......................................................................................................................... 32

2.4.2 Gantt Chart .......................................................................................................................... 33

2.4.3 Work Breakdown Structure ................................................................................................ 34

3 Analysis............................................................................................................................................... 35

3.1 Simulation ................................................................................................................................... 35

3.1.1 Software .............................................................................................................................. 35

3.1.1.1 Orbit Determination and Simulation ............................................................................... 35

3.1.1.2 Attitude Simulation ......................................................................................................... 55

3.1.1.3 Power Generation ............................................................................................................ 66

3.1.1.4 Power Consumption ........................................................................................................ 71

3.1.2 Hardware ............................................................................................................................. 78

3.1.2.1 Attitude ........................................................................................................................... 78

3.1.3 Testing ................................................................................................................................. 83

3.2 Structures .................................................................................................................................... 85

3.2.1 Hardware ............................................................................................................................. 85

3.2.2 Testing ............................................................................................................................... 100

3.2.2.1 Vibration Testing (Sinusoidal) ...................................................................................... 100

3.2.2.2 Vibration Testing (Random) ......................................................................................... 108

3.2.2.3 Stress Analysis .............................................................................................................. 109

3.3 Hardware/Electronics ................................................................................................................ 110

3.3.1 Hardware ........................................................................................................................... 110

3.3.1.1 System Design Layout .................................................................................................. 110

3.3.1.2 System Design Details .................................................................................................. 111

3.3.1.3 PCB Schematics ............................................................................................................ 114

3.3.1.4 Payload Board Schematics ............................................................................................ 115

3.3.1.5 Payload Components..................................................................................................... 115

3.3.1.6 Assembled PCBs ........................................................................................................... 117

3.3.1.7 Assembling the PCB boards ......................................................................................... 122

3.3.1.8 System Integration ........................................................................................................ 123

RyeSat -TubeSat

Payload Design Page: 4

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.9 Mock-up Integration ..................................................................................................... 124

3.3.1.10 Hardware Testing ...................................................................................................... 126

3.3.1.11 Radio Communication Test....................................................................................... 127

3.3.1.12 Thermal Vacuum Test ............................................................................................... 128

3.3.1.13 Thermal Vacuum Test Procedure.............................................................................. 130

3.3.1.14 Design of the Thermal Vacuum Chamber ................................................................ 131

3.3.1.15 Thermal Vacuum Test Results .................................................................................. 137

3.4 Software .................................................................................................................................... 144

3.4.1 Satellite Software .............................................................................................................. 144

3.4.1.1 Function Design ............................................................................................................ 144

3.4.1.2 Testing and Results ....................................................................................................... 148

3.4.2 Ground Station Software ................................................................................................... 156

3.4.2.1 Receiving Data .............................................................................................................. 156

3.4.2.2 Function Design ............................................................................................................ 159

3.4.3 Hardware ........................................................................................................................... 172

3.4.4 Tests and Progress ............................................................................................................. 174

4 System Objectives ............................................................................................................................. 176

4.1 Simulation ................................................................................................................................. 176

4.2 Structures .................................................................................................................................. 176

4.3 Hardware/Electronics ................................................................................................................ 177

4.3.1 Payload .............................................................................................................................. 177

4.3.2 Electric Power Subsystem ................................................................................................. 178

4.4 Requirements Checklist ............................................................................................................ 179

5 Risk Management ............................................................................................................................. 188

5.1 Technical Risks - Structures ..................................................................................................... 188

5.2 Technical Risks – Hardware/Electronics .................................................................................. 191

5.3 Managerial Risks ...................................................................................................................... 193

6 Conclusions and Future Recommendations ...................................................................................... 197

6.1 Simulation ................................................................................................................................. 197

RyeSat -TubeSat

Payload Design Page: 5

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

6.1.1 Recommendations ............................................................................................................. 197

6.1.2 Conclusion ........................................................................................................................ 197

6.2 Structures .................................................................................................................................. 197

6.2.1 Recommendations ............................................................................................................. 197

6.2.2 Conclusions ....................................................................................................................... 198

6.3 Hardware/Electronics ................................................................................................................ 198

6.3.1 Recommendations ............................................................................................................. 198

6.3.2 Conclusion ........................................................................................................................ 198

6.4 Software .................................................................................................................................... 199

7 References ......................................................................................................................................... 200

8 Appendix A: Attitude Simulation MATLAB Code .......................................................................... 201

8.1 Attitude Dynamics .................................................................................................................... 201

8.2 Attitude of the Satellite ............................................................................................................. 204

8.3 Body Frame to Orbital Frame ................................................................................................... 208

8.4 Magnetic Field Disturbances .................................................................................................... 209

9 Appendix B: Mass Properties Working File ..................................................................................... 212

10 Appendix C: Arduino Code .......................................................................................................... 214

10.1 Main Code ................................................................................................................................. 214

10.2 Additional Functions ................................................................................................................. 221

11 Appendix D: MATLAB Code....................................................................................................... 226

11.1 CheckRadioBuffer .................................................................................................................... 226

11.2 Connect2Radio .......................................................................................................................... 227

11.3 IsRadioOpen ............................................................................................................................. 228

11.4 OpenRadio ................................................................................................................................ 229

11.5 RadioListen ............................................................................................................................... 230

11.6 RadioReceive ............................................................................................................................ 231

11.7 RadioReset ................................................................................................................................ 232

11.8 RadioSend ................................................................................................................................. 233

11.9 AddChecksum ........................................................................................................................... 234

RyeSat -TubeSat

Payload Design Page: 6

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.10 BitStuffing ............................................................................................................................. 235

11.11 BitUnstuffing ........................................................................................................................ 237

11.12 CheckChecksum.................................................................................................................... 239

11.13 CollectDataCommand ........................................................................................................... 240

11.14 CreateMessageStructure ........................................................................................................ 241

11.15 MakeG2SAndSaveTimestamps ............................................................................................ 242

11.16 NumberOfPacketsToRequest ................................................................................................ 244

11.17 ReadPacket ............................................................................................................................ 245

11.18 SendDataCommand .............................................................................................................. 249

11.19 CmdListAdd .......................................................................................................................... 251

11.20 CmdListChange .................................................................................................................... 252

11.21 CmdListCreate ...................................................................................................................... 253

11.22 CmdListInsert ....................................................................................................................... 254

11.23 CmdListRemove ................................................................................................................... 255

11.24 GetNewestCmdList ............................................................................................................... 256

11.25 SendCmdReceiveData .......................................................................................................... 257

11.26 AddEmptyDataRow .............................................................................................................. 260

11.27 GroundGUI ........................................................................................................................... 261

11.28 ReloadDataTable ................................................................................................................... 262

11.29 TableEditCallback ................................................................................................................. 263

11.30 TimestampFormat ................................................................................................................. 265

RyeSat -TubeSat

Payload Design Page: 7

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

List of Figures Figure 1: TubeSat rendering in LEO ........................................................................................................... 15 Figure 2: Simulation N2 Diagram ............................................................................................................... 19 Figure 3: Simulation Gantt Chart ................................................................................................................ 20 Figure 4: Simulation Work Breakdown Structure ...................................................................................... 21 Figure 5: Orbit Determination Work Breakdown Structure ....................................................................... 21 Figure 6: Attitide Determination/Simulation Work Breakdown Structure ................................................. 22 Figure 7: Power Budget Simulation Work Breakdown Structure ............................................................... 22 Figure 8: Structures Gantt Chart ................................................................................................................. 23 Figure 9: Structures Work Breakdown Structure ........................................................................................ 24 Figure 10: Product Structure Tree for the TubeSat (Rev_2) ....................................................................... 25 Figure 11: N2 Diagram for Software System ............................................................................................. 32 Figure 12: Software Gantt Chart ................................................................................................................. 33 Figure 13: Software Work Breakdown Structure ....................................................................................... 34 Figure 14: Best-case Scenario March-May 2016 RAAN = 92.5deg (Mar 1, 2016) ................................... 36 Figure 15: 1 Mar - 1 Apr 2016 Best-case Cumulative Sun ......................................................................... 37 Figure 16: 1 Mar - 15 Apr 2016 Best-case Cumulative Sun ....................................................................... 37 Figure 17: 1 Mar - 1 May 2016 Best-case Cumulative Sun ........................................................................ 38 Figure 18: 1 Mar - 1 May 2016 TubeSat Eclipse Times (RAAN 92.5 deg) ............................................... 38 Figure 19: Worst-case Scenario March-May 2016 RAAN = 182.5deg ...................................................... 39 Figure 20: 1 Mar - 1 Apr 2016 Worst-case Cumulative Sun ...................................................................... 40 Figure 21: 1 Mar - 15 Apr 2016 Worst-case Cumulative Sun ................................................................... 40 Figure 22: 1 Mar - 1 May 2016 Worst-case Cumulative Sun ..................................................................... 41 Figure 23: 1 Mar - 1 May 2016 TubeSat Eclipse Times (RAAN 182.5 deg) ............................................. 42 Figure 24: Best-case Scenario June-August 2016 RAAN = 175 deg ......................................................... 43 Figure 25: 1 Jun - 1 Jul 2016 Best-case Cumulative Sun ........................................................................... 44 Figure 26: 1 Jun - 15 Jul 2016 Best-case Cumulative Sun ......................................................................... 44 Figure 27: 1 Jun – 1 Aug 2016 Best-case Cumulative Sun ......................................................................... 45 Figure 28: 1 Jun - 1 Aug 2016 TubeSat Eclipse Times (RAAN 175 deg) .................................................. 46 Figure 29: Worst-case Scenario June-August 2016 RAAN = 265 deg ....................................................... 47 Figure 30: 1 Jun - 1 Jul 2016 Worst-case Cumulative Sun ......................................................................... 47 Figure 31: 1 Jun - 15 Jul 2016 Worst-case Cumulative Sun ...................................................................... 48 Figure 32: 1 Jun - 1 Aug 2016 Worst-case Cumulative Sun ....................................................................... 48 Figure 33: 1 Jun - 1 Aug 2016 TubeSat Eclipse Times (RAAN 265 deg) .................................................. 49 Figure 34: 1 Mar - 1 May 2016 TubeSat - Ryerson Access Times (RAAN 92.5 deg) ............................... 50 Figure 35: Average, Maximum and Minimum Access Times March-May 2016 (RAAN 92.5°) .............. 50 Figure 36: 1 Mar - 1 May 2016 TubeSat - Ryerson Access Times (RAAN 182.5 deg) ............................ 51 Figure 37: Average, Maximum and Minimum Access Times March-May 2016 (RAAN 182.5°) ............ 51 Figure 38: 1 Jun - 1 Aug 2016 TubeSat - Ryerson Access Times (RAAN 175 deg) ................................. 52 Figure 39: Average, Maximum and Minimum Access Times June-August 2016 (RAAN 175°) .............. 52 Figure 40: 1 Jun - 1 Aug 2016 TubeSat - Ryerson Access Times (RAAN 265 deg) ................................. 53 Figure 41: Average, Maximum and Minimum Access Times June-August 2016 (RAAN 265°) .............. 53 Figure 42: TubeSat Beaming Ground Station ............................................................................................. 54

RyeSat -TubeSat

Payload Design Page: 8

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 43: TubeSat Angular Velocity in Body Frame ................................................................................ 61 Figure 44: TubeSat Roll-Pitch-Yaw Profile ................................................................................................ 62 Figure 45: TubeSat Quaternion in Settled State .......................................................................................... 63 Figure 46: Simulated Ryerson TubeSat Orbit ............................................................................................. 64 Figure 47: TubeSat 3D Attitude Sphere ...................................................................................................... 65 Figure 48: Placement of Solar Cells on TubeSat (top view) ....................................................................... 66 Figure 49: Solar Cell Scenario #1 ............................................................................................................... 67 Figure 50: Solar Cell Scenario #2 ............................................................................................................... 68 Figure 51: TubeSat with 90° Pitch Orientation ........................................................................................... 69 Figure 52: TubeSat with θ Pitch Orientation .............................................................................................. 70 Figure 53: TubeSat Power Schematic ......................................................................................................... 75 Figure 54: Magnetic Field interaction ......................................................................................................... 78 Figure 55: Vector representation of the magnetic dipole and the magnetic field ....................................... 80 Figure 56: Battery Life during 8 Cycles of Thermal Vacuum Test ............................................................ 83 Figure 57: Battery Life (Voltage vs. Time) during Thermal Vacuum Cycle .............................................. 84 Figure 58: TubeSat Undressed model ......................................................................................................... 86 Figure 59: TubeSat Dressed CATIA V5 model .......................................................................................... 87 Figure 60: Current TubeSat Dressed CATIA V5 model, with body frame axis (top right) ........................ 88 Figure 61: TubeSat Dressed CATIA V5 model power board wiring ......................................................... 88 Figure 62: Coaxial antenna board connector cable and wires ..................................................................... 89 Figure 63: Micro controller connectors and wires ...................................................................................... 89 Figure 64: Micro-controller board wiring ................................................................................................... 90 Figure 65: Power board wiring ................................................................................................................... 90 Figure 66: Current TubeSat Dressed CATIA V5 model wiring ................................................................. 91 Figure 67 Antenna Board Top View ........................................................................................................... 92 Figure 68: Antenna Board Bottom View .................................................................................................... 92 Figure 69: Radio Board Bottom View ........................................................................................................ 93 Figure 70: Radio Board Bottom View ........................................................................................................ 93 Figure 71: Micro Controller Board Bottom View ...................................................................................... 94 Figure 72: Micro Controller Board Bottom View ...................................................................................... 94 Figure 73: Power Board Top View (Left) and Bottom View (Right) ......................................................... 95 Figure 74: Power Board Bottom View (Right) ........................................................................................... 95 Figure 75: Payload Board Top View (Left) and Bottom View (Right) ...................................................... 96 Figure 76: Current TubeSat Dressed CATIA V5 model with reference axis ............................................. 96 Figure 77: Current magnet holder (vertical configuration) ......................................................................... 97 Figure 78: Battery Holder with Battery inside ............................................................................................ 97 Figure 79: Current mock up without panels ................................................................................................ 98 Figure 80: Current mock up for vibration testing purposes ........................................................................ 99 Figure 81: Vibration bench (left) and shaker fixture (right) ..................................................................... 101 Figure 82: Horizontal vibration configuration .......................................................................................... 101 Figure 83: CAD model of Vibration Testing Fixture................................................................................ 102 Figure 84: Damaged TubeSat after first vibration testing ......................................................................... 104 Figure 85: TubeSat after second vibration test, 2 Octave/min .................................................................. 106 Figure 86: TubeSat being placed in the test fixture .................................................................................. 106

RyeSat -TubeSat

Payload Design Page: 9

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 87: TubeSat nested inside the test cylinder.................................................................................... 107 Figure 88: The TubeSat measuring in at 5.025 inch after the test, and before the test ............................. 107 Figure 89: CATIA V5 Stress plot for Battery holder ................................................................................ 109 Figure 90: System Design Layout ............................................................................................................. 110 Figure 91: PCB Schematics ...................................................................................................................... 114 Figure 92: Payload Board Schematics ...................................................................................................... 115 Figure 93: IMU Stick ................................................................................................................................ 115 Figure 94: Temperature Sensor ................................................................................................................. 116 Figure 95: Payload Camera ....................................................................................................................... 116 Figure 96: Photocell .................................................................................................................................. 117 Figure 97: Antenna Board (Top Side) ....................................................................................................... 117 Figure 98: Antenna Board (Bottom Side) ................................................................................................. 118 Figure 99: Radio Board (Top Side)........................................................................................................... 118 Figure 100: Radio Board (Bottom Side) ................................................................................................... 119 Figure 101: Power Management Board (Bottom Side)............................................................................. 119 Figure 102: Power Management Board (Tom Side) ................................................................................. 120 Figure 103: Microcontroller Board (Top Side) ......................................................................................... 120 Figure 104: Microcontroller Board (Bottom Side) ................................................................................... 121 Figure 105: Payload Board (Top Side) ..................................................................................................... 121 Figure 106: Payload Board (Bottom Side) ................................................................................................ 122 Figure 107: TubeSat Mock-up with working boards ................................................................................ 124 Figure 108: TubeSat Mock-up (Dressed) .................................................................................................. 125 Figure 109: TubeSat Mock-up (Dressed with the antennas) ..................................................................... 125 Figure 110: Voltage Testing post Outgassing Test ................................................................................... 126 Figure 111: Groundstation Setup (Test).................................................................................................... 127 Figure 112: Radio Communication from TubeSat to Groundstation (sent address packets seen on the

serial communication window) ......................................................................................................... 127 Figure 113: CAD model of the Test Chamber .......................................................................................... 131 Figure 114: Motor and Gear assembly within the Test Chamber ............................................................. 132 Figure 115: Test Chamber assembly with the TubeSat during Outgassing Test ...................................... 133 Figure 116: Insulation box for the dry ice ................................................................................................. 134 Figure 117: Vacuum valve connected to air supply .................................................................................. 135 Figure 118: Pressure achieved .................................................................................................................. 136 Figure 119: Test Equipment Assembly ..................................................................................................... 137 Figure 120: Heating Cycle ........................................................................................................................ 138 Figure 121: Temperature readings during the Heating Cycle (TEMP3-K represents the chamber

temperature) ...................................................................................................................................... 139 Figure 122: Cooling Cycle with dry ice .................................................................................................... 140 Figure 123: Temperature readings during the Cooling Cycle (TEMP3-K represents the chamber

temperature) ...................................................................................................................................... 141 Figure 124: Test Chamber after the Cooling Cycle going to Heating Cycle ............................................ 142 Figure 125: Temperature Cycle during the Thermal Vacuum Test (8 Cycles) ......................................... 143 Figure 126: Data Storage Illustration ........................................................................................................ 147 Figure 127: Bit Shifting Illustration .......................................................................................................... 148

RyeSat -TubeSat

Payload Design Page: 10

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 128: Raw Transmission of Image .................................................................................................. 152 Figure 129: Formatted Transmission of Image ......................................................................................... 152 Figure 130: Opening scope of Arduino after main code is uploaded........................................................ 153 Figure 131: Commands sent over serial and there outputs ....................................................................... 155 Figure 132: Hardware specification for payload ....................................................................................... 172 Figure 133: Pin layout for breadboard and payload .................................................................................. 173 Figure 134: Mass properties spread sheet ................................................................................................. 213

RyeSat -TubeSat

Payload Design Page: 11

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

List of Tables Table 1: Best and Worst-Case Scenarios for Orbit Simulation ................................................................... 35 Table 2: TubeSat Voltages and Currents .................................................................................................... 71 Table 3: TubeSat Power Consumed ............................................................................................................ 72 Table 4:Battery Properties .......................................................................................................................... 72 Table 5: Mission Assumptions .................................................................................................................... 73 Table 6: Duty Cycles .................................................................................................................................. 74 Table 7: Magnet Properties ......................................................................................................................... 80 Table 8: Hysteresis Properties .................................................................................................................... 82 Table 9: Vibration Testing Information .................................................................................................... 100 Table 10: The different frequency values to be tested [2] ........................................................................ 100 Table 11: Lateral Direction, First Vibration Test Results ......................................................................... 102 Table 12: Lateral Direction, Natural Frequencies Data for First Vibration Test ...................................... 103 Table 13: Lateral Direction, Second Vibration Test Results .................................................................... 105 Table 14: Lateral Direction, Natural Frequencies Data for Second Vibration Test .................................. 105 Table 15: Lateral Direction, Second Vibration Test Results .................................................................... 105 Table 16: Lateral Direction, Natural Frequencies Data for Second Vibration Test .................................. 105 Table 17: Random Vibration Testing Characteristics ............................................................................... 108 Table 18: Pin Connection for Systembus .................................................................................................. 111 Table 19: Arduino Commands .................................................................................................................. 144 Table 20: Function Profile (sensorBytes) ................................................................................................. 145 Table 21: Function Profile (sendMultiBytes) ........................................................................................... 145 Table 22: Function Profile (writeSensorBlock) ........................................................................................ 146 Table 23: Function Profile (sendPackets) ................................................................................................. 146 Table 24: Component Differences between Test and Actual Components .............................................. 149 Table 25: Data Acquisition Tests Results ................................................................................................. 150 Table 26: Data Packet Structure................................................................................................................ 158 Table 27: Packet Header Structure............................................................................................................ 158 Table 28: Packet Sensor Data Block Structure ......................................................................................... 158 Table 29: Function Profile (CheckRadioBuffer)....................................................................................... 159 Table 30: Function Profile (Connect2Radio) ............................................................................................ 160 Table 31: Function Profile (IsRadioOpen) ................................................................................................ 160 Table 32: Function Profile (OpenRadio) .................................................................................................. 160 Table 33: Function Profile (RadioListen) ................................................................................................. 161 Table 34: Function Profile (RadioReceive) .............................................................................................. 161 Table 35: FunctionProfile (RadioReset) ................................................................................................... 161 Table 36: Function Profile (RadioSend) ................................................................................................... 161 Table 37: Function Profile (AddChecksum) ............................................................................................. 162 Table 38: Function Profile (BitStuffing) ................................................................................................... 162 Table 39: Function Profile (BitUnstuffing) .............................................................................................. 162 Table 40: Function Profile (CheckChecksum) .......................................................................................... 163 Table 41: Function Profile (CollectDataCommand) ................................................................................. 163 Table 42: Function Profile (CreateMessageStructure) .............................................................................. 164

RyeSat -TubeSat

Payload Design Page: 12

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 43: Function Profile (MakeG2SAndSaveTimestamps) .................................................................. 165 Table 44: Function Profile (NumberOfPacketsToRequest) ...................................................................... 165 Table 45: Function Profile (ReadPacket) .................................................................................................. 166 Table 46: Function Profile (SendDataCommand)..................................................................................... 166 Table 47: Function Profile (CmdListAdd) ................................................................................................ 167 Table 48: Function Profile (CmdListChange)........................................................................................... 167 Table 49: Function Profile (CmdListCreate) ............................................................................................ 167 Table 50: Function Profile (CmdListInsert) .............................................................................................. 168 Table 51: Function Profile (CmdListRemove) ......................................................................................... 168 Table 52: Function Profile (GetNewestCmdList) ..................................................................................... 168 Table 53: Function Profile (SendCmdReceiveData) ................................................................................. 169 Table 54: Function Profile (AddEmptyDataRow) .................................................................................... 170 Table 55: Function Profile (GroundGUI) ................................................................................................. 170 Table 56: Function Profile (ReloadDataTable) ......................................................................................... 170 Table 57: Function Profile (TimestampFormat) ....................................................................................... 171 Table 58: Function Profile (TableEditCallback) ....................................................................................... 171 Table 59: Software Tests and Progress ..................................................................................................... 174 Table 60: Requirements Legend ............................................................................................................... 179 Table 61: TubeSat Requirements Checklist .............................................................................................. 179 Table 62: Model Risk Failure ................................................................................................................... 188 Table 63: Mock-up Failure ....................................................................................................................... 188 Table 64: Final TubeSat Assemble Failure ............................................................................................... 189 Table 65: Testing Failure .......................................................................................................................... 189 Table 66: Risk of Spacecraft Exploding ................................................................................................... 190 Table 67: Risk of Space Debris ................................................................................................................ 190 Table 68: Risk Matrix for Technical Risks ............................................................................................... 191 Table 69: Time Management Failure ........................................................................................................ 193 Table 70: Power Generation Miscalculation ............................................................................................. 194 Table 71: Placement in Wrong Orbit ........................................................................................................ 194 Table 72: Failure of Passive Attitude Control .......................................................................................... 195 Table 73: Miscalculations in Simulations ................................................................................................. 195 Table 74: Risk Matrix for Managerial Risks ............................................................................................ 196

RyeSat -TubeSat

Payload Design Page: 13

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

1 Introduction

1.1 Simulation The simulation team conducted the simulations for TubeSat’s orbit and attitude. The orbit analysis of the

TubeSat helped in determining the expected eclipse period, ground station accessibility, and orbit decay.

Whereas the attitude determination model was used to determine the internal orientation of the control

system, taking into consideration the damping effect of the passive attitude control system on-board and

the external disturbances acting on the satellite. A power budget simulation was conducted taking into

account the power consumption by the components on-board the TubeSat and power generation through

the solar panels and battery.

The TubeSat designed uses a passive attitude control system, using the spin-stabilization method. A passive

attitude control method will negate the need for onboard computers and functioning actuators; this is

advantageous as the TubeSat is a small satellite with a limited allowable mass. Two of the four primary

torques (aerodynamic disturbance, magnetic, gravity-gradient, solar-pressure) acting on a satellite

disturbance torques were taken into consideration in the MATLAB simulations of the TubeSat and are

summarized as follows:

Magnetic Torque

Determination of the magnetic torque require the knowledge of the magnetic field of the Earth

(which changes throughout the orbit), magnetic dipole within the satellite and the angular moment

that aligns the dipole with the magnetic field lines. (e.g. compass needle and how it always points

north regardless of direction).

Magnetic dipoles can occur within a spacecraft or satellite due to on-board electronics causing

unwanted disturbance torques, but to create stabilization counter torque is created by use of

permanent magnets and hysteresis rods.

Gravity Gradient Torque

Earth’s Gravity Gradient is a significant source of angular moments for small satellites in lower

earth orbit.

The gravity gradient torque is caused by the differences in the distance from earth to points all over

the satellite.

Earth’s gravity gradient changes the satellites orientation depending on the mass distribution of the

satellite. Mass that is closer to the earth experiences a higher gravitational attraction. Due to this

characteristic, the gravity gradient is used for attitude determination.

This gradient is used to stabilize the satellite in a fixed direction, i.e. along the z-axis of the body-

fixed reference frame.

RyeSat -TubeSat

Payload Design Page: 14

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

1.2 Structures The work performed by the structures team, which is responsible for assembly of the TubeSat, designing

CAD models of all the components, providing mass properties data, and ensuring appropriate testing is

performed prior to launch, will be detailed in this report. In order to progress with the team’s respective

responsibilities, a previous TubeSat and its documentation were analyzed as a reference for the

progression of our work, and used as a baseline product to build from. After careful analysis, proposed

changes and new ideas were implemented, thus a brand new design was developed. The rest of this

technical report will provide the information of the progress of the new design, the over structural system

and overview, the system requirements, and all testing results.

1.2.1 Current Issues

a. Physical integration of TubeSat not working and should be based on the 3D model in CATIA V5.

The issue can easily be resolved through use of the CATIA V5 models for mock-up integration,

and furthermore for the final product

b. The mass properties data was supplied to the attitude control and stabilization team on a rolling

basis and should be continually updated to increase fidelity of the final numbers approaching

launch

c. To complete the wire routing in the model, a final connectivity chart must be obtained, and team

member Graeme will finish the routing wire length calculations and supply the data to the

hardware team for integration purposes

d. The vibration test, to 100 Hz did not show any internal structure failure

1.2.2 Changes since CDR

a. Additional wire routing has been determined and designed in the CATIA model, with more to

come prior to completion

b. Complete mock-up has been partially assembled to the specs based on the high fidelity CATIA

V5 3D model, individual PCB to be updated by the hardware group (connector and PCB

locations) based on the CATIA V5 model

c. Fixture for the shaker has been designed and printed, in order to perform vibration testing

d. The test fixture is modular, and can be used in a vertical and horizontal configuration

e. Calculation of center of gravity has been determined, will be updated on an ongoing basis

RyeSat -TubeSat

Payload Design Page: 15

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 1: TubeSat rendering in LEO

RyeSat -TubeSat

Payload Design Page: 16

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

1.3 Hardware/Electronics The purpose of this report is to provide an update on the current electronic and payload integration

requirements and what work still needs to be completed in order to have a fully functional prototype and a

final design product built to meet the specified scheduled deadlines. Further, the scope of this document is

to aim to complete the TubeSat prototype testing and communicating of all electronic components on board

to ensure proper communication with the ground station in order to prepare to build the final product for

the set deadline.

1.3.1 Current Issues

Some current issues of the Electronics & Payload boards include:

a. The Solar panels are still on back order and are waiting to be shipped to Ryerson

b. The EMC test cannot be conducted without the appropriate facility

c. The LAUNCH version of the TubeSat will have to be integrated post university

examination period due to lack of time

1.3.2 Changes since CDR

a. Completed 8 cycles of Thermal Vacuum test.

b. Battery performance was determined using the Thermal Vacuum test.

c. Successful radio communication with the ground station and the TubeSat.

RyeSat -TubeSat

Payload Design Page: 17

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

1.4 Software This document outlines the TubeSat capstone project that involves creating a picosatellite. The software

section of the report will focus heavily on the software and communication between ground station and

the TubeSat. The software and communication is broken down into two sections which include the

Arduino software for the TubeSat and the Matlab software for the ground station. Each section will be

described in further detail in terms of structure, design details, system interactions, and risks involved.

This report will address the main code software by providing details on each function used and how it

works. Another key aspect is the ground station that will be responsible in translating the data we receive

from the Arduino TubeSat software so it is converted in readable data. Finally, difficulties and challenges

shall be addressed that occurred during the semester. Iterations and previous test builds will be addressed

with little detail.

1.4.1 Challenges throughout the Year

The hardest part for the software team was that they had to start from scratch. Before any designing and

programming were to be conducted, a clear mission and objectives had to be defined. There were many

documents and regulations that the TubeSat had to comply with which also resulted in the software’s

team window of operation to be narrowed. In addition, many physical constraints were discovered on the

hardware components provided. This also determined the limitations of precision and capability of the

TubeSat. The camera was a huge part of the mission and tests were performed to understand its

fundamental functionality. After the camera was functionally determined, the rest of the Arduino design

became clear. The Camera’s main issues were picture quality, storing capabilities, and transferring the

massive data unit over radio. The inclusion of adding an EEPROM memory unit made the programming a

lot more difficult. This is because the original camera stored data using an S.D card which resulted in

modifying the camera code such that it could work with an EEPROM. Defining regulations and testing

the physical capabilities of the hardware system consumed a large portion of the first semester’s time

allowance.

The largest issue with the second semester revolves around not having the actual radio during the

semester. Software team had to use several different types of radios to test data transmission. This also

leads to the other main issue for all the teams. Another issue was that each team needed the TubeSat to

test and make modifications for the final integration process. There was usually only 1 main TubeSat

available to perform tests on which lead to time being wasted because not enough resources were present

to effectively maximize lab periods.

The other issue were delays. Whenever the radio, or hardware components were required, there was

always a delay before receiving these components. This also results in problems regarding the project

progress being halted.

RyeSat -TubeSat

Payload Design Page: 18

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

The main issue for the software team is the excessive time put into developing the code and the trivial

iterations performed. Sometimes many hours were used to test the system to understand it and its

functionality but these small details cannot be seen as milestones but rather as debugging. Debugging is

time draining and there is way to prove it per issue. Different versions of the code were saved per lab

session to indicate modifications and improvements.

The final issue would revolve around management of the entire project. A mediator between the groups

should have been decided and they would inform each other in advance of upcoming issues and problems

so they could be addressed before lab periods instead of during them so progress could have been more

efficient.

RyeSat -TubeSat

Payload Design Page: 19

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2 System Overview

2.1 Simulation

2.1.1 N2 Diagram

Figure 2: Simulation N2 Diagram

RyeSat -TubeSat

Payload Design Page: 20

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.1.2 Gantt Chart

Figure 3: Simulation Gantt Chart

RyeSat -TubeSat

Payload Design Page: 21

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.1.3 Work Breakdown Structure

Figure 4: Simulation Work Breakdown Structure

Figure 5: Orbit Determination Work Breakdown Structure

RyeSat -TubeSat

Payload Design Page: 22

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 6: Attitide Determination/Simulation Work Breakdown Structure

Figure 7: Power Budget Simulation Work Breakdown Structure

RyeSat -TubeSat

Payload Design Page: 23

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.2 Structures

2.2.1 Gantt Chart

Figure 8: Structures Gantt Chart

RyeSat -TubeSat

Payload Design Page: 24

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.2.2 Work Breakdown Structure

Figure 9: Structures Work Breakdown Structure

RyeSat -TubeSat

Payload Design Page: 25

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.2.3 System Interface

Figure 10: Product Structure Tree for the TubeSat (Rev_2)

- The above designed product structure is to represent the way in which the various assemblies fit together

and interact with one another

- The TubeSat product structure is organized in levels of detail based on the structural hierarchy

- The product structure allows for easy to manage any configuration changes

- Assists in developing an assembly sequence

- Configuration control is the key to any projects success, thus it was appropriate to apply this method

RyeSat -TubeSat

Payload Design Page: 26

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.2.4 Design Definitions

TubeSat Dressed

The TubeSat Dressed model includes the TubeSat Undressed model plus the addition of all final non-ridged

items included within the Electrical Wiring Interconnection System (EWIS) Assembly.

TubeSat Undressed

The TubeSat Undressed model is comprised of the exterior structure (Solar PCBs, aluminum strips, STD

hardware) and interior components (PCB boards, spacers, STD hardware, battery, camera, payload, etc.).

Electrical Wiring Interconnection System (EWIS)

The Electrical Wiring Interconnection System is comprised of all the internal antenna coaxial cables and

wire connections between the various PCBs that transfer power and data throughout the TubeSat.

TubeSat Mock-up

The TubeSat Mock-up is a testing bed for new ideas and wire routing to optimize space and practice

integration procedures before assembling the final product.

Part Numbering Scheme

##-####-##

## - Assembly/Component Level

# - (1 Dressed, 2 Undressed, 3 EWIS)

### - Individual Part Identification Number

## - Revision number of the part (ie. Rev 1 (01), Rev 2 (02), etc.)

Example:

40-2101-01 – Corresponds to a level 4 part (40, lowest), will assemble into the undressed assembly (2),

falls under the subassembly “Antenna PCB” (1), carries the first part number in that subassembly (01), and

is at revision 1 (01).

Note: Color coding is just for illustration purposes, we would write 40-2101-01.

RyeSat -TubeSat

Payload Design Page: 27

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.3 Hardware/Electronics

2.3.1 System Overview

RyeSat -TubeSat

Payload Design Page: 28

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.3.2 N2 Diagram

RyeSat -TubeSat

Payload Design Page: 29

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.3.3 Gantt Chart

RyeSat -TubeSat

Payload Design Page: 30

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.3.4 Work Breakdown Structure

RyeSat -TubeSat

Payload Design Page: 31

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.3.5 System Interface

RyeSat -TubeSat

Payload Design Page: 32

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.4 Software

2.4.1 N2 Diagram

Figure 11: N2 Diagram for Software System

RyeSat -TubeSat

Payload Design Page: 33

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.4.2 Gantt Chart

Figure 12: Software Gantt Chart

RyeSat -TubeSat

Payload Design Page: 34

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2.4.3 Work Breakdown Structure

Figure 13: Software Work Breakdown Structure

RyeSat -TubeSat

Payload Design Page: 35

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3 Analysis

3.1 Simulation

3.1.1 Software

3.1.1.1 Orbit Determination and Simulation

All orbital design was done using AGI’s STK software, which provides a model and simulation of the

desired orbit. STK not only models the orbit using an accurate Earth model, but it also provides line of

sight information, satellite eclipse frequency and duration, and ground station access periods, among other

features.

The TubeSat’s orbit will be a circular, polar (90° inclination) orbit with an altitude of 310 km (and

therefore a semi-major axis value of 6688.14km). Using the value of the semi-major axis and the mass of

the Earth, the period of the orbit was calculated to be 90.75 minutes. it was found that the orbit would

instead be polar, and the likely launch date would be in either March or June of 2016. The launch

provider could give no further information as to the right ascension of ascending node value, or the date

and time of the launch. Therefore, simulations of polar orbits were created for both March and June 2016

launches for best and worst-case scenarios (with respect to eclipse time and frequency).

Best-case scenarios were assumed to be RAAN values where the eclipse duration and frequency were

minimized and the TubeSat could get the maximum amount of sunlight, and therefore generate the

maximum amount of power. It was important to consider that the value of the RAAN would change

throughout the orbit, due to the fact that a polar orbit is not sun-synchronous. Worst-case scenarios were

assumed to be RAAN values where the TubeSat received the least amount of sun. All RAAN values

were found in STK, and are summarized in the table below.

Table 1: Best and Worst-Case Scenarios for Orbit Simulation

Launch Date RAAN value (°)

March 2016 Best-case 92.5

Worst-case 182.5

June 2016 Best-case 175

Worst-case 265

RyeSat -TubeSat

Payload Design Page: 36

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Below, all four cases summarized in the table are evaluated in terms of cumulative sunlight, TubeSat

access to the ground station (assumed to be at Ryerson), and eclipse duration. Because the lifetime of the

satellite is not known exactly, cumulative sunlight was recorded for mission lifetimes of 1 month, 1.5

months, and 2 months.

3.1.1.1.1 March 2016 Launch

Best-Case Scenario (RAAN 92.5°)

Figure 14 shows the orbit March 1, 2016. The yellow color of the orbit trajectory indicates that there is

no eclipse period on this date. However, this changes because the RAAN value of the orbit changes as

the orbit is not sun-synchronous.

Figure 14: Best-case Scenario March-May 2016 RAAN = 92.5deg (Mar 1, 2016)

Figure 15-Figure 17 demonstrate the effects of a changing RAAN value. Should the TubeSat deorbit

within a month, there will be no eclipse periods at all (save for two short lunar eclipses), however as the

lifetime of the TubeSat increases, the eclipse duration does as well.

RyeSat -TubeSat

Payload Design Page: 37

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 15: 1 Mar - 1 Apr 2016 Best-case Cumulative Sun

Figure 16: 1 Mar - 15 Apr 2016 Best-case Cumulative Sun

RyeSat -TubeSat

Payload Design Page: 38

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 17: 1 Mar - 1 May 2016 Best-case Cumulative Sun

The following figure demonstrates the change in the eclipse times over the lifetime of the TubeSat in this

orbit. The two outlying points in March are two lunar eclipses.

Figure 18: 1 Mar - 1 May 2016 TubeSat Eclipse Times (RAAN 92.5 deg)

RyeSat -TubeSat

Payload Design Page: 39

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Worst-Case Scenario (RAAN 182.5°)

Figure 19 shows the worst-case scenario for a launch in March. It can be seen that a significant portion of

the TubeSat’s orbit is in eclipse (shown in red in the Figure). As can been see in Figure 20-Figure 22

below, the TubeSat will spend approximately 40% of its mission lifetime in eclipse if it is launched into

this orbit in March. This will significantly change the amount of power that the TubeSat will be able to

generate.

Figure 19: Worst-case Scenario March-May 2016 RAAN = 182.5deg

RyeSat -TubeSat

Payload Design Page: 40

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 20: 1 Mar - 1 Apr 2016 Worst-case Cumulative Sun

Figure 21: 1 Mar - 15 Apr 2016 Worst-case Cumulative Sun

RyeSat -TubeSat

Payload Design Page: 41

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 22: 1 Mar - 1 May 2016 Worst-case Cumulative Sun

In this case, the movement of the RAAN of the orbit causes the TubeSat to receive more sunlight the

longer it stays in orbit. Figure 23 demonstrates the change in the eclipse duration of the satellite.

RyeSat -TubeSat

Payload Design Page: 42

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 23: 1 Mar - 1 May 2016 TubeSat Eclipse Times (RAAN 182.5 deg)

RyeSat -TubeSat

Payload Design Page: 43

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.1.1.1.2 June 2016 Launch

Best-Case Scenario (RAAN 175°)

Finding the best-case scenario for a June launch was much more difficult as, due to the inclination of the

Earth, there was no orientation that eliminated eclipse. A RAAN of 175° produced an orbit with the least

amount of eclipse. That orbit is shown in Figure 24.

Figure 24: Best-case Scenario June-August 2016 RAAN = 175 deg

Similar to the best-case scenario for a March launch, the shorter the mission life of the TubeSat, the

higher percentage of time it will spend out of eclipse. However, even with a mission life of one month,

the TubeSat will still spend almost a quarter of its lifetime in eclipse. From this information alone, it can

be concluded that it would be advantageous for the TubeSat to be launched in March 2016 instead of

June.

RyeSat -TubeSat

Payload Design Page: 44

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 25: 1 Jun - 1 Jul 2016 Best-case Cumulative Sun

Figure 26: 1 Jun - 15 Jul 2016 Best-case Cumulative Sun

RyeSat -TubeSat

Payload Design Page: 45

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 27: 1 Jun – 1 Aug 2016 Best-case Cumulative Sun

The change in eclipse duration throughout the mission lifetime is shown in the figure below.

RyeSat -TubeSat

Payload Design Page: 46

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 28: 1 Jun - 1 Aug 2016 TubeSat Eclipse Times (RAAN 175 deg)

\

Worst-Case Scenario (RAAN 265°)

By adding 90° to the best case scenario, the worst-case scenario was determined to be at a RAAN of 265°,

shown below. Like the worst-case scenario in March, the TubeSat will spend approximately 40% of its

lifetime in eclipse as shown in Figure 30 through Figure 32– this is likely the maximum amount of eclipse

that can occur for this particular orbit, no matter the orientation.

RyeSat -TubeSat

Payload Design Page: 47

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 29: Worst-case Scenario June-August 2016 RAAN = 265 deg

Figure 30: 1 Jun - 1 Jul 2016 Worst-case Cumulative Sun

RyeSat -TubeSat

Payload Design Page: 48

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 31: 1 Jun - 15 Jul 2016 Worst-case Cumulative Sun

Figure 32: 1 Jun - 1 Aug 2016 Worst-case Cumulative Sun

RyeSat -TubeSat

Payload Design Page: 49

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

The change in eclipse times throughout the mission life is shown below.

Figure 33: 1 Jun - 1 Aug 2016 TubeSat Eclipse Times (RAAN 265 deg)

3.1.1.1.3 TubeSat to Ryerson Access

Despite the changes in orientation of the orbit, the amount of access the TubeSat will have to the ground

station at Ryerson University will not alter very much overall. Due to the short period of the orbit, the

TubeSat will circle the earth multiple times a day and will come into contact with Ryerson at least once a

day, sometimes multiple times a day, for varying amounts of time. However, because the range of the

receiver and the altitude of the orbit are constant no matter the RAAN of the orbit, the maximum amount

of contact time is the same. The orientation of the orbit will change only what time on a particular day

the ground station will have contact with the TubeSat. The figures below show the access times for the

four orbits considered above as well as the weekly average, maximum, and minimum access times. It can

be seen that the maximum amount of time the TubeSat can contact the ground station is relatively

constant in all four scenarios.

RyeSat -TubeSat

Payload Design Page: 50

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 34: 1 Mar - 1 May 2016 TubeSat - Ryerson Access Times (RAAN 92.5 deg)

Figure 35: Average, Maximum and Minimum Access Times March-May 2016 (RAAN 92.5°)

RyeSat -TubeSat

Payload Design Page: 51

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 36: 1 Mar - 1 May 2016 TubeSat - Ryerson Access Times (RAAN 182.5 deg)

Figure 37: Average, Maximum and Minimum Access Times March-May 2016 (RAAN 182.5°)

RyeSat -TubeSat

Payload Design Page: 52

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 38: 1 Jun - 1 Aug 2016 TubeSat - Ryerson Access Times (RAAN 175 deg)

Figure 39: Average, Maximum and Minimum Access Times June-August 2016 (RAAN 175°)

RyeSat -TubeSat

Payload Design Page: 53

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 40: 1 Jun - 1 Aug 2016 TubeSat - Ryerson Access Times (RAAN 265 deg)

Figure 41: Average, Maximum and Minimum Access Times June-August 2016 (RAAN 265°)

The following figure displays the TubeSat over top of, and communicating with the ground station:

RyeSat -TubeSat

Payload Design Page: 54

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 42: TubeSat Beaming Ground Station

RyeSat -TubeSat

Payload Design Page: 55

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.1.1.2 Attitude Simulation

Attitude refers to the angular orientation of a defined body-fixed coordinate frame with respect to

a separately defined external frame (in this case Earth’s inertial frame).

Attitude determination and control is typically one of the major sub-systems of a space vehicle,

which quite often determines satellite design and component orientation.

Passive attitude stabilization is chosen for TubeSat’s attitude control, as it uses spacecraft

dynamics to put the spacecraft into a naturally stable equilibrium. This is done through gravity-

gradient stabilization.

Gravity-gradient stabilization uses the gravitational field of the Earth to keep the

satellite oriented in a way so that it points towards the Earth.

Gravity-gradient stabilization takes advantage of the effect of gravity with increasing

altitude, by placement of the maximum mass end closer to the Earth.

3.1.1.2.1 Attitude Determination and Control Theory

3.1.1.2.1.1 Reference Frames

In order to determine the attitude of the TubeSat accurately, it is essential to determine the various

reference frames that are needed to be taken into consideration and construct a method to from one frame

of reference to another. The four important reference frames are:

1. Earth-centered inertial frame – it is also referred to as the celestial coordinates, with [3],

- X-axis is in the vernal equinox direction

- Z-axis is the Earth’s rotation axis and is perpendicular to the equatorial plane

- Y-axis is in the equatorial direction

2. Earth centered Earth-fixed frame – also known as the perifocal frame, where the frame is

determined in i-j-k [3]:

- i axis is in the periapsis direction

- k axis is perpendicular to the orbital plane

- j axis is in the orbital plane

3. Orbital Frame – which is same as the roll-pitch- yaw frame and is denoted using “O” unit

vector [3]:

- O2 axis is in the orbital anti-normal direction

- O3 is in the nadir direction

- O1 is in the velocity vector direction of the orbit

RyeSat -TubeSat

Payload Design Page: 56

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

4.Body-fixed frame – represented by “b” unit vector [3]:

- b2 axis is in the anti-normal direction

- b3 is in the nadir direction

- b1 is in the velocity vector direction, which is perpendicular to the top surface of the

satellite

3.1.1.2.1.2 Rotation Matrices

In order to transform from one frame to the other, rotation matrices are used, which is defined as a

rotation matrix around the z-axis of the about the Earth-centered inertial frame, which transforms inertial

frame to Earth-centered fixed frame. This time-varying rotation matrix is as follows,

𝑐𝑧 = [𝑐𝑜𝑠𝜃 𝑠𝑖𝑛𝜃 0−𝑠𝑖𝑛𝜃 𝑐𝑜𝑠𝜃 0

0 0 1]

3.1.1.2.2 Kinematics and Dynamics: Attitude Equations

3.1.1.2.2.1 Simplification and Assumptions:

In order to determine and model the following attitude equations, some assumptions were made to

simplify the complexity of the mathematics involved. Some of the considerable assumptions are:

- Aerodynamic disturbance was not considered in the mathematical MATLAB model

- Simplified models of the torques generated by the permanent magnets and the hysteresis

rods

Quaternion for transformation [1]

𝑞 = [

𝜀

𝜂]

(1)

𝑤ℎ𝑒𝑟𝑒,

𝜀 = [

𝜀1𝜀2

𝜀3

] , 𝜂

𝑞𝑇𝑞 = 1 = 𝜀12 + 𝜀2

2 + 𝜀32 𝜂 (2)

𝐴𝑛𝑔𝑢𝑙𝑎𝑟 𝑣𝑒𝑙𝑜𝑐𝑖𝑡𝑦,

RyeSat -TubeSat

Payload Design Page: 57

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

𝜔 = [

𝜔1

𝜔2

𝜔3

] (3)

𝐴𝑡𝑡𝑖𝑡𝑢𝑑𝑒 𝐾𝑖𝑛𝑒𝑚𝑎𝑡𝑖𝑐𝑠 𝐸𝑞𝑢𝑎𝑡𝑖𝑜𝑛𝑠:

𝜀 =

1

2 (𝜀𝑥 + 𝜂1)𝜔 (4)

�� = −

1

2 𝜀𝑇𝜔 (5)

𝑤ℎ𝑒𝑟𝑒,

1 = [1 0 00 1 00 0 1

] 𝑎𝑛𝑑 𝜀𝑥 = [

0 −𝜀3 𝜀2

𝜀3 0 𝜀1−𝜀2 𝜀1 0

]

𝐷𝑦𝑛𝑎𝑚𝑖𝑐𝑠 𝐴𝑛𝑎𝑙𝑦𝑠𝑖𝑠 𝐸𝑞𝑢𝑎𝑡𝑖𝑜𝑛𝑠:

𝐼 �� = −𝜔𝑥 𝐼 𝜔 + 𝜏 (6)

𝑤ℎ𝑒𝑟𝑒,

𝑇𝑜𝑟𝑞𝑢𝑒, 𝜏 = [

𝜏𝑥

𝜏𝑦

𝜏𝑧

] 𝑎𝑛𝑑 𝐼𝑛𝑒𝑟𝑖𝑎, 𝐼 = [

𝐼𝑥𝑥 𝐼𝑥𝑦 𝐼𝑥𝑧

𝐼𝑥𝑦 𝐼𝑦𝑦 𝐼𝑦𝑧

𝐼𝑥𝑧 𝐼𝑦𝑧 𝐼𝑧𝑧

]

𝑤ℎ𝑒𝑟𝑒,

𝐼𝑥𝑦 = 𝐼𝑥𝑧 = 𝐼𝑦𝑧 = 0 (7)

𝐶𝑜𝑚𝑏𝑖𝑛𝑖𝑛𝑔 𝐸𝑞𝑢𝑎𝑡𝑖𝑜𝑛𝑠 (3), (4), 𝑎𝑛𝑑 (5) , 𝑔𝑖𝑣𝑒𝑠:

𝑥 = [

𝜀𝜂𝜔

] = [𝑞

𝜔] (8)

𝑎𝑛𝑑,

�� = [��

��] = [

𝜀

����

] =

[ 1

2 (𝜀𝑥 + 𝜂1)𝜔

−1

2 𝜀𝑇𝜔

�� ]

(9)

RyeSat -TubeSat

Payload Design Page: 58

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

𝑪𝒐𝒏𝒗𝒆𝒓𝒕𝒊𝒏𝒈 𝒇𝒓𝒐𝒎 𝑰𝒏𝒆𝒓𝒕𝒊𝒂𝒍 𝒇𝒓𝒂𝒎 𝒕𝒐 𝒐𝒓𝒃𝒊𝒕𝒂𝒍 𝒇𝒓𝒂𝒎𝒆:

𝑧𝑜 =

𝑟

|𝑟 | (10)

𝑦𝑜 =

− 𝑟 × 𝑣

|𝑟 × 𝑣 | (11)

𝑥𝑜 = 𝑦𝑜 × 𝑧𝑜 (12)

𝑂𝑟𝑏𝑖𝑡𝑎𝑙 𝑝𝑟𝑜𝑝𝑔𝑎𝑡𝑖𝑜𝑛: 𝑟 = 𝐹 𝐼𝑇𝑟 , 𝑎𝑛𝑑 𝑣 = 𝐹 𝐼

𝑇𝑣

𝑧𝑜 = 𝐹 𝐼𝑇

𝑟

‖𝑟‖= 𝐹 𝐼

𝑇𝑧𝑂𝐼 (13)

𝑦𝑜 = 𝐹 𝐼

𝑇𝑣 × 𝑟

‖𝑣 × 𝑟‖= 𝐹 𝐼

𝑇𝑦𝑂𝐼 (14)

𝑥𝑜 = 𝐹 𝐼𝑇𝑦𝑂𝐼 × 𝑧𝑂𝐼 = 𝐹 𝐼

𝑇𝑥𝑂𝐼 (15)

𝑁𝑜𝑤,

𝐶𝐼𝑂 = [𝑥𝑂𝐼 𝑦𝑂𝐼 𝑧𝑂𝐼]

𝐶𝑂𝐼 = [𝑥𝑂𝐼 𝑦𝑂𝐼 𝑧𝑂𝐼]𝑇 (16)

𝐼𝑛𝑒𝑟𝑡𝑖𝑎𝑙 𝑎𝑡𝑡𝑖𝑡𝑢𝑑𝑒 𝑖𝑠 𝐶𝑏𝐼

𝐴𝑡𝑡𝑖𝑡𝑢𝑑𝑒 𝑟𝑒𝑙𝑎𝑡𝑖𝑣𝑒 𝑡𝑜 𝐹𝑜 𝑖𝑠 𝐶𝑏0

𝐵𝑢𝑡,

𝐶𝑏𝑜 = 𝐶𝑏𝐼 𝐶𝐼𝑜 = 𝐶𝑏𝐼 [𝑥𝑂𝐼 𝑦𝑂𝐼 𝑧𝑂𝐼]

𝜔𝑏𝑜 𝑖𝑠 𝑡ℎ𝑒 𝑎𝑛𝑔𝑢𝑙𝑎𝑟𝑙𝑎𝑟 𝑣𝑒𝑙𝑜𝑐𝑖𝑡𝑦 𝑟𝑒𝑙𝑎𝑡𝑖𝑣𝑒 𝑡𝑜 𝑓𝑟𝑎𝑚𝑒, 𝐹𝑜

𝜔𝑏𝑜 = 𝜔𝑏𝐼 − 𝜔𝑜𝐼

𝑠𝑖𝑛𝑐𝑒,

𝜔𝑏𝐼 = 𝐹𝑏𝑇 𝜔𝑏𝐼 , 𝜔𝑏𝑜 = 𝐹𝑏

𝑇 𝜔𝑏𝑜 𝑎𝑛𝑑 𝜔𝑜𝐼 = 𝐹𝑜𝑇 𝜔𝑜𝐼 = 𝐹𝑏

𝑇 𝐶𝑏𝑜𝜔𝑜𝐼

→ 𝜔𝑏𝑜 = 𝜔𝑏𝐼 − 𝐶𝑏𝑜𝜔𝑜𝐼 (17)

𝜔𝑂𝐼 𝑖𝑠 𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑒𝑑 𝑎𝑠 𝑓𝑜𝑙𝑙𝑜𝑤𝑠:

𝑔𝑒𝑛𝑒𝑟𝑎𝑙𝑙𝑦,

��𝑜𝐼 = −𝜔𝑜𝐼𝑥 𝐶𝑜𝐼 (18)

RyeSat -TubeSat

Payload Design Page: 59

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

→ 𝜔𝑜𝐼𝑥 = −��𝑜𝐼𝐶𝑜𝐼

𝑇 (19)

��𝑜𝐼 = ��𝐼𝑜𝑇 = [��𝑜𝐼 ��𝑜𝐼 ��𝑜𝐼] (20)

𝑤ℎ𝑒𝑟𝑒,

��𝑜𝐼 = ��𝑜𝐼 × 𝑧𝑜𝐼 + 𝑦𝑜𝐼

× ��𝑜𝐼

(21)

𝐷𝑒𝑟𝑖𝑣𝑒𝑑 𝑓𝑖𝑛𝑎𝑙 𝑒𝑥𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛𝑠 𝑓𝑜𝑟 ��𝑜𝐼 𝑎𝑛𝑑 ��𝑜𝐼 𝑎𝑟𝑒:

��𝑜𝐼

= −𝑟 × 𝑎𝑝

‖𝑟 × 𝑣‖

+ [((𝑟 × 𝑣)(𝑟 × 𝑣)

𝑇(𝑟 × 𝑎𝑝)

‖𝑟 × 𝑣‖3 )]

(22)

��𝑜𝐼 = (1 −

𝑟 𝑟𝑇

‖𝑟‖)

𝑣

‖𝑟‖ (23)

𝑆𝑢𝑏𝑠𝑡𝑖𝑡𝑢𝑡𝑖𝑛𝑔 𝑡ℎ𝑒 𝑒𝑥𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛𝑠 𝑖𝑛 𝐸𝑞𝑢𝑎𝑡𝑖𝑜𝑛 (19), 𝑟𝑒𝑠𝑢𝑙𝑡𝑠 𝑖𝑛 𝑎 3 × 3 𝑚𝑎𝑡𝑟𝑖𝑥 𝑓𝑜𝑟 −

𝜔𝑜𝐼𝑥 , 𝑤ℎ𝑖𝑐ℎ 𝑖𝑠 𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒𝑑 𝑖𝑛 𝑡ℎ𝑒 𝑓𝑜𝑙𝑙𝑜𝑤𝑖𝑛𝑔 𝑓𝑜𝑟𝑚:

𝜔𝑜𝐼𝑥 = [

0 𝜔𝑧,𝑜𝐼 −𝜔𝑦,𝑜𝐼

−𝜔𝑧,𝑜𝐼 0 𝜔𝑥,𝑜𝐼

𝜔𝑦,𝑜𝐼 −𝜔𝑥,𝑜𝐼 0] (24)

𝑇𝑒𝑟𝑚𝑠 𝑎𝑟𝑒 𝑐𝑜𝑚𝑝𝑎𝑟𝑒𝑑 𝑓𝑟𝑜𝑚 𝑡ℎ𝑒 𝑎𝑏𝑜𝑣𝑒 𝑚𝑎𝑡𝑟𝑖𝑥 𝑡𝑜 𝑜𝑏𝑡𝑎𝑖𝑛 𝑐𝑜𝑙𝑢𝑚𝑛 𝑣𝑒𝑐𝑡𝑜𝑟 𝑜𝑓 𝑡ℎ𝑒

𝑎𝑛𝑔𝑢𝑙𝑎𝑟 𝑣𝑒𝑙𝑜𝑐𝑖𝑡𝑦 𝑤𝑖𝑡ℎ 𝑟𝑒𝑠𝑝𝑒𝑐𝑡 𝑡𝑜 𝑡ℎ𝑒 𝑏𝑜𝑑𝑦 − 𝑓𝑖𝑥𝑒𝑑 𝑓𝑟𝑎𝑚𝑒.

𝑮𝒓𝒂𝒗𝒊𝒕𝒚 𝒈𝒓𝒂𝒅𝒊𝒆𝒏𝒕 𝒕𝒐𝒓𝒒𝒖𝒆:

𝑇𝑔 =

3𝜇

𝑅5 𝑅𝑏

𝑥 𝐼 𝑅𝑏 (25)

𝑇ℎ𝑖𝑠 𝑒𝑞𝑢𝑎𝑡𝑖𝑜𝑛 𝑖𝑠 𝑟𝑒𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒𝑑 𝑖𝑛 𝑠𝑝𝑎𝑐𝑒𝑐𝑟𝑎𝑓𝑡 𝑏𝑜𝑑𝑦 𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑒𝑠, 𝑤ℎ𝑒𝑟𝑒,

𝐼 = 𝐼𝑛𝑒𝑟𝑡𝑖𝑎 𝑀𝑎𝑡𝑟𝑖𝑥

𝜇 = 𝐸𝑎𝑟𝑡ℎ′𝑠𝑔𝑟𝑎𝑣𝑖𝑡𝑎𝑡𝑖𝑜𝑛𝑎𝑙 𝑝𝑎𝑟𝑎𝑚𝑒𝑡𝑒𝑟𝑠

𝑅𝑏 = 𝑂𝑟𝑏𝑖𝑡𝑎𝑙 𝑝𝑜𝑠𝑖𝑡𝑖𝑜𝑛 𝑖𝑛 𝑠𝑝𝑎𝑐𝑒𝑐𝑟𝑎𝑓𝑡 𝑏𝑜𝑑𝑦 𝑐𝑜𝑜𝑑𝑖𝑛𝑎𝑡𝑒𝑠

RyeSat -TubeSat

Payload Design Page: 60

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

𝑻𝒐𝒓𝒒𝒖𝒆 𝒅𝒖𝒆 𝒕𝒐 𝑬𝒂𝒓𝒕𝒉′𝒔 𝒎𝒂𝒈𝒏𝒆𝒕𝒊𝒄 𝒇𝒊𝒆𝒍𝒅:

𝑇ℎ𝑒 𝑒𝑓𝑓𝑒𝑐𝑡 𝑜𝑓 𝑡ℎ𝑒 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑖𝑒𝑙𝑑 𝑜𝑓 𝑡ℎ𝑒 𝑒𝑎𝑟𝑡ℎ 𝑜𝑛 𝑡ℎ𝑒 𝑜𝑟𝑖𝑒𝑛𝑡𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 𝑇𝑢𝑏𝑒𝑠𝑎𝑡

𝑖𝑠 𝑜𝑏𝑡𝑎𝑖𝑛𝑒𝑑 𝑓𝑟𝑜𝑚 𝑎 𝑠𝑡𝑎𝑛𝑑𝑎𝑟𝑑 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑖𝑒𝑙𝑑 𝑚𝑜𝑑𝑒𝑙 . 𝑇ℎ𝑒 𝑡𝑜𝑟𝑞𝑢𝑒 𝑐𝑟𝑒𝑎𝑡𝑒𝑑 𝑏𝑦 𝑡ℎ𝑒

𝑠𝑝𝑎𝑐𝑒𝑐𝑟𝑎𝑓𝑡 𝑑𝑢𝑒 𝑡𝑜𝑡ℎ𝑖𝑠 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑖𝑒𝑙𝑑 𝑖𝑠 𝑟𝑒𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒𝑑 𝑏𝑦,

𝑇𝑚 = 𝑚 × 𝑏𝑏

𝑤ℎ𝑒𝑟𝑒,

𝑚 = 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑑𝑖𝑝𝑜𝑙𝑒

𝑏𝑏 = 𝐸𝑎𝑟𝑡ℎ′𝑠 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑖𝑒𝑙𝑑 𝑖𝑛 𝑠𝑝𝑎𝑐𝑒𝑐𝑟𝑎𝑓𝑡 𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑒𝑠 = 𝐶𝑏𝐼𝑏𝐼 = 𝐶𝐼𝐸𝑏𝐸

RyeSat -TubeSat

Payload Design Page: 61

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.1.1.2.3 Results

The angular velocity of the satellite expressed in the body-fixed frame is illustrated in Figure 43 and the

angular velocity appears to stay below 1x 10-4.deg/s. Figure 44 and Figure 45 illustrate the roll-pitch-yaw

profile and the quaternion of the TubeSat in the settled state.

Figure 43: TubeSat Angular Velocity in Body Frame

RyeSat -TubeSat

Payload Design Page: 62

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 44: TubeSat Roll-Pitch-Yaw Profile

RyeSat -TubeSat

Payload Design Page: 63

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 45: TubeSat Quaternion in Settled State

RyeSat -TubeSat

Payload Design Page: 64

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 46: Simulated Ryerson TubeSat Orbit

RyeSat -TubeSat

Payload Design Page: 65

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.1.1.2.3.1 3D Attitude Sphere

Figure 47: TubeSat 3D Attitude Sphere

RyeSat -TubeSat

Payload Design Page: 66

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.1.1.3 Power Generation

A significant factor that will affect the ability of the TubeSat to generate power, will be the effective

functioning of the passive attitude control. Should the TubeSat end up oriented in such a way that the

solar cells do not have any contact with sunlight, the satellite will be unable to power its electronics.

According to the Assembly Guide (Interorbital Systems, 2009), the solar panels each contain 6 cells; 3 are

connected in series (strings) and two strings are placed in parallel. Based on this configuration, each

panel can produce a maximum voltage and current (and therefore a maximum power).

𝑉𝑚𝑎𝑥 = 3(2.19V) = 6.57V

𝐴𝑚𝑎𝑥 = 2(28mA) = 56mA

Figure 48 demonstrates the placement of the solar panels on the TubeSat (8 panels on alternate faces).

Figure 48: Placement of Solar Cells on TubeSat (top view)

Assuming the TubeSat assumes the correct orientation (with the camera pointing down towards the

Earth), it is possible to quickly analyze two orientations, to determine the best-case scenario for power

generation.

The solar panel will receive the most incident sunlight when it is oriented 90° to the incident sun vector.

In the first scenario, we put one of the solar panels normal to the incident sun. The shape of the TubeSat

RyeSat -TubeSat

Payload Design Page: 67

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

is a hexadecagon which has 22.5° between each side and there is therefore 45° between each panel. This

is shown in the figure below.

Figure 49: Solar Cell Scenario #1

The maximum power that can be produced from each panel is 367.9mW (each cell produces 61.32mW).

This means that even if there is more available sun (which there is in orbit) the panels will not increase

their power generation past 367.9mW. Using the below equations, it is possible to determine at which

angles to the incident sun the panels will produce their maximum power.

𝑃𝑜 = 𝐽𝑖𝑛𝑐𝐴𝑐𝑒𝑙𝑙𝜂𝑐𝑒𝑙𝑙 (26)

𝐽𝑖𝑛𝑐 = 𝐽𝑠𝑢𝑛 sin𝜑 (27)

Here, 𝐽𝑖𝑛𝑐 is the incident solar power per unit area, 𝐽𝑠𝑢𝑛 is the power per unit area of the sun in orbit, 𝐴𝑐𝑒𝑙𝑙

is the area of the solar cell, 𝜂𝑐𝑒𝑙𝑙 is the efficiency of the solar cell, 𝜑 is the angle between the panel plane

and the incident sun vector, and 𝑃𝑜 is the generated power by the solar cell. The area and efficiency of

each solar cell are given and therefore, to find the cut off 𝜑 value needed for the solar cell to generate its

maximum power,

𝜑 = sin−1

𝑃𝑜,𝑚𝑎𝑥

𝐴𝑐𝑒𝑙𝑙𝜂𝑐𝑒𝑙𝑙

𝐽𝑠𝑢𝑛

RyeSat -TubeSat

Payload Design Page: 68

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Solving this equation knowing that 𝐴𝑐𝑒𝑙𝑙 = 2.277cm2, 𝜂𝑐𝑒𝑙𝑙 = 0.27 (Interorbital Systems, 2009),

𝑃𝑜,𝑚𝑎𝑥 = 61.32mW, 𝐽𝑠𝑢𝑛 = 1370W/m2 (de Ruiter, 2014), the panel will produce its maximum power of

367.9mW when 𝜑 ≥ 46.7°.

Therefore, the panel at 90° to the incident sun vector will produce 367.9mW (the maximum power).

Using equations 26 and 27 it can be calculated that the two panels at 45° to the incident sun vector will

each produce 357.3mW of power.

The other panels are either on the dark side of the TubeSat or parallel to the incident sun vector, meaning

they will not produce any power. Therefore the total power generated by the TubeSat at this orientation is

the sum of the three panels analyzed above: 1082.5mW or 1.08W.

The second scenario analyzed orients the TubeSat so that the plane normal to the incident sun vector is

one on the hexadecagon that does not contain a solar panel. This is shown in the figure below.

Figure 50: Solar Cell Scenario #2

The angle of the solar cells oriented 67.5° from the incident sun vector have 𝜑 > 46.7° therefore will

produce the maximum power of 367.9mW.

Using equations 1 and 2 to solve for the power generation when 𝜑 = 22.5° the other two panels will

generate 193.2mW.

Adding the two together, the total power generation at this orientation is 1122.2mW or 1.12W.

RyeSat -TubeSat

Payload Design Page: 69

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Therefore, assuming that the satellite is oriented with the camera pointing towards the earth, the TubeSat

should generate between 1.08W and 1.12W.

The pitch of the TubeSat will also have an effect on the ability of the TubeSat to generate power

depending on the angle it makes with the incident sun.

Ideally, the TubeSat will be oriented 90° from the incident sun, in order to receive the highest intensity of

light. This is shown in the following figure.

Figure 51: TubeSat with 90° Pitch Orientation

However, it is possible that the TubeSat will not always be pitched 90° and the value of θ can affect the

TubeSat’s ability to produce its maximum power. An arbitrary θ value is shown below.

RyeSat -TubeSat

Payload Design Page: 70

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 52: TubeSat with θ Pitch Orientation

The solar cell will produce its maximum power when θ≥46.7°. Therefore,

𝑃𝑐𝑒𝑙𝑙 = 61.32mW 46.7° ≤ 𝜃 ≤ 90° 𝑃𝑐𝑒𝑙𝑙 = 𝐽𝑠𝑢𝑛𝐴𝑐𝑒𝑙𝑙𝜂𝑐𝑒𝑙𝑙 sin 𝜃 0° ≤ 𝜃 ≤ 46.7°

Considering the 𝜑 value of the solar cells,

𝑃𝑐𝑒𝑙𝑙 = 61.32mW 46.7° ≤ 𝜃 ≤ 90° 46.7° ≤ 𝜑 ≤ 90°

𝑃𝑐𝑒𝑙𝑙 = 𝐽𝑠𝑢𝑛𝐴𝑐𝑒𝑙𝑙𝜂𝑐𝑒𝑙𝑙 sin𝜃

𝜃 ≤ 46.7° 46.7° ≤ 𝜑 ≤ 90°

𝑃𝑐𝑒𝑙𝑙 = 𝐽𝑠𝑢𝑛𝐴𝑐𝑒𝑙𝑙𝜂𝑐𝑒𝑙𝑙 sin𝜑

46.7° ≤ 𝜃 ≤ 90° 𝜑 ≤ 46.7°

𝑃𝑐𝑒𝑙𝑙 = 𝐽𝑠𝑢𝑛𝐴𝑐𝑒𝑙𝑙𝜂𝑐𝑒𝑙𝑙 sin𝜑 sin𝜃

𝜃 ≤ 46.7° 𝜑 ≤ 46.7°

RyeSat -TubeSat

Payload Design Page: 71

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.1.1.4 Power Consumption

Determining the power consumed by the components in the tubesat is imperative to ensure that it will not

exceed the power generated by the solar panels. The power consumption is dependent on many variables

such as duty cycles of components, eclipse frequency and duration, idle mode power consumption,

attitude etc. The following is a preliminary analysis of the power budget for the tubesat.

Below are the different currents and voltages of the components in the tubesat:

Table 2: TubeSat Voltages and Currents

Component Operating Voltage (V)

OPERATING Current (Amps)

Idle Voltage (V)

Idle Current (Amps)

Light sensor**has been changed

2.7-3.6 0.0005 2.7 <0.000015

Temperature Sensor 2.7-5.5 0.0002 2.7 <0.000015

IMU: Accelerometer (Not Used) Magnetometer Gyroscope

2-3.6

2.16-3.6

2.1-3.6

0.000145

0.0001

0.0065

2

2.16

2.1

0.000045

0.000002

0.000005

Camera 3-5 0.075 0 0.0

Radio Transceiver: Transmit

5 0.11 0 0

Radio Transceiver: Receive (always on)

5 0.027 5 0.027

Amplifier: Transmit 5 0.25 0 0.0

Amplifier: Receive 5 0.002 5 0.0002

Total 0.404 0.03

Using Power = V * I the power consumed was calculated and tabulated below.

RyeSat -TubeSat

Payload Design Page: 72

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 3: TubeSat Power Consumed

Component Operating Power Consumed (W)

Power Consumed Idling (W)

Light sensor**has been changed 0.0018 <0.000045

Temperature Sensor 0.0011 <0.000045

IMU: Accelerometer Magnetometer Gyroscope

0.0005

0.0004

0.0234

0.00009

0.00000432

0.0000105

Camera 0.375 0.0

Radio Transceiver: Transmit 0.55 0

Radio Transceiver: Receive (always on)

0.135 0.135

Amplifier: Transmit 1.25 0

Amplifier: Receive 0.01 0.01

PTotal 2.3472 0.1452

Battery:

Table 4: Battery Properties

Nominal Capacity (maH) 5200

Voltage (V) 3.7

Efficiency (%) 90

RyeSat -TubeSat

Payload Design Page: 73

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.1.1.4.1 Mission Assumptions

Mission assumptions were used to estimate the time the components are using operational current and the amount of time they are using idle current. From this, the power consumption of all the components was determined using MATLAB (see iteration results below) and the charge and discharge rate of the battery was determined.

Table 5: Mission Assumptions

1. The tubesat will pass over ground station 2-3 times

2. Average time of contact window is 300 seconds

3. Tubesat life cycle is two months

4. To take a sensor reading estimated 1 second

5. To take picture estimated 5 seconds

6. To send picture - 3 ground station contact windows is 300 x 3 = 900 seconds to

send 1 photo

7. To send 1 data packet - 1 ground station contact window of 300 seconds

8. Data packet consists of 1300 readings each ( 1300 for temp sensor & 1300 for light

sensor) IMU: 650 for magnetometer, 650 for the gyroscope per day

9. Readings are evenly distributed throughout the day: 1300/24 = 55 readings per

hour

10. 10 photos taken per hour

Duty Cycles

D=T/P

D=Duty Cycle

T=Time active

P=total period (1 hour)

Ex. 10 photos*5 sec = 50 seconds of operation

1 hour = 3600 sec

RyeSat -TubeSat

Payload Design Page: 74

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

D=50/3600

D=0.0138

Table 6: Duty Cycles

Components Duty Cycle

Camera 0.0138

IMU 0.0153

Light Sensor 0.0153

Temp Sensor 0.0153

Radio to transmit 0.083

Total Percentage of Operation in the period 0.143

Radio to receive (power consumed in idle and operational are the same)

1

Using the mission assumptions above and adding a margin of safety, it was determined that the tubesat

would be using operational current 20 percent of the time and in idle mode for the other 80 percent. This

will be used in the charge/discharge calculations seen below.

3.1.1.4.2 Charge/Discharge Rate

maH/current=charge rate (coulombs)

Maximum capacity using a charge rate of 0.2C:

5200*0.2=1040 mA

Actual Capacity:

Operational Current X Operational Percentage + Idle Current X Idle percentage = Actual Capacity

0.404 A * (0.2) + 0.03 A * (0.8) = 105 mA (Current Consumed)

Net Current = 248 – 105

= 143 mA

Calculating Charging Rate of battery while powering all components:

5200 mAH – 0.3*5200 maH = Time to charge

143 mA

Time to charge = 25.45 hours

RyeSat -TubeSat

Payload Design Page: 75

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Calculating discharge rate for battery while in eclipse:

5200 mAH – 0.3*5200 maH = Time to discharge

105 mA

Time to discharge = 34.67 hours

Figure 53: TubeSat Power Schematic

Using matlab (see appendix), the amount of power consumed by the components in watt-hours have

been solved iteratively by varying their duty cycles.

RyeSat -TubeSat

Payload Design Page: 76

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Iteration 1 (assuming all components are operating at all times)

Total Power Consumed (Watt-Hour)

2.3472

Iteration 2

Total power consumed (Watt-Hour)

Power consumed to Send (Watt-Hour)

Power Consumed to Receive at all times (Watt-Hour)

Operating Power to obtain data points (Watt-Hour)

Power consumed while idling (Watt-Hour)

0.605 0.45 0.145 0.0098 1.8582e-04

Battery Consumption Test for Transmitting with Amplifier

Procedure

1. Battery was connected to breadboard

2. Arduino was programmed to transmit continuously

3. Arduino was the connected to Breadboard

4. Power source was set to 0.5 Watts

5. Operational current was recorded

Operational Current with

transmitter on but not sending

Operations Current while

Transmitting

110 mA 450 mA

The actual current drawn of 450 mA from transmission and amplifier recorded during the experiment

varies from the theoretical current of 110 mA and 250 mA for the radio transmitter and amplifier

respectively. After running the MATLAB code again with new value of current used, the total power

consumed was determined to be:

RyeSat -TubeSat

Payload Design Page: 77

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Iteration 3

Total Power Consumed (Watt-Hour)

0.7133

3.1.1.4.3 Battery Charge/Discharge Rate in Dry Ice Test

In order to ensure the battery will be able to provide the tubesat with enough power while in orbit, it is

important to test it in a simulated atmosphere under conditions that will be expected in low earth orbit.

The battery will be tested in conditions of -80o Celsius which will lower the capacity of the battery

decreasing the charge/discharge rate. The tube sat will also be transmitting signals to the radio while in

the dry ice test to ensure it provides enough power to achieve this, as the transmitter consumes the

majority of the power.

RyeSat -TubeSat

Payload Design Page: 78

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.1.2 Hardware

3.1.2.1 Attitude

Magnetic stabilization of the Ryerson TubeSat’s attitude is based on the interaction between the torque

created by the components within the TubeSat and the magnetic field of the Earth. Attitude Determination

and control subsystem of the TubeSat comprises of the permanent magnets and hysteresis rods, used for

the control and to keep the magnetometer mounted on the IMU aligned with the magnetic field of the

earth.

The permanent magnet are aligned along the third principal axis, which is same as the axis of the

camera, as it forces the Tubesat to fly parallel to the to the magnetic field lines of the Earth.

Figure1 illustrates the interaction between the magnetic field of the Earth with the magnetic

dipole of the magnets installed on the TubeSat.

The dimensions of the permanent magnets used are:

Additional components constituting the attitude control subsystem of the TubeSat are two

hysteresis rods, which are used to induce damping.

One of the hysteresis rods will be embedded with its longitudinal axis aligned along the RAX first

principal axis and the other with its longitudinal axis aligned along the TubeSat’s second

principal axis. Hence, making the longitudinal axis of the permanent magnet and the two-

hysteresis rods orthogonal to each other.

Figure 54: Magnetic Field interaction

RyeSat -TubeSat

Payload Design Page: 79

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Some theoretical aspects taken into consideration for the placement of the magnets and the hysteresis rods

are summarized below:

Permanent Magnets

The magnetic field vector at the location of the TubeSat is determined by using a pre-determined

MATLAB model. The magnetic field strength of the Earth’s magnetic field helps in determining the

strength of the permanent magnets required for attitude stabilizations. Therefore, the strength of the

magnetic field of the Earth is given by,

𝐻𝐸 =𝐵𝐸

𝜇0

𝑤ℎ𝑒𝑟𝑒,

𝐻𝐸𝑖𝑠 𝑡ℎ𝑒 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑖𝑒𝑙𝑑 𝑠𝑡𝑟𝑒𝑛𝑔𝑡ℎ 𝑣𝑒𝑐𝑡𝑜𝑟 𝑜𝑓 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑖𝑒𝑙𝑑 𝑜𝑓 𝑡ℎ𝑒 𝐸𝑎𝑟𝑡ℎ

𝜇0 𝑖𝑠 𝑡ℎ𝑒 𝑝𝑒𝑟𝑚𝑒𝑎𝑏𝑖𝑙𝑖𝑡𝑦 𝑜𝑓 𝑡ℎ𝑒 𝑣𝑎𝑐𝑢𝑢𝑚

𝐵𝐸𝑖𝑠 𝑡ℎ𝑒 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑙𝑢𝑥 𝑜𝑓 𝑡ℎ𝑒 𝐸𝑎𝑟𝑡ℎ

The interaction between the Earth’s magnetic field and the magnetic dipole of the magnet results in an

internal torque of the TubeSat, which is defined by,

𝑀𝑝 = 𝐵𝑝𝑉𝑝𝑏3 × 𝑅𝐸𝐵𝐻𝐸

𝑤ℎ𝑒𝑟𝑒,

𝐵𝑝 𝑖𝑠 𝑡ℎ𝑒 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑑𝑖𝑝𝑜𝑙𝑒 𝑜𝑓 𝑡ℎ𝑒 𝑝𝑒𝑟𝑚𝑎𝑛𝑒𝑛𝑡 𝑚𝑎𝑔𝑒𝑛𝑡

𝑉𝑝 𝑖𝑠 𝑡ℎ𝑒 𝑣𝑜𝑙𝑢𝑚𝑒𝑡 𝑜𝑓 𝑡ℎ𝑒 𝑝𝑒𝑟𝑚𝑎𝑛𝑒𝑛𝑡 𝑚𝑎𝑔𝑛𝑒𝑡

𝑏3 𝑖𝑠 𝑡ℎ𝑒 𝑑𝑖𝑟𝑒𝑐𝑡𝑖𝑜𝑛 (𝑛𝑜𝑟𝑡ℎ 𝑝𝑜𝑙𝑒 𝑡𝑜 𝑠𝑜𝑢𝑡ℎ 𝑝𝑜𝑙𝑒 )𝑜𝑓 𝑡ℎ𝑒 𝑙𝑜𝑛𝑔𝑡𝑢𝑑𝑖𝑛𝑎𝑙 𝑎𝑥𝑖𝑠 𝑜𝑓

𝑡ℎ𝑒 𝑚𝑎𝑔𝑒𝑛𝑡

𝐻𝐸 𝑠 𝑡ℎ𝑒 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑖𝑒𝑙𝑑 𝑠𝑡𝑟𝑒𝑛𝑔𝑡ℎ 𝑣𝑒𝑐𝑡𝑜𝑟 𝑜𝑓 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑖𝑒𝑙𝑑 𝑜𝑓 𝑡ℎ𝑒 𝐸𝑎𝑟𝑡ℎ

𝑅𝐸𝐵 𝑟𝑒𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑠 𝑡ℎ𝑒 𝑟𝑜𝑡𝑎𝑡𝑖𝑜𝑛 𝑚𝑎𝑡𝑟𝑖𝑥 𝑓𝑟𝑜𝑚 𝐸𝑎𝑟𝑡ℎ − 𝑓𝑖𝑥𝑒𝑑 𝑓𝑟𝑎𝑚𝑒 𝑡𝑜 𝑏𝑜𝑑𝑦 −

𝑓𝑖𝑥𝑒𝑑 𝑓𝑟𝑎𝑚𝑒

RyeSat -TubeSat

Payload Design Page: 80

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

The longitudinal axis of the magnet is aligned with the z-axis (third principal axis) of the TubeSat, in such

a way so that the direction of the longitudinal axis of the permanent magnet, from south pole to North

Pole. Therefore, for the TubeSat to be parallel to the magnetic field lines the angle, 𝛼 in Figure 55

between the magnetic field and the magnetic dipole of the magnet is constrained to converge. Hence,

𝐵𝑝 ∙ 𝑏𝑏

= |𝐵𝑝 ||𝑏𝑏

|𝑐𝑜𝑠𝛼

𝑤ℎ𝑒𝑟𝑒,

𝛼 = cos−1 (𝐵𝑝 ∙ 𝑏𝑏

|𝐵𝑝 ||𝑏𝑏

|) → ~0

𝑤ℎ𝑒𝑟𝑒,

𝑏𝑏 = [101 ] 𝑎𝑛𝑑 𝐵𝑝 𝑖𝑠 𝑡ℎ𝑒 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑑𝑖𝑝𝑜𝑙𝑒 𝑜𝑓 𝑡ℎ𝑒 𝑝𝑒𝑟𝑚𝑎𝑛𝑒𝑛𝑡 𝑚𝑎𝑔𝑛𝑒𝑡𝑠

Figure 55: Vector representation of the magnetic dipole and the magnetic field

The properties of the magnet chosen for the attitude stabilization are enlisted in the table below.

Table 7: Magnet Properties

Properties

Material Sintered Neodymium magnet

Dimensions D6.35 X 12.7 mm

Grade N40

Pull Force 3.69 lbs - 3.84 lbs

RyeSat -TubeSat

Payload Design Page: 81

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Hysteresis rods

Hysteresis rods produce a non-constant magnetic dipole, which is proportional longitudinal to the

magnetic field of the earth.

The magnetic nature of the hysteresis rods is similar nature of the permanent magnets, but has a

very high permeability.

Hysteresis rods in the plane perpendicular to the magnet axis, reduces the kinetic energy of the

TubeSat to damp the angular velocity of the oscillations.

The placement of the rods with respect to the permanent magnets is given important consideration.

If the hysteresis rods are placed in the equatorial plane with respect to the permanent magnets, then

this will result in absolute minimal interaction between the magnet and the rods [5].

In order to obtain the actual behavior of the hysteresis, it is important to understand its interaction

with the permanent magnets and its influence on the TubeSat’s orientation.

The mangetic torque on the tubessat due to the hystersis rods is modelled as follows:

𝑀 =2𝑀𝑠

𝜋tan−1[𝑘(𝐻 ± 𝐻𝑐)]

𝑤ℎ𝑒𝑟𝑒,

𝑘 = tan

𝜋𝑀𝑟2𝑀𝑠

𝐻𝑐

⁄ 𝑎𝑛𝑑 𝑚 = 𝑀𝑛𝑉

𝑀 − 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑧𝑎𝑡𝑖𝑜𝑛 𝑜𝑓 𝑡ℎ𝑒 ℎ𝑦𝑠𝑡𝑒𝑟𝑒𝑠𝑖𝑠 𝑟𝑜𝑑𝑠

𝑀𝑠 − 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑧𝑎𝑡𝑖𝑜𝑛 𝑐𝑜𝑟𝑟𝑒𝑠𝑝𝑜𝑛𝑑𝑖𝑛𝑔 𝑡𝑜 𝑡ℎ𝑒 𝑠𝑎𝑡𝑢𝑟𝑎𝑡𝑒𝑑 𝑠𝑡𝑎𝑡𝑒, 𝑖. 𝑒.𝑀 = 𝑀𝑠

𝑀𝑟 − 𝑟𝑒𝑚𝑎𝑛𝑒𝑛𝑡 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑧𝑎𝑡𝑖𝑜𝑛

𝐻𝑐 − 𝑐𝑜𝑒𝑟𝑐𝑖𝑣𝑖𝑡𝑦

𝐻 − 𝑚𝑎𝑔𝑛𝑒𝑡𝑖𝑐 𝑓𝑖𝑒𝑙𝑑 𝑠𝑡𝑟𝑒𝑛𝑔𝑡ℎ 𝑎𝑙𝑜𝑛𝑔 ℎ𝑦𝑠𝑡𝑒𝑟𝑒𝑠𝑖𝑠 𝑟𝑜𝑑′𝑠𝑎𝑥𝑖𝑠

𝑘 − 𝑑𝑖𝑚𝑒𝑛𝑠𝑖𝑜𝑛𝑙𝑒𝑠𝑠 𝑓𝑜𝑟𝑚𝑖𝑛𝑔 𝑓𝑎𝑐𝑡𝑜𝑟

𝑉 − 𝑣𝑜𝑙𝑢𝑚𝑒 𝑜𝑓 𝑡ℎ𝑒 ℎ𝑦𝑠𝑡𝑒𝑟𝑒𝑠𝑖𝑠 𝑟𝑜𝑑𝑠

𝑛 − 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑟𝑜𝑑𝑠 𝑎𝑙𝑜𝑛𝑔 𝑡ℎ𝑒 𝑝𝑟𝑖𝑛𝑐𝑖𝑝𝑎𝑙 𝑎𝑥𝑖𝑠

𝑚 − 𝑑𝑖𝑝𝑜𝑙𝑒 𝑚𝑜𝑚𝑒𝑛𝑡 𝑖𝑛𝑑𝑢𝑐𝑒𝑑 𝑜𝑛 𝑡ℎ𝑒 𝑟𝑜𝑑

RyeSat -TubeSat

Payload Design Page: 82

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Hysteresis properties used in the TubeSat’s attitude stabilization subsystem is listed below:

Table 8: Hysteresis Properties

Properties

Material Magnetic Shield Alloy Wire

Specification MIL N 1441c

Tensile Strength 85 x 103

Saturation Induction 330 ohms/cir mil-foot

Coercive Force 0.007 Oersteds

RyeSat -TubeSat

Payload Design Page: 83

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.1.3 Testing

Due to the inability to physically test the orbit design and attitude control in a spatial environment, the

testing for these TubeSat aspects will be done with simulations. The orbit design will be tested using

Systems Tool Kit (STK) software from Analytical Graphics Inc. This software was created to model and

simulate complex systems (like a satellite in space) and this will provide an estimate of the TubeSat

eclipse periods and ground access throughout its mission lifetime. The attitude control was further

simulated in both MATLAB and STK and the settling time of the TubeSat is approximated to be 12-15

days.

The power budget was physically tested through the dry-ice test. The power consumption was accurately

predicted based on the current circuit set up of the TubeSat and the total power consumption of the

individual components on-board the satellite. The power generation relies heavily on the theoretical

calculations (the power generated while the TubeSat is in various orientations), simulations (to determine

eclipse frequency and duration) and physical testing (based on how the solar cells respond to light

arriving at different incident angles).

Figure 56: Battery Life during 8 Cycles of Thermal Vacuum Test

-10

0

10

20

30

40

50

60

70

12

81

56

18

41

11

21

14

01

16

81

19

61

22

41

25

21

28

01

30

81

33

61

36

41

39

21

42

01

44

81

47

61

50

41

53

21

56

01

58

81

61

61

64

41

67

21

70

01

72

81

Vo

latg

e (V

) &

Tem

per

atu

re (

cels

ius)

Time (sec)

Battery Life During 8 Cycles of Thermal Vacuum Test

Battery Voltage Outside Temp Inside Temp

RyeSat -TubeSat

Payload Design Page: 84

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 57: Battery Life (Voltage vs. Time) during Thermal Vacuum Cycle

The above figures shows the results from the 8 cycles of thermal vacuum test of the TubeSat. There are

significant dips in the battery voltage every time the TubeSat went through a cooling cycle. The observed

temperature in the cooling box was -80oC however, the TubeSat temperature itself never reached below -3

oC as the 45 minute cycle wasn’t enough to radiate heat gained during the heating cycle. This goes to

show that the battery performance will be not greatly affected by the harsh environment of space.

RyeSat -TubeSat

Payload Design Page: 85

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.2 Structures

3.2.1 Hardware

The TubeSat consists of five printed circuit boards (PCBs) and their respective components as shown in

the figures below. Five PCB’s used (from Space facing to Earth facing direction) are listed as followed:

Antenna PCB (30-2100-00): This is the first tier in the PCB rack stack and the antennas are attached on

the outside of Antenna PCB. The antennas used are two lengths of spring-steel antennas (from spring-

steel measuring tape). On the inside face of the Antenna PCB, there is a coaxial cable solder point for the

dipole antenna. Additionally, there is a “remove before flight” jumper and switch that activates the

satellite after it has been deployed on orbit.

Transceiver PCB (30-2500-00): This is the second tier in the PCB rack stack, which includes the

transceiver and the transceiver amplifier. The Antenna PCB is connected to the Transceiver PCB through

a coaxial antenna cable. The Microcontroller PCB is also connected to this PCB to allow for transceiver

programming.

Microcontroller PCB (30-2200-00): The third tier in the PCB rack stack is the Microcontroller PCB. This

PCB includes the microcontroller and various power-input and output connectors.

Power Management PCB (30-2300-00): The fourth tier in the PCB rack is the power management PCB.

This board includes battery, the solar cell strip connectors (solder points), the battery-charging circuit, the

voltage regulators, and the power connection points. This PCB was at second tier according to the

TubeSat manual file and last year’s project but it was moved close to the payload so the TubeSat could

use gravity gradient and the payload which is camera in this case always face towards the Earth.

Payload PCB (30-2400-00): The fifth tier is the payload board.

Apart from these PCBs, there are eight Solar Cell PCBs (40-2601-00) screwed in around the PCB rack

stack. In between the solar cell PCBs, eight aluminum panels (40-2602-00) are attached using set screws.

The plastic tipped set screws are fastened to the aluminum panels and function as bearings which

facilitate the ejection of the TubeSat from its deployment cylinder. A new battery bracket and magnet

holder was also designed.

All componential figures are illustrated below, first, the CAD models, followed by the actual structure of

the TubeSat itself.

RyeSat -TubeSat

Payload Design Page: 86

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 58: TubeSat Undressed model

RyeSat -TubeSat

Payload Design Page: 87

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 59: TubeSat Dressed CATIA V5 model

RyeSat -TubeSat

Payload Design Page: 88

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 60: Current TubeSat Dressed CATIA V5 model, with body frame axis (top right)

Figure 61: TubeSat Dressed CATIA V5 model power board wiring

RyeSat -TubeSat

Payload Design Page: 89

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 62: Coaxial antenna board connector cable and wires

Figure 63: Micro controller connectors and wires

RyeSat -TubeSat

Payload Design Page: 90

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 64: Micro-controller board wiring

Figure 65: Power board wiring

RyeSat -TubeSat

Payload Design Page: 91

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 66: Current TubeSat Dressed CATIA V5 model wiring

RyeSat -TubeSat

Payload Design Page: 92

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 67 Antenna Board Top View

Figure 68: Antenna Board Bottom View

RyeSat -TubeSat

Payload Design Page: 93

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 69: Radio Board Bottom View

Figure 70: Radio Board Bottom View

RyeSat -TubeSat

Payload Design Page: 94

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 71: Micro Controller Board Bottom View

Figure 72: Micro Controller Board Bottom View

RyeSat -TubeSat

Payload Design Page: 95

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 73: Power Board Top View (Left) and Bottom View (Right)

Figure 74: Power Board Bottom View (Right)

RyeSat -TubeSat

Payload Design Page: 96

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 75: Payload Board Top View (Left) and Bottom View (Right)

Figure 76: Current TubeSat Dressed CATIA V5 model with reference axis

RyeSat -TubeSat

Payload Design Page: 97

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 77: Current magnet holder (vertical configuration)

Figure 78: Battery Holder with Battery inside

RyeSat -TubeSat

Payload Design Page: 98

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 79: Current mock up without panels

RyeSat -TubeSat

Payload Design Page: 99

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 80: Current mock up for vibration testing purposes

RyeSat -TubeSat

Payload Design Page: 100

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.2.2 Testing

3.2.2.1 Vibration Testing (Sinusoidal)

Table 9: Vibration Testing Information

3.2.2.1.1

Table 10: The different frequency values to be tested [2]

Point of Discussion: An attempt was made of performing the vibration test, with a mock-up of the

structure, with previous PCBs, and a prototype of a battery case, without the solar and aluminum panels.

The mere objective of this test was to simply check for the rigidness of the fixture, ensure the

Vibrations Testing Information

Purpose Equipment

Required

Process

Experimental

Process

1. To ensure TubeSat

will survive the

launch.

2. To validate the

structural model.

1. Vibration Bench

2. Fixture for

attaching TubeSat

enabling 2 axis

testing

1. Ensure proper

mounting of fixture

onto the shaker

2. Ensure appropriate

material (ex: foam) is

placed within the

cylinder to act as a

form of ‘cushion’ for

the TubeSat

1. TubeSat shall be

tested both in its

lateral and longitude

direction

2. Two specific form

of sinusoidal tests

will be performed for

each direction, to

establish test

requirements (see

table below)

Qualification Acceptance

Sine Vibration

Test Required Required

Reference

Frame {BRF} {BRF}

Direction X,Y,Z X,Y,Z

Sweep Rate 2oct/min 4oct/min

Profile Frequency (Hz) Acceleration (g) Frequency (Hz) Acceleration (g)

5 1.3 5 1

8 2.5 8 2

100 2.5 100 2

RyeSat -TubeSat

Payload Design Page: 101

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

experimental process is doable, and that overall, to check if any damage could occur. This experiment

can be treated as illustrating ‘technology demonstration’ for the shaker and fixture.

Figure 81: Vibration bench (left) and shaker fixture (right)

Figure 82: Horizontal vibration configuration

RyeSat -TubeSat

Payload Design Page: 102

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Below are the tables of results from the official vibration test, conducted with the official mock-up, that

reflect conceptual design considerations. All components have been integrated and assembled as

required.

3.2.2.1.2 First Vibration Test Results

Table 11: Lateral Direction, First Vibration Test Results

Lateral 2 oct/min

Frequency Acceleration (g)

5 Hz 0.1

8 Hz 1.75

49 Hz 11.55

Figure 83: CAD model of Vibration Testing Fixture

RyeSat -TubeSat

Payload Design Page: 103

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.2.2.1.3

Table 12: Lateral Direction, Natural Frequencies Data for First Vibration Test

As seen in the figure below, damage occurred to the external structure, and as expected, the inserts came

loose on some of the ring connectors.

- In the future, epoxy will be used to seal the threaded inserts to the retainer rings.

- All bearings will be attached at the appropriate position to prevent the TubeSat from shaking violently

within the structure

- Solar cells must be soldered correctly to withstand the vibrations experienced

- The battery case, and magnet holder did not fail when the TubeSat was tested in the correct

configuration

Lateral 2 oct/min

Frequency (Hz) Acceleration (g)

1st Natural

Frequency 16 9

2nd Natural

Frequency 22.1 10

3rd Natural

Frequency 32.3 10.22

RyeSat -TubeSat

Payload Design Page: 104

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 84: Damaged TubeSat after first vibration testing

RyeSat -TubeSat

Payload Design Page: 105

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.2.2.1.4 Second Vibration Test Results

Table 13: Lateral Direction, Second Vibration Test Results

Table 14: Lateral Direction, Natural Frequencies Data for Second Vibration Test

Table 15: Lateral Direction, Second Vibration Test Results

Table 16: Lateral Direction, Natural Frequencies Data for Second Vibration Test

Lateral 2 oct/min

Frequency Acceleration (g)

5 Hz 0.01

8 Hz 1.72

100 Hz 20.06

Lateral 2 oct/min

Frequency (Hz) Acceleration (g)

1st Natural

Frequency 21.5 10

2nd Natural

Frequency 30.8 9.71

3rd Natural

Frequency 53.2 11.2

Lateral 4 oct/min

Frequency Acceleration (g)

5 Hz 0.01

8 Hz 1.6

100 Hz 20

Lateral 4 oct/min

Frequency (Hz) Acceleration (g)

1st Natural

Frequency 22.5 9.8

2nd Natural

Frequency 31.8 9.9

3rd Natural

Frequency 55 15.53

RyeSat -TubeSat

Payload Design Page: 106

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 85: TubeSat after second vibration test, 2 Octave/min

Figure 86: TubeSat being placed in the test fixture

RyeSat -TubeSat

Payload Design Page: 107

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 87: TubeSat nested inside the test cylinder

Figure 88: The TubeSat measuring in at 5.025 inch after the test, and before the test

RyeSat -TubeSat

Payload Design Page: 108

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.2.2.2 Vibration Testing (Random)

Purpose: The TubeSat shall encounter different vibration levels during the launch; this test is to

determine its structural integrity at different random frequencies.

Equipment Required:

1. Vibration Bench

2. Fixture for attaching TubeSat enabling 2 axis testing

Experimental Process: Different frequency values shall be tested in both axes (lateral and longitudinal)

to account for the structural integrity. Table below shows the different frequencies that shall be used

during the random vibration test.

Table 17: Random Vibration Testing Characteristics

However, due to lack of equipment and software within Ryerson University, the Random Vibration Test

was not conducted. The sinusoidal test provides adequate amount of data, but this test would complement

the results.

RyeSat -TubeSat

Payload Design Page: 109

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.2.2.3 Stress Analysis

The purpose of performing stress analysis is to determine whether or not the design structure is able to

withstand a specific amount of load, typically a minimum amount to ensure adequate performance. Since

the battery is a key component in the TubeSat, as it is a primary source of energy, a battery bracket was

designed to ensure the battery itself is physically intact with the overall structure. However, it was

imperative to perform stress analysis to determine at what frequency level it would fail. This is because

the TubeSat would experience different frequency levels during the launch, and should the battery bracket

experience structural damage, it may completely misplace the position of the battery, and as a result, the

mission may fail. The figure below illustrates the stress analysis performed on CATIA V5.

Figure 89: CATIA V5 Stress plot for Battery holder

RyeSat -TubeSat

Payload Design Page: 110

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3 Hardware/Electronics

3.3.1 Hardware

3.3.1.1 System Design Layout

Figure 90: System Design Layout

RyeSat -TubeSat

Payload Design Page: 111

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.2 System Design Details

Table 18: Pin Connection for Systembus

Board Connector Comments

From To From To

Power P1-P8 Solar Panels

Power Radio P9 P2 Flip header on radio board

Power Antenna P10 (1,2) K1 (3,2) Pin 1 -> Pin 3; Pin 2 -> Pin 2

Power N/A P11 Bridge Jump

Power Payload P12 Payload Screw terminal connection

Power Controler P13 (1,2,3) K1 (2,1,3) Match pins (1:2, 2:1, 3:3)

Power Controler P18 P1

Power P1-P8 Solar Panels

Power P12-Pin 1 GND

Power P12-Pin 2 VBAT

Power P21, P23, P24, P25, P27 Testing

Power P18-Pin 1 DO

Power P18-Pin 2 DIN

Power P18-Pin 3 CS

Power P18-Pin 4 SLK

Power P18-Pin 5 5V

Power N/A P29 Test/Arduino

Radio P1-Pin 1 GND

Radio P1-Pin 2 PGM

Radio P1-Pin 3 P1

Radio P1-Pin 4 P2

Radio P1-Pin 5 P3

Radio Power P2 P9 Pin 1 - Pin 1 Pin 2- Pin 2

Radio P5-Pin 1 GND

RyeSat -TubeSat

Payload Design Page: 112

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Radio P5-Pin 2 ON/OFF TRANSCIEVER

Radio P3 - Pin 1 TXD

Radio P3 - Pin 2 AF-IN

Radio P3 - Pin 3 RSSI

Radio P3 - Pin 4 SQL

Radio P3 - Pin 5 AF OUT

Radio P3 - Pin 6 RXD

Radio P4-Pin 1 PTT

Radio P4-Pin 2 NIXE

Controller P1-Pin 1 SLK

Controller P1-Pin 2 RX (DI)

Controller P1-Pin 3 TX (DD)

Controller P1-Pin 4 CS

Controller P1-Pin 5 5 V

Controller P2- Pin 1 GND

Controller P2- Pin 2 RST

Controller P2- Pin 3 RX

Controller P2- Pin 4 TX

Controller Radio P3- Pin1 P1 On/off

Controller P3- Pin2 N-TXE (D7)

Controller P3- Pin3 D8

Controller P3- Pin4 D9

Controller P3- Pin5 TD-N-TX( To Trans. BRD)

Controller P5-Pin 1 AFSK IN

Controller P5-Pin 2 AFSK OUT

Controller P7- Pin 1 GND (RADIO Debug)

Controller P7- Pin 2 CRC (RADIO Debug)

Controller P8- Pin 1 GND

Controller P8- Pin 2 TX (AX25 Decoder)

RyeSat -TubeSat

Payload Design Page: 113

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Controller P9-Pin1 5V

Controller P9-Pin2 GND

Controller P17- Pin 1 RX (SI)

Controller P17- Pin 2 TX (SI)

Controller P22- Pin 1 SQL (D2)

Controller P22- Pin 2 D3

Controller P22- Pin 3 D4

Controller P22- Pin 4 D5

Controller P14, TP1, P13,P15

Controller Payload P29

Controller Power K1 P13

Controller K2- Pin 1 AD2

Controller K2- Pin 2 AD1

Controller K2- Pin 3 AD0

RyeSat -TubeSat

Payload Design Page: 114

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.3 PCB Schematics

Figure 91: PCB Schematics

RyeSat -TubeSat

Payload Design Page: 115

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.4 Payload Board Schematics

3.3.1.5 Payload Components

1) Inertial Measurement Unit (IMU)

- 9 Degrees of Freedom

- Accelerometer, Rate Gyro, Magnetometer

Figure 93: IMU Stick

Figure 92: Payload Board Schematics

RyeSat -TubeSat

Payload Design Page: 116

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

2) Temperature Sensor

- Operating range of -55 to 125 OC

- Accuracy within a degree Celsius

Figure 94: Temperature Sensor

3) JPEG Camera

- VGA, QVGA, or QQVGA Resolutions

- 60O Viewing angle

Figure 95: Payload Camera

RyeSat -TubeSat

Payload Design Page: 117

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

4) Photocell

- Measure luminosity

- Max. response @ 540 nm

Figure 96: Photocell

3.3.1.6 Assembled PCBs

Figure 97: Antenna Board (Top Side)

RyeSat -TubeSat

Payload Design Page: 118

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 98: Antenna Board (Bottom Side)

Figure 99: Radio Board (Top Side)

RyeSat -TubeSat

Payload Design Page: 119

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 100: Radio Board (Bottom Side)

Figure 101: Power Management Board (Bottom Side)

RyeSat -TubeSat

Payload Design Page: 120

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 102: Power Management Board (Tom Side)

Figure 103: Microcontroller Board (Top Side)

RyeSat -TubeSat

Payload Design Page: 121

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 104: Microcontroller Board (Bottom Side)

Figure 105: Payload Board (Top Side)

RyeSat -TubeSat

Payload Design Page: 122

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 106: Payload Board (Bottom Side)

3.3.1.7 Assembling the PCB boards

To assemble the boards we must have all the required components. This list can be seen in the PCB

board’s information folders given. Having all the required components, layout the components for one

board at a time. Next the following procedures are required;

1. Obtain the solder paste and get the hot plate.

2. For the specific board about to be soldered, place the screen sheet over the board to begin the

solder paste process.

3. Once the screen lines up with the entire component layout, apply the pastes.

4. After the paste has been applied to all openings, remove the screen sheet.

5. Now apply all the components as fast as possible, during this time turn on the hot plate to 160

degrees Celsius

6. Once all the components have been placed, place the entire board on the hot plate.

7. On the hot place wait 1:30 minutes then turn the temperature to 180 degrees Celsius.

8. After another 1:30 minutes the paste should turn to a silver color and will be soldered. Make sure

all the components look the same. Then remove the board.

9. If any components need to be soldered on the other side of the board, this will completed by hand

soldering only.

10. After the components have been all soldered on, the final step is to solder the pins. Look at the

CAD model to see the soldering pins locations.

RyeSat -TubeSat

Payload Design Page: 123

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.8 System Integration

For the final integration of the TubeSat, there are certain steps to integrate the complete system.

1. When all boards are completed. The first step is to check voltage and make sure each individual

board is working.

2. Once boards are functioning, the Radio, decoders and encoders need to be program, as well as the

arduino for the payload and communication command data.

3. Another voltage testing should be done to ensure each board is functioning.

4. From table 9.1 connect the required wiring inputs to the right locations.

5. Do voltage testing again to make sure the system is connected properly, this can let you know any

wrong connections and if there is a component failure.

6. Once that is complete, the communication should be tested. If the arduino is program correctly

and radio then the TubeSat is functional.

7. Now with the rods and spacers, the TubeSat can now be built. The wiring should be all solder to

the pins at this point. So there so not be and wires popping off the pins.

8. The board should be built starting from the Antenna Board top, Commination Board, CH&D

Board, Power Board, bottom Payload board. Below the Antenna Board and above the payload

board there should be the panel ring for the solar panels.

9. Final step is to test each solar panel if working, then plug them into the power board pins. Screw

the panels and aluminum panels onto the panel ring.

10. The TubeSat now needs to go through final testing before launch.

RyeSat -TubeSat

Payload Design Page: 124

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.9 Mock-up Integration

Figure 107: TubeSat Mock-up with working boards

RyeSat -TubeSat

Payload Design Page: 125

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 108: TubeSat Mock-up (Dressed)

Figure 109: TubeSat Mock-up (Dressed with the antennas)

RyeSat -TubeSat

Payload Design Page: 126

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.10 Hardware Testing

Figure 110: Voltage Testing post Outgassing Test

The procedure for testing hardware is that we must check the voltage is being distributed correctly on

each board. This will help identify any errors in the soldering or components. If the voltage is incorrect,

we can locate the errors and fix it. The Test requires us using a power supply and a volt meter to get the

readings for voltages. As of now we have completed this testing and have all the boards currently

working.

Voltage Testing:

• Check the voltage is being distributed correctly on each board.

• This will tell us any errors in the soldering or components.

• Can locate the errors and fix it.

• Using a power supply and a volt meter to get the readings

RyeSat -TubeSat

Payload Design Page: 127

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.11 Radio Communication Test

For communication, the Arduino should send telemetry data through its serial line (TX/RX). The digital

signal will then be handled by on-board electronics of controller board.

Figure 111: Groundstation Setup (Test)

Figure 112: Radio Communication from TubeSat to

Groundstation (sent address packets seen on the serial

communication window)

RyeSat -TubeSat

Payload Design Page: 128

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.12 Thermal Vacuum Test

According to US standard atmospheric model space begins at Kerman line, 100 km. At this altitude the

atmosphere is very thin and the atmospheric density gets lower as the altitude increases till there are no air

molecules to even cause atmospheric drag on the orbiting spacecraft. However, atmospheric drag isn’t our

first biggest worry.

The space environment is harsh and unforgiving, from the energy particles (Van Allan radiation belt), sun

bath resulting in extreme heat, and the extreme cold of deep space. This is a very concerning factor for our

satellite when it’s orbiting Earth at an altitude of about 300-310 km. At this altitude, our satellite will

experience extreme temperatures ranging from -70o C to 120 o C, pushing the limits of every solder points

on the satellite to every single wires and components onboard.

For our satellite, since majority of the components are off-the-shelf and are radiation hardened, the energy

particles hitting the satellite and degrading the component won’t be a huge factor when you consider the 3-

9 weeks of lifespan. However, the vacuum and the extreme temperatures may result in a nonfunctioning

satellite if not tested to function in the harsh environment of space. But before we even get to space, we

need to figure out if the satellite will survive the G-force and the vibration during its accent to the targeted

orbit. Hence, we have developed a testing sequence of the fully functioning satellite to make sure that it is

flight ready and certified to be in space.

A thermal bake-out shall be performed to study the outgassing effect; depressurization and re-pressurization effect using a vacuum chamber. Depressurization will range from 101 kPa to 0 kPa at a rate of 2.00 kPa/sec, lasting around 26 seconds. In the environment, pressure will go from atmosphere to zero in about 2 minutes, essentially acting like a vacuum. A thermal limit test shall be performed to assess the battery and mission life. The test shall consist of cycling the satellite in a thermal chamber at temperatures of -70°C to 120°C. 10 cycles shall be completed, holding the temperature at each limit for 45 minutes.

In order to perform the above Vacuum and Thermal survivability test on the satellite, we need to have a

functional vacuum chamber capable of performing these tests that heat and cool satellite while it’s in a

vacuum to mimic the space conditions.

On Earth, everything gains heat or loses heat through conduction, convection, and radiation.

Conduction

The heat flows from hot region to cold for a given solid, liquid, or gas.

Convection

The heat moves via currents in the material.

Radiative

RyeSat -TubeSat

Payload Design Page: 129

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Heating by absorbing photons or cooling by radiating photons.

There is no conduction or convection in space, there is only vacuum. Only radiative heating and cooling

are possible in space. In orbit, you either heat rapidly, or cool rapidly, without having any buffer between

the two states. This will not be the accurate case for our satellite as the surface area of our satellite is very

small. Further, color affects the rate of radiative heating and cooling. In general, darker colors both absorb

photons more readily, and radiate that heat back with equal strength if there is no light. Silvered objects

absorb less, but also radiate less. This will be a beneficial point for our satellite as most of the surface is

either covered with solar cells or aluminum strips.

For an object in Earth orbit, the sun puts out 1361 Watts per square meter, assuming the satellite is facing

the sun straight on. Assuming a 10cm x 10cm Cubesat profile, very close to a Tubesat profile in terms of

the surface area pointing at sun, which means it gets about 14 Watts of direct heating on its surface. To

provide purely radiative heating in order to mimic these conditions, our test chamber will be using a 100-

Watt light bulb over the display window to provide heating. We are estimating that a 100 Watt bulb in a

reflector is covering approximately 1/3 meter diameter chamber yielding about 100 Watts over 706 cm2,

or 0.14 Watts/cm2, very close to the required solar constant of 0.13 Watts/cm2 to mimic the space

environment.

RyeSat -TubeSat

Payload Design Page: 130

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.13 Thermal Vacuum Test Procedure

RyeSat -TubeSat

Payload Design Page: 131

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.14 Design of the Thermal Vacuum Chamber

Figure 113: CAD model of the Test Chamber

RyeSat -TubeSat

Payload Design Page: 132

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 114: Motor and Gear assembly within the Test Chamber

RyeSat -TubeSat

Payload Design Page: 133

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 115: Test Chamber assembly with the TubeSat during Outgassing Test

RyeSat -TubeSat

Payload Design Page: 134

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 116: Insulation box for the dry ice

RyeSat -TubeSat

Payload Design Page: 135

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 117: Vacuum valve connected to air supply

The out-gassing test was performed to validate the Tube-Sat’s survivability in the pressure less environment

of space. The test chamber was designed to achieve pressure that is similar near the Karman line. The test

was designed to see if there were any defects in the soldering joints as well as any defects with the off-the-

shelf components that are not space qualified.

RyeSat -TubeSat

Payload Design Page: 136

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 118: Pressure achieved

During the test the pressure achieved was close -25 inHg and with that pressure we can confirm that the

equipment does possess the capabilities to certify the satellite for harsh space environment. The

temperature that can be achieved with this pressure can be in the range of -50oC to 80oC.

RyeSat -TubeSat

Payload Design Page: 137

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.3.1.15 Thermal Vacuum Test Results

Figure 119: Test Equipment Assembly

RyeSat -TubeSat

Payload Design Page: 138

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 120: Heating Cycle

RyeSat -TubeSat

Payload Design Page: 139

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 121: Temperature readings during the Heating Cycle (TEMP3-K represents the chamber

temperature)

RyeSat -TubeSat

Payload Design Page: 140

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 122: Cooling Cycle with dry ice

RyeSat -TubeSat

Payload Design Page: 141

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 123: Temperature readings during the Cooling Cycle (TEMP3-K represents the chamber

temperature)

RyeSat -TubeSat

Payload Design Page: 142

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 124: Test Chamber after the Cooling Cycle going to Heating Cycle

RyeSat -TubeSat

Payload Design Page: 143

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 125: Temperature Cycle during the Thermal Vacuum Test (8 Cycles)

The above figure represents the temperature cycle the TubeSat went through during its 8 cycles of thermal

vacuum test. The results showed that the TubeSat stays well within the operating temperature range as the

radiative heating and cooling takes much longer than 45 minutes to gain and loose heat. TubeSat contains

two temperatue sensors. One reading the temperature of the outside (exterior/space) while the other reads

the temperature within (interior) the TubeSat. During the test, it was seen that the inside temperature was

always slightly higher than the outside temperature, indicating that the electronics were generating their

on heat. During the orbit, the TubeSat will go through 45 minutes of sunlight and 45 minutes of eclipse,

which is why the test was conducted with 45 minutes of heating and 45 minutes of cooling cycles.

-10

0

10

20

30

40

50

60

70

801

31

86

35

95

21

26

91

58

61

90

32

22

02

53

72

85

43

17

13

48

83

80

54

12

24

43

94

75

65

07

35

39

05

70

76

02

46

34

16

65

86

97

57

29

27

60

97

92

68

24

3

Tem

per

atu

re (

cels

ius)

Time (sec)

Thermal Vacuum Testing - TubeSat - 8 Cycles

Outside Temp Inside Temp

RyeSat -TubeSat

Payload Design Page: 144

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.4 Software

3.4.1 Satellite Software

This system is designed to perform some of the major mission objectives of the satellite. The objectives

performed by this subsystem are as follows:

1. Taking and Storing Sensor Readings

2. Taking and Storing an Image

3. Correctly formatting the data into packets

4. Transmitting packets of sensor or image data to the ground station

5. Re-sending packets of data upon request from the ground station

The different operations of the satellite are triggered by the following commands from the ground station:

Table 19: Arduino Commands

Operation Command

Taking and Storing Sensor Readings S

Taking and Storing an Image C

Correctly formatting the data into packets N/A

Transmitting packets of sensor readings A

Transmitting packets of image data I

Re-sending packets of data upon request from the ground station R

3.4.1.1 Function Design

The above operations were determined to be the core of the mission requirements for the satellite

software. As such functions were created to perform these tasks. This section outlines the functions that

were created to perform the required tasks. The profiles of some of the major functions are shown below.

RyeSat -TubeSat

Payload Design Page: 145

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 20: Function Profile (sensorBytes)

Function Name sensorBytes

Objective Store multiple-byte sensor data into the EEPROM.

Description A single byte of data is stored in the EEPROM with a simple write

command. However, some sensor data is composed of more than one

byte of information. For this reason, this function takes one whole

reading and stores it one byte at a time by looping over the data byte-by-

byte by shifting 8 bits at a time.

Input Parameters Start: The EEPROM address at which storage of the data should begin.

Data: The bytes of sensor data to be stored.

Sensor Type: A character used to distinguish between types of sensor

data.

RETURN None

Table 21: Function Profile (sendMultiBytes)

Function Name sendMultiBytes

Objective Send multiple-byte data through the radio.

Description Much like the EEPROM, the radio also sends data one byte at a time.

Therefore, as with the EEPROM it is necessary to shift 8 bits at a time

until the entire length of the data is sent. For error correction it is

necessary to run a checksum on any bytes that are transmitted. For this

reason, this function takes in the current checksum and runs a checksum

over all the bytes of the data and outputs the new checksum so the caller

can maintain a valid checksum value.

Input Parameters Data: The bytes of data to be transmitted.

Datalen: The length of the data in bytes.

Checksum: The current checksum of the caller.

RETURN The new checksum that is obtained by running the checksum over the

bytes of data.

RyeSat -TubeSat

Payload Design Page: 146

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 22: Function Profile (writeSensorBlock)

Function Name writeSensorBlock

Objective Write a complete block of sensor data to the EEPROM.

Description This function writes a block of sensor data. A block of sensor data is

composed of a timestamp, two temperature readings, one light sensor

reading, a magnetometer reading and a gyroscope reading. The order

that these readings are stored in the EEPROM is important because the

ground station can only interpret the readings if they are in this order.

This function uses sensorBytes to store multiple-byte readings such as

the timestamp and IMU readings. After storing a sensor reading, this

function adds the length of the data stored to the current EEPROM

address. It is important to iterate the EEPROM address in order to avoid

overwriting previous data. For this reason, this function requires the

current available EEPROM address and returns the new available

EEPROM address

Input Parameters Start: The current available EEPROM address.

RETURN The new available EEPROM address.

Table 23: Function Profile (sendPackets)

Function Name sendPackets

Objective Transmit data formatted into packets.

Description This function accepts two EEPROM addresses and sends data in that

address range with the correct header information to the ground station.

The number of packets in the message is determined from the start and

end addresses provided. The type of transmission is also provided in the

inputs. This function loops over the number of packets. For each packet

it attaches header information and runs a checksum for each byte

transmitted by using the sendMultiBytes function. A delay of 50ms is

employed for this version because the test ground station needs time to

parse the incoming data.

Input Parameters Start: The first address in the EEPROM of the data to be transmitted.

Ending: The last address in the EEPROM of the data to be transmitted.

Message Type: The type of transmission. (Image, Sensor, or Re-send)

RETURN None

An important design characteristic of storing data in the EEPROM is the running total of the addresses

that have been used at any given time. The EEPROM is partitioned in to two sections where addresses 1

to 360,000 are devoted to image storage and addresses 360,001 to 512,000 are devoted to sensor data

storage. When any data is stored, a fictional cursor should move by the length of the data stored. In this

manner, the next byte to be stored does not overwrite the stored byte. Furthermore, this cursor can keep

RyeSat -TubeSat

Payload Design Page: 147

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

track of the amount of data stored at any given time. In the main code, global variables are defined when

the Arduino is powered on that keep track of the first and last camera and sensor bytes. The first bytes

never change, whereas the last bytes change whenever data is stored on the EEPROM. The following

figure illustrates this functionality.

Figure 126: Data Storage Illustration

Another important characteristic of the storage procedure is the ability to store pieces of data that are

more than one byte. For the purpose of this mission the information that consists of more than one byte of

data includes: IMU readings, timestamp, and the light sensor readings. The IMU readings are more than

one byte because they are angles in degrees and can therefore vary up to a value of 360. One byte can

store up to 255 and therefore cannot store an IMU reading. Therefore, 2 bytes are reserved for an IMU

reading (max value 65,535). The timestamp is conveyed in milliseconds and can be larger than 106 within

20 minutes of the mission. Therefore, 4 bytes are reserved for the timestamp (max value 4,294,967,296).

Light sensor readings are conveyed in lux which can vary from 10 to more than 103. Therefore, 2 bytes

are reserved for the light sensor (max value 65,535).

The storage of multiple-byte readings to the EEPROM requires storing each byte in the reading one-by-

one. To achieve this, bit-shifting is implemented for multiple-byte readings. The radio is also only able to

transmit one byte at a time. This means that the transmission of multiple-byte data also requires bit

shifting. The figure below illustrates bit-shifting.

RyeSat -TubeSat

Payload Design Page: 148

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 127: Bit Shifting Illustration

The storage and transmission of multiple-byte readings as single bytes means that the data stored on the

EEPROM and transmitted by the radio is conveyed to the ground station as the single byte values of the

multiple-byte reading. From the figure above it can be seen that the ground station will receive the values

255 and 191 instead of the actual value which is 65,471. This is one reason that it is important to establish

a message architecture. The only way to interpret these readings on the ground is by knowing exactly how

many bytes are reserved for a reading.

3.4.1.2 Testing and Results

The tests for this subsystem were conducted on a breakout board with very similar components to the

actual satellite. The following is a list of the payload components used in the test versus the components

used in the actual TubeSat.

RyeSat -TubeSat

Payload Design Page: 149

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 24: Component Differences between Test and Actual Components

Component Breakout Board TubeSat

Microcontroller Arduino Nano w/ ATMega328 Arduino Mini w/ ATMega328

Camera Miniature TTL Serial JPEG

Camera with NTSC Video

Miniature TTL Serial JPEG Camera

with NTSC Video

Light Sensor TSL2561 Digital Light Sensor Sparkfun Mini Photocell

Temperature Sensor MCP9808 High Accuracy I2C

Temperature Sensor (X 1)

One Wire Digital Temperature Sensor

- DS18B20 (X 2)

IMU SparkFun 9 Degrees of Freedom -

Sensor Stick

SparkFun 9 Degrees of Freedom -

Sensor Stick

Even though the components in the test build were different, the code in the appendix adapts to the

TubeSat components by implementing the two analog temperature sensors and the photocell instead of

the digital sensors. This change has been tested and confirmed to be working with the actual TubeSat. It

can be seen that the test build uses Arduino Nano whereas the actual build uses an Arduino Mini. Arduino

Nano has a capacity of approximately 30kb whereas the Arduino Mini has 28kb. The smaller capacity of

the Arduino Mini requires smaller libraries and more efficient code. Using an analog sensor is a better

decision because no additional libraries are required for the analog sensors to take readings.

Due to the nature of this subsystem, numerous tests were conducted and could not conceivably be

documented. However, test involving the major operations of this subsystem were documented. These

tests include: data acquisition tests, data storage tests, transmission tests.

Data acquisition tests were conducted very early in the design process in order to determine the type and

size of the data acquired by each component. These tests involved simply running existing example codes

or creating example codes in order to make each component function independently. Over the course of

these tests, the team became familiar with how to use the components and how the library for each

component functions. These tests took approximately 12 hours and their results are shown below. It

should be noted that the tests for the light and temperature sensors were made moot by the addition of

analog sensors, which require no libraries.

RyeSat -TubeSat

Payload Design Page: 150

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 25: Data Acquisition Tests Results

Component Results

Temperature Sensor Adafruit_MCP9808_Librarymaster required

Adafruit_Sensormaster required

Define an object of type: Adafruit_MCP9808

Get reading from object by using the

.readTempC() property

Data type: int8

Light Sensor Adafruit_TSL2591_Librarymaster required

Adafruit_Sensormaster required

Define functions displaySensorDetails,

configureSensor, simpleRead, advancedRead, and

unifiedSensorAPIRead

Define a tsl sensor event

Get reading from event.light

Data type: uint16

IMU Requires all files from Razor_AHRS arduino to be

in the same folder

Declare and setup as shown in the main code

Use Read_Magn(), Read_Gyro() and

Read_Accel() to store the readings in the arrays

magntom, gyro and accel

Array indicies 0,1,2 correspond to x,y,z

components

Data Type: int16

Camera Adafruit_VC0706_Serial_Camera_Library_master

required

Declare and setup as shown in the main code

Cam.takepicture() stores the current frame of the

camera on its internal memory

Image is stored in external storage by iterating

over the length of the image at a buffer size of 32.

It should be noted that at this point, several intermediate tests were conducted to integrate the code of all

payload components into one main code by using the results of the data acquisition tests. Data storage

tests were conducted in order to determine the method of storing and accessing the image and sensor data.

For the sensor data the storage tests consisted of simply writing the data acquired from the sensors to the

EEPROM and observing the printouts of what is stored by using the EEPROM’s read function. The result

of the sensor tests was the sensorBytes function which uses data types and bit shifting to store any kind of

sensor data.

RyeSat -TubeSat

Payload Design Page: 151

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

For the image data, the storage tests consisted of running the example code for the camera and using

printouts to observe how the data was being stored. The example code for the camera uses an SD card as

its storage. The SD card is able store the whole 32 byte buffer of the camera at once whereas the

EEPROM must store them one by one. The result is a nested loop which iterates over the buffer in order

to obtain the same effect as the SD. Another notable difference is the method of data allocation for the SD

and EEPROM. The SD allocates data for a new picture by assigning a new filename to it whereas the

EEPROM is only a set of 1s and 0s which understand no logic. In order for the EEPROM to know where

to start writing a new byte, the Arduino must keep track of where the previous byte was written. This

resulted in using the cursor approach where every time a byte is written on the EEPROM one is added to

the cursor position, so that the next time a byte is written it will be written in the proper address.

After the data was stored correctly in the EEPROM, transmission tests were conducted for the sensors and

the camera. The transmission tests can be divided in to two categories. The first is raw transmission tests,

where unformatted data is sent over the radio. The purpose of this type of test is to determine if the values

that are being transmitted from the EEPROM are correct and that the number of bytes transmitted are

correct.

For the sensor data, the raw transmission tests were conducted by printing the address and the value

transmitted and received and comparing for discrepancies. The results showed no discrepancies which

meant that there was no flaw in the method of accessing data from the EEPROM and no flaw in the logic

of the loops that transmit the data. The formatted sensor tests were conducted with the same procedure

and gave the same result.

For the image data, the raw transmission tests were conducted in a similar manner except the transmitted

and received bytes were printed in columns and then subtracted in order to check for discrepancies. This

was done because the image data was substantially larger than the sensor data and could not be observed

optimally on the serial monitor. The results showed an extra character every 32 bytes. 32 bytes being the

exact size of the buffer of the camera, it was observed that the nested loop for the camera was looping 33

times instead of 32 which caused the additional byte to be inserted. The problem was fixed and the image

transmitted without fault. The formatted sensor tests were conducted with the same procedure and showed

a discrepancy after the first 251 bytes. 251 bytes being the size of a packet, it was observed that the loop

variable was being assigned a value that was one lower than what is should have been. The problem was

fixed and the image transmitted without fault. The following images are from the raw and formatted

image tests. It should be noted that because of the enormous amount of printouts and the slow baud rate

that these tests can take up to 50 minutes each.

RyeSat -TubeSat

Payload Design Page: 152

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 128: Raw Transmission of Image

Figure 129: Formatted Transmission of Image

RyeSat -TubeSat

Payload Design Page: 153

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 130: Opening scope of Arduino after main code is uploaded

The image above (figure 5) is the scope that access the serial port for communicating with Arduino. By

entering a character that corresponds to a command in the code, you access that specific function.

Referring to table 1 will provide the full list of possible commands.

The images below are three different commands that have different outputs. The first image (left) takes a

sensor block with temperature readings, light readings, and IMU. What is important to note is that the

outputs are very detailed. Real sensor values are written for display purposes but when transferring data, it

is really sent/ received in 1s or 0s. When dealing with bytes, the maximum value is 255 then it becomes

another byte if it is larger than that value. This decimal value is written out and when two are combined

there binary summation adds to the real value. This is a way to check that the numbers make sense. The

second picture (middle) shows the bytes sent by the radio. The first 11 bytes compose the header specified

by the message architecture. The message header includes, the packet number, packet type, total number

of packets in the message, the timestamp of the packet and the instantaneous battery life when the packet

was sent. It should be noted that the timestamp values in the left picture are signify the time when each

sensor block was written whereas the time values in the middle relate to the transmission of the packet. It

can also be seen that at various points in the output there is a message indicating bit stuffing of certain

RyeSat -TubeSat

Payload Design Page: 154

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

bytes. This occurs because if six 1s are received in a row, the radio will end the transmission as per the

AX25 protocol. Therefore, whenever five 1s occur in a row, a 0 is placed after it in order to avoid

wrongful termination of the transmission. Finally, the last byte in the middle picture is the checksum byte.

This is the generated by performing an XOR checksum over the rest of the packet. The right hand picture

shows the received data in a MATLAB console. It can be seen that the last byte in this console shows the

same value of 64 for the last byte (checksum byte). This quickly shows that the received data and the

transmitted data match completely.

RyeSat -TubeSat

Payload Design Page: 155

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 131: Commands sent over serial and there outputs

RyeSat -TubeSat

Payload Design Page: 156

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.4.2 Ground Station Software

This system is designed for users on the ground to interact with and receive data from the satellite. The

main objectives of this system are:

1. Transmit commands to the satellite

2. Receive data from the satellite

3. Analyze received data and display for the user

4. Allow the user to specify commands to be sent to the satellite

5. Allow the user to interact with the system in an intuitive way

3.4.2.1 Receiving Data

Data received from the satellite is limited to 251B per packet, and is sandwiched between data required by

the radios to abide by the AX.25 protocol. Within the up to 251B of data, some space is reserved for a

header, and the rest is used for sensor data or image data, depending on the packet type. Sensor data

packets are composed 11 blocks of sensor reading. Each sensor block holds a timestamp of when the

sensor readings were recorded, two temperature readings, a photometer reading and 6 readings from the

IMU (giving readings along the x, y, z axes for the magnetometer and accelerometer). Since an image is

just a string of bytes without any human-readable structure, when transmitting an image packet the space

remaining in a packet after the header is filled with as much image data as possible. A byte is also

reserved at the end of each data packet to be used as a checksum. The checksum byte is created by a

cumulative XOR operation on each byte, from first to last, and is tacked on to the end of the packet.

Another 6 bytes are reserved to make room for overflow caused by bit stuffing. The AX.25 protocol

specifies a flag byte (01111110) that allows the radios to determine the start and end of each packet. To

prevent the occurrence of a prematurely terminated packet, all data sent to the radio for transmission has a

bit stuffing operation performed, and a bit unstuffing operation is performed when the data is received.

The bit stuffing operation inserts a 0 bit at to the right of any instance where five 1 bits are encountered,

and the bit unstuffing operation undoes this by removing a 0 bit from any instance of 111110

encountered. The bit stuffing operation requires the addition of extra bytes according to the ceiling of the

number of stuffed bits divided by 8 (i.e. 7 stuffed bits requires ceil(7/8)=1 extra byte, 10 stuffed bits

requires ceil(10/8)=2 bytes). Based on some back-of-the-envelope calculations, 6 bytes of overflow

(which can accommodate 48 bit stuffing operations) was determined to be an adequate amount of space to

reserve for this overflow. The details of the data packet, packet header, and sensor block structures are

shown in

RyeSat -TubeSat

Payload Design Page: 157

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 26, Table 27 and Table 28.

RyeSat -TubeSat

Payload Design Page: 158

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 26: Data Packet Structure

Allocation Size (B)

Header 11

Data 233

Checksum 1

Reserved for Bit-Stuffing Overflow 6

Table 27: Packet Header Structure

Allocation Size (B) Data Type

Packet ID Number 2 uint16

Message Type 1 char

Number of Packets in Message 2 uint16

Satellite Timestamp 4 uint32

Battery Voltage 2 uint16

Table 28: Packet Sensor Data Block Structure

Allocation Size (B) Data Type

Sensor Reading Timestamp 4 uint32

Temperature Reading (x2) 2 int8

Photometer Reading 2 uint16

IMU (x,y,z for mag and gyr) 12 int16

A single message (which might consist of a collection of sensor readings or a single image) can be spread

across multiple packets. To keep track of what packets have been received within a particular message,

each packet is given a Packet ID Number (unique only within a particular message). Once a message is

confirmed to have been fully received and a new message is requested by the ground, the Packet ID

Numbers are reused. There are five possible values for Message Type: I, A, E, K, and T. I and A indicate

an image-type or sensor-type message packet, which are used when the satellite is sending image or

sensor data to the ground. After receiving a command from the ground, the satellite will respond with an

empty packet using the E message type if there was an error in the command it received, K if the

command was received properly, and T if it has not heard back from the ground within the timeout

period. The Number of Packets in the header indicates the total number of packets over which this

message is spread across. Satellite Timestamp is the number of elapsed milliseconds since the satellite has

been turned on. Coupled with a timestamp from the ground station upon receiving the packet, this data is

used to calculate a best-fit equation to translate ground station timestamps into satellite timestamps (for

the purposes of timing when a photograph is taken). Finally, the battery voltage allows the health of the

satellite to be assessed any time data is downloaded.

RyeSat -TubeSat

Payload Design Page: 159

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.4.2.2 Function Design

The ground station code was written entirely in Matlab. The first stage of creating the ground station was

to write functions that would produce the core functionality of the ground station (create a structure to

store data, decide what to do based on the command inputted by the user, create the correct command

syntax based on user input, etc.). The second stage, which was in progress but incomplete at the time of

this report, was to write a GUI that would make use of all this functionality and present it to the user in an

easy-to-use format. Groups of functions are presented below with their overall purpose, and individual

functionality.

At the time of writing this report, all background functionality was completed and work was still being

done on the GUI. Because the other function groups are completed, it is possible (with a bit of testing that

was not possible because of restrictions on hardware use) to run the ground station through the command

line with some familiarity with the functions described below. The GUI, although intended to provide an

easy-to-use interface for the user, was deemed a less important objective than the ground station’s

functionality. The ground station was designed with this in mind, achieving functionality first, so that if

time prevented the software from being completed (as has happened) all that is missing is the superficial

covering that the GUI would provide.

In its current state, the ground station GUI only displays a table containing the most current list of

commands to be executed, and allows the user to add to, edit, remove from, or change commands in that

list. The final GUI was intended to have a button to initiate communication with the satellite by executing

the oldest unfinished command, as well as a pane to display information from whatever command is

selected in the GUI command table.

3.4.2.2.1 Radio Functions

Together, these functions manage the creation of a serial object to represent the physical radio and

manage the transmission and receipt of data through the radio.

Table 29: Function Profile (CheckRadioBuffer)

Function Name CheckRadioBuffer

Objective Determines number of bytes waiting in the radio’s buffer

Description Checks the given radio object for any data waiting in the buffer, and

returns the number of bytes in the buffer. If a value is provided for

timeout or expected_length, the function will check until that amount of

time has elapsed or that amount of data is found.

Inputs radio: Serial object representing the radio

timeout: Amount of time to wait before function returns (def. 1s), unless

expected_length happens first

expected_length: Once this many bytes are seen in the radio buffer the

function returns, unless the timeout happens first

Outputs msg_length: Number of bytes in radio buffer

RyeSat -TubeSat

Payload Design Page: 160

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 30: Function Profile (Connect2Radio)

Function Name Connect2Radio

Objective Creates a radio serial object

Description Creates a radio serial object given the com_port the radio is connected

to. Will also open or close the connection to that object based on

open_connection.

Inputs com_port: Name of the com port the physical radio is connected to,

entered as a string

open_connection: If a 1, will open connection to radio serial object. If

0, connection is not opened

Outputs radio: The created serial radio object

Table 31: Function Profile (IsRadioOpen)

Function Name IsRadioOpen

Objective Checks if a given serial radio object has an open connection

Description Returns a 1 if serial radio object has an open connection, and a 0 if the

connection is closed.

Inputs radio: Serial object representing the radio

Outputs is_open: Number of bytes in radio buffer

Table 32: Function Profile (OpenRadio)

Function Name OpenRadio

Objective Opens given serial radio object

Description Returns 1 if opening operation was successful

Inputs radio: Serial object representing the radio

Outputs success: Result of object opening operation

RyeSat -TubeSat

Payload Design Page: 161

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 33: Function Profile (RadioListen)

Function Name RadioListen

Objective Retrieves data from radio buffer over a specified wait period

Description Will wait for initial_wait before receiving any data before timing out.

Once data has been received, will wait for timeout between each

instance of receving data before timing out.

Inputs radio: Serial object representing the radio

initial_wait: Timeout duration before any data has been received

timeout: Timeout duration once at least one byte of data has been

retreived

Outputs buffer: The data retrieved from the radio as a uint8 column array

Table 34: Function Profile (RadioReceive)

Function Name RadioReceive

Objective Retrieves any data currently in the radio’s buffer

Description Returns whatever data is currently stored in the radio’s buffer (does not

check multiple times). Returns 0 if buffer is empty.

Inputs radio: Serial object representing the radio

Outputs message: The data retrieved from the radio as a uint8 column array

Table 35: FunctionProfile (RadioReset)

Function Name RadioReset

Objective Closes and recreates serial radio object

Description Closes out the radio object’s connection, deletes the radio object, and

creates a new one with an open connection.

Inputs radio: Old serial object representing the radio

Outputs radio: New serial object representing the radio

Table 36: Function Profile (RadioSend)

Function Name RadioSend

Objective Sends string of characters over the radio

Description Sends data provided in cmd_str over the radio

Inputs radio: Serial object representing the radio

cmd_str: Data to be sent over the radio

Outputs N/A

RyeSat -TubeSat

Payload Design Page: 162

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.4.2.2.2 Data Storage and Command Functions

These functions create and format commands to be sent to the satellite, and create a data structure that

stores the data received from the satellite.

Table 37: Function Profile (AddChecksum)

Function Name AddChecksum

Objective Calculates a checksum for the inputted command message

Description Performs a cumulative XOR (exclusive OR) operation on all the bytes of

cmd, starting with the first two bytes, then XORing the result with the

third byte, then XORing that result with the fourth byte, etc. until all the

bytes of cmd have been included. The result is appended to cmd and

returned as the output.

Inputs cmd: Command for satellite as a Uint8 array

Outputs msg_length: Result of cmd with a XOR checksum appended to the end

Table 38: Function Profile (BitStuffing)

Function Name BitStuffing

Objective Stuffs provided data in order to remove any potential instances of the

AX.25 flag from occurring in the data.

Description Checks buf bit by bit. Whenever a sequence of five 1s is encountered a 0

is appended to it (i.e. 11111X becomes 111110X). This bit stuffing is

performed left-to-right (most-significant-bit to least-significant-bit).

Inputs buf: Uint8 array

Outputs stuffed_buf: Result of bit stuffing operation on buf

Table 39: Function Profile (BitUnstuffing)

Function Name BitUnstuffing

Objective Undoes the bit stuffing operation to restore data to its orginal state.

Description Checks stuffed_buf bit by bit. Whenever a sequence of five 1s is

encountered a zero is removed from the end of it (i.e. 111110X becomes

11111X). This operation is performed left-to-right (most-significant-bit

to least-significant-bit).

Inputs stuffed_buf: Uint8 array

Outputs unstuffed_buf: Result of bit unstuffing operation on stuffed_buf

RyeSat -TubeSat

Payload Design Page: 163

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 40: Function Profile (CheckChecksum)

Function Name CheckChecksum

Objective Verifies the data’s checksum byte.

Description Performs a cumulative XOR checksum (just like AddChecksum) on all

bytes of data provided except the last one (which is the checksum byte).

Compares the result of its cumulative XOR to the checksum byte at the

end and returns 1 if they match and 0 if they don’t.

Inputs buffer: Data to have its checksum checked

Outputs checksum_is_good: Returns 1 if checksum is verified, 0 if not

Table 41: Function Profile (CollectDataCommand)

Function Name CollectDataCommand

Objective Creates a ‘collect data’ command formatted as a uint8 array.

Description Creates either a ‘collect sensor data’ or a ‘collect camera image’

command based on type. If type is ‘C’ for ‘collect camera image,’ then

pic_timestamp and g2s_time_coefs is required input. Pic_timestamp is

a timestamp formatted as a Matlab datenum, and g2s_time_coefs are the

coefficients of a line of best fit relating Matlab datenum timestamps to

satellite milliseconds-since-turned-on timestamps. Together, these two

inputs allow a timestamp to be created that is understandable to the

satellite.

Inputs type: Character representing command to collect sensor data (S) or

collect a camera image (C)

pic_timestamp: Matlab datenum timestamp indicating the time the

picture should be taken (required only for ‘C’ command)

expected_length: Linear coefficients of line of best fit between ground

station and satellite timestamps. Formatted as [a b] for a line represented

as sat_time = a*(ground_time) + b

Outputs cmd: Resulting command formatted as a uint8 array

RyeSat -TubeSat

Payload Design Page: 164

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 42: Function Profile (CreateMessageStructure)

Function Name CreateMessageStructure

Objective Creates a Matlab struct of empty fields used to store data received from

the satellite.

Description The Matlab struct msg contains the following fields:

msg.type – packet type [char]

msg.size – number of packets in message [uint16]

msg.id – column array with length(msg.id) = msg.size indicating the

presence (true) or absence (false) of each packet [logical]

msg.bat – column array with length(msg.bat) = msg.size of satellite

battery voltage data of each packet [uint16]

msg.time_sat – column array with length(msg.time_sat) = msg.size of

satellite timestamps for each packet [uint32]

msg.time_gnd – column array with length(msg.time_gnd) = msg.size of

ground timestamps for each packet [double]

msg.img_tmp – 2D array with size(msg.img_tmp)(1) = msg.size of

image data, with each row holding data from a single packet [uint8]

msg.dat.t – 2D array with size(msg.dat.t)(1) = msg.size of satellite

timestamps, with each row having timestamps from a single packet, and

each cell holding timestamps for a single sensor block [uint32]

msg.dat.temp – 3D array with size(msg.dat.temp)(1) = msg.size of

temperature data, with 1st dimension denoting the packet, 2nd dimension

denoting the sensor block, and 3rd dimension denoting the first or second

temperature sensor [int8]

msg.dat.light – 2D array with size(msg.dat.light)(1) = msg.size of

photometer data, with each row having data from a single packet and

each cell having data from a single sensor block [uint16]

msg.dat.gyr – 3D array with size(msg.dat.gyr)(1) = msg.size of

gyroscope data, with 1st dimension denoting the packet, 2nd dimension

denoting the sensor block, and 3rd dimension denoting data for the x, y,

or z axis [int16]

msg.dat.mag – 3D array with size(msg.dat.mag)(1) = msg.size of

magnetometer data, with 1st dimension denoting the packet, 2nd

dimension denoting the sensor block, and 3rd dimension denoting data

for the x, y, or z axis [int16]

Inputs N/A

Outputs msg: Empty message data structure

RyeSat -TubeSat

Payload Design Page: 165

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 43: Function Profile (MakeG2SAndSaveTimestamps)

Function Name MakeG2SAndSaveTimestamps

Objective Saves corresponding satellite and ground timestamps to a file along with

an updated estimate of linear coefficients to relate the them.

Description Saves corresponding satellite and ground timestamps to a file along with

an updated estimate of linear coefficients to relate the them. Before

saving satellite timestamps, accounts for any overflow that may have

occurred. Also calculates linear coefficients using a linear regression to

represent a function of satellite times as a function of ground times and

saves these coefficients to the same file.

Inputs g_times: Vector array of ground station timestamps

s_times: Vector array of satellite timestamps

Outputs N/A

Table 44: Function Profile (NumberOfPacketsToRequest)

Function Name NumberOfPacketsToRequest

Objective Determines how many packets of data to request from the satellite.

Description Using the timestamp of when the satellite is predicted to be out of range,

the amount of time allotted to receiving data from the satellite in this

volley of packets, and the number of packets left to receive in this

message, this function determines how many packets the ground station

should request from the satellite for this particular volley.

Inputs out_of_range_timestamp: Predicted Matlab datenum of when the

satellite is expected to be out of communication range

volley_duration: Maximum duration of the upcoming volley/group of

data packets

pkts_left_to_receive: Number of packets left to receive in this message

Outputs num_of_pkts: Number of packets that should be requested from the

satellite for this volley

RyeSat -TubeSat

Payload Design Page: 166

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 45: Function Profile (ReadPacket)

Function Name ReadPacket

Objective Parses the data received from the radio into a human-readable Matlab

struct

Description Provided a uint8 array of sensor/image data from the radio, this data is

parsed and formatted into the appropriate data classes and saved as a

data message structure (format dictated by CreateMessageStructure).

Inputs buffer: Data from radio

msg: Message structure for storing parsed and formatted data

Outputs msg: Message structure updated with data parsed and formatted from

buffer

Table 46: Function Profile (SendDataCommand)

Function Name SendDataCommand

Objective Creates a ‘send data’ command formatted as a uint8 array.

Description Creates either a ‘send sensor data,’ ‘resend sensor data,’ ‘send camera

image,’ or a ‘resend camera image’ command based on type.

Out_of_range_timestamp and msg are used to determine how many

packets of data should be requested by this command.

Inputs type: Character representing command to collect sensor data (S) or

collect a camera image (C)

msg: Message structure containing any previously collected data from

this message

out_of_range_timestamp: Matlab datenum timestamp indicating the

expected time when the satellite will move out of communication range

Outputs cmd: Resulting command formatted as a uint8 array

RyeSat -TubeSat

Payload Design Page: 167

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.4.2.2.3 Management Functions

These functions manage the Matlab data files that store lists of commands to be sent by the ground station

and the data collected from the satellite.

Table 47: Function Profile (CmdListAdd)

Function Name CmdListAdd

Objective Adds a command to the end of the most current command list.

Description Adds the provided command character and timestamp string to the most

current command list.

Inputs cmd: Command as a char

timestamp: Timstamp string for command

Outputs N/A

Table 48: Function Profile (CmdListChange)

Function Name CmdListChange

Objective Changes indicated command in the most current command list.

Description Alters the indicated command in the most current command list to the

provided command character.

Inputs cmd: Command as a char

timestamp: Timstamp string for command

idx: Index of command to be changed

Outputs N/A

Table 49: Function Profile (CmdListCreate)

Function Name CmdListCreate

Objective Creates a new command list.

Description A command list is a uniquely named mat-file (named with timestamp)

holding a cell array vector of commands and associated timestamps,

message structures, and acknowledgements to those commands. This

function creates a new, empty command list file.

Inputs N/A

Outputs N/A

RyeSat -TubeSat

Payload Design Page: 168

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 50: Function Profile (CmdListInsert)

Function Name CmdListInsert

Objective Inserts command in the most current command list at the indicated

location.

Description Creates a new command in the most current command list and places it

at the indicated location, pushing the displaced commands further down

the list.

Inputs cmd: Command as a char

timestamp: Timstamp string for command

idx: Index of where command will be inserted

Outputs N/A

Table 51: Function Profile (CmdListRemove)

Function Name CmdListRemove

Objective Removes indicated command in the most current command list.

Description After removing command at the indicated location in the most current

command list, all commands following it are moved up in the list.

Inputs idx: Index of command to be removed

Outputs N/A

Table 52: Function Profile (GetNewestCmdList)

Function Name GetNewestCmdList

Objective Provides the filename of the most recently created command list.

Description Searches through the directory containing all command lists and

provides the filename of the most recently created one as a string.

Inputs N/A

Outputs fname: Filename of most recently created command list file

RyeSat -TubeSat

Payload Design Page: 169

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 53: Function Profile (SendCmdReceiveData)

Function Name SendCmdReceiveData

Objective Sends a command to the satellite and awaits the appropriate response, be

it a single-packet acknowledgement or a multi-packet message of sensor

or image data.

Description Determines, based on the type of command being sent to the satellite,

how to format the command, sends the command, awaits a response,

determines what kind of response to expect, and stores the received data

appropriately.

Inputs radio: Serial object representing the radio

type: Satellite command as a char

msg: Message data structure

timestamp: Timestamp indicating when the picture should be taken (for

a ‘take picture command’) or indicating when the satellite is out of

communication range (for a ‘send data’ command)

Outputs msg: Message data structure updated with received data from satellite

ack: Acknowledgement char indicating if the command was a

successfully executed, if there was an error, or if the process timed out

RyeSat -TubeSat

Payload Design Page: 170

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.4.2.2.4 GUI Functions

These functions manage the GUI which will allow the user to easily control the ground station and view

data retrieved from the satellite.

Table 54: Function Profile (AddEmptyDataRow)

Function Name AddEmptyDataRow

Objective Adds an empty row to the command list table in the GUI.

Description The empty row in the command table allows the user to easily add a

command to the command list.

Inputs data: Object representing the command list data table in the GUI figure

Outputs new_data: Object representing the updated command list data table in

the GUI figure, which now includes an empty row that allows the user to

add an additional command

Table 55: Function Profile (GroundGUI)

Function Name GroundGUI

Objective Manages the GUI figure window, the elements in it, and references the

callback functions used by those elements.

Description Contains data for the formatting of every element in the GUI, including

their appearance and behaviour.

Inputs N/A

Outputs N/A

Table 56: Function Profile (ReloadDataTable)

Function Name ReloadDataTable

Objective Reloads the command list table in the GUI from the most current

command list file.

Description Accesses the most current command list file and refreshes the table

object in the GUI that displays that information with the data from the

file.

Inputs N/A

Outputs data: GUI data table object containing data from the most current

command list file

RyeSat -TubeSat

Payload Design Page: 171

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 57: Function Profile (TimestampFormat)

Function Name TimestampFormat

Objective Creates a central location from which to specify the format of the

timestamp string used by the GUI.

Description Returns a Matlab datestring format string.

Inputs N/A

Outputs ts_format: Returns the Matlab datestring format string

Table 58: Function Profile (TableEditCallback)

Function Name TableEditCallback

Objective Called by the GUI when the GUI’s command list table is altered by

adding, removing, inserting, or changing commands.

Description Allows the editing of commands only if they have not yet been executed.

Otherwise, the user-inputted changes are made to the most current

command list file, and the GUI command list table is updated from that

file.

Inputs tab: Object representing the command list data table in the GUI figure

cbdata: Structure containing data related to the changes made to the

command list data table object

Outputs N/A

RyeSat -TubeSat

Payload Design Page: 172

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.4.3 Hardware

Part Value Package Vendor Units Price (CAD)

Arduino N/A Mini 05 Sparkfun 1 42.26

C1 0.1uF 0805

Digikey 25 1.05 C2 0.1uF 0805

C3 0.1uF 0805

C4 0.1uF 0805

C5 10uF 0805 Digikey 1 1.19

C6 4.7uF 0805 Digikey 10 1.89

C7 1uF 0805 Digikey 10 1.19

C8 1uF 0805

IMU N/A IMU Sparkfun 1 62.18

L1 4.7uH 0805 Digikey 10 4.44

LED Greeb LED3MM Digikey 10 5.42

R1 330 0805 Digikey 100 1.50

R2 10K 0805 Digikey 50 1.12

R3 15K 0805 Digikey 50 1.12

R4 4.7K 0805 Digikey 50 1.35

R5 4.7K 0805

R6 976k 0805 Digikey 50 1.99

R7 309k 0805 Digikey 50 1.99

R8 10K 0805 Digikey 50 1.12

T1 N/A Z03A Sparkfun 1 1.87

T2 N/A Z03A Sparkfun 1 1.87

U1 N/A SOT23 Digikey 10 4.97

U2 N/A SOIC-8 Wide

Digikey 1 2.27

U3 N/A SOIC-8 Wide

Digikey 1 2.27

U4 N/A DBV_R-PDS Digikey 10 7.38

U5 N/A PHOTOCELL Sparkfun 1 1.87

TOTAL 152.31

Figure 132: Hardware specification for payload

RyeSat -TubeSat

Payload Design Page: 173

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Arduino Camera SD notes

D12,MISO DO

D11,MOSI DI

D13,CLK CLK

D10,CS CS

D2(RX) TX

D3(TX) RX Voltage divider

Analog Light

5v VCC

A0 OUT

GND GND

TSL LIGHT 0x29 (can’t change)

3 OR 5V Vin

A5 SCL

A4 SDA

GND GND

MCP Temp

0x18 (can change between 0x18 and 0x1F)

3 or 5v VDD

A5 SCL

A4 SDA

GND GND

IMU

3 OR 5V VCC

A5 SCL

A4 SDA

GND GND

Transmitter

5V 5V

GND GND

RX1 D10

TX0 D11

Figure 133: Pin layout for breadboard and payload

RyeSat -TubeSat

Payload Design Page: 174

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

3.4.4 Tests and Progress

Table 59: Software Tests and Progress

# Testing Priority Comments

1 Test radio communication between ground station and TubeSat using XBee radio

Must Successful (Fall 2014)

2 Arduino stores smaller image size (to be able to transmit within a single communication window)

Must Unsuccessful (Fall 2014) *not supported by camera

3 Arduino reads image from camera multiple times

Must Unsuccessful (Fall 2014) * camera clears image after it is read

4 Arduino operates and receives data from sensors and camera

Must Successful (Fall 2014)

5 Arduino can use EEPROM to store a variety of sensor and image data

Must Successful (Fall 2014)

6 Arduino stores an image to EEPROM and read back multiple times

Must Successful (Jan)

7 Arduino casts sensor data in appropriate formats for transmission

Must Successful (Jan)

8 Ground station casts and stores data from a simulated packet in a usable data structure

Must Successful (Jan)

9 Time required for Arduino to store message to the EEPROM

Useful Info

Takes roughly 5min (Jan)

10 Packet header created to comply with regulations Must Successful

11 Radio packet header and footer must be analyzed and changed accordingly.

Must Successful

12 Create functions both in the ground station and the Tubesat to analyze radio packets

Highly Beneficial

Successful

13 Functions for 12 must not interfere with radio communication.

Low N/A

14 New sensors used that will replace previous sensors for the payload

Must Successful

15 Uploading Software to payload board directly Must Successful

RyeSat -TubeSat

Payload Design Page: 175

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

16 Radio can transfer sensor data and images from Data storage (EEPROM)

Must Successful

17 Testing the actual data being received is correct Must Successful

18 Ground station Receiving Data from TubeSat Must Succesful

19 Sending commands from ground station and receiving commands from TubeSat

Must Successful

20 Detailed debugging to ensure no programming flaws revolved about probable cases

Must Successful

21 Testing to ensure remaining data residue occurs when transferring picture so it does not corrupt image file.

Must Successful

22 Creating a checksum algorithm to autonomously check the packets so its performed efficiently

Must Successful

23 Ground Station currently archiving data and commands

Must Successful

24 Creation of GUI the ground station Must Ongoing

25 Payload sensors such as light and temperature are integrated

Must Complete

26 Payload sensor such as IMU shall be integrated Must Complete

27 Program the radio to use Rye TubeSat call sign Must Ongoing

28 Create code to handle the AX.25 protocol on the Arduino

Must Completed

29 Create on the ground station to handle the AX.25 protocol.

Must Complete

30 Create a sleep mode feature for power conservation Must Complete

RyeSat -TubeSat

Payload Design Page: 176

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

4 System Objectives

4.1 Simulation System requirements are the constraints used by the Simulation to model and create the orbit and attitude

simulation of the TubeSat. The system requirements were distributed and prioritized based on different

design requirements identified by the team. The priority of each system was measured on a scale of 1-10,

where 10 and 1 represents highest and lowest priority, respectively.

This section summarizes the system requirements considered by the Simulation team. Taking into

consideration the work done during last semester and the work needed to done for the completion of a

detailed and precise orbit and attitude simulation, following table was created. Table 1 enlists all of the

system requirements that were evaluated on a theoretical basis and were only verified through

mathematical computation and MATLAB simulation.

4.2 Structures a. Ensure proper integration and assembly of all components

b. Ensure mass properties data is accurate

c. Provide the length of the wires based on the CATIA V5 model

d. Design the battery holder

e. Design the magnet holder and configuration

f. Design the Solar PCB and aluminum plate retainer ring

g. Ensure that the TubeSat as designed survives all required tests

RyeSat -TubeSat

Payload Design Page: 177

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

4.3 Hardware/Electronics

4.3.1 Payload

ID Requirement Rationale Priority VM

A I T D

H-PAY1 Sensors shall comply with 3.3V

or 5V logic To ensure compliance with power

supply subsystem 1 x

H-PAY2 Shall measure temperature of

TubeSat Health monitoring information 3 x

H-PAY3 Shall measure remaining battery

voltage Critical mission information 1 x

H-PAY4 Sensor shall communicate via I2C

protocol Optimize performance of controller

board 2 x

H-PAY5 Shall determine attitude information using IMU

Primarily using magnetometer to determine attitude in relation to

Earth 1 x

H-PAY6 Shall measure luminosity on

camera lens

Reading light reflection to determine if camera is pointing

towards Earth 1 x

RyeSat -TubeSat

Payload Design Page: 178

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

4.3.2 Electric Power Subsystem

ID Requirement Rationale Priority VM

A I T D

H-EPS1 Battery shall provide enough

power for one orbit To ensure that at least enough

power is available during eclipse 2 x x

H-EPS2 Battery shall discharge at peak

350 mAh To handle current spike when all components run synchronously

1 x x

H-EPS3 Battery shall provide a maximum

of 4.2V and minimum of 3.6V Optimum performance of step-up

and voltage conversion 3 x x

H-EPS4 Solar panels shall be capable to

fully power the TubeSat

In case that battery fails or to charge battery while powering

satellite 1 x x

H-EPS5 TubeSat shall not operate before release from rocket payload bay

Basic mission requirement 1 x x x x

H-EPS6 TubeSat shall provide 5V to

Arduino Required for mission control 1 x

H-EPS7 TubeSat shall provide 5.2V to

radio and amplifier Required for communication 1 x x x x

H-EPS8 All electronic devices shall

operate within defined temperature range

Avoid any potential malfunction due to premature electronic failure

1 x x

H-EPS9 Electronic components shall withstand acceleration of 5g

To avoid failure of components during tumbling phase

1 x

H-EPS10 Electronic components shall not interfere or disturb operation of

other devices

To reduce noise and improve accuracy of data and

communications 2 x x

RyeSat -TubeSat

Payload Design Page: 179

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

4.4 Requirements Checklist

Table 60: Requirements Legend

Legend

Shall be compliant by PDR

Shall be compliant by CDR

Shall be compliant by FRR

Table 61: TubeSat Requirements Checklist

Requirement ID

Number Requirement Description Compliancy Verification Method

Simulation, Orbit Determination, Attitude Control

RyeSat-SYS-01 The TubeSat's selected orbit shall

pass over the ground station at

least twice a day Compliant Simulation

RyeSat-SYS-02

The TubeSat's selected orbit shall

provide it with enough exposure to

the sun to meet the power

requirements

Compliant Simulation/Testing

RyeSat-SYS-03 The TubeSat's selected orbit shall

be in a low earth polar orbit Compliant Simulation

RyeSat-SYS-04 The TubeSat shall have a pointing

accuracy of ±10° Compliant Theoretical

Analysis/Simulation

RyeSat-SYS-05

The TubeSat attitude shall be

stabilized using permanent

magnets for passive attitude

control Compliant Theoretical

Analysis/Simulation

RyeSat-SYS-06 The TubeSat attitude shall

stabilize within 10-15 days of

launch Compliant Theoretical

Analysis/Simulation

RyeSat-SYS-07 The permanent magnets shall fit

inside the volume allocated for the

attitude control system without Compliant Testing

RyeSat -TubeSat

Payload Design Page: 180

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

interfering with other payload

components

RyeSat-SYS-08 The mass of the passive attitude

control system shall not exceed 50

grams Compliant Testing

RyeSat-SYS-09 There shall be an attitude

simulation for the TubeSat Compliant Simulation

RyeSat-SYS-10

There shall be an orbit simulation

for the TubeSat which takes into

account the eclipse times and

duration of contact with the

ground station

Compliant Simulation

RyeSat-SYS-11

The power consumption shall not

exceed the power generated by the

solar panels Compliant Theoretical Analysis

RyeSat-SYS-12 There shall be a power budget

analysis for the TubeSat Compliant Theoretical Analysis

Structure, Model and Design

RyeSat-SYS-13

The TubeSat's physical parameters

shall not exceed a diameter of 3.64

in and a length of 5.0 in

Compliant Packaging Confirmed

RyeSat-SYS-14

A CATIA V5 model shall be

produced with all necessary

components

Compliant Component Drawings

RyeSat-SYS-15

All CATIA V5 component models

must assemble and integrate

accurately

Compliant Assemble Drawing and

Integration

RyeSat-SYS-16

The wiring shall be accurately

routed within a CATIA V5 model

prior to installation, following the

most efficient path

Compliant Assemble Drawing and

Integration

RyeSat -TubeSat

Payload Design Page: 181

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Rye-Sat-SYS-17

Design will be built to ensure all

components fit accurately without

interference

Compliant Assembly

RyeSat-SYS-18

Internal components shall be

accessible for average human

fingers (0.6in diameter)

Partially

Compliant Assembly

RyeSat-SYS-19 Internal components shall be

accessible for tools Compliant Assembly

RyeSat-SYS-20 TubeSat shall not contain any

hazardous material Compliant Mission Requirement

RyeSat-SYS-21 The battery shall be secured to the

structure

Partially

Compliant Assembly

RyeSat-SYS-22 Stress Analysis on battery case

must sustain 1st mode vibration Compliant CATIA Stress Analysis

RyeSat-SYS-23 TubeSat construction must follow

design parameters Compliant Assembly

RyeSat-SYS-24 TubeSat must pass final vibration

testing Not Compliant Vibration Testing

RyeSat-SYS-25 TubeSat must pass thermal

vacuum testing Compliant Thermal Vacuum Testing

RyeSat-SYS-26 TubeSat must get flight

certification Not Compliant

Official Testing

Authority

RyeSat-SYS-27 TubeSat shall successfully

withstand forces during launch Not Compliant Launch

RyeSat-SYS-28 TubeSat shall not disassemble

during launch Not Compliant Launch

RyeSat-SYS-29 TubeSat shall successfully launch

into orbit Not Compliant Launch

Software

RyeSat -TubeSat

Payload Design Page: 182

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

RyeSat-SYS-30

TS shall be in a powered off state,

until deployment from the launch

vehicle Compliant Simulation

RyeSat-SYS-31

Once turned on, the TS shall

perform a check of all its systems.

The results will be transmitted

once radio communication is on

Compliant Simulation

RyeSat-SYS-32 Once turned on, the TS shall start

an internal clock from 0 Compliant Simulation

RyeSat-SYS-33

The TS shall not turn on radio

communication until 45 min after

deployment from launch vehicle Compliant Simulation

RyeSat-SYS-34

TS shall be able to turn off radio

transmission by command from

the ground Compliant Simulation

RyeSat-SYS-35

EEPROM’s 512kB shall be used

as a partitioned space, with the

first 360kB reserved for image

data (in 60kB blocks) and the

remaining 152kB reserved for

sensor data

Compliant Simulation

RyeSat-SYS-36

The GS shall not be automated to

function without an operator

present

Compliant Design

RyeSat-SYS-37 Communications shall not be

encrypted Compliant Design

RyeSat-SYS-38

TS and GS shall send data

transmissions of no more than

2008 bits

Compliant and Hardware restriction

Design

RyeSat-SYS-39 All communications shall have

their checksums verified on

receipt (responses to an erroneous

Compliant Simulation

RyeSat -TubeSat

Payload Design Page: 183

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

message shall depend upon

message context)

RyeSat-SYS-40 TS shall check radio buffer every

30 seconds Compliant Simulation

RyeSat-SYS-41

GS shall wait for 45 seconds for a

reply from TS after sending a data

request.

Compliant Simulation

RyeSat-SYS-42

Ground station shall hold

incoming image packets in a

temporary structure until the full

image is received, before

constructing the image file.

Compliant Simulation

RyeSat-SYS-43 The EEPROM shall store images

once captured Compliant Simulation

RyeSat-SYS-44

EEPROM shall clear out old

images once receipt is confirmed

from GS

Compliant Simulation

RyeSat-SYS-45

Sensor data shall be sent in

original format, received as

individual bytes, and recast upon

receipt

Compliant Design

RyeSat-SYS-46

To download sensor data, GS will

first request TS to confirm that

sensor data is available

Compliant Design

RyeSat-SYS-47

In its confirmation message, the

TS shall indicate the calculated

number of packets the GS should

expect to receive

Compliant Design

RyeSat-SYS-48

When TS confirms sensor data is

available, the GS shall request the

TS to send the available data

Compliant Design

RyeSat-SYS-49

To download data, GS will first

request TS to confirm that data is

available

Compliant Design

RyeSat -TubeSat

Payload Design Page: 184

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

RyeSat-SYS-50

In its confirmation message, the

TS shall indicate the calculated

number of packets the GS should

expect to receive for this particular

data download message

Compliant Simulation

RyeSat-SYS-51

When TS confirms sensor data is

available, the GS shall calculate

how many packets the TS should

send (given estimated

communication window) and then

request that number of packets be

sent by the TS

Compliant Simulation

Electronics/Hardware

RyeSat-SYS-52

TubeSat physical dimensions shall

not exceed a maximum diameter

of 3.64 in and a length of 5.0 in

Compliant Design

RyeSat-SYS-53

The TubeSat shall provide all 5 V

to the Arduino Mini, 4.5-16 V to

the RadioMetrix Transceiver, 5 V

to the RadioMetrix Amplifier

Compliant Design

RyeSat-SYS-54

The TubeSat shall not use any

material that has the potential to

degrade in an ambient

environment

Compliant Design

RyeSat-SYS-55

The TubeSat shall remain powered

off from time of delivery to

deployment

Compliant Design

RyeSat-SYS-56

The power generation shall be

greater than greatest expected

consumption (360 mA) during

illumination

Compliant Design

RyeSat-SYS-57

The battery discharge shall be

sufficient to provide power to

components at greatest expected

consumption (360 mA) during

eclipse

Compliant Thermal Vacuum Test

RyeSat -TubeSat

Payload Design Page: 185

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

RyeSat-SYS-58

The TubeSat shall not use any

materials that have the potential to

degrade during the 6 months

storage duration after assembly

Compliant Design

RyeSat-SYS-59

The deployment switches shall be

non-latching (electrically or

mechanically)

Compliant Integration Test

RyeSat-SYS-60

The TubeSat shall maintain all its

electronic components within

operating range while in operation

Compliant Thermal Vacuum Test

RyeSat-SYS-61

The TubeSat shall survive within

the temperature range of -20℃ to

+60℃ from the launch time until

its deployment

Compliant Thermal Vacuum Test

RyeSat-SYS-62

Each TubeSat board (PM board,

communication board etc.) shall

function during thermal vacuum

testing

Compliant Thermal Vacuum Test

RyeSat-SYS-63

EMC testing performed on the

TubeSat shall demonstrate that

radio signals and commands can

be transmitted and received

without causing any interference

to the onboard instruments

Not Compliant (Facility Not Available)

EMC Test

RyeSat-SYS-64

Payload dimensions shall be

within a diameter of 92.5mm and

a height of 50.8mm

Compliant Design

RyeSat-SYS-65 The cost of the payload shall not

exceed $500 Compliant Design

RyeSat-SYS-66 The mass of the payload shall not

exceed 250 g Compliant Design

RyeSat-SYS-67 The payload power draw shall not

exceed 50 mA Compliant Design

RyeSat -TubeSat

Payload Design Page: 186

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

RyeSat-SYS-68

The payload shall be controlled by

a separate microcontroller from

the main TubeSat microcontroller

Compliant Design

RyeSat-SYS-69

The PSIMU shall include a 3-axis

gyro and accelerometer and a

magnetometer.

Compliant Design

RyeSat-SYS-70

Testing shall confirm the function

of the Arduino’s integration with

the measurement devices

Compliant Integration Test

RyeSat-SYS-71 Testing shall be used to determine

any potential issues Compliant Integration Test

RyeSat-SYS-72

The following tests shall be

conducted to confirm the

operation of the payload:

- Thermal Measurement and

Control Unit data acquisition

- PSIMU data acquisition - Earth

Imaging Unit data acquisition

- Earth Imaging Unit data

processing

- Noise filtering

- Vibration testing

- Thermal testing

- Vacuum testing

Compliant Thermal Vacuum Test

RyeSat-SYS-73

The components shall be

accessible by human hands or

tools held in human hands during

the entirety of the assembly

process

Compliant Integration Test

RyeSat-SYS-74

The components must fit neatly

and without interference inside the

specified payload area

Compliant Design

RyeSat-SYS-75

Wires shall be organized, clearly

distinguishable from one another,

and shall not interfere with other

components

Compliant Integration Test

RyeSat -TubeSat

Payload Design Page: 187

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

RyeSat-SYS-76

The components shall be handled

with care while integrating and

testing so as to avoid damage to

them

Compliant Integration Test

RyeSat-SYS-77

The payload PCB shall connect

the main microcontroller and the

payload microcontroller

Compliant Design

RyeSat-SYS-78

The components shall include

appropriate capacitors between the

power and ground lines to reduce

noise

Compliant Design

RyeSat -TubeSat

Payload Design Page: 188

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

5 Risk Management

5.1 Technical Risks - Structures

Table 62: Model Risk Failure

Risk Event 1 3D Modeling Integration Failure

Probability Low 3 /20

Integration fail

Consequence

to Project

Moderate 7/20

Schedule delay

Risk

Assessment

Moderate 11/20

Check parameters of design

Check physical parameter of actual components

Mitigation

Plan Cross-reference physical components and design parameters to

ensure accuracy

Contingency

Plan Overtime to catch up to project schedule

Table 63: Mock-up Failure

Risk Event 2 Mock-up Structure Failure

Probability Moderate 7 /20

A mock-up TubeSat is not available for testing

Consequence

to Project

Moderate 7/20

Schedule and testing delay

Risk

Assessment

Moderate 11/20

Check parameters of printed design for

inaccuracies or damage

Check 3D model for inaccuracies

Mitigation

Plan Cross-reference physical components and design parameters to

ensure accuracy

Ensure appropriate tools are used for physical assembly

Contingency

Plan Overtime to catch up to project schedule

Immediate re-printing of mock-up and assembly

RyeSat -TubeSat

Payload Design Page: 189

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 64: Final TubeSat Assemble Failure

Risk Event 3 Official Structure Assembly Failure

Probability Moderate 7/20

Expected to run into certain issues

Consequence

to Project

Moderate 7/20

Schedule and launch delay

Risk

Assessment

Moderate 11/20

Check parameters of printed design for

inaccuracies or damage

Cross-reference mock-up TubeSat

Mitigation

Plan Cross-reference all parameters to fix any inaccuracies

Ensure appropriate tools are used for physical assembly

Contingency

Plan Overtime to catch up to project schedule

Immediate solutions are required for errors to meet project

deadline

Table 65: Testing Failure

Risk Event 4 Overtime testing

Probability Moderate 6/20

TubeSat is not ready for testing or, testing equipment

delay

Consequence

to Project

Moderate 7/20

Schedule, official structure assembly, and verification

delay

Risk

Assessment

Moderate 11/20

Check parameters of printed design for

inaccuracies or damage

Check position and parameters of payload

Mitigation

Plan Cross-reference all parameters to fix any inaccuracies

Ensure payload is positioned and its properties are accurate

Contingency

Plan Overtime to catch up to project schedule

Re-run tests immediately with the issues fixed

RyeSat -TubeSat

Payload Design Page: 190

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 66: Risk of Spacecraft Exploding

Risk Event 5 Spacecraft carrying TubeSat Explodes

Probability Low 1/20

The spacecraft carrying the TubeSat could explode on

launch

Consequence

to Project

High 20/20

Mission Failure

Risk

Assessment

Low 3/20

Mitigation

Plan None – this is not in the control of the TubeSat Design Team

Contingency

Plan Keep all information on what was accomplished by the design

team to make it easier for future design teams to complete

design

Table 67: Risk of Space Debris

Risk Event 6 TubeSat is hit by space debris

Probability Low 1/20

The TubeSat could be hit by space debris which could

physically damage the TubeSat

Consequence

to Project

High 18/20

Could result in a single component being

damaged to many components being damages

Could lead to mission failure

Risk

Assessment

Low 2/20

Mitigation

Plan None – this is not in the control of the TubeSat Design Team

Contingency

Plan Keep all information on what was accomplished by the design

team to make it easier for future design teams to complete

design

Try to continue mission with damaged components

Some mission goals could still be accomplished

RyeSat -TubeSat

Payload Design Page: 191

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 68: Risk Matrix for Technical Risks

Pro

bab

ilit

y High

Moderate R2, R3,R4

Low R1 R5, R6

Low Moderate High

Consequence

5.2 Technical Risks – Hardware/Electronics

Risk Event 1 Damage to PCB’s or electrical components

Probability Moderate Inexperience with soldering techniques may create limited problems

Consequences to Project Moderate Extra components were purchased in the case of this event to mitigate any major consequence

Risk Assessment Moderate Delays will occur since the ordering of new

components will postpone certain deadlines Mitigation Plan Keep an updated list of inventory and use caution in the soldering

process phase Contingency Plan Purchase replacing components with the utmost urgency to limit and re-solder the damaged components delays

Risk Event 2 Damage to PCB’s or electrical components during outgassing test

Probability Moderate Air pockets in solder points create limited problems

Consequences to Project Moderate

Extra components were purchased in the case of this event to mitigate any major consequence

Risk Assessment Moderate

Delays will occur since the ordering of new

components will postpone certain deadlines Mitigation Plan Keep an updated list of inventory and use caution in the soldering

process phase Contingency Plan Purchase replacing components with the utmost urgency to limit and re-solder the damaged components delays

RyeSat -TubeSat

Payload Design Page: 192

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Risk Event 3 Damage to solar cells

Probability High Inexperience with soldering techniques may

create limited problems Consequences to Project High Extra solar cells were purchased in the case of this event to mitigate any major consequence

Risk Assessment High Delays will occur since the ordering of new

components will postpone certain deadlines Mitigation Plan Keep an updated list of inventory and use caution in the soldering

process phase Contingency Plan Purchase replacing solar cells with the utmost urgency to limit and re-solder the damaged cells delays

Risk Event 4 Long wiring and connectors obstructing assembly

Probability Low Long wires needed to interface with various PCB boards might obstruct the structure assembly

create limited problems

Consequences to Project Moderate The structure might not pass the vibration and integration test of this event to mitigate any major consequence Risk Assessment Low Delays will occur since rearranging the wires will

postpone certain deadlines

postpone certain deadlines

Mitigation Plan Complete a full mock up model with all the required wiring and connectors prior to implementing solar cells and vibration testing phase Contingency Plan Certain dead zones will be carefully utilize to create a precise hole for the required bypass of the wiring delays

Risk Event 5 Failure to random subsystem during the testing

Probability Moderate Problems are expected in the thermal- vacuum survivability testing phase

create limited problems Consequences to Project Moderate Failures in testing shall be fixed before final

assembly

of this event to mitigate any major consequence

Risk Assessment Moderate By testing a prototype essentially at early stage problems which may occur can be avoided in the final

Mitigation Plan Development of a prototype will mitigate the probability of failure phase

Contingency Plan Purchase replacing components with the utmost urgency to limit and re-solder the damaged components delays

RyeSat -TubeSat

Payload Design Page: 193

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Risk Event 6 Failure to Fully Integrate Subsystems

Probability Moderate Problems are expected with the final integration of the spacecraft

integration and assembly of the TubeSat create limited problems

Consequences to Project Moderate Failure to integrate will be detrimental to the project of this event to mitigate any major consequence Risk Assessment Moderate Since it is expected that some problems will be

encountered, enough time has been allotted for assembly

Mitigation Plan Keep an updated list of inventory and ensure weekly deadlines are reached to begin assembly early in the project timeline phase along test testing

Contingency Plan Extra hours will be allocated to complete the work delays

5.3 Managerial Risks

Table 69: Time Management Failure

Risk Event 1 Underestimating of hours

Probability Moderate 10 /20 Underestimating the hours needed to fulfill project

requirements

Consequence

to Project

Moderate Schedule delay

Risk

Assessment

Moderate Re-estimate hours needed for completion

Mitigation

Plan Set pre deadlines in order to have the work completed in

advance of the official deadline.

Test systems as the project progresses

Contingency

Plan Overtime

RyeSat -TubeSat

Payload Design Page: 194

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 70: Power Generation Miscalculation

Risk Event 2 Amount of power generated is miscalculated

Probability Low 5 /20 If a mistake or erroneous assumption is made in the power

calculation, the power generation could be assumed to be

larger than it is in reality

Consequence

to Project

High 19/20

The power consumed will exceed the power generated

and there will not be enough power to run all the

components (could cause mission failure)

Risk

Assessment

Low 4/20

Mitigation

Plan All calculation checked for errors and values are evaluated to

ensure they are feasible

Contingency

Plan Ensure not all electronics are working at once

Some mission goals may not be achieved

Table 71: Placement in Wrong Orbit

Risk Event 3 TubeSat is launched into a different orbit than planned

Probability Low 2/20 The launch company could place the TubeSat into a

different orbit than the one planned/desired

Consequence

to Project

Moderate 15/20

Orbital simulations would be non-applicable

Eclipse frequency and duration would not be

known

Could cause a difference in the amount of

power that can be generated

Risk

Assessment

Low 3/20

Mitigation

Plan

None – this is not under the control of the design team

Contingency

Plan

Attempt to complete mission in new orbit

RyeSat -TubeSat

Payload Design Page: 195

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 72: Failure of Passive Attitude Control

Risk Event 4 Passive Attitude Control System Fails

Probability Low 5 /20 It is possible that the attitude control fails once the TubeSat

is in orbit

Consequence

to Project

High 18/20

The attitude distortion may be more significant

than estimated

TubeSat will not de-tumble and the camera will

not point down at Earth (failure of a mission

goal)

Risk

Assessment

Low 4/20

Mitigation

Plan More time to ensure proper placement of the magnets and

hysteresis rods

Have the placement verified by the Structures team

Contingency

Plan

Attempt to complete mission

Table 73: Miscalculations in Simulations

Risk Event 5 Underestimating of hours

Probability Moderate 12 /20 The process of creating a simulation is long and errors may

occur that will lower the accuracy of the results

Consequence

to Project

High 19/20

The settling time of the TubeSat may be longer than

predicted which will shorten the mission life.

Risk

Assessment

Moderate 13/20

Mitigation

Plan Monte Carlo Method used to randomize initial conditions to

provide more realistic simulation

Contingency

Plan Try different algorithms

Some missions goals may not be accomplished

RyeSat -TubeSat

Payload Design Page: 196

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Table 74: Risk Matrix for Managerial Risks

Pro

bab

ilit

y High

Moderate R1 R5

Low R3 R2, R4

Low Moderate High

Consequence

RyeSat -TubeSat

Payload Design Page: 197

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

6 Conclusions and Future Recommendations

6.1 Simulation

6.1.1 Recommendations

The simulation team faced various challenges in terms of unavailability of software to perform accurate

attitude determination analysis. Recommendation for next year is to establish a complete understanding of

the knowledge of the mission at the start of the project and also gain some basic understanding of the

attitude stabilization principles, which will further help in performing the attitude simulation more

smoothly at the beginning of the project. Also, as the launch date approaches – if this TubeSat design is

launched – and more specific launch information is available, it is recommended that a more precise orbit

simulation is created in order to more accurately predict eclipse frequency and duration as well as more

accurate access times from the ground station. When the TubeSat is launched, it would also be wise to

use NORAD to track the satellite in closer to real-time in order to know more accurately when, and for

how long, the TubeSat will be in contact with the ground station. This method will take into account the

decay of the orbit and any differences between the STK simulation and the actual orbit in which the

TubeSat is launched.

6.1.2 Conclusion

The simulation and modelling team has performed a very extensive theoretical research for the reasonable

understanding of the system requirements. The team has conducted accurate attitude determination

simulation, taking into account various disturbance torques and provided the theoretical support for the

passive attitude apparatus for the TubeSat’s mission fulfillment. This project also helped better

understand the principles involved in attitude determination and control. The TubeSat’s orbit was also

fully simulated for the best and worst-case scenarios for both a March 2016 and a June 2016 launch (as

provided by the launch provider). This full simulation included eclipse frequency and duration, orbit

period, and the duration and frequency of the TubeSat’s access to the ground station (Ryerson

University). Along with eclipse data, power budget was completed for the TubeSat, taking into account

the possible power generation when the satellite is in a variety of configurations as well as the power

consumed by the electronics during the completion of the mission.

6.2 Structures

6.2.1 Recommendations

For future design considerations, a few things can be recommended. Firstly, one should explore the

possibility of designing the TubeSat without wires. The wiring component of this project took a

significant amount of time and preparation. Since the previous model did not function in any capacity,

RyeSat -TubeSat

Payload Design Page: 198

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

based on trial and error, the wiring path that is most efficient and provides functionality was determined.

However, at certain times, small errors or malfunctions may take place, and thus, a new order of wiring

was required. Thus, a design where wiring is not required, would be ideal, and therefore, with research

and analysis, such an alternative may be more efficient in the long run.

Another important point to note is that of testing. Without appropriate tests, the structural integrity of the

TubeSat cannot be measured. Although some equipment is available, certain tests required a lengthier

period of time, and some were not performed, due to lack of equipment. At the same time, tests being

performed were not conducted through licenses and certified users. So, although the tests may give

positive results, without proper certification, the TubeSat is not certified for launch. Thus, ensuring all

necessary equipment are ready, certified facilities are in place for testing, can speed up the process, and

certification may take place.

6.2.2 Conclusions

a. CAD Model of TubeSat design was appropriately designed, taking into considerations of past

failures and errors, and thus, the new design proved to be more appropriate and effective

b. Mock-up was constructed for testing purposes

c. Vibration testing was conducted a couple of times to determine structural integrity; initial results

demonstrated failure, however, after proper mitigation, the structure did not receive significant

damage, such that internal component would malfunction, or would be physically damaged

d. Official TubeSat structure was finalized, and preparation for construction was in place

6.3 Hardware/Electronics

6.3.1 Recommendations

a. Boards be redesigned in such manner that mechanical assembly is simplified. Best option would

be to use board-board connectors.

b. Using such connectors will also eliminated the need for routing wires between boards. This

approach is in accordance to class 3 Aerospace standards and ensures reliable operation of the

satellite.

c. Optimize TubeSat design by reducing number of PCBs. Radio and antenna board can be

combined into a single PCB, while Payload and controller can also be merged together. This will

reduce the weight of the TubeSat and allocate more space towards payload selection.

6.3.2 Conclusion

The current TubeSat design can be further optimized and simplified by following the recommendations

above. Doing so will give the team a better insight in the design process of spacecraft electric systems,

which is critical in successfully completing the mission.

RyeSat -TubeSat

Payload Design Page: 199

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

6.4 Software With the given code, the payload is able to perform its task of communicating data to the ground station

on command. There are however, details that are missing from its operation. For example, in its current

state, the satellite will take an image as soon as a command is received. For the mission it is necessary to

delay the execution of some commands such as the sensor reading, by a certain amount. This is relatively

simple to implement by keeping track of the time elapsed from when the command was received by using

the Arduino’s built in millis() function. Another feature that is missing is a confirmation of packet

received. Without this function the satellite will not know if it is still in contact with the ground station.

Once again, this is fairly simple to implement by using radio.read() at the end of the packet transmission.

The reason that these features have not been implemented thus far is because waiting for a command to be

executed or having to input a command every time a packet is received makes an already lengthy test

even lengthier.

For future reference it is advisable to find a way to work with the actual TubeSat while programming.

This is because minor changes in hardware such as the pinouts can permeate throughout the code and

cause problem while debugging. It is also highly advisable to use existing code where possible.

Another important recommendation is always address any problem that arises with the most efficient and

simple possible solution. Avoid over complicating the system because it will become very complex

quickly. It is also highly recommended that any future software team refers to this report for any

clarification or initial guidance for any aspect regarding software.

Another important note is that the current hardware setup is the most optimal and efficient set up possible.

All tests were conducted on the camera determining its properties such as what it does after taking a

picture, picture quality, and storing capacity. It is highly recommended that the setup is not changed to not

waste time trying to optimize a system that cannot be further optimized.

AX25 protocol into the Arduino code. This involved writing extra bytes during the transmission and

figuring out the logic of encoding and bit stuffing each packet. Then an existing code was found the

performed all of the functions for the AX25 protocol which meant time that could have been used to test

the transmission was wasted. If some discrepancies arise between the transmitted data and the received

data on the ground station, it is advisable to use the testing procedures outlined in the previous section. In

particular one should look at key points in the data such as the beginning and end of every packet (every

251 bytes), multiples of the camera buffer (every 32 bytes), multiples of sensor block bytes (every 20

bytes), or at the beginning and end of the entire message.

RyeSat -TubeSat

Payload Design Page: 200

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

7 References All About Circuits. (2015). Power calculations. Retrieved January 20, 2015, from All About Circuits:

http://www.allaboutcircuits.com/vol_1/chpt_5/5.html

Analytical Graphics, Inc. (2005). STK/PRO Tutorial. Retrieved October 15, 2014, from University of

Colorado: http://www.colorado.edu/engineering/ASEN/asen3200/labs/proTutorial.pdf

de Ruiter, A. H. (2013). Spacecraft Dynamics and Control: An Introduction. Canada: John Wiley & Sons,

Ltd.

de Ruiter, A. (2014). Spacecraft Power Systems. Ryerson University.

Interorbital Systems. (2009). TubeSat Personal Satellite Kit Assembly Guide.

PVEducation.org. (n.d.). Solar Radiation on a Tilted Surface. Retrieved from PVEducation.org:

http://www.pveducation.org/pvcdrom/properties-of-sunlight/solar-radiation-on-tilted-surface

Ryerson Aerospace Class of 2013. (2013). AER 813 Final Report 2013. Ryerson University, Aerospace

Engineering, Toronto.

RyeSat -TubeSat

Payload Design Page: 201

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

8 Appendix A: Attitude Simulation MATLAB Code

8.1 Attitude Dynamics function dx =attdyn(t,x)

load magparams

% values obtained from stuctures team

Ixx=0.000292639653*3.10573; % 3.10573

Iyy=0.000292639653*3.70631;% 3.70631

Izz=0.000292639653*2.30322;% 2.30322 lb in^2

Ixy=0;

Ixz=0;

Iyz=0;

% 1psi = 0.000292639653 kg.m^2

% Inertia matrix

I=[Ixx Ixy Ixz;

Ixy Iyy Iyz;

Ixz Iyz Izz];

mu=3.986E5;

m=[0.1;0.1;0.1];

% transformation matrix from earth to inertial frame

ome=2*pi/(23*60*60+56*60); % capital omega

al0=0;

al=ome*t+al0;

CEI=[cos(al) sin(al) 0;

-sin(al) cos(al) 0;

0 0 1];

% x matrix - given position of the spacecraft

r=x(1:3,1);

v=x(4:6,1);

eps=x(7:9,1);

eta=x(10,1);

omg=x(11:13,1);

% transformation matrix from inertial to body frame

epsx=[0 -eps(3,1) eps(2,1);

eps(3,1) 0 -eps(1,1);

-eps(2,1) eps(1,1) 0];

Cbi=(eta^2-eps.'*eps)*eye(3)+2*eps*eps.'-2*eta*epsx;

% restricting the quaternion

% sigma = (trace[Cbi]-1)/2;

% for (sigma = pi*(180/pi))

RyeSat -TubeSat

Payload Design Page: 202

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

% Gravity- gradient torque

rb=Cbi*r;

rmag=norm(r);

Tg=(3*mu/rmag^5)*cross(rb,I*rb);

% Magnetic Torque

re=CEI*r;

%geocentric co-latitude and longitude

lat=atan2(re(3,1),sqrt(re(1,1)^2+re(2,1)^2));

colat=pi/2-lat;

long=atan2(re(2,1),re(1,1));

[Br,Bs,Be]= magfld(colat,long,rmag*1000, Gm, H, K, r_m, mag_scale);

% rmag*1000 to convert km to m - as the units considered is meters

% arguments added Gm, H, K, r_m, mag_scale

%earth magnetic field in ECEF (earth-centered earth frame) coordinates

be=[1 0 0;

0 cos(long) -sin(long);

0 sin(long) cos(long)]*[cos(lat) 0 -sin(lat);

0 1 0;sin(lat) 0 cos(lat)]*[-Bs;Be;-Br];

bb=Cbi*CEI.'*be;

%earth's magnetic field in spacecraft co-ordinates

Tm=cross(m,bb);

% Spacecraft torque

% Torque generated due to the permanent magmnets and

B_p = 0.6403*3; %Teslas % Constant magnetic field of permenant magnet

% multiply by 3 for three magnets

d = 6.34E-3; % m % diameter of the magnet

h = 12.7E-3; % m % thickness of the magnet

Vp = pi*(d/4)^2*h*3; % m^3 % Vp is the volume of the permanent magnets

b_3 = [1;1;0]; % extracted from magfld.m

% b_3 is the longitudinal axis from south pole to north pole of the

% permanent magnet is aligned along the third principal axis

M_p = b_3*B_p*Vp;

Tpm = cross(M_p,bb)*3;

% alpha = acos ((M_p.*bb))/(norm(M)*norm(b)); % objective is to make this angle converge

% torque generated by the hysteresis rods

Vh = 1; % m^3

RyeSat -TubeSat

Payload Design Page: 203

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

% be is the magnetic field in the Earth fixed frame

% bb is earth's magnetic field in body coordinates

% br; bs; hc

hc = 0.007*79.57747154594; % ampere/meter; %Coercive force

br = 0.84E-5; % Residual magnetic field of hysteresis rods (Teslas ( - maybe?)

bm = 0.7500; % Teslas %constant saturation value of the induced magnetic flux density of the

hysteresis rods

b1 = [0;1;0];% Cbi*CEI.'*

H1 = dot(b1,bb);

b2 = [1;0;0];

H2 = dot(b2,bb);

% b3 = [0;0;1]; % hysteresis in the z direction

% H3 = dot(b2,bb);

Hr = 1/(hc*tan(pi*br/(2*bm)));

if diff(H1) > 0

B_1 = (2*bm*atan((H1-hc)/Hr))/pi;

else

B_1 = (2*bm*atan((H1+hc)/Hr))/pi;

end

if diff(H2) > 0

B_2 = (2*bm*atan((H1-hc)/Hr))/pi;

else

B_2 = (2*bm*atan((H1+hc)/Hr))/pi;

end

%

% if diff(H3) > 0

% B_3 = (2*bm*atan((H1-hc)/Hr))/pi;

% else

% B_3 = (2*bm*atan((H1+hc)/Hr))/pi;

% end

%

rod1 = Vh*[0;B_1;0];

rod2 = Vh*[B_2;0;0];

% rod3 = Vh*[0;0;B_3];

Th_1 = cross(rod1,bb);

Th_2 = cross(rod2,bb);

% Th_3 = cross(rod3,bb);

RyeSat -TubeSat

Payload Design Page: 204

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

% elements of matrix dx

dr=v;

dv=-(mu*r/(norm(r))^3);

deps=(1/2)*(cross(eps,omg)+eta*omg);

deta=-(1/2)*eps.'*omg;

domg=I\(-cross(omg,I*omg)+Tg+Tm-Th_1-Th_2-Tpm);

dx=[dr;dv;deps;deta;domg];

8.2 Attitude of the Satellite Ixx=0.000292639653*3.10573; % 3.10573

Iyy=0.000292639653*3.70631;% 3.70631

Izz=0.000292639653*2.30322;% 2.30322 lb in^2

Ixy=0;

Ixz=0;

Iyz=0;

% 1psi = 0.000292639653 kg.m^2

% Inertia matrix

I=[Ixx Ixy Ixz;

Ixy Iyy Iyz;

Ixz Iyz Izz];

r0=[310000;0;0]; % radius of earth + altitude (m) %

v0=(7.3*[0;1;1])/sqrt(2); %velocity of satellite in orbit (m/s)

% % Varying initial conditions

% vr = v0*t; % orbital rate

% eps=[0;0;0];

% eta=1;

eps = [1E-5; 1E-3; 1E-2];

% eps = [0.1;0.3;0.6];

eta = sqrt(1-(eps'*eps));

omg = 0*[0.1; 0.2; 0.3]*(pi/180);

% omg=0*(pi/180)*randn(3,1);

% omg = [0; pi/180*rand(1,1); 0];

% angular velocity

%%

x0=[r0;v0;eps;eta;omg]; %calculates the attitude of the satellite

tspan = [0 50*5400];

% orb_t = 90m*60; % 24h = 1440m

% tspan=[0 orb_t*40]; % total time of the simulation

% assume a 15 degree offset

RyeSat -TubeSat

Payload Design Page: 205

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

%global Gm H K r_m mag_scale;

% fidin = fopen('d0606808.mat','r','l');

% for i = 1:14

% test = fgetl(fidin);

% end

%

% %% ordre du model

% status = fseek(fidin,3,'cof');

% m_ord = 1 + fscanf(fidin,'%d',[1,1]);

% test= fgetl(fidin);

%

% %% rayon

% status = fseek(fidin,6,'cof');

% r_m = fscanf(fidin,'%g',[1,1]);

% test= fgetl(fidin);

%

% %% Scale factor

% status = fseek(fidin,6,'cof');

% mag_scale = fscanf(fidin,'%g',[1,1]);

% test= fgetl(fidin);

%

% for i = 1:11

% test= fgetl(fidin);

% for j = 1:11

% status = fseek(fidin,6,'cof');

% Gm(i,j) =[fscanf(fidin,'%g',[1,1])];

% test= fgetl(fidin);

% end

% end

%

% for i = 1:11

% test= fgetl(fidin);

% for j = 1:11

% status = fseek(fidin,6,'cof');

% H(i,j) = fscanf(fidin,'%g',[1,1]);

% test= fgetl(fidin);

% end

% end

%

% for i = 1:11

% test= fgetl(fidin);

% for j = 1:11

% status = fseek(fidin,6,'cof');

% K(i,j) = fscanf(fidin,'%g',[1,1]);

% test= fgetl(fidin);

% end

% end

%

% fclose(fidin);

RyeSat -TubeSat

Payload Design Page: 206

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

options=odeset('RelTol',1e-6,'AbsTol',1e-9);

[T,X]=ode45('attdyn',tspan,x0,options);

% ode45 integrates the system of differential equations, dx -> which is the

% output of 'attdyn'from time T0 to TFINAL with initial conditions x0

n=size(T,1);

for ii=1:n,

r=X(ii,1:3).'; %3x1

v=X(ii,4:6).'; %3x1

ep=abs(X(ii,7:9).'); %3x1

et=X(ii,10); %1x1

omg_bi=X(ii,11:13).'; %3x1

[Cbo,omg_bo] =orbframe(r,v,et,ep,omg_bi);

% need to store the value Cbo and omg_bo in the valriable funciton X

phi =((atan2(Cbo(1,2),Cbo(1,1)))*(180/pi)); % roll

theta = ((-asin(Cbo(1,3)))*(180/pi)); % pitch

psi = (atan2(Cbo(2,3),Cbo(3,3))*(180/pi)); % yaw

% for (ii-1 - ii > ) add this loop is the other method of restricting

% the sign of the epsilon doesn't work

q(ii,:)=[ep(1) ep(2) ep(3) et];

rpy(ii,:)=[phi theta psi];

ombo(ii,:)=omg_bo.';

Torque = [I*ombo(1,1) I*ombo(2,1) I*ombo(3,1)]

% Torque = [omg_bi(1) omg_bi(2) omg_bi(3)]

end

%%

figure(1) % legend ('Roll', 'Pitch',' Yaw')

subplot (3,1,1)

plot (T,rpy(:,1),'-b')

ylabel ('Roll Angle (deg)')

title ('Rotation Angles v/s Time')

subplot(3,1,2)

plot(T,rpy(:,2),'-r')

ylabel ('Pitch Angle (deg)')

subplot(3,1,3)

plot(T,rpy(:,3),'-g')

xlabel ('Time (s)')

ylabel ('Yaw Angle (deg)')

figure(2)

plot(T,ombo(:,1),'-b',T,ombo(:,2),'-r',T,ombo(:,3),'-g')

xlabel ('Time (s)')

RyeSat -TubeSat

Payload Design Page: 207

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

ylabel ('Angular velocity (deg/s)')

title ('Angular velocity v/s Time')

figure (3)

subplot (4,1,1)

plot (T,q(:,1),'-b')

ylabel ('Ep1')

title ('Quaternion v/s Time')

subplot (4,1,2)

plot (T,q(:,2),'-r')

ylabel ('Ep2')

subplot (4,1,3)

plot (T,q(:,3),'-g')

ylabel ('Ep3')

subplot (4,1,4)

plot (T, q(:,4),'-k')

xlabel ('Time (s)')

ylabel ('Eta')

figure (5)

plot3(X(:,1),X(:,2),X(:,3))

box on

title ('Simulated Orbit')

figure (6)

plot(T,Torque(:,1),'-b',T,Torque(:,2),'-r',T,Torque(:,3),'-g')

xlabel ('Time (s)')

ylabel ('Torque (N.m)') % create a for loop summing all the rows in

angular velocity (in the body frame) matrix

RyeSat -TubeSat

Payload Design Page: 208

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

8.3 Body Frame to Orbital Frame function [Cbo,omg_bo] =orbframe(r,v,et,ep,omg_bi)

mu=3.986E5;

%% converting the body coordinates to inertial coordinates

Zoi = -r/norm(r);

Yoi = -(cross(r,v))/norm(cross(r,v));

Xoi = cross(Yoi,Zoi);

Cio = [Xoi Yoi Zoi];

% conversion from inertial frame to body frame

Cbi=(et^2-ep.'*ep)*eye(3)+2*ep*ep.'-2*et*[0 -ep(3,1) ep(2,1);ep(3,1) 0 -ep(1,1);-ep(2,1) ep(1,1)

0];

% conversion from orbitingbody to body frame

Cbo = Cbi*Cio;

ap=-mu*r/norm(r)^3;

dZoi = -(1/norm(r))*(eye(3)-r*r.'/(r.'*r))*v;

dYoi = -cross(r,ap)/norm(cross(r,v))+cross(v,r)*cross(v,r).'*cross(r,ap)/norm(cross(v,r))^3;

dXoi = (cross(dYoi,Zoi))+(cross(Yoi,dZoi));

dCio = [dXoi dYoi dZoi];

neg_domgx = -dCio.'*Cio;

omg_x = neg_domgx(2,3);

omg_y = neg_domgx(3,1);

omg_z = neg_domgx(1,2);

omg_oi = [omg_x omg_y omg_z].';

omg_bo = omg_bi-Cbo*omg_oi;

RyeSat -TubeSat

Payload Design Page: 209

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

8.4 Magnetic Field Disturbances % refmagfld.m

%

% Initial version: 01 APR 98 J. Cook

% Modified by Y. Kim, 2002-03-20

%

%%function [b_vec_flight]= shomagmd_guyd3(colat, elong, rdist, heading, load_fact)

function [Br,Bs,Be]= magfld(colat, elong, rdist, Gm, H, K, r_m, mag_scale)

% INPUT:

% colat = colatitude (geocentric!!) [rad]

% elong = east longitude (from greenwich) [rad]

% rdist = distance to center of earth [m]

% headang = heading angle (x-axis pointing east = 0) [rad]

%

% OUTPUT:

% b_vec_flight: magnetic field vector (x, y, z) in [mG]

% in "geocentric" flight frame as defined below:

% X-axis pointing east when heading is 0 [rad]

% Y-axis pointing south when heading is 0 [rad]

% Z-axis pointing towards earth center, not geodetic nadir

% magnetic field vector (positive) goes from South to North pole

% a positive 90deg heading angle brings X-axis towards north

% output in flight frame if respecting Radarsat heading angle convention

% load parameters for Earth Magnetic Model

% global Gm H K r_m mag_scale;

% computation of magnetic field at a specific point

sin_col = sin(colat);

cos_col = cos(colat);

p_mag(1,1) = 1.0;

p_mag(1,2) = 0.0;

p_mag(2,1) = cos_col;

p_mag(2,2) = sin_col;

dp_dcol(1,1) = 0.0;

dp_dcol(1,2) = 0.0;

dp_dcol(2,1) = -sin_col;

dp_dcol(2,2) = cos_col;

sin_elong(1) = 0.0;

cos_elong(1) = 1.0;

RyeSat -TubeSat

Payload Design Page: 210

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

sin_elong(2) = sin(elong);

cos_elong(2) = cos(elong);

for n=3:11

sin_elong(n) = cos_elong(2)*sin_elong(n-1) + sin_elong(2)*cos_elong(n-1);

cos_elong(n) = cos_elong(2)*cos_elong(n-1) - sin_elong(2)*sin_elong(n-1);

p_mag(n-1,n) = 0.0;

dp_dcol(n-1,n) = 0.0;

for m = 1:n-1

p_mag(n,m) = cos_col*p_mag(n-1,m) - K(n,m)*p_mag(n-2,m);

dp_dcol(n,m) = cos_col*dp_dcol(n-1,m) - sin_col*p_mag(n-1,m) -K(n,m)*dp_dcol(n-2,m);

end %% for m

p_mag(n,n) = sin_col*p_mag(n-1,n-1);

dp_dcol(n,n) = sin_col*dp_dcol(n-1,n-1) + cos_col*p_mag(n-1,n-1);

end %% for n

b_n = 0.0; % north component

b_e = 0.0; % east component

b_r = 0.0; % radial component

r_ratio = r_m/rdist;

pwr_r(1) = r_ratio * r_ratio;

for n = 2:11

pwr_r(n) = pwr_r(n-1) * r_ratio;

e_term = 0.0;

n_term = Gm(n,1)*dp_dcol(n,1);

r_term = Gm(n,1)*p_mag(n,1);

for m= 2:n

temp = Gm(n,m)*cos_elong(m) + H(n,m)*sin_elong(m);

r_term = r_term + ( temp * p_mag(n,m) );

n_term = n_term + ( temp * dp_dcol(n,m) );

e_term = e_term +((m-1) * p_mag(n,m)* ( H(n,m)*cos_elong(m) - Gm(n,m)*sin_elong(m) ) );

end %% for m

%% b-vector in the Geocentri Frame: East, North, Vertical

b_r = b_r + ( pwr_r(n) * r_term * (n) );

b_n = b_n + ( pwr_r(n) * n_term );

b_e = b_e + ( pwr_r(n) * e_term );

end %% for n

if abs(sin_col) > 5.42101086242752e-20

b_e = -(1/sin_col) * b_e;

RyeSat -TubeSat

Payload Design Page: 211

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

end

%% b_vec is the magetic field at one location (elong, colat, distance from earth center)

%% in the frame: East, South, Nadir

Be = b_e * mag_scale;

Bs = -(b_n * mag_scale);

Br = (b_r * mag_scale);

RyeSat -TubeSat

Payload Design Page: 212

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

9 Appendix B: Mass Properties Working File

Weight has been Adjusted

in Model to match actual

weight

3.201 3.813 2.368

QTY Weight (g) CAD Weight (lbs) X (in) Y (in) Z (in) Ixx (lb*in2) Iyy (lb*in2) Izz (lb*in2)

10-1000-00 TubeSat Dressed 455.74 1.00476 -0.020441 -0.024652 2.593117 3.201 3.813 2.368

20-2000-00 TubeSat Undressed 1 441.67 0.97374 -0.012619 -0.023690 2.586856 3.13861 3.74235 2.33371

30-2100-00 Antenna PCB Assembly 1 38.87 0.08570 0.001572 -0.082739 0.059901 0.06439 0.79167 0.85400

40-2101-00Antenna PCB

Panel_V21 21.00 0.04631 -0.000125 0.001840 0.034000 0.034 0.034 0.068

40-2102-00 SW Lever SPDT 1 2.00 0.00441 0.123060 -1.434990 -0.120000 9.85E-05 2.27E-04 2.83E-04

40-2103-00

SMA Antenna

Connector (Right

Angle)

1 2.60 0.00573 -0.171710 -0.016880 0.303970 9.25E-05 1.64E-04 1.24E-04

40-2104-00 Antenna (Tape) Left 1 3.00 0.00662 -6.722160 0.000000 -0.012430 1.32E-04 0.069 0.069

40-2104-00 Antenna (Tape) Right 1 3.00 0.00662 6.722160 0.000000 -0.012430 1.32E-04 0.069 0.069

40-2105-00 Attachment Ring 1 6.80 0.01499 0.000022 0.003160 0.171270 0.02 0.02 0.04

40-2303-002 Pin 90 Degree

Connector1 0.33 0.00072 0.731633 -0.726000 -0.145000 9.55E-06 9.60E-06 1.09E-05

40-2207-003 Pin Connector

(Black)1 0.14 0.00031 0.170827 -0.886000 0.153000 4.51E-06 2.62E-06 2.25E-06

30-2200-00 Microcontroller PCB Assembly 1 40.55 0.08940 -0.091332 0.001266 1.968981 0.05966 0.05891 0.11358

40-2201-00Micro Controller PCB

Panel1 21.00 0.04630 0.000000 0.000010 2.084000 0.035 0.035 0.07

40-2202-004 Pin 90 Degree

Connector (White)1 0.50 0.00110 -0.904880 0.907190 1.906080 1.52E-05 1.52E-05 1.80E-05

40-2203-002 Pin Connector

(Black)7 0.70 0.00154 -0.051350 -0.114310 1.999220 9.02E-04 3.68E-04 0.001

40-2204-009 Pin Amplifier

(Large)2 6.00 0.01323 0.146780 -0.483440 1.857290 0.002 0.005 0.006

40-2205-008 Pin Amplifier

(Medium)1 2.80 0.00617 -1.311540 -0.034740 1.857290 3.80E-04 1.17E-04 3.98E-04

40-2206-004 Pin Amplifier

(Small)1 1.50 0.00331 -0.512630 -1.137480 1.857290 6.42E-05 6.92E-05 7.86E-05

40-2207-003 Pin Connector

(Black)4 0.60 0.00132 0.717560 0.346450 2.084000 4.45E-04 2.31E-04 6.21E-04

40-2208-001 Pin Connector

(Black)1 0.05 0.00011 -0.076780 1.310160 1.965360 8.75E-07 8.82E-07 1.27E-07

40-2209-008 Pin Connector

(Black)1 0.40 0.00088 0.357800 1.310220 1.965360 7.00E-06 4.63E-05 4.03E-05

40-2210-00 Q1 10MHz Crystal 1 1.00 0.00220 0.236550 -0.390290 1.997400 2.90E-05 6.35E-06 3.03E-05

40-2211-00Q3 3.579545MHz

Crystal1 1.00 0.00220 -0.799530 -0.149250 1.975770 3.24E-05 9.09E-06 3.13E-05

40-2212-00 Arduino Mini 1 5.00 0.01102 0.067720 0.824750 1.697520 0.001 0.002 0.003

30-2300-00 Power Management PCB Assembly 1 23.80 0.05246 0.017585 -0.009225 2.900677 0.03831 0.03906 0.07673

40-2301-00 Power PCB 1 20.00 0.04409 0.000000 0.000010 2.881740 0.033 0.033 0.066

40-2303-002 Pin 90 Degree

Connector8 2.63 0.00580 -0.009040 0.125950 3.060670 2.00E-03 4.00E-03 6.00E-03

40-2304-002 Pin Connector

(White)5 0.63 0.00139 0.144560 -1.023130 2.905000 2.62E-04 9.79E-04 1.00E-03

40-2305-003 Pin Connector

(White)1 0.16 0.00034 1.278000 -0.385500 2.758790 2.06E-06 3.48E-06 1.89E-06

40-2306-005 Pin Connector

(White)1 0.28 0.00062 0.665960 1.099380 2.759740 8.84E-06 7.33E-06 9.92E-06

40-2307-00Battery Connector

(White)1 0.10 0.00023 -0.332630 -1.495730 3.064230 2.58E-06 4.27E-06 3.67E-06

30-2400-00 Payload PCB Assembly 1 29.77 0.06563 0.000420 0.019083 4.912503 0.055 0.054 0.108

40-2401-00 Payload PCB Board 1 20.00 0.04409 -0.000455 -0.000914 4.966000 0.033 0.033 0.066

40-2402-00IMU (Inertial

Measurement Unit)1 0.02

0.000041.080300 0.157309 4.892800 6.73E-05 7.41E-06 7.42E-05

40-2403-00 Teperature Sensor 0.00000

40-2404-00 JPEG Camera 1 3.00 0.00661 0.000000 0.187250 4.744475 6.30E-04 3.20E-04 8.55E-04

40-2405-00 Photoresistor 0.00000

40-2406-00 Attachment Ring 1 6.75 0.01488 0.000000 0.003181 4.828731 0.02 0.02 0.04

RyeSat -TubeSat

Payload Design Page: 213

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

Figure 134: Mass properties spread sheet

30-2500-00 Transceiver PCB Assembly 1 57.87 0.12758 -0.042198 -0.038220 0.915485 0.076 0.072 0.142

40-2501-00 Transceiver PCB 1 20.00 0.04409 0.004057 0.004086 1.070000 0.033 0.033 0.065

40-2502-00Radiometrix

Transceiver1 27.00 0.05952 0.000000 0.299000 0.821000 0.012 0.028 0.038

40-2503-00Radiometrix (AFS2-

458) Amplifier1 8.20 0.01808 0.000000 -1.006000 0.859000 0.001 0.003 0.004

40-2504-00SMA Antenna

Connector 1 2.67 0.00589 -0.945000 -0.793000 0.887000 7.46E-05 7.46E-05 4.99E-05

40-2304-002 Pin Connector

(White) - P21 0.13 0.00029 1.296600 -0.447800 1.190500 2.19E-06 1.51E-06 1.06E-06

40-2304-002 Pin Connector

(White) - P51 0.13 0.00029 1.296600 -0.207136 1.190502 2.19E-06 1.51E-06 1.06E-06

40-2306-005 Pin Connector

(White) - P11 0.28 0.00062 -1.294000 -0.086620 1.192003 1.24E-05 3.54E-06 9.92E-06

40-2601-00 Solar Pannel PCB (Soldered) 8 82.00 0.18078 -0.000040 -0.000017 2.498000 0.64 0.64 0.559

40-2602-00 Aluminum Strip 8 16.00 0.03527 0.000000 -0.000046 2.500000 0.147 0.147 0.127

40-2603-00 Battery Bracket Case 1 16.50 0.03638 -0.025999 0.137380 3.890500 0.036 0.012 0.038

40-2604-00 Battery Bracket Retainer 1 6.50 0.01433 0.078790 -0.775000 3.895500 0.002 0.011 0.009

40-2302-00 Battery 1 96.00 0.21164 0.000000 -0.020000 3.894000 0.128 0.039 0.15

40-2605-01 Magnet Holder (Part 1) 1 3.25 0.00717 0.000000 -0.099391 2.561830 0.006 0.004 0.01

40-2655-01 Magnet Holder (Part 2) 1 3.25 0.00717 0.000000 -0.099391 2.405170 0.006 0.004 0.01

40-2606-00 Magnet 3 9.00 0.01984 0.000000 -0.010667 2.493500 0.018 0.014 0.031

Spacer Set (ant-trans) 0.768 inch 1 1.65 0.00364 0.000000 0.000000 0.652000 0.005 0.005 0.005

Spacer Set (trans-micro) 0.946 inch 1 2.00 0.00441 0.000000 0.000000 1.577000 0.006 0.006 0.011

Spacer Set (micro-power 1) 0.265 inch 1 0.66 0.00146 0.000000 0.000000 2.275500 0.002 0.002 0.004

Spacer Set (micro-power 2) 0.265 inch 1 0.66 0.00146 0.000000 0.000000 2.690500 0.002 0.002 0.004

Spacer Set (power-bat) 0.875 inch 1 2.00 0.00441 0.000000 0.000000 3.378500 0.006 0.006 0.01

Spacer Set (bat-payload) 0.745 inch 1 1.60 0.00353 0.000000 0.000000 4.339500 0.005 0.005 0.009

Fully Threaded Studs (6-32 x 1/2") 15 9.75 0.02150 0.000000 0.000000 2.479850 0.048 0.048 0.054

20-3000-00 EWIS Assembly 1 14.07 0.03102 -0.265983 -0.054867 2.789659 0.091 0.103 0.061

30-3100-00 Coaxial Cable Assembly 1 4.00 0.00882 -0.929168 -0.338441 0.461660 1.00E-03 7.65E-04 2.00E-03

30-3200-00 Solar Wire Assembly 1 10.07 0.02220 0.013112 0.145891 3.512250 0.02585 0.03651 0.04876

40-3201-00 Wire 1 (2.2 inch) 1 0.77 0.00170 0.883291 1.348086 3.813100 5.11E-04 5.38E-04 8.09E-05

40-3202-00 Wire 2 (2.3 inch) 1 0.82 0.00181 1.326000 0.879000 3.791200 6.16E-04 5.85E-04 6.80E-05

40-3203-00 Wire 3 (2.2 inch) 1 0.77 0.00170 1.576000 -0.259500 3.752500 5.63E-04 5.19E-04 6.73E-05

40-3204-00 Wire 4 (2.4 inch) 1 0.85 0.00187 1.026500 -1.232600 3.895000 6.13E-04 6.51E-04 8.10E-05

40-3205-00 Wire 5 (2.3 inch) 1 0.82 0.00181 -0.965300 -1.293000 3.835000 5.76E-04 6.04E-04 7.29E-05

40-3206-00 Wire 6 (2.2 inch) 1 0.77 0.00170 -1.546000 -0.285707 3.736400 5.57E-04 4.88E-04 8.96E-05

40-3207-00 Wire 7 (2.1 inch) 1 0.74 0.00163 -1.371600 0.803230 3.761453 5.24E-04 5.11E-04 5.67E-05

40-3208-00 Wire 8 (2.2 inch) 1 0.77 0.00170 -0.922900 1.284000 3.816000 5.01E-04 5.17E-04 6.00E-05

40-3209-00 Connectors 8 3.76 0.00829 -0.003692 0.174208 3.026540 0.004 0.008 0.013

30-3300-00 Battery Wire Assembly Wire (1 inch) 1 0.60 0.00132 -0.262900 -1.478890 3.392500 1.22E-04 1.43E-04 3.85E-05

RyeSat -TubeSat

Payload Design Page: 214

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

10 Appendix C: Arduino Code

10.1 Main Code #include <Wire.h>

#include <Adafruit_Sensor.h>

#include "Adafruit_TSL2591.h" // Light

#include "Adafruit_MCP9808.h" //Temperature

#include <Adafruit_VC0706.h>

#include <SoftwareSerial.h>

//**IMU Declarations**///////////////////////////////////////////////////////////

//USER SETUP AREA! Set your options here!

// HARDWARE OPTIONS

// Select your hardware here by uncommenting one line!

//#define HW__VERSION_CODE 10125 // SparkFun "9DOF Razor IMU" version "SEN-10125" (HMC5843

magnetometer)

//#define HW__VERSION_CODE 10736 // SparkFun "9DOF Razor IMU" version "SEN-10736" (HMC5883L

magnetometer)

//#define HW__VERSION_CODE 10183 // SparkFun "9DOF Sensor Stick" version "SEN-10183" (HMC5843

magnetometer)

#define HW__VERSION_CODE 10321 // SparkFun "9DOF Sensor Stick" version "SEN-10321" (HMC5843

magnetometer)

//#define HW__VERSION_CODE 10724 // SparkFun "9DOF Sensor Stick" version "SEN-10724" (HMC5883L

magnetometer)

// OUTPUT OPTIONS

// Set your serial port baud rate used to send out data here!

#define OUTPUT__BAUD_RATE 9600

// Sensor data output interval in milliseconds

// This may not work, if faster than 20ms (=50Hz)

// Code is tuned for 20ms, so better leave it like that

#define OUTPUT__DATA_INTERVAL 20 // in milliseconds

// Output mode definitions (do not change)

#define OUTPUT__MODE_CALIBRATE_SENSORS 0 // Outputs sensor min/max values as text for manual

calibration

#define OUTPUT__MODE_ANGLES 1 // Outputs yaw/pitch/roll in degrees

#define OUTPUT__MODE_SENSORS_CALIB 2 // Outputs calibrated sensor values for all 9 axes

#define OUTPUT__MODE_SENSORS_RAW 3 // Outputs raw (uncalibrated) sensor values for all 9 axes

#define OUTPUT__MODE_SENSORS_BOTH 4 // Outputs calibrated AND raw sensor values for all 9 axes

// Output format definitions (do not change)

#define OUTPUT__FORMAT_TEXT 0 // Outputs data as text

#define OUTPUT__FORMAT_BINARY 1 // Outputs data as binary float

// Select your startup output mode and format here!

int output_mode = OUTPUT__MODE_ANGLES;

int output_format = OUTPUT__FORMAT_TEXT;

// Select if serial continuous streaming output is enabled per default on startup.

#define OUTPUT__STARTUP_STREAM_ON true // true or false

// If set true, an error message will be output if we fail to read sensor data.

// Message format: "!ERR: reading <sensor>", followed by "\r\n".

RyeSat -TubeSat

Payload Design Page: 215

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

boolean output_errors = false; // true or false

// Bluetooth

// You can set this to true, if you have a Rovering Networks Bluetooth Module attached.

// The connect/disconnect message prefix of the module has to be set to "#".

// (Refer to manual, it can be set like this: SO,#)

// When using this, streaming output will only be enabled as long as we're connected. That way

// receiver and sender are synchronzed easily just by connecting/disconnecting.

// It is not necessary to set this! It just makes life easier when writing code for

// the receiving side. The Processing test sketch also works without setting this.

// NOTE: When using this, OUTPUT__STARTUP_STREAM_ON has no effect!

#define OUTPUT__HAS_RN_BLUETOOTH false // true or false

// SENSOR CALIBRATION

// How to calibrate? Read the tutorial at http://dev.qu.tu-berlin.de/projects/sf-razor-9dof-ahrs

// Put MIN/MAX and OFFSET readings for your board here!

// Accelerometer

// "accel x,y,z (min/max) = X_MIN/X_MAX Y_MIN/Y_MAX Z_MIN/Z_MAX"

#define ACCEL_X_MIN ((float) -250)

#define ACCEL_X_MAX ((float) 250)

#define ACCEL_Y_MIN ((float) -250)

#define ACCEL_Y_MAX ((float) 250)

#define ACCEL_Z_MIN ((float) -250)

#define ACCEL_Z_MAX ((float) 250)

// Magnetometer (standard calibration mode)

// "magn x,y,z (min/max) = X_MIN/X_MAX Y_MIN/Y_MAX Z_MIN/Z_MAX"

#define MAGN_X_MIN ((float) -600)

#define MAGN_X_MAX ((float) 600)

#define MAGN_Y_MIN ((float) -600)

#define MAGN_Y_MAX ((float) 600)

#define MAGN_Z_MIN ((float) -600)

#define MAGN_Z_MAX ((float) 600)

// Magnetometer (extended calibration mode)

// Uncommend to use extended magnetometer calibration (compensates hard & soft iron errors)

//#define CALIBRATION__MAGN_USE_EXTENDED true

//const float magn_ellipsoid_center[3] = {0, 0, 0};

//const float magn_ellipsoid_transform[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};

// Gyroscope

// "gyro x,y,z (current/average) = .../OFFSET_X .../OFFSET_Y .../OFFSET_Z

#define GYRO_AVERAGE_OFFSET_X ((float) 0.0)

#define GYRO_AVERAGE_OFFSET_Y ((float) 0.0)

#define GYRO_AVERAGE_OFFSET_Z ((float) 0.0)

// DEBUG OPTIONS

// When set to true, gyro drift correction will not be applied

#define DEBUG__NO_DRIFT_CORRECTION false

// Print elapsed time after each I/O loop

#define DEBUG__PRINT_LOOP_TIME false

// END OF USER SETUP AREA!

// Check if hardware version code is defined

#ifndef HW__VERSION_CODE

// Generate compile error

RyeSat -TubeSat

Payload Design Page: 216

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

#error YOU HAVE TO SELECT THE HARDWARE YOU ARE USING! See "HARDWARE OPTIONS" in "USER SETUP

AREA" at top of Razor_AHRS.ino!

#endif

// Sensor calibration scale and offset values

#define ACCEL_X_OFFSET ((ACCEL_X_MIN + ACCEL_X_MAX) / 2.0f)

#define ACCEL_Y_OFFSET ((ACCEL_Y_MIN + ACCEL_Y_MAX) / 2.0f)

#define ACCEL_Z_OFFSET ((ACCEL_Z_MIN + ACCEL_Z_MAX) / 2.0f)

#define ACCEL_X_SCALE (GRAVITY / (ACCEL_X_MAX - ACCEL_X_OFFSET))

#define ACCEL_Y_SCALE (GRAVITY / (ACCEL_Y_MAX - ACCEL_Y_OFFSET))

#define ACCEL_Z_SCALE (GRAVITY / (ACCEL_Z_MAX - ACCEL_Z_OFFSET))

#define MAGN_X_OFFSET ((MAGN_X_MIN + MAGN_X_MAX) / 2.0f)

#define MAGN_Y_OFFSET ((MAGN_Y_MIN + MAGN_Y_MAX) / 2.0f)

#define MAGN_Z_OFFSET ((MAGN_Z_MIN + MAGN_Z_MAX) / 2.0f)

#define MAGN_X_SCALE (100.0f / (MAGN_X_MAX - MAGN_X_OFFSET))

#define MAGN_Y_SCALE (100.0f / (MAGN_Y_MAX - MAGN_Y_OFFSET))

#define MAGN_Z_SCALE (100.0f / (MAGN_Z_MAX - MAGN_Z_OFFSET))

// Gain for gyroscope (ITG-3200)

#define GYRO_GAIN 0.06957 // Same gain on all axes

#define GYRO_SCALED_RAD(x) (x * TO_RAD(GYRO_GAIN)) // Calculate the scaled gyro readings in

radians per second

// DCM parameters

#define Kp_ROLLPITCH 0.02f

#define Ki_ROLLPITCH 0.00002f

#define Kp_YAW 1.2f

#define Ki_YAW 0.00002f

// Stuff

#define STATUS_LED_PIN 13 // Pin number of status LED

#define GRAVITY 256.0f // "1G reference" used for DCM filter and accelerometer calibration

#define TO_RAD(x) (x * 0.01745329252) // *pi/180

#define TO_DEG(x) (x * 57.2957795131) // *180/pi

// Sensor variables

float accel[3]; // Actually stores the NEGATED acceleration (equals gravity, if board not

moving).

float accel_min[3];

float accel_max[3];

float magnetom[3];

float magnetom_min[3];

float magnetom_max[3];

float magnetom_tmp[3];

float gyro[3];

float gyro_average[3];

int gyro_num_samples = 0;

// DCM variables

float MAG_Heading;

float Accel_Vector[3]= {0, 0, 0}; // Store the acceleration in a vector

float Gyro_Vector[3]= {0, 0, 0}; // Store the gyros turn rate in a vector

float Omega_Vector[3]= {0, 0, 0}; // Corrected Gyro_Vector data

float Omega_P[3]= {0, 0, 0}; // Omega Proportional correction

float Omega_I[3]= {0, 0, 0}; // Omega Integrator

RyeSat -TubeSat

Payload Design Page: 217

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

float Omega[3]= {0, 0, 0};

float errorRollPitch[3] = {0, 0, 0};

float errorYaw[3] = {0, 0, 0};

float DCM_Matrix[3][3] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};

float Update_Matrix[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}};

float Temporary_Matrix[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};

// Euler angles

float yaw;

float pitch;

float roll;

// DCM timing in the main loop

unsigned long timestamp;

unsigned long timestamp_old;

float G_Dt; // Integration time for DCM algorithm

// More output-state variables

boolean output_stream_on;

boolean output_single_on;

int curr_calibration_sensor = 0;

boolean reset_calibration_session_flag = true;

int num_accel_errors = 0;

int num_magn_errors = 0;

int num_gyro_errors = 0;

//**Light Sensor

Declarations**///////////////////////////////////////////////////////////////////////////////////

//////

#define light_pin 4

//**Temperature Sensor

Declarations**///////////////////////////////////////////////////////////////////////////////////

#define temp2_pin 5

//**EEPROM

Declarations**///////////////////////////////////////////////////////////////////////////////////

///////////

const byte EEPROM_ID = 0x50 ; //84 for the acutal board 50 on breakout

uint32_t first_sensor_byte=360001;

uint32_t last_sensor_byte=360001;

uint32_t first_camera_byte=1;

uint32_t last_camera_byte=1;

//**Camera

Declarations**///////////////////////////////////////////////////////////////////////////////////

/////////

#define chipSelect 10

#if ARDUINO >= 100

SoftwareSerial cameraconnection = SoftwareSerial(2, 3);

#else

NewSoftSerial cameraconnection = NewSoftSerial(2, 3);

#endif

Adafruit_VC0706 cam = Adafruit_VC0706(&cameraconnection);

//**Radio

Declarations**///////////////////////////////////////////////////////////////////////////////////

///////////

SoftwareSerial radio(10,11); // RX, TX

//**Misc

Declarations**///////////////////////////////////////////////////////////////////////////////////

///////////

int num_of_readings=0;

RyeSat -TubeSat

Payload Design Page: 218

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

void setup(void)

{

radio.begin(1200);

Serial.begin(9600);

Wire.begin();

//***IMU Setup***

pinMode (STATUS_LED_PIN, OUTPUT);

digitalWrite(STATUS_LED_PIN, LOW);

delay(50); // Give sensors enough time to start

I2C_Init();

Accel_Init();

Magn_Init();

Gyro_Init();

delay(20); // Give sensors enough time to collect data

//Clear some bytes from the EEPROM to varify its working.

for (uint32_t i = 1; i <= 512; i++)

I2CEEPROM_Write(i, 0);

Serial.println("Done Clearing EEPROM.");

Serial.println("Setup Complete.");

}

void loop(void)

{

radio.begin(1200);

char cmd=radio.read(); //Input command from the radio

num_of_readings=4; //Change number of sensor readings for debugging purposes (eg. 11 for one

full packet)

//***Send Sensor Packets Command***

if (cmd=='A')

sendPackets(first_sensor_byte,last_sensor_byte,cmd);

//***Send Camera Packets Command***

else if (cmd=='I')

sendPackets(first_camera_byte,last_camera_byte,cmd);

//***Re-send Missing Packet Command***

else if(cmd=='R')

{

uint32_t startAddress;

uint32_t endAddress;

char endCheck='~';

int packetNum=0;

int packetSize=0;

while ((packetNum==0) || (packetSize==0))

{

if (packetNum==0)

packetNum=Serial.parseInt();

if (packetSize==0)

packetSize=Serial.parseInt();

}

startAddress= (packetNum*packetSize - packetSize + packetNum)+360000;

endAddress= startAddress +packetSize;

sendPackets(startAddress,endAddress,'R');

}

//***Take picture and Store Command***

RyeSat -TubeSat

Payload Design Page: 219

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

else if (cmd=='C')

{

//**Camera Setup**

if (cam.begin()) {

Serial.println("Camera Found:");

} else {

Serial.println("No camera found?");

return;

}

char *reply = cam.getVersion();

if (reply == 0) {

Serial.print("Failed to get version");

} else {

Serial.println("-----------------");

Serial.print(reply);

Serial.println("-----------------");

}

cam.setImageSize(VC0706_640x480);

uint8_t imgsize = cam.getImageSize();

Serial.print("Image size: ");

if (imgsize == VC0706_640x480) Serial.println("640x480");

if (imgsize == VC0706_320x240) Serial.println("320x240");

if (imgsize == VC0706_160x120) Serial.println("160x120");

//**Camera Setup Complete**

if (! cam.takePicture())

{

Serial.println("Failed to snap!");

Serial.println(cam.takePicture());

}

else

Serial.println("Picture taken!");

uint16_t jpglen = cam.frameLength();

Serial.println(jpglen, DEC);

pinMode(8, OUTPUT);

uint32_t addressTotal=last_camera_byte;

while (jpglen > 0)

{

uint8_t *buffer;

uint8_t bytesToRead = min(32, jpglen);

buffer = cam.readPicture(bytesToRead);

for (uint32_t i=addressTotal; i<=addressTotal+bytesToRead-1; i++) //Loop over the buffer

and send image byte-by-byte

{

//Some useful debugging printouts.

//Serial.print("Address: ");

//Serial.println(i);

//Serial.print("Value: ");

Serial.println(*buffer);

I2CEEPROM_Write(i, *buffer);

buffer+=1;

}

addressTotal=addressTotal+bytesToRead;

jpglen -= bytesToRead;

}

Serial.println("Done storing image.");

Serial.println(addressTotal);

last_camera_byte=addressTotal;

}

//***Take Sensor Readings and Store***

RyeSat -TubeSat

Payload Design Page: 220

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

else if (cmd=='S')

for (int i=1; i<=num_of_readings; i++)

last_sensor_byte=sensorCommands(last_sensor_byte,cmd);

}

RyeSat -TubeSat

Payload Design Page: 221

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

10.2 Additional Functions #include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_TSL2591.h> // Light

#include <SoftwareSerial.h>

///////////////////////////////////////////////////////////////// IMPORTED FUNCTIONS

//////////////////////////////////////////////////////////////

void I2CEEPROM_Write( unsigned int address, byte data )

{

Wire.beginTransmission(EEPROM_ID);

Wire.write((int)highByte(address) );

Wire.write((int)lowByte(address) );

Wire.write(data);

Wire.endTransmission();

delay(5); // wait for the I2C EEPROM to complete the write cycle

}

byte I2CEEPROM_Read(unsigned int address )

{

byte data;

Wire.beginTransmission(EEPROM_ID);

Wire.write((int)highByte(address) );

Wire.write((int)lowByte(address) );

Wire.endTransmission();

Wire.requestFrom(EEPROM_ID,(byte)1);

while(Wire.available() == 0) // wait for data

;

data = Wire.read();

return data;

}

///////////////////////////////////////////////////////////////// ORIGINAL FUNCTIONS

//////////////////////////////////////////////////////////////

//sensorBytes: Write data of a sensor to the EEPROM.

//

// Start: The first address of the location in which to write

// the data.

// Data: Sensor data of 4 bytes max.

// Sensor Type: Character representing the sensor type.

// Sensor Types: L = light, I = IMU, T = Temp, t = time

//

// NOTE: Change the type of "data" to int32 if the timestamp

// goes beyond (2^15)-1

void sensorBytes(uint32_t start, int data, char sensor_type)

{

int datalen = 0;

byte data_byte=data;

if (sensor_type=='L' || sensor_type=='I')

datalen = 2;

else if (sensor_type=='T')

datalen = 1;

else if (sensor_type=='t')

datalen = 4;

//EEPROM stores data as bytes, so bit shifting is required.

for (int i=0; i<=datalen-1; i++)

RyeSat -TubeSat

Payload Design Page: 222

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

{

byte data_byte=data >> 8*i;

Serial.println(data_byte);

I2CEEPROM_Write(start+i,data_byte);

}

}

//sendMultiBytes: Send data that has more than one byte through the

// radio and performs a checksum on all bytes passed.

//

// Data: Any type of data upto 4 bytes.

// Datalen: The length of the data (max 4).

// Checksum: The current running value of the checksum.

// RETURN: The new checksum value after all the bytes passed.

byte sendMultiBytes(uint32_t data, int datalen, byte checksum)

{

radio.begin(1200);

for (int i=0; i<=datalen-1; i++)

{

byte data_byte=data >> 8*i;

checksum=checksum^data_byte;

Serial.println(data_byte);

radio.write(data_byte);

}

return checksum;

}

//writeSensorBlock: Write a block of sensor data in a specific order and

// keep track of the first available EEPROM address.

//

// Start: The first address of the location in which to write

// the data.

// RETURN: The new starting address in the EEPROM.

uint32_t writeSensorBlock(uint32_t start)

{

//Write Timestamp

Serial.println("Timestamp");

long unsigned time;

time=millis();

sensorBytes(start,time,'t');

start=start+4;

//Write Temperature 1

Serial.println("Temperature");

int c1=analogRead(temp1_pin);

sensorBytes(start,c1, 'T');

start=start+1;

//Write Temperature 2

Serial.println("Temperature");

int c2=analogRead(temp2_pin);

sensorBytes(start,c2,'T');

start=start+1;

//Write Light

Serial.println("Light");

int l=analogRead(light_pin);

Serial.println(l);

sensorBytes(start,l,'L');

RyeSat -TubeSat

Payload Design Page: 223

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

start=start+2;

//Write IMU

Serial.println("IMU");

Read_Magn();

int m0=magnetom[0];

int m1=magnetom[1];

int m2=magnetom[2];

Serial.print("Magn x:");

Serial.println(m0);

sensorBytes(start,m0,'I');

start=start+2;

Serial.print("Magn y:");

Serial.println(m1);

sensorBytes(start,m1,'I');

start=start+2;

Serial.print("Magn z:");

Serial.println(m2);

sensorBytes(start,m2,'I');

start=start+2;

Read_Gyro();

int g0=gyro[0];

int g1=gyro[1];

int g2=gyro[2];

Serial.print("Gyro x:");

Serial.println(g0);

sensorBytes(start,g0,'I');

start=start+2;

Serial.print("Gyro y:");

Serial.println(g1);

sensorBytes(start,g1,'I');

start=start+2;

Serial.print("Gyro z:");

Serial.println(g2);

sensorBytes(start,g2,'I');

start=start+2;

return start;

}

//sensorCommands: Write a sensor reading and keep track

// of the first available EEPROM address.

//

// Start: The first address of the location in which to write

// the data.

// RETURN: The new starting address in the EEPROM.

uint32_t sensorCommands(uint32_t start, char cmd)

{

//****WRITE SENSOR BLOCK****

if (cmd=='W')

start=writeSensorBlock(start);

// The following commands operate the sensors indevidually

// and are mainly for debugging purposes.

//**Light Sensor Output**

RyeSat -TubeSat

Payload Design Page: 224

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

if (cmd=='L')

{

int l=analogRead(light_pin);

sensorBytes(start,l,cmd);

start=start+2;

}

//**Temperature Sensor Output**

else if (cmd=='T')

{

int c1=analogRead(temp1_pin);

sensorBytes(start,c1, cmd);

start=start+1;

int c2=analogRead(temp2_pin);

sensorBytes(start,c2, cmd);

start=start+1;

}

//**IMU Output**

else if (cmd=='I')

{

Read_Gyro();

int g0=gyro[0];

int g1=gyro[1];

int g2=gyro[2];

sensorBytes(start,g0,cmd);

start=start+2;

sensorBytes(start,g1,cmd);

start=start+2;

sensorBytes(start,g2,cmd);

start=start+2;

}

return start;

}

//sendPackets: Send formatted packets to the ground station.

//

// Start: The address in the EEPROM from which to begin

// sending data.

// Ending: The address until which the data is stored in the

// EEPROM.

// Message Type: The type of message the packets signify.

// The ground needs this for sorting.

void sendPackets(uint32_t start, uint32_t ending, char message_type)

{

radio.begin(1200);

uint32_t starting=start;

int total_size=251;

int header_size=11;

int checksum_size=1;

int data_size=total_size-header_size-checksum_size;

Serial.println();

Serial.println(starting);

Serial.println(ending);

int number_of_packets=ceil(((float)ending-start)/data_size);

uint32_t last_byte=start;

int checksum=0;

for (int i=1; i<=number_of_packets; i++)

{

RyeSat -TubeSat

Payload Design Page: 225

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

//Send the packet header information while keeping track of the checksum.

Serial.print("Packet Number: ");

Serial.println(i);

checksum=sendMultiBytes(i,2,checksum);

Serial.print("Packet Type: ");

Serial.println(message_type);

radio.write(message_type);

checksum=checksum^message_type;

Serial.print("Number of Packets in Message: ");

Serial.println(number_of_packets);

checksum=sendMultiBytes(number_of_packets,2,checksum);

Serial.print("Timestamp: ");

long unsigned time;

time=millis();

Serial.println(time);

checksum=sendMultiBytes(time,4,checksum);

Serial.print("Battery Life: ");

Serial.println('?');

checksum=sendMultiBytes('?',2,checksum);

//Send the data from the current EEPROM address.

for (uint32_t j=starting; j<=starting+data_size; j++)

{

if (j>ending-1)

break;

//Some useful debugging printouts.

//Serial.print("Address: ");

//Serial.println(j);

//Serial.print("Value :");

Serial.println(I2CEEPROM_Read(j));

radio.write(I2CEEPROM_Read(j));

checksum=checksum^I2CEEPROM_Read(j);

last_byte=j;

}

Serial.println(checksum);

radio.write(checksum);

starting=last_byte+1; //The address for the next packet.

delay(50); //Some delay so the ground has time to parse the data. (May be removed in the

final version)

}

}

RyeSat -TubeSat

Payload Design Page: 226

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11 Appendix D: MATLAB Code

11.1 CheckRadioBuffer function msg_length = CheckRadioBuffer( radio, timeout, expected_length)

% check the radio's buffer and return the length of message waiting in

% bytes

% expected_length: expected length of message

% function waits for either ~1 sec or until msg_length is

% received (whichever comes first)

pause_time = .1; % druation of the pause in between checks to the buffer

% sets default timeout and message length limits

if nargin < 2

timeout = 1; % (s)

expected_length = 10000; % # of characters

end

% sets default message length limit

if nargin < 3

expected_length = 10000;

end

% msg_length in bytes

if IsRadioOpen(radio)

msg_length = 0;

time_elapsed = 0;

while msg_length < expected_length && time_elapsed < timeout

msg_length = get(radio,'BytesAvailable');

pause(pause_time)

time_elapsed = time_elapsed + pause_time;

end

end

end

RyeSat -TubeSat

Payload Design Page: 227

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.2 Connect2Radio function radio = Connect2Radio( com_port, open_connection )

% creates a serial object for the radio and opens the connection to the

% radio

% returns the radio serial object

% com : string of com port

% (e.g. 'com4' on PC, or '/dev/tty.usbserial-A702ZLOR' on Mac)

% no_open_connection = 1: prevents connection from being opened

% during construction

BaudRate = 1200;

Parity = 'none';

Terminator = '~';

radio = serial(com_port,'BaudRate',BaudRate,'Parity',Parity,...

'Terminator',Terminator);

% open connection by default

if nargin < 2

OpenRadio(radio);

else

if open_connection == 1

OpenRadio(radio);

end

end

end

RyeSat -TubeSat

Payload Design Page: 228

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.3 IsRadioOpen function is_open = IsRadioOpen( radio_serial )

% returns 1 if radio serial connection is open

% returns 0 if radio serial connection is closed

% don't suppress warning by default

status = get(radio_serial,'Status');

if strcmp(status,'open')

is_open = 1;

else

is_open = 0;

end

end

RyeSat -TubeSat

Payload Design Page: 229

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.4 OpenRadio function success = OpenRadio( radio_serial )

% opens connection to serial radio object

% returns true if successful

if ~IsRadioOpen(radio_serial)

fopen(radio_serial);

else

warning('Connection is already open.');

end

success = IsRadioOpen(radio_serial);

end

RyeSat -TubeSat

Payload Design Page: 230

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.5 RadioListen function buffer = RadioListen(radio, initial_wait, timeout)

% Listens to the radio and outputs its buffer,

% first waits for signal for initial_wait (~s)

% once message begins, will exit after timeout (~s)

if nargin < 3

timeout = 45;

warning('timeout set to default: %i (s)',timeout);

end

if nargin < 2

initial_wait = 10;

warning('initial_wait set to default: %i (s)', initial_wait);

end

if nargin < 1

error('Radio object required.');

end

buffer = uint8.empty;

i = 0;

wait_time = initial_wait;

while i <= wait_time

if CheckRadioBuffer(radio)

buffer = [buffer; RadioReceive(radio)];

i = 0;

wait_time = timeout;

else

i = i + 1;

end

end

end

RyeSat -TubeSat

Payload Design Page: 231

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.6 RadioReceive function message = RadioReceive( radio )

% returns the message stored in the radio buffer as a uint8 array

% returns 0 if no reply is available

message = uint8.empty;

if IsRadioOpen(radio)

bytes_waiting = CheckRadioBuffer(radio);

if bytes_waiting > 0

message = fread(radio, bytes_waiting,'uint8');

% this will let us read from radio as a specified type...

%message = fread(radio, bytes_waiting, 'precision');

else

warning('Packet size is 0. No response to retrieve.');

end

end

end

RyeSat -TubeSat

Payload Design Page: 232

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.7 RadioReset function radio = RadioReset(radio)

% reset the radio serial object

if nargin == 1

fclose(radio);

delete(radio);

end

radio = Connect2Radio('/dev/tty.usbserial-A900fNmJ',1);

end

RyeSat -TubeSat

Payload Design Page: 233

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.8 RadioSend function RadioSend( radio, cmd_str )

% send a string (cmd_str) over the radio

if IsRadioOpen(radio)

% send command and initialize cmd and pos

fprintf(radio,cmd_str);

end

end

RyeSat -TubeSat

Payload Design Page: 234

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.9 AddChecksum function cmd_w_checksum = AddChecksum( cmd )

% calculates a checksum and adds it to the command

sz = length(cmd);

checksum = uint8(0);

for i = 1:sz

checksum = bitxor(checksum,cmd(i));

end

cmd_w_checksum = [cmd; checksum];

end

RyeSat -TubeSat

Payload Design Page: 235

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.10 BitStuffing function stuffed_buf = BitStuffing( buf )

% reads msb to lsb (left to right)

% stuffs 0 after 11111 (i.e. 11111X -> 111110X)

bytes_buf = length(buf);

bytes_overflow = 5;

bytes_stuffed = bytes_buf + bytes_overflow;

num_bits = 8;

tmp_buf(bytes_stuffed,1) = uint8(0);

iS = 1; % index of stuffed buffer bytes

is = 8; % index of stuffed buffer bits

con_ones = 0; % counts number of consecutive ones encountered

for iB = 1:bytes_buf % index of original buffer bytes

for ib = num_bits:-1:1 % index of original buffer bits

% transfer orignal byte to stuffed buffer

cur_bit = bitget(buf(iB),ib); % current bit value

tmp_buf(iS) = bitset(tmp_buf(iS), is, cur_bit);

[iS,is] = update_indicies(iS,is);

% check if stuffing is required

if cur_bit == 1

% increment ones counter

con_ones = con_ones + 1;

if con_ones == 5

tmp_buf(iS) = bitset(tmp_buf(iS), is, 0);

[iS, is] = update_indicies(iS,is);

con_ones = 0;

end

else

con_ones = 0;

end

end

end

% get index of last changed byte in stuffed buffer

if is == 8

last_iS = iS - 1;

else

last_iS = iS;

end

stuffed_buf = tmp_buf(1:last_iS);

end

function [i_byte, i_bit] = update_indicies(i_byte,i_bit)

RyeSat -TubeSat

Payload Design Page: 236

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

i_bit = i_bit - 1;

if i_bit == 0

i_bit = 8;

i_byte = i_byte + 1;

end

end

RyeSat -TubeSat

Payload Design Page: 237

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.11 BitUnstuffing function unstuffed_buf = BitUnstuffing( stuffed_buf )

% reads msb to lsb (left to right)

% unstuffs 0 after 11111 (i.e. 111110X -> 11111X)

bytes_stuffed = length(stuffed_buf);

num_bits = 8;

tmp_buf(bytes_stuffed,1) = uint8(0);

iS = 1; % index of stuffed buffer bytes

is = 8; % index of stuffed buffer bits

con_ones = 0; % counts number of consecutive ones encountered

unstuffed = 0; % counts number of bits that have been unstuffed

for iU = 1:bytes_stuffed % index of unstuffed buffer bytes

for iu = 8:-1:1 % index of unstuffed buffer bits

cur_bit = bitget(stuffed_buf(iS),is); % current bit value

tmp_buf(iU) = bitset(tmp_buf(iU), iu, cur_bit);

[iS,is] = update_indicies(iS,is);

if cur_bit == 1

% increment ones counter

con_ones = con_ones + 1;

if con_ones == 5

% unstuff bit (skip over bit in stuffed buffer)

[iS,is] = update_indicies(iS,is);

con_ones = 0;

unstuffed = unstuffed + 1;

end

else

% reset ones counter

con_ones = 0;

end

if iS > bytes_stuffed

break;

end

end

if iS > bytes_stuffed

break;

end

end

bytes_to_rmv = ceil( unstuffed / num_bits );

bytes_unstuffed = bytes_stuffed - bytes_to_rmv;

RyeSat -TubeSat

Payload Design Page: 238

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

unstuffed_buf = tmp_buf(1:bytes_unstuffed);

end

function [i_byte, i_bit] = update_indicies(i_byte,i_bit)

i_bit = i_bit - 1;

if i_bit == 0

i_bit = 8;

i_byte = i_byte + 1;

end

end

RyeSat -TubeSat

Payload Design Page: 239

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.12 CheckChecksum function checksum_is_good = CheckChecksum( buffer )

% checks the packet's checksum and returns true if it's good

sz = length(buffer);

checksum = buffer(sz);

xorsum = uint8(0);

for i = 1:sz-1

xorsum = bitxor(xorsum,buffer(i));

end

checksum_is_good = false;

if xorsum == checksum

checksum_is_good = true;

end

end

RyeSat -TubeSat

Payload Design Page: 240

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.13 CollectDataCommand function cmd = CollectDataCommand(type, pic_timestamp, g2s_time_coefs)

% Create the 'collect data' command to be sent to the satellite

%% SETUP AND INPUT VERIFICATION

% ****************************

if nargin < 3

error(['linear coefficients needed for ground-to-satellite equation',...

'use GetTimeFactorG2S']);

end

if nargin < 2

error('valid timestamp as serial date number required.');

end

% type must be either S (sensor data) or C (camera data)

if nargin < 1

error('Type must be specified (''S'' or ''C'')');

elseif ~any(strcmp(type, {'S','C'}))

error('Invalid type specified. Type must be ''S'' or ''S''');

end

cmd = type;

if strcmp(cmd, 'C')

pic_timestamp_sat = polyval(g2s_time_coefs, pic_timestamp);

pic_timestamp_sat = typecast(pic_timestamp_sat, 'uint8');

cmd = [cmd; pic_timestamp_sat];

end

end

RyeSat -TubeSat

Payload Design Page: 241

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.14 CreateMessageStructure function msg = CreateMessageStructure()

% Creates a new data structure to hold the information from packets

% belonging to the same message

msg.type = '?'; % msg pkt type: [I]mage, [A] sensor, [C]hecksum

msg.size = uint16.empty; % total number of pkts in msg

msg.id = logical.empty; % binary column indicating if packet is received

msg.bat = uint16.empty; % column of battery health info

msg.time_sat = uint32.empty; % column of message send times (milliseconds)

msg.time_gnd = double.empty; % column of message receive times (Matlab date number)

msg.img_tmp = uint8.empty; % 2D array of bytes for image jpeg. Each row

% has the bytes received from a single packet

% all sensor data stored as a 2D array

% (acc, gyr, mag are 3D with extra dimension used for the 3 axis)

% rows correspond to readings received in a single packet

% cells are a single reading tied to a timestamp (msg.dat.t)

msg.dat.t = uint32.empty; % tubesat's elapsed time for received measurements

msg.dat.temp = int8.empty; % temperature data (function of t)

msg.dat.light = uint16.empty; % photosensor data (function of t)

%msg.dat.acc = single.empty; % accelerometer data (function of t)

msg.dat.gyr = int16.empty; % gyroscope data (function of t)

msg.dat.mag = int16.empty; % magnetometer data (function of t)

end

RyeSat -TubeSat

Payload Design Page: 242

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.15 MakeG2SAndSaveTimestamps function MakeG2SAndSaveTimestamps( g_times, s_times )

% Takes vectors of ground and satellite timestamps to arrive at

% coefficients for the linear best-fit.

%

% Also compensates for the overflow of the satellite timestamps

%

% g_times and s_times are the new ground and satellite timestamps to be

% added to the archive. Once the archive of timestamps is updated, the

% g2s factor is updated as well.

sat_overflow = 2^32;

% determine if there is a satellite timestamp that has gone past the

% overflow point (i.e. is less that the previous timestamp)

overflow_idx = 0;

prev_time = s_times(1);

s_times_sz = size(s_times);

% ensure that the time vectors are both column vectors

if s_times_sz(1) < s_times_sz(2)

s_times = s_times';

g_times = g_times';

end

t_length = max(s_times_sz);

% continues to check satellite timestamps until all instances of

% overflow are fixed

check_again = true;

while check_again

for i = 2 : t_length

crnt_time = s_times(i);

if crnt_time < prev_time

overflow_idx = i;

break

end

prev_time = crnt_time;

end

check_again = false;

if overflow_idx > 0

time_offset = zeros(t_length,1);

time_offset(overflow_idx:t_length) = sat_overflow;

s_times = s_times + time_offset;

check_again = true;

overflow_idx = 0;

end

end

g2s = polyfit(g_times, s_times, 1);

arch = load(which('DataStorageAndCommands/timestamps_g2s.mat'));

% update and save to file

arch.timestamp_sat = [arch.timestamp_sat; s_times];

arch.timestamp_gnd = [arch.timestamp_gnd; g_times];

RyeSat -TubeSat

Payload Design Page: 243

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

arch.g2s = g2s;

save('timestamps_g2s.mat','-struct','arch')

end

RyeSat -TubeSat

Payload Design Page: 244

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.16 NumberOfPacketsToRequest function num_of_pkts = NumberOfPacketsToRequest( out_of_range_timestamp,...

volley_duration, pkts_left_to_receive)

% determines how many packets should be requested from the satellite

% based on how many are left to receive, the max number of packets to

% be sent in a single packet volley/transmission, and how much time is

% left until the satellite is expected to leave communication range

% out_of_range_timestamp : as a serial date number

% volley_duration : volley duration (s)

% pkts_left_to_receive : packets left in the message

max_pkt_size = 276; % (B)

baud_rate = 1200/8; % (B/s)

ms_time = 5; % seconds to be added to expected volley time

% (factor of safety)

max_pkts_in_volley = floor(volley_duration * baud_rate / max_pkt_size);

if pkts_left_to_receive < max_pkts_in_volley

num_of_pkts = pkts_left_to_receive;

else

num_of_pkts = max_pkts_in_volley;

end

volley_duration = num_of_pkts * max_pkt_size / baud_rate;

volley_duration = volley_duration + ms_time;

communication_time_left = out_of_range_timestamp - now;

if (communication_time_left - volley_duration) <= 0

num_of_pkts = 0;

end

end

RyeSat -TubeSat

Payload Design Page: 245

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.17 ReadPacket function msg = ReadPacket( buffer, msg )

% reads through the message packet from the tubesat, and saves its contents

% to the msg data structure

%% SETUP

% define the byte size of each packet component

pkt_id_size = 2; %pkt_id byte size

type_size = 1; %type byte size

pkt_num_size = 2; %number_of_pkts byte size

time_size = 4; %arduino time byte size

battery_size = 2; %battery byte size

temp_size = 1; % size of temperature sensor data

light_size = 2; % size of light sensor data

imu_size = 2; % size of each imu sensor datum

imu_sensors = [isfield(msg.dat,'mag') isfield(msg.dat,'gyr') ...

isfield(msg.dat,'acc')];

% logical list of sensors being used (mag, gyr, acc)

imu_num = sum(imu_sensors) * 3;

temp_num = 2; % number of temp sensors

sensor_block_size = time_size + temp_size*temp_num + light_size +...

imu_size*imu_num;

pkt_id = uint16.empty;

time_now = now;

% get the current packet's id

pkt_id_start = 1;

pkt_id_end = pkt_id_start + pkt_id_size - 1;

pkt_id = typecast( buffer(pkt_id_start : pkt_id_end), class(pkt_id));

% if this packet hasn't already been received, store its data

if pkt_id > length(msg.id) || msg.id(pkt_id) == 0

%% SCAN THROUGH ARRAY AND STORE/VERIFY PACKET HEADER DATA

% get packet type

type_start = pkt_id_end + 1;

type_end = type_start + type_size - 1;

pkt_type = cast( buffer(type_start : type_end), 'char' );

if strcmp(msg.type,'?')

msg.type = pkt_type;

elseif ~strcmp(msg.type, pkt_type)

error('received packet with incorrect error code: %c', pkt_type);

end

% get number of packets in message

pkt_num_start = type_end + 1;

pkt_num_end = pkt_num_start + pkt_num_size - 1;

msg_size = typecast( buffer(pkt_num_start : pkt_num_end), 'uint16' );

if isempty(msg.size)

msg.size = msg_size;

RyeSat -TubeSat

Payload Design Page: 246

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

elseif msg.size ~= msg_size

error('received packet with incorrect message size: %i', msg_size);

end

% get arduino timestamp

time_sat_start = pkt_num_end + 1;

time_sat_end = time_sat_start + time_size - 1;

msg.time_sat(pkt_id,1) = ...

typecast( buffer(time_sat_start : time_sat_end), ...

class(msg.time_sat));

% store matlab timestamp

msg.time_gnd(pkt_id,1) = time_now;

% get the battery voltage value (from 0 to 2^10 = 1024 for 0V to 5V)

battery_start = time_sat_end + 1;

battery_end = battery_start + battery_size - 1;

msg.bat(pkt_id,1) = ...

typecast( buffer(battery_start : battery_end), class(msg.bat));

%% SCAN THROUGH ARRAY AND STORE SENSOR OR IMAGE DATA

data_start = battery_end + 1;

data_end = length(buffer);

data_size = data_end - data_start + 1;

% STORING SENSOR DATA

% ===================

% each row is a packet, each cell corresponds to a different sensor reading

% with its own timestamp

if strcmp(msg.type, 'A')

time_start = data_start;

sensor_block_num = data_size / sensor_block_size;

for i = 1 : sensor_block_num

% sensor time

time_end = time_start + time_size - 1;

msg.dat.t(i, pkt_id) = ...

typecast( buffer(time_start : time_end), class(msg.dat.t));

% temp sensor

temp_start = time_end + 1;

temp_end = temp_start + temp_size - 1;

for temp_count = 1:temp_num

msg.dat.temp(i, pkt_id, temp_count) = ...

typecast( buffer(temp_start : temp_end), ...

class(msg.dat.temp));

temp_start = temp_end + 1;

temp_end = temp_start + temp_size - 1;

end

% light sensor

light_start = temp_start;

RyeSat -TubeSat

Payload Design Page: 247

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

light_end = light_start + light_size - 1;

msg.dat.light(i, pkt_id) = ...

typecast( buffer(light_start : light_end), ...

class(msg.dat.light));

% IMU - magnetometer

if imu_sensors(1)

mag_start = light_end + 1;

mag_end = mag_start + imu_size - 1;

for mag_count = 1:3

msg.dat.mag(i, pkt_id, mag_count) = ...

typecast( buffer(mag_start : mag_end) , ...

class(msg.dat.mag));

mag_start = mag_end + 1;

mag_end = mag_start + imu_size - 1;

imu_end = mag_start; % keep track of byte after last imu

end

end

% IMU - gyroscope

if imu_sensors(2)

gyr_start = mag_start;

gyr_end = mag_end;

for gyr_count = 1:3

msg.dat.gyr(i, pkt_id, gyr_count) = ...

typecast( buffer(gyr_start : gyr_end) , ...

class(msg.dat.gyr));

gyr_start = gyr_end + 1;

gyr_end = gyr_start + imu_size - 1;

imu_end = gyr_start; % keep track of byte after last imu

end

end

% IMU - accelerometer

if imu_sensors(3)

acc_start = gyr_start;

acc_end = gyr_end;

for acc_count = 1:3

msg.dat.acc(i, pkt_id, acc_count) = ...

typecast( buffer(acc_start : acc_end) , ...

class(msg.dat.acc));

acc_start = acc_end + 1;

acc_end = acc_start + imu_size - 1;

imu_end = acc_start; % keep track of byte after last imu

end

end

% set starting point of next data block

time_start = imu_end;

end

% STORING IMAGE DATA

% ==================

elseif strcmp(msg.type, 'I')

RyeSat -TubeSat

Payload Design Page: 248

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

msg.img_tmp(pkt_id, 1:data_size) = buffer(data_start : data_end);

elseif strcmp(msg.type,{'E','K'})

% no data filled in for an error or ack message in reply to a

% command from the ground

end

% mark this packet as read

msg.id(pkt_id,1) = 1;

end

RyeSat -TubeSat

Payload Design Page: 249

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.18 SendDataCommand function [cmd, num_of_pkts] = SendDataCommand(type, msg, out_of_range_timestamp)

% creates the 'send data' command to be sent to the satellite

% returns uint8(0) if not enough time is left to receive more data

% out_of_range_timestamp : as a serial date number

%% SETUP AND INPUT VERIFICATION

% ****************************

volley_duration = 15; % duration of each packet volley (s)

if nargin < 3

error('estimated out_of_range_timestamp must be provided');

end

if nargin < 2

% set up new data structure for satellite's reply

error('message structure required')

end

% type must be either T (send sensor data), D (send camera data),

% R (resend sensor data), or Q (resend camera data)

if nargin < 1

error('Type must be specified (''T'', ''D'', ''R'', or ''Q'')');

elseif ~any(strcmp(type, {'T','D','R','Q'}))

error(['Invalid type specified. Type must be',...

'''T'', ''D'', ''R'', or ''Q''']);

end

%% FORMAT COMMAND

% **************

cmd = uint8(type);

% formatting for resend sensor data or camera data command

if any( strcmp(cmd,{'R','Q'}) )

missing_ids = (msg.id == 0); % binary vector indicating missing packets

num_of_missing_ids = sum(mising_ids);

num_of_pkts = NumberOfPacketsToRequest(out_of_range_timestamp, ...

volley_duration, num_of_missing_ids);

% verify that there are missing packets to be re-sent

if num_of_missing_ids > 0

indicies_of_missing_ids = uint8( find(missing_ids) );

cmd = [cmd; indicies_of_missing_ids(1:num_of_pkts)];

else

error('no missing ids in msg structure')

end

% formatting for send sensor data or camera data command

RyeSat -TubeSat

Payload Design Page: 250

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

elseif any( strcmp(cmd, {'T','D'}) )

last_received_pkt_id = find(msg.id,1,'last');

num_of_pkts_remaining = msg.size - last_received_pkt_id;

num_of_pkts = NumberOfPacketsToRequest(out_of_range_timestamp, ...

volley_duration, num_of_pkts_remaining);

num_of_pkts = uint8(num_of_pkts);

cmd = [cmd; num_of_pkts];

end

if num_of_pkts == 0

cmd = uint8(0); % indicates there is not enough time left to

% request more packets from the satellite

end

end

RyeSat -TubeSat

Payload Design Page: 251

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.19 CmdListAdd function CmdListAdd( cmd, timestamp )

% Add a command to the end of the most current command list

fname = GetNewestCmdList();

cmd_list = load(fname);

last_idx = length(cmd_list.Commands);

cmd_list.Commands(last_idx + 1) = {cmd};

cmd_list.Timestamps(last_idx + 1) = {timestamp};

cmd_list.MsgData{last_idx + 1} = {};

cmd_list.Acks{last_idx + 1} = '';

save(fname, '-struct', 'cmd_list');

end

RyeSat -TubeSat

Payload Design Page: 252

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.20 CmdListChange function CmdListChange( cmd, timestamp, idx )

% change command at inicated location

fname = GetNewestCmdList();

cmd_list = load(fname);

last_idx = length(cmd_list.Commands);

if idx > last_idx

error('Index of command to change is out of bounds');

else

cmd_list.Commands(idx) = {cmd};

cmd_list.Timestamps(idx) = {timestamp};

cmd_list.MsgData{idx} = {};

cmd_list.Acks{idx} = '';

end

save(fname, '-struct', 'cmd_list');

end

RyeSat -TubeSat

Payload Design Page: 253

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.21 CmdListCreate function CmdListCreate()

% Creates a new Command List, consisting of:

% Struct of commands

% Struct of message structures containing received data

% Struct of acknowledgements

%

% Each Command List is named 'CmdList_yymmdd_HHMMSS.mat'

Commands = {};

Timestamps = {};

MsgData = {};

Acks = {};

fname_root = 'Management/CmdLists/CmdList_';

time_now = now;

time_format = 'yymmdd_HHMMSS';

timestamp = datestr(time_now, time_format);

fname = [fname_root timestamp '.mat'];

save(fname, 'Commands', 'Timestamps', 'MsgData', 'Acks')

end

RyeSat -TubeSat

Payload Design Page: 254

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.22 CmdListInsert function CmdListInsert( cmd, timestamp, idx )

% remove command at inicated location

fname = GetNewestCmdList();

cmd_list = load(fname);

last_idx = length(cmd_list.Commands);

if idx > last_idx

error('Index of command to insert is out of bounds');

else

cmd_list.Commands(idx+1:last_idx+1) = ...

cmd_list.Commands(idx:last_idx);

cmd_list.Commands(idx) = {cmd};

cmd_list.Timestamps(idx+1:last_idx+1) = ...

cmd_list.Timestamps(idx:last_idx);

cmd_list.Timestamps(idx) = {timestamp};

cmd_list.MsgData(idx+1:last_idx+1) = ...

cmd_list.MsgData(idx:last_idx);

cmd_list.MsgData{idx} = {};

cmd_list.Acks(idx+1:last_idx+1) = ...

cmd_list.Acks(idx:last_idx);

cmd_list.Acks{idx} = '';

end

save(fname, '-struct', 'cmd_list');

end

RyeSat -TubeSat

Payload Design Page: 255

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.23 CmdListRemove function CmdListRemove( idx )

% remove command at inicated location

fname = GetNewestCmdList();

cmd_list = load(fname);

last_idx = length(cmd_list.Commands);

if idx > last_idx

error('Index of command to remove is out of bounds');

else

cmd_list.Commands(idx:last_idx-1) = ...

cmd_list.Commands(idx+1:last_idx);

cmd_list.Commands = cmd_list.Commands(1:last_idx-1);

cmd_list.Timestamps(idx:last_idx-1) = ...

cmd_list.Timestamps(idx+1:last_idx);

cmd_list.Timestamps = cmd_list.Timestamps(1:last_idx-1);

cmd_list.MsgData(idx:last_idx-1) = ...

cmd_list.MsgData(idx+1:last_idx);

cmd_list.MsgData = cmd_list.MsgData(1:last_idx-1);

cmd_list.Acks(idx:last_idx-1) = ...

cmd_list.Acks(idx+1:last_idx);

cmd_list.Acks = cmd_list.Acks(1:last_idx-1);

end

save(fname, '-struct', 'cmd_list');

end

RyeSat -TubeSat

Payload Design Page: 256

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.24 GetNewestCmdList function fname = GetNewestCmdList()

% Returns filename string of most recently created command list

list = dir('Management/CmdLists/CmdList*');

fname = list(end).name;

fname = [pwd '/Management/CmdLists/' fname];

end

RyeSat -TubeSat

Payload Design Page: 257

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.25 SendCmdReceiveData function [msg, ack] = SendCmdReceiveData( radio, type, msg, timestamp )

% Creates a command, sends it to the satellite, and waits for the

% approrpiate response (verifying that the command was received or

% storing data from the satellite

%% VERIFY INPUTS

% collect sensor data is the only command that doesn't need a timestamp

if nargin < 4 && ~strcmp(type,'S')

error(['A valid serial date number is required for all commands',...

' except collecting sensor data.']);

end

if nargin < 3

msg = CreateMessageStructure;

end

ack = '0';

valid_send = {'T','D'};

valid_resend = {'R','Q'};

valid_collect = {'S','C'};

if nargin < 2 ||...

~(strcmp(type,valid_send) || strcmp(type,valid_resend) ||...

strcmp(type,valid_collect))

error(['Command required: T (send sensor data), D (send camera data),',...

'R (resend sensor data), Q (resend camera data),',...

'S (collect sensor data), C (take picture)']);

end

if nargin < 1

error('Open radio object required');

end

is_send_cmd = strcmp(type, valid_send) || strcmp(type, valid_resend);

%% CREATE COMMAND

cmd = uint8.empty;

num_of_pkts = 1;

if is_send_cmd

out_of_range_timestamp = timestamp;

[cmd, num_of_pkts] = ...

SendDataCommand(type, msg, out_of_range_timestamp);

else

g2s_time_coefs = load(which('timestamps_g2s.mat'),'g2s');

pic_timestamp = timestamp;

cmd = CollectDataCommand(type, pic_timestamp, g2s_time_coefs);

end

% only add checksum and do bit stuffing for commands that are larger

% than a single byte (i.e. non-resend commands)

if length(cmd) > 1

cmd = AddChecksum(cmd);

cmd = BitStuffing(cmd);

RyeSat -TubeSat

Payload Design Page: 258

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

end

%% TRANSMIT COMMAND, THEN WAIT FOR AND REACT TO REPLY FROM SATELLITE

if num_of_pkts > 0

initial_wait = 45;

timeout = 2;

send_msg = true;

receive_reply = true;

pkts_received = 0;

while receive_reply || send_msg

%% send command

if send_msg

RadioSend(radio,cmd);

send_msg = false;

end

%% receive reply

if receive_reply

buffer = RadioListen(radio, initial_wait, timeout);

buffer = BitUnstuffing(buffer);

checksum_is_good = CheckChecksum(buffer);

if checksum_is_good

buffer = buffer(1:end-1);

msg = ReadPacket(buffer, msg);

receive_reply = false;

end

end

%% respond to reply

if strcmp(msg.id,'E')

% resend command if sat replies with an error packet

send_msg = true;

receive_reply = true;

ack = 'E';

elseif is_send_cmd

% If more packets are forthcoming, recheck the radio. Don't

% care if checksum is bad, since a resend command will be

% used later to retreive missing data

pkts_received = pkts_received + 1;

if pkts_received < num_of_pkts

ack = 'K';

if strcmp(type,valid_send) && length(msg.id) < msg.size

receive_reply = true;

elseif strcmp(type,valid_resend) && any(~msg.id)

receive_reply = true;

end

end

elseif ~is_send_cmd

if ~checksum_is_good

ack = 'E';

% if checksum failed resend command

RyeSat -TubeSat

Payload Design Page: 259

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

send_msg = true;

else

% check reply from collect data/pic command

if strcmp(msg.id,'K')

ack = 'K';

end

end

end

end

else

ack = 'T';

end

end

RyeSat -TubeSat

Payload Design Page: 260

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.26 AddEmptyDataRow function new_data = AddEmptyDataRow( data )

% adds an empty row to the bottom of the data cell array

[rows,~] = size(data);

data(rows+1,:) = {'-' '' ''};

new_data = data;

end

RyeSat -TubeSat

Payload Design Page: 261

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.27 GroundGUI function [ output_args ] = GroundGUI( input_args )

%% FIGURE

fig_sz = [1200 700];

fig = figure;

fig.Visible = 'off';

fig.MenuBar = 'None';

fig.Position = [0 0 fig_sz];

fig.Name = 'TubeSat Groundstation 2015';

fig.NumberTitle = 'off';

%% COMMAND LIST TABLE

cnames = {'cmd' 'timestamp' 'acks'};

cwidths = {50 80 50};

margin = 50;

cformat = {{'-' 'T' 'D' 'R' 'Q' 'S' 'C' 'insert above' 'delete'}...

'numeric' 'char'};

ceditable = [true false false];

tab = uitable(fig);

tab.Data = ReloadDataTable;

tab.ColumnName = cnames;

tab.ColumnWidth = cwidths;

tab.Position = [ margin margin*2 tab.Extent(3)+20 ...

fig.Position(4)-margin*3];

tab.ColumnFormat = cformat;

tab.ColumnEditable = ceditable;

tab.CellEditCallback = @TableEditCallback;

tab.Tag = 'cmds_table';

%% INFORMATION BOX

inf = uicontrol(fig);

inf.Style = 'text';

inf.Position = [ margin margin tab.Extent(3) 35];

inf.Tag = 'info_box';

%% MAKE FIGURE VISIBLE

fig.Visible = 'on';

end

RyeSat -TubeSat

Payload Design Page: 262

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.28 ReloadDataTable function data = ReloadDataTable()

% reloads the GUI data table from the most current command list file

fname = GetNewestCmdList();

cmd_list = load(fname);

data = cmd_list.Commands;

data(:,2) = cmd_list.Timestamps;

data(:,3) = cmd_list.Acks;

data = AddEmptyDataRow(data);

end

RyeSat -TubeSat

Payload Design Page: 263

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.29 TableEditCallback function TableEditCallback(tab, cbdata)

% updates the command list storage file and the command table in the gui

cell_idx = cbdata.Indices;

% if command has already been executed reject user change

if ~isempty(tab.Data{cell_idx(1),3})

tab.Data{cell_idx(1),cell_idx(2)} = cbdata.PreviousData;

par = tab.Parent;

inf = par.findobj('Tag', 'info_box');

inf.BackgroundColor = 'yellow';

inf.String = ['Commands cannot be altered once they have'...

' been executed at least once.'];

pause('on');

pause(4);

pause('off');

inf.BackgroundColor = [.94 .94 .94];

inf.String = '';

% if command has not yet been executed allow changes

else

new_cmd = cbdata.EditData;

data = tab.Data;

data_sz = size(data);

% if 'insert above' selected, get user input and update tab

if strcmp(new_cmd, 'insert above')

listName = 'Input Command';

listSelectionMode = 'single';

listListSize = [150 70];

listListString = {'T' 'D' 'R' 'Q' 'S' 'C'};

listPromptString = 'Select command to be inserted:';

[list_idx,list_ok] = listdlg('Name', listName,...

'SelectionMode', listSelectionMode,...

'ListSize', listListSize,...

'ListString', listListString,...

'PromptString', listPromptString);

if list_ok == 1

list_cmd = listListString{list_idx};

time_str = SetTimestamp(list_cmd);

CmdListInsert(list_cmd, time_str, cell_idx(1));

end

% if 'delete' selected, delete command

elseif strcmp(new_cmd, 'delete')

CmdListRemove(cell_idx(1));

% if '-' (placeholder) selected, revert to old value

elseif strcmp(new_cmd, '-')

RyeSat -TubeSat

Payload Design Page: 264

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

% allow data table to be reloaded

% if any command is selected ('T' 'D' 'R' 'Q' 'S' 'C')

else

time_str = SetTimestamp(new_cmd);

% differentiate between adding new command and changing old one

if cell_idx(1) == data_sz(1)

CmdListAdd(new_cmd, time_str )

else

CmdListChange(new_cmd, time_str, cell_idx(1));

end

end

tab.Data = ReloadDataTable;

tab.Data(cell_idx(1),cell_idx(2)) = ...

tab.Data(cell_idx(1),cell_idx(2));

end

end

% generate a timestamp string based on selected command

function time_str = SetTimestamp(new_cmd)

% use popup to collect timestamp for 'image capture cmd'

if strcmp(new_cmd, 'C')

format_str = TimestampFormat;

prompt = {['Image Capture Timestamp (' format_str ')']};

dlg_title = 'Input Timestamp';

num_lines = 1;

def = {format_str};

check_again = true;

while check_again

time_str = inputdlg(prompt,dlg_title,num_lines,def);

time_str = time_str{1};

dig_test = isstrprop(time_str, 'digit');

if length(time_str)==12 && ...

all( dig_test )

check_again = false;

end

end

% if it's a 'collect sensor data' cmd set timestamp string

elseif strcmp(new_cmd, 'S')

time_str = 'N/A';

% if it's any other command set timestamp string

elseif any( strcmp(new_cmd, {'T' 'D' 'R' 'Q'}) )

time_str = 'TBD';

end

end

RyeSat -TubeSat

Payload Design Page: 265

CONFIDENTIAL PREPARED BY: Krishna Kumar January 2014

This information is Ryerson University Space Systems Laboratory Confidential. It is forbidden to use,

reproduce, reference or distribute the information contained in this document without the permission of

Ryerson SSL. All Rights Reserved.

11.30 TimestampFormat function ts_format = TimestampFormat()

% returns the common timestamp formatting string

ts_format = 'ddmmyyHHMMSS';

end


Recommended