160 likes | 276 Vues
This report documents the mission to design, build, and test a vibration suppression system for the Terrier-Orion rocket. We aimed to measure the internal vibration environment using dual identical measurement systems and a custom passive damping setup. Key programming for the BS2 microcontroller was undertaken, and accelerometer data was collected and logged. Challenges encountered included debugging and ensuring data integrity, while lessons learned emphasize the importance of parallel work and backup plans. Results indicate that further tests and refinements are necessary before launch readiness.
E N D
Temple University Advisors: Dr. John Helferty Charles Wright Jinyan Chen Billy Cheng Brittany Gray May 12, 2010 Rock it rockeFull mission simulation test report
Mission Overview • Design, Build, And Test A Vibration Suppression System To Counteract Launch Vehicle Vibrations • Measure The Vibration Environment Inside The Terrier-Orion Rocket • Will Use Two Identical Vibration Measurement Systems • A Custom Built Passive Damping System • Rigidly Attached System
Changes Since Subsystem Integration • Changed Microcontroller To Basic Stamp 2 (BS2) • Programming Language – Basic • High And Low Z-Axis and Low X-Y Monitored • Same Flash, Level Shifter, and Power Supply -- With G-Switch And RBF • External Analog To Digital Converters • ADC 0831 Used For Each Accelerometer
Pictures • Schematic Including The BS2 Microcontroller
Pictures • Up-Close Of BS2, ADC0831, Z-Accelerometers, And RS232 Interface
Pictures • Z-Axis Accelerometer Board
Pictures • Prototype
Test Description - Electrical • Integrating New Microcontroller With Existing Components • Read Accelerometer Data Through ADC 0831 • Erase Flash Memory • Write Acc. Data To Flash Memory • We Were Able To Log The Required Data • Our Test Duration Was For Short Periods • Ensured That Data Was Being Logged
Test Results • Debug Pictures Of Data Out From Z-Axis Accelerometers
Test Results • Using Vref(5V)/256 * Acc.Data = Outcoming Volts Calibration of Z-Axis Accelerometers
Overall Analysis • Currently Not Ready For Launch And Collectively, We Are Some Busy, Unhappy Students • We Still Must Complete • PCB Printing – Order Should Be Out By This Week • Soldering And Mounting Of Components With PCB Board And Plates
Lessons Learned • We Must Have A Backup Plan • Don’t Be Scared To Resort To It • Work In Parallel With Other Group Members • Our Major Problem “Bottlenecked” All Progress • Everyone Was Focused On Immediate Issue • Difficult To Decipher Someone’s Code
Conclusions • Initializing Memory (Chip Erase) Takes Too Long • Attempt To Erase Memory Block By Block (64kb Sectors) • Can Log Data To Lower Order Address (000000h-00FFFFh) • Will try to log data to higher order address • More Mechanical Tests Need To Be Done
Thank you Questions?
'---------Variables-------------------------- addhi VAR Byte 'high byte of address location addlomi VAR Word 'low 16 bits of address location cmd VAR Byte ' command, to be sent by the Stamp adrs VAR Byte ' which byte on page dat VAR Byte 'data in statOne VAR Byte stat VAR Byte 'status register result VAR Byte ' ADC8031 Result resultOne VAR Byte volts VAR Word ' Volts (0.01 Increments) ix VAR Byte ' general purpose index x VAR Byte ' general purpose byte '-------------------------------------------- '------Connection Lines---------------------- Adc0831 PIN 0 ' ADC0831 Chip Select Adc0832 PIN 10 AdcClock PIN 2 ' ADC0831 Clock AdcClockOne PIN 11 AdcData PIN 1 ' ADC0831 Data AdcDataOne PIN 12 cs CON 8 ' chip SELECT line clk CON 5 ' clock line so CON 7 ' data output line si CON 6 ' data input line ' '------------------------------------------------- '---------------Variable Initializing------------- addhi = $00 addlomi = $0000 '------------------------------------------------ '---------------------Main Program--------------- GOSUB counter END counter: '----------------------------- 'DEBUG CR, DEC addhi 'GOSUB erase 'GOSUB echip GOSUB unprotect GOSUB erase DEBUG "write sensor1 read sensor1 write sensor2 read sensor2", CR DO WHILE (addhi < $20) addlomi = addlomi +$8 IF (addlomi = $0000)THEN addhi = addhi + $1 ENDIF DEBUG HEX addhi," ", HEX addlomi, CR GOSUB prgm GOSUB rd addlomi=addlomi+$8 IF(addlomi=$0000)THEN addhi=addhi+$1 GOSUB erase ENDIF GOSUB prgmOne GOSUB rd DEBUG CR LOOP RETURN enable: '----------------------- 'write enable cmd = $06 'opcode for write enable LOW cs 'CS low SHIFTOUT so, clk, MSBFIRST, [cmd\8] 'sets WEL bit to 1 in status register HIGH cs 'CS high RETURN disable: '---------------- 'disable write cmd = $04 LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8] HIGH cs RETURN unprotect: '--------------------------------------- 'performing a global unprotect of flash GOSUB enable cmd = $01 'opcode for global unprotect dat = $00 'sets the status at unprotect LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8, dat\8] HIGH cs RETURN rd: '---------------- 'read from memory cmd = $0B LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8, addhi\8, addlomi\16, 0\8] SHIFTIN si, clk, MSBPRE, [stat\8] HIGH cs DEBUG " ", DEC stat, " " RETURN prgm: '------------------------------------------ '___________________________________________ GOSUB accel GOSUB log GOSUB disable RETURN prgmOne: '------------------------------------------ '___________________________________________ GOSUB accelOne GOSUB logOne GOSUB disable RETURN log: '---------------------------------------------- 'writing commands to the flash GOSUB enable cmd = $02 LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8, addhi\8, addlomi\16, result\8] HIGH cs DEBUG " ", DEC result, " " RETURN logOne: GOSUB enable cmd = $02 LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8, addhi\8, addlomi\16, resultOne\8] HIGH cs DEBUG DEC resultOne, " " RETURN accel: '------------------------------------------ 'logging accelerometer data into memory HIGH Adc0831 result = 0 LOW Adc0831 SHIFTIN AdcData, AdcClock, MSBPOST, [result\9] HIGH Adc0831 RETURN accelOne: '------------------------------------------ 'logging accelerometer data into memory HIGH Adc0832 resultOne = 0 LOW Adc0832 SHIFTIN AdcDataOne, AdcClockOne, MSBPOST, [resultOne\9] HIGH Adc0832 RETURN Appendix: Code ' {$STAMP BS2} ' {$PBASIC 2.5} '---------Variables-------------------------- addhi VAR Byte 'high byte of address location addlomi VAR Word 'low 16 bits of address location cmd VAR Byte ' command, to be sent by the Stamp adrs VAR Byte ' which byte on page dat VAR Byte 'data in statOne VAR Byte stat VAR Byte 'status register result VAR Byte ' ADC8031 Result resultOne VAR Byte volts VAR Word ' Volts (0.01 Increments) ix VAR Byte ' general purpose index x VAR Byte ' general purpose byte '-------------------------------------------- '------Connection Lines---------------------- Adc0831 PIN 0 ' ADC0831 Chip Select Adc0832 PIN 10 AdcClock PIN 2 ' ADC0831 Clock AdcClockOne PIN 11 AdcData PIN 1 ' ADC0831 Data AdcDataOne PIN 12 cs CON 8 ' chip SELECT line clk CON 5 ' clock line so CON 7 ' data output line '---------Variables-------------------------- addhi VAR Byte 'high byte of address location addlomi VAR Word 'low 16 bits of address location cmd VAR Byte ' command, to be sent by the Stamp adrs VAR Byte ' which byte on page dat VAR Byte 'data in statOne VAR Byte stat VAR Byte 'status register result VAR Byte ' ADC8031 Result resultOne VAR Byte volts VAR Word ' Volts (0.01 Increments) ix VAR Byte ' general purpose index x VAR Byte ' general purpose byte '-------------------------------------------- '------Connection Lines---------------------- Adc0831 PIN 0 ' ADC0831 Chip Select Adc0832 PIN 10 AdcClock PIN 2 ' ADC0831 Clock AdcClockOne PIN 11 AdcData PIN 1 ' ADC0831 Data AdcDataOne PIN 12 cs CON 8 ' chip SELECT line clk CON 5 ' clock line so CON 7 ' data output line si CON 6 ' data input line ' '------------------------------------------------- '---------------Variable Initializing------------- addhi = $00 addlomi = $0000 '------------------------------------------------ '---------------------Main Program--------------- GOSUB counter END counter: '----------------------------- 'DEBUG CR, DEC addhi 'GOSUB erase 'GOSUB echip GOSUB unprotect GOSUB erase DEBUG "write sensor1 read sensor1 write sensor2 read sensor2", CR DO WHILE (addhi < $20) addlomi = addlomi +$8 IF (addlomi = $0000)THEN addhi = addhi + $1 ENDIF DEBUG HEX addhi," ", HEX addlomi, CR GOSUB prgm GOSUB rd addlomi=addlomi+$8 IF(addlomi=$0000)THEN addhi=addhi+$1 GOSUB erase ENDIF GOSUB prgmOne GOSUB rd DEBUG CR LOOP RETURN
rd: '---------------- 'read from memory cmd = $0B LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8, addhi\8, addlomi\16, 0\8] SHIFTIN si, clk, MSBPRE, [stat\8] HIGH cs DEBUG " ", DEC stat, " " RETURN prgm: '------------------------------------------ '___________________________________________ GOSUB accel GOSUB log GOSUB disable RETURN prgmOne: '------------------------------------------ '___________________________________________ GOSUB accelOne GOSUB logOne GOSUB disable RETURN log: '---------------------------------------------- 'writing commands to the flash GOSUB enable cmd = $02 LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8, addhi\8, addlomi\16, result\8] HIGH cs DEBUG " ", DEC result, " " RETURN logOne: GOSUB enable cmd = $02 LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8, addhi\8, addlomi\16, resultOne\8] HIGH cs DEBUG DEC resultOne, " " RETURN accel: '------------------------------------------ 'logging accelerometer data into memory HIGH Adc0831 result = 0 LOW Adc0831 SHIFTIN AdcData, AdcClock, MSBPOST, [result\9] HIGH Adc0831 RETURN accelOne: '------------------------------------------ 'logging accelerometer data into memory HIGH Adc0832 resultOne = 0 LOW Adc0832 SHIFTIN AdcDataOne, AdcClockOne, MSBPOST, [resultOne\9] HIGH Adc0832 RETURN enable: '----------------------- 'write enable cmd = $06 'opcode for write enable LOW cs 'CS low SHIFTOUT so, clk, MSBFIRST, [cmd\8] 'sets WEL bit to 1 in status register HIGH cs 'CS high RETURN disable: '---------------- 'disable write cmd = $04 LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8] HIGH cs RETURN unprotect: '--------------------------------------- 'performing a global unprotect of flash GOSUB enable cmd = $01 'opcode for global unprotect dat = $00 'sets the status at unprotect LOW cs SHIFTOUT so, clk, MSBFIRST, [cmd\8, dat\8] HIGH cs RETURN