Peregrine is the flight computer I am building for high-power model rockets. It runs a state machine that detects several stages of flight. It features a GPS receiver, barometric pressure sensor, two IMUs, and a radio module for communication.
Feature set
- 2 IMUs (Primary and Secondary) for redundancy.
- 2 Barometers (Primary and Secondary) for redundancy.
- USB-C for programming and debugging.
- SD card for logging.
- ALso has a NOR flash for logging in case SD card fails.
- 3 pyro channels for deploying drogue and main parachutes.
- MAX-M10S and WIO-SX1262 for GPS and LoRa communication respectively.
- 50 Ohm impedance controlled traces for GPS and LoRa modules.
- 90 Ohm differential impedance controlled traces for USB diff pairs.
- ESD protection on USB-C and SD connectors.
- 5V and 3.3V Buck converters for powering the MCU and other peripherals. They have Molded Inductors for smaller foorprint and better efficiency.
- Separate 1.8V High PSRR LDO for powering the IMUs.
- TPS2121RUXT power MUX for switching power source between 2s LiPo and USB-C.
- 5V and 3.3V current sense for monitoring current consumption of the board.
MCU Selection
I chose to go with the STM32 F756ZG because it has faster clock speed (216Mhz), 1 Mbyte of flash memory, L1 cache etc. Most importantly it supports SDMMC interface which makes it easier for me to integrate SD card logging. I initially wanted to go with STM32's H7 line up but didnt wanted to deal witht the complexity it comes with.
What it has to do for me
Here's a list of things I want it to achieve:
- Reliably run EKF (or an UKF) and log its state using SD card and NOR flash.
- Fire pyro charges at the right time at apogee, no less than 0.2s after apogee detection.
- Send telemetry data fast enough to ground station. Aiming for 100Hz - 500Hz loop for now ( I don't really know if its the right amount yet.).
- Run reliably during all flight stages and never shutdown or reset within a flight.
- Keep the full log of the flight even if power browns out on landing.
Sensor selection
Primary IMU selection ( ICM-42688-P )
Going with ICM-42688-P becuase its the most reliable and precise IMU I could find. It has a low noise floor and stable bias. It has gyro range of upto ±2000dps, and accelerometer full-scale range of ±16gs. It seemed perfect for my application. It also has output data rate of 32kHz which is the highest I could find in several IMUs.
Another good thing about this IMU is that it has same foot print as ICM-42686-P which has better gyro and accelerometer range (±4000dps and ±32gs) but has a higher noise floor. So, It's much easier to swap IMUs in case I need better range in future.
Secondary IMU selection ( LSM6DSV16XTR)
The LSM6DSV16XTR is a secondary IMU that will be used in conjunction with the primary IMU. It has a gyro range of ±4000dps and accelerometer range of ±16gs. It has a lower output data rate of 6.66kHz but it is still good enough for my application. I mainly wanted to use this IMU as a backup in case the primary IMU fails. I could be wrong but this IMU also has same footprint as ICM-42688-P so it acts as a dropin replacement.
Other sensors
Barometers (BMP581 and MS561101BA03-50)
- MS561101BA03-50 had decent specs. It has good resolution of 0.012 mBar with 24 bit ADC. Decent pressure sensing range ( 10 - 1200 mbar or 1kPa to 120 kPa ).
- BMP581 is a newer barometer with better specs. It has a resolution of 0.015625 pa. It has a pressure sensing range of 300 - 1250 mbar (30 kPa to 125 kPa). I can use the other barometer if I ever want to measure below 30 kPa (which is super unlikely).
- BMP581 also has a lower noise floor than MS561101BA03-50.
Magnetometer ( LIS3MDLTR)
Literally the first magnetometer I could find with decent specs lol. Hopefully it works well enough for me.
Pyro circuitry
I came with the circuit show below for firing pyro charges. It uses a N-channel MOSFET to burn the ematch when the gate is pulled high. More about MOSFET selection below.
MosFET selection
I chose IRLHS6242TRPBF becuase of its low Rds(on) of 11.7 mOhm at Vgs = 4.5V , low threshold voltage of 0.8V. It also has appropriate max drain current of 12A which is more than enough for me ( only expecting max 8A of short current draw to burn a 1 Ohm ematch).
Most importantly, it has a small footprint of only 2mm x 2mm PQFN Package which is perfect for my application.
GNNS/GPS circuitry and component selection
I chose MAX-M10S for GNSS/GPS because it has decent enough specs for my application. Ultra-low power. Supports multiple constellations. Small footprint. all them good stuff.
Note
I can also use GNSS for time base for logging and other things. I will have to see if it is worth it or not.
- features a small U.FL connector for the antenna. I will be using a active antenna.
- 3.3V Bias tee for powering the active antenna.
- 50 Ohm impedance controlled traces for the RF antenna signals.
Media
PLEASE NOTE THAT THIS PROJECT IS STILL UNDER DEVELOPMENT. PCB looks a bit ugly, still need to improve the layout. I still have to add silkscreen text as well. I will update this section as the project progresses.
What is left
I just have to finialize the schematic design and start routing the board. I have done the floor planning and schematic capture, just need to pick right pins for the peripherals.
- Finalize schematic.
- PCB layout and routing. I have done the floor planning and schematic capture. Now I need to route the board and get it fabricated.
- Test those fabricated boards and make sure they work as expected.
- Firmware development. Need to run ekf on a break out I ordered and test it.
- Other safety checks and tests. Need to make sure the board is safe to fly.
- Fly it.