Silverware Firmware: Figuring out by reverse translation.

Been looking to get to wrangle this better. First thing was having to remind myself how to read scientific notation properly because thats how Silverware notates PIDS. Then I started using a file comparer to highlight the differences between Notfastenufs files and the stock. and tried to get my head around the PID number range as it relates to itself and to Betaflight.

The goal is to have dual mode firmware that has NFE acro/Angle... and to take some time to tune the angle mode. Everyone is so hot to get to acro, and I understand... but dont put yr eggs all in this basket!



Changes in config.h:

#define MAX_RATE 860.0 (360)
#define MAX_RATEYAW 500.0 (360)
#define MAX_ANGLE_HI 70.0f (55.0)
#define LOW_RATES_MULTI 1.0f (0.5f)
//#define DISABLE_EXPO (commented out in NFE to declare expo)
#define EXPO_XY 0.8 (.65)
#define EXPO_YAW 0.6 (.5)
#define GYRO_LOW_PASS_FILTER 0 (3)
//#define SOFT_LPF_1ST_HZ 100 (swapped)
#define SOFT_LPF_2ST_HZ 100 (swapped)
//#define AUX1_START_ON (was active)
//#define STOCK_TX_AUTOCENTER
^^^^^^^^ADDED AFTER
#define STICKS_DEADBAND .01f (was not in stock at all)
#define CLIP_FF (was commented out)
#define PWMFREQ 24000 (was 16000)
//#define MOTOR_CURVE_NONE (was active)
#define BOLDCLASH_716MM_24K (was commented out)
#define MIX_LOWER_THROTTLE (was comm out)
#define MIX_THROTTLE_REDUCTION_PERCENT 10 (line added)
#define TX_POWER 7 (was 3)

Changes in pid.c


Changes in PID.c
//#define NEW_DTERM ((commented out
#define MAX_FLAT_LPF_DIFF_DTERM ((enabled


NFE's 7mm PIDS

// B-03 firmware with modified hardware.h for E011
^^^^^^^^Previous line

//7mm Tune
// Kp                          ROLL       PITCH     YAW
float pidkp[PIDNUMBER] = {26.5e-2 , 26.5e-2  , 9.5e-1 };

// Ki                                                                                        ROLL       PITCH     YAW
float pidki[PIDNUMBER] = { 16.5e-1  , 16.5e-1 , 16e-1 };       

// Kd                                                                                        ROLL       PITCH     YAW
float pidkd[PIDNUMBER] = { 11.4e-1 , 11.4e-1  , 4.9e-1 };       

(As compared to)

STOCK DUAL PIDS

// Kp                          ROLL       PITCH     YAW
float pidkp[PIDNUMBER] = { 13.0e-2 , 13.0e-2  , 6e-1 };

// Ki                              ROLL       PITCH     YAW
float pidki[PIDNUMBER] = { 12.8e-1  , 12.8e-1 , 3e-1 };       

// Kd                                  ROLL       PITCH     YAW
float pidkd[PIDNUMBER] = { 5.5e-1 , 5.5e-1  , 0.0e-1 };       


Setpoint weighting section: (undefined in stock)
NFE
// "setpoint weighting" 0.0 - 1.0 where 1.0 = normal pid
 #define ENABLE_SETPOINT_WEIGHTING
float b[3] = { 0.93 , 0.95 , 0.9};

Output limit:
NFE
// output limit                       
const float outlimit[PIDNUMBER] = { 1.7 , 1.7 , 0.8 };

// limit of integral term (abs)
const float integrallimit[PIDNUMBER] = { 1.7 , 1.7 , 0.8 };

Stock
// output limit                       
const float outlimit[PIDNUMBER] = { 0.8 , 0.8 , 0.5 };

// limit of integral term (abs)
const float integrallimit[PIDNUMBER] = { 0.8 , 0.8 , 0.5 };

Comments

Popular Posts