Karthik

Peregrine FC

A model rocket flight computer built around an STM32 F756ZG MCU

Started 7 Jul 2026Hardware, Firmware, PCBSource

Progress

67%
planningbuildingtestingshipped
Started 7 Jul 2026
Latest3 weeks ago

PCB layout update

Arranged the components. Did some floorplanning.

  1. Schematics update

  2. Added 1.8 V High PSRRLDO for IMUs

  3. Power and protection circuits selected

6 updatesFull log

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.

Pyro circuit schematic.
Pyro circuit simulation in QSpice.

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.

Zoomed in shot of Pyro circuitry layout on PCB.

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.

Schematic of GNSS/GPS circuitry.
  • 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.

Front view of the PCB.
Back view of the PCB.

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.

  1. Finalize schematic.
  2. PCB layout and routing. I have done the floor planning and schematic capture. Now I need to route the board and get it fabricated.
  3. Test those fabricated boards and make sure they work as expected.
  4. Firmware development. Need to run ekf on a break out I ordered and test it.
  5. Other safety checks and tests. Need to make sure the board is safe to fly.
  6. Fly it.

Log

Every update, newest first.

  1. 3 weeks ago

    PCB layout update

    Arranged the components. Did some floorplanning.

  2. Schematics update

    Added the dual-IMU and dual-barometer sensor paths, MAX-M10S GNSS, SX1262 radio, SD logging, backup NOR flash, and three protected pyro channels.

  3. Added 1.8 V High PSRRLDO for IMUs

    Added a separate 1.8 V High PSRR LDO for powering the IMUs. This will help in reducing noise and improve the performance of the IMUs. Got this idea from an open source project.

  4. Power and protection circuits selected

    Selected the 5 V and 3.3 V buck converters, TPS2121 power MUX, current-sense circuits, and ESD protection for the USB-C and SD interfaces.

  5. MCU and USB circuitry done.

    Decoupling, USB-C, and SWD interfaces are complete.

  6. Started Schematic design

    Started the schematic design for Peregrine FC.

Next

RC car controller PCB

A from-scratch STM32 controller board I built to actually learn PCB design