Wiring Plan

SPECS

Processors: F4 & F3, STM32F405 & STM32F301
IMU:  ICM 20601
OSD: Full Butterflight OSD support
Motor Outputs: Full DSHOT and MULTISHOT support.
Receiver Support: PPM, S.Bus (inverter built-in), DSM, HoTT,  SRXL, CSRF, FPort ready. 5V or 3.3V supply for receiver.
Telemetry Support: FrSKY Smart Port, FrSKY Sensor Hub, HoTT Telemetry, SRXL, CSRF, FPort ready. Built-in inverter for FrSKY telemetry.
Serial Ports: 5 full serial ports (UARTs). UART1 and UART2 have inverters for S.Bus and SmartPort telemetry.
Buzzer Port: Dedicated port for 5V buzzers.
Analog Inputs: Voltage sensing up to 26V, current and RSSI inputs (3.3V max).
Power: VBAT up to 6s with voltage regulator 2.5A continuous 3.2A burst. Or 5v in (switchable with jumper pads)

100% free of Jenova DNA

CLI COMMANDS

  • set imuf
    • lets you see all the settings related to our IMU-F unit
  • set imuf_pitch_q
  • set imuf_roll_q
  • set imuf_yaw_q
    • Accepted values: 1 - 16000
    • sets the "Q" value of our dynamic Kalman filter running inside imuf. Think of "Q" as "Trust." The more you "trust" the gyro measurement, the less filtering will be applied."
    • There are corresponding "R" values, and while you may see them in Butterflight/Betaflight, it is dynamic in ours and will be removed from the CLI soon.
  • set imuf_pitch_w
  • set imuf_roll_w
  • set imuf_yaw_w
    • Accepted values: 0(off) - 199 (replaces imuf_dyn_gain)
    • This is similar to the previous "dyn_gain" setting except applies directly to our fully dynamic Kalman implementations and is applied per-axis. 100+ is an alternative Dynamic Kalman we are also testing. Once we have determined which is the most appropriate for the majority of users, we will be simplifying this option. Default is 10.
  • set imuf_pitch_lpf_cutoff_hz
  • set imuf_roll_lpf_cutoff_hz
  • set imuf_yaw_lpf_cutoff_hz
    • Accepted values: 1 - 500
    • lets you set the hz frequency cutoff for the internal low-pass filter for the IMUF unit
  • msd
    • reboots the Spring FC into USB mode allowing you to download the Blackbox faster than the GUI.
  • imufupdate
    • updates the IMUF unit after flashing from the latest hex which will be located here

Filter tuning

  • imuf_pitch_q
  • imuf_roll_q
  • imuf_yaw_q

    • Accepted values: 1 - 16000 (default 3500 on pitch and roll. 2500 on yaw)
    • Since Q is your gyro trust, you will want to fly on defaults first and look for any signs of "Wobbling" like bobbing in a straight line, weirdness when rolling, etc... if you experience this, your Gyro "trust" is too high. Lower this value by 100-500 points on the axis that wobbles, and keep lowering it until it doesn't seem to help. Then, increase P if there are still wobbles. Here is one of our pilots, Wildtype, demonstrating:


    • lowering Q will also help with prop-wash situations but, can make some quads feel like the "I" value is too high, or feel "slow" to respond to stick input.
  • set imuf_pitch_lpf_cutoff_hz
  • set imuf_roll_lpf_cutoff_hz
  • set imuf_yaw_lpf_cutoff_hz

    • Accepted values: 1 - 500 (default 150)
    • You typically do not have to adjust this value. If you do, the higher the value, the more responsive it will feel. However, bent prop noise is likely to be missed since bent-prop noise sits between 140hz~220hz. The lower the cutoff, the more "real noise" is filtered but, can let some noise in the higher HZ range through and P will still operate on noise in those frequencies.
  • set imuf_pitch_w
  • set imuf_roll_w
  • set imuf_yaw_w
    • Accepted values: 0(off) - 199 (replaces imuf_dyn_gain)
    • This is similar to the previous "dyn_gain" setting except applies directly to our fully dynamic Kalman implementations and is applied per-axis. 100+ is an alternative Dynamic Kalman we are also testing. Once we have determined which is the most appropriate for the majority of users, we will be simplifying this option. Default is 10.

PID Tuning

    What we have created with the IMU-F unit is somewhat of a "sound-proof room" for your PIDs. Because of this, PID values you may be used to will no longer apply. There are a couple reasons for this:

    • Our pid loops can execute 2-4x faster loop speeds than other flight controllers
    • Because the flight code no longer has to filter any gyro input, PID response to stick inputs and set-points is faster.

    This creates an interesting dynamic because P and D become more aggressive. Because they are doing far less work, the values you are used to running are going to be much lower. Here is a video example of someone running our board with D values unheard of with hardly any prop-wash:



    Eventually, we will have all of these values automated. We hope to make every quad plug and play. What the Spring FC allows us now is the headroom to be able to add those features. We want everyone flying to spend more time flying and less time tuning and having to worry about all the little details.

    Check out Joshua Bardwell's class on PID tuning: