From 95bdf83a9d666f7a7abedb619b28cc73d3bfb14c Mon Sep 17 00:00:00 2001 From: Marcos Chaparro Date: Wed, 13 Dec 2023 14:35:38 -0300 Subject: [PATCH] luna_m600: new firmware that defaults to 60V battery settings Signed-off-by: Marcos Chaparro --- hwconf/luna/m600/hw_luna_m600.h | 13 +- hwconf/luna/m600/hw_luna_m600_Rev5_60V.h | 28 + ...onf_luna_m600.h => mcconf_luna_m600_48V.h} | 0 hwconf/luna/m600/mcconf_luna_m600_60V.h | 593 ++++++++++++++++++ package_firmware.py | 1 + 5 files changed, 633 insertions(+), 2 deletions(-) create mode 100644 hwconf/luna/m600/hw_luna_m600_Rev5_60V.h rename hwconf/luna/m600/{mcconf_luna_m600.h => mcconf_luna_m600_48V.h} (100%) create mode 100644 hwconf/luna/m600/mcconf_luna_m600_60V.h diff --git a/hwconf/luna/m600/hw_luna_m600.h b/hwconf/luna/m600/hw_luna_m600.h index 0324fb73..c7a7abd2 100644 --- a/hwconf/luna/m600/hw_luna_m600.h +++ b/hwconf/luna/m600/hw_luna_m600.h @@ -21,9 +21,14 @@ #ifndef HW_LUNA_M600_H_ #define HW_LUNA_M600_H_ -#define FW_NAME "2023.12.06" +#define FW_NAME "2023.12.13" + +#ifdef M600_60V_BATTERY +#include "mcconf_luna_m600_60V.h" +#else +#include "mcconf_luna_m600_48V.h" +#endif -#include "mcconf_luna_m600.h" #include "appconf_luna_m600.h" #define QMLUI_SOURCE_HW "hwconf/luna/m600/qmlui_luna_m600.c" @@ -38,7 +43,11 @@ #define HW_USE_BRK #ifdef M600_Rev5 +#ifdef M600_60V_BATTERY +#define HW_NAME "LUNA_M600_V2_Rev5_60V" +#else #define HW_NAME "LUNA_M600_V2_Rev5" +#endif #define HW_HAS_3_SHUNTS #define HW_HAS_PHASE_FILTERS #define HW_PHASE_A_FILTER_GPIO GPIOB diff --git a/hwconf/luna/m600/hw_luna_m600_Rev5_60V.h b/hwconf/luna/m600/hw_luna_m600_Rev5_60V.h new file mode 100644 index 00000000..87c3dfdf --- /dev/null +++ b/hwconf/luna/m600/hw_luna_m600_Rev5_60V.h @@ -0,0 +1,28 @@ +/* + Copyright 2016 - 2022 Benjamin Vedder benjamin@vedder.se + + This file is part of the VESC firmware. + + The VESC firmware is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + The VESC firmware is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#ifndef HW_LUNA_M600_REV5_60V_H_ +#define HW_LUNA_M600_REV5_60V_H_ + +#define M600_Rev5 +#define M600_60V_BATTERY + +#include "hw_luna_m600.h" + +#endif /* HW_LUNA_M600_REV5_60V_H_ */ diff --git a/hwconf/luna/m600/mcconf_luna_m600.h b/hwconf/luna/m600/mcconf_luna_m600_48V.h similarity index 100% rename from hwconf/luna/m600/mcconf_luna_m600.h rename to hwconf/luna/m600/mcconf_luna_m600_48V.h diff --git a/hwconf/luna/m600/mcconf_luna_m600_60V.h b/hwconf/luna/m600/mcconf_luna_m600_60V.h new file mode 100644 index 00000000..dcb9fd9b --- /dev/null +++ b/hwconf/luna/m600/mcconf_luna_m600_60V.h @@ -0,0 +1,593 @@ +// This file is autogenerated by VESC Tool + +#ifndef MCCONF_LUNA_M600_H_ +#define MCCONF_LUNA_M600_H_ + +// PWM Mode +#define MCCONF_PWM_MODE 1 + +// Commutation Mode +#define MCCONF_COMM_MODE 0 + +// Motor Type +#define MCCONF_DEFAULT_MOTOR_TYPE 2 + +// Sensor Mode +#define MCCONF_SENSOR_MODE 0 + +// Motor Current Max +#define MCCONF_L_CURRENT_MAX 100 + +// Motor Current Max Brake +#define MCCONF_L_CURRENT_MIN -20 + +// Battery Current Max +#define MCCONF_L_IN_CURRENT_MAX 50 + +// Battery Current Max Regen +#define MCCONF_L_IN_CURRENT_MIN -20 + +// Input Current Limit Map Start +#define MCCONF_L_IN_CURRENT_MAP_START 1 + +// Input Current Map Filter +#define MCCONF_L_IN_CURRENT_MAP_FILTER 0.005 + +// Absolute Maximum Current +#define MCCONF_L_MAX_ABS_CURRENT 200 + +// Max ERPM Reverse +#define MCCONF_L_RPM_MIN -100000 + +// Max ERPM +#define MCCONF_L_RPM_MAX 100000 + +// ERPM Limit Start +#define MCCONF_L_RPM_START 0.8 + +// Max ERPM Full Brake +#define MCCONF_L_CURR_MAX_RPM_FBRAKE 300 + +// Max ERPM Full Brake Current Control +#define MCCONF_L_CURR_MAX_RPM_FBRAKE_CC 1500 + +// Minimum Input Voltage +#define MCCONF_L_MIN_VOLTAGE 30 + +// Maximum Input Voltage +#define MCCONF_L_MAX_VOLTAGE 60 + +// Battery Voltage Cutoff Start +#define MCCONF_L_BATTERY_CUT_START 49 + +// Battery Voltage Cutoff End +#define MCCONF_L_BATTERY_CUT_END 48 + +// Battery Voltage Regen Cutoff Start +#define MCCONF_L_BATTERY_REGEN_CUT_START 1000 + +// Battery Voltage Regen Cutoff End +#define MCCONF_L_BATTERY_REGEN_CUT_END 1100 + +// Slow ABS Current Limit +#define MCCONF_L_SLOW_ABS_OVERCURRENT 0 + +// MOSFET Temp Cutoff Start +#define MCCONF_L_LIM_TEMP_FET_START 85 + +// MOSFET Temp Cutoff End +#define MCCONF_L_LIM_TEMP_FET_END 95 + +// Motor Temp Cutoff Start +#define MCCONF_L_LIM_TEMP_MOTOR_START 85 + +// Motor Temp Cutoff End +#define MCCONF_L_LIM_TEMP_MOTOR_END 120 + +// Acceleration Temperature Decrease +#define MCCONF_L_LIM_TEMP_ACCEL_DEC 0 + +// Minimum Duty Cycle +#define MCCONF_L_MIN_DUTY 0.005 + +// Maximum Duty Cycle +#define MCCONF_L_MAX_DUTY 0.95 + +// Maximum Wattage +#define MCCONF_L_WATT_MAX 2500 + +// Maximum Braking Wattage +#define MCCONF_L_WATT_MIN -2500 + +// Max Current Scale +#define MCCONF_L_CURRENT_MAX_SCALE 1 + +// Min Current Scale +#define MCCONF_L_CURRENT_MIN_SCALE 1 + +// Duty Cycle Current Limit Start +#define MCCONF_L_DUTY_START 1 + +// Minimum ERPM +#define MCCONF_SL_MIN_RPM 150 + +// Minimum ERPM Integrator +#define MCCONF_SL_MIN_ERPM_CYCLE_INT_LIMIT 1100 + +// Max Brake Current at Direction Change +#define MCCONF_SL_MAX_FB_CURR_DIR_CHANGE 10 + +// Cycle Integrator Limit +#define MCCONF_SL_CYCLE_INT_LIMIT 62 + +// Phase Advance at BR ERPM +#define MCCONF_SL_PHASE_ADVANCE_AT_BR 0.8 + +// BR ERPM +#define MCCONF_SL_CYCLE_INT_BR 80000 + +// BEMF Coupling +#define MCCONF_SL_BEMF_COUPLING_K 600 + +// Hall Table [0] +#define MCCONF_HALL_TAB_0 -1 + +// Hall Table [1] +#define MCCONF_HALL_TAB_1 1 + +// Hall Table [2] +#define MCCONF_HALL_TAB_2 3 + +// Hall Table [3] +#define MCCONF_HALL_TAB_3 2 + +// Hall Table [4] +#define MCCONF_HALL_TAB_4 5 + +// Hall Table [5] +#define MCCONF_HALL_TAB_5 6 + +// Hall Table [6] +#define MCCONF_HALL_TAB_6 4 + +// Hall Table [7] +#define MCCONF_HALL_TAB_7 -1 + +// Sensorless ERPM Hybrid +#define MCCONF_HALL_ERPM 2000 + +// Current KP +#define MCCONF_FOC_CURRENT_KP 0.2025 + +// Current KI +#define MCCONF_FOC_CURRENT_KI 48.58 + +// Zero Vector Frequency +#define MCCONF_FOC_F_ZV 36000 + +// Dead Time Compensation +#define MCCONF_FOC_DT_US 0.23 + +// Encoder Inverted +#define MCCONF_FOC_ENCODER_INVERTED 1 + +// Encoder Offset +#define MCCONF_FOC_ENCODER_OFFSET 400 + +// Encoder Ratio +#define MCCONF_FOC_ENCODER_RATIO 4 + +// Sensor Mode +#define MCCONF_FOC_SENSOR_MODE 1 + +// Speed Tracker Kp +#define MCCONF_FOC_PLL_KP 2000 + +// Speed Tracker Ki +#define MCCONF_FOC_PLL_KI 30000 + +// Motor Inductance (L) +#define MCCONF_FOC_MOTOR_L 0.00020252 + +// Motor Inductance Difference (Ld - Lq) +#define MCCONF_FOC_MOTOR_LD_LQ_DIFF 0 + +// Motor Resistance (R) +#define MCCONF_FOC_MOTOR_R 0.04858 + +// Motor Flux Linkage (λ) +#define MCCONF_FOC_MOTOR_FLUX_LINKAGE 0.014105 + +// Observer Gain (x1M) +#define MCCONF_FOC_OBSERVER_GAIN 5.03e+06 + +// Observer Gain At Minimum Duty +#define MCCONF_FOC_OBSERVER_GAIN_SLOW 0.05 + +// Observer Offset +#define MCCONF_FOC_OBSERVER_OFFSET -1 + +// Duty Downramp Kp +#define MCCONF_FOC_DUTY_DOWNRAMP_KP 10 + +// Duty Downramp Ki +#define MCCONF_FOC_DUTY_DOWNRAMP_KI 200 + +// Start Current Decrease +#define MCCONF_FOC_START_CURR_DEC 1 + +// Start Current Decrease ERPM +#define MCCONF_FOC_START_CURR_DEC_RPM 2500 + +// Openloop ERPM +#define MCCONF_FOC_OPENLOOP_RPM 1500 + +// Openloop ERPM at Min Current +#define MCCONF_FOC_OPENLOOP_RPM_LOW 0 + +// D Axis Gain Scaling Start +#define MCCONF_FOC_D_GAIN_SCALE_START 1 + +// D Axis Gain Scaling at Max Mod +#define MCCONF_FOC_D_GAIN_SCALE_MAX_MOD 0.2 + +// Openloop Hysteresis +#define MCCONF_FOC_SL_OPENLOOP_HYST 0.1 + +// Openloop Lock Time +#define MCCONF_FOC_SL_OPENLOOP_T_LOCK 0 + +// Openloop Ramp Time +#define MCCONF_FOC_SL_OPENLOOP_T_RAMP 0.1 + +// Openloop Time +#define MCCONF_FOC_SL_OPENLOOP_TIME 0.05 + +// Openloop Current Boost +#define MCCONF_FOC_SL_OPENLOOP_BOOST_Q 0 + +// Openloop Current Max +#define MCCONF_FOC_SL_OPENLOOP_MAX_Q -1 + +// Hall Table [0] +#define MCCONF_FOC_HALL_TAB_0 255 + +// Hall Table [1] +#define MCCONF_FOC_HALL_TAB_1 255 + +// Hall Table [2] +#define MCCONF_FOC_HALL_TAB_2 255 + +// Hall Table [3] +#define MCCONF_FOC_HALL_TAB_3 255 + +// Hall Table [4] +#define MCCONF_FOC_HALL_TAB_4 255 + +// Hall Table [5] +#define MCCONF_FOC_HALL_TAB_5 255 + +// Hall Table [6] +#define MCCONF_FOC_HALL_TAB_6 255 + +// Hall Table [7] +#define MCCONF_FOC_HALL_TAB_7 255 + +// Hall Interpolation ERPM +#define MCCONF_FOC_HALL_INTERP_ERPM 500 + +// Sensored ERPM Start +#define MCCONF_FOC_SL_ERPM_START 2500 + +// Sensorless ERPM +#define MCCONF_FOC_SL_ERPM 30000 + +// Control Sample Mode +#define MCCONF_FOC_CONTROL_SAMPLE_MODE 0 + +// Current Sample Mode +#define MCCONF_FOC_CURRENT_SAMPLE_MODE 1 + +// Saturation Compensation Mode +#define MCCONF_FOC_SAT_COMP_MODE 2 + +// Saturation Compensation Factor +#define MCCONF_FOC_SAT_COMP 0 + +// Temp Comp +#define MCCONF_FOC_TEMP_COMP 0 + +// Temp Comp Base Temp +#define MCCONF_FOC_TEMP_COMP_BASE_TEMP 25 + +// Current Filter Constant +#define MCCONF_FOC_CURRENT_FILTER_CONST 0.1 + +// Current Controller Decoupling +#define MCCONF_FOC_CC_DECOUPLING 0 + +// Observer Type +#define MCCONF_FOC_OBSERVER_TYPE 3 + +// HFI Start Voltage +#define MCCONF_FOC_HFI_VOLTAGE_START 20 + +// HFI Run Voltage +#define MCCONF_FOC_HFI_VOLTAGE_RUN 4 + +// HFI Max Voltage +#define MCCONF_FOC_HFI_VOLTAGE_MAX 10 + +// HFI Gain +#define MCCONF_FOC_HFI_GAIN 0.3 + +// HFI Current Hysteresis +#define MCCONF_FOC_HFI_HYST 0 + +// Sensorless ERPM HFI +#define MCCONF_FOC_SL_ERPM_HFI 2000 + +// HFI Start Samples +#define MCCONF_FOC_HFI_START_SAMPLES 65 + +// HFI Observer Override Time +#define MCCONF_FOC_HFI_OBS_OVR_SEC 0.001 + +// HFI Samples +#define MCCONF_FOC_HFI_SAMPLES 1 + +// Run calibration at boot +#define MCCONF_FOC_OFFSETS_CAL_ON_BOOT 1 + +// Current Offset 0 +#define MCCONF_FOC_OFFSETS_CURRENT_0 2048 + +// Current Offset 1 +#define MCCONF_FOC_OFFSETS_CURRENT_1 2048 + +// Current Offset 2 +#define MCCONF_FOC_OFFSETS_CURRENT_2 2048 + +// Voltage Offset 0 +#define MCCONF_FOC_OFFSETS_VOLTAGE_0 0 + +// Voltage Offset 1 +#define MCCONF_FOC_OFFSETS_VOLTAGE_1 0 + +// Voltage Offset 2 +#define MCCONF_FOC_OFFSETS_VOLTAGE_2 0 + +// Voltage Offset Undriven 0 +#define MCCONF_FOC_OFFSETS_VOLTAGE_UNDRIVEN_0 0 + +// Voltage Offset Undriven 1 +#define MCCONF_FOC_OFFSETS_VOLTAGE_UNDRIVEN_1 0 + +// Voltage Offset Undriven 2 +#define MCCONF_FOC_OFFSETS_VOLTAGE_UNDRIVEN_2 0 + +// Enable Phase Filters +#define MCCONF_FOC_PHASE_FILTER_ENABLE 0 + +// Disable Phase Filter Fault Code +#define MCCONF_FOC_PHASE_FILTER_DISABLE_FAULT 1 + +// Maximum ERPM for phase filters +#define MCCONF_FOC_PHASE_FILTER_MAX_ERPM 2500 + +// MTPA Algorithm Mode +#define MCCONF_FOC_MTPA_MODE 0 + +// Field Weakening Current Max +#define MCCONF_FOC_FW_CURRENT_MAX 7 + +// Field Weakening Duty Start +#define MCCONF_FOC_FW_DUTY_START 0.9 + +// Field Weakening Ramp Time +#define MCCONF_FOC_FW_RAMP_TIME 0.2 + +// Q Axis Current Factor +#define MCCONF_FOC_FW_Q_CURRENT_FACTOR 0.3 + +// Speed Tracker Position Source +#define MCCONF_FOC_SPEED_SOURCE 1 + +// Buffer Notification Length +#define MCCONF_GPD_BUFFER_NOTIFY_LEFT 200 + +// Buffer Sampling Interpolation +#define MCCONF_GPD_BUFFER_INTERPOL 0 + +// Current Filter Constant +#define MCCONF_GPD_CURRENT_FILTER_CONST 0.1 + +// Current KP +#define MCCONF_GPD_CURRENT_KP 0.03 + +// Current KI +#define MCCONF_GPD_CURRENT_KI 50 + +// PID Loop Rate +#define MCCONF_SP_PID_LOOP_RATE 5 + +// Speed PID Kp +#define MCCONF_S_PID_KP 0.004 + +// Speed PID Ki +#define MCCONF_S_PID_KI 0.004 + +// Speed PID Kd +#define MCCONF_S_PID_KD 0.0001 + +// Speed PID Kd Filter +#define MCCONF_S_PID_KD_FILTER 0.2 + +// Minimum ERPM +#define MCCONF_S_PID_MIN_RPM 100 + +// Allow Braking +#define MCCONF_S_PID_ALLOW_BRAKING 1 + +// Ramp eRPMs per second +#define MCCONF_S_PID_RAMP_ERPMS_S 1500 + +// Speed Source +#define MCCONF_S_PID_SPEED_SOURCE 0 + +// Position PID Kp +#define MCCONF_P_PID_KP 0.03 + +// Position PID Ki +#define MCCONF_P_PID_KI 0 + +// Position PID Kd +#define MCCONF_P_PID_KD 0.0004 + +// Position PID Kd Process +#define MCCONF_P_PID_KD_PROC 0.00035 + +// Position PID Kd Filter +#define MCCONF_P_PID_KD_FILTER 0.2 + +// Position Angle Division +#define MCCONF_P_PID_ANG_DIV 1 + +// Gain Decrease Angle +#define MCCONF_P_PID_GAIN_DEC_ANGLE 0 + +// Position PID Offset Angle +#define MCCONF_P_PID_OFFSET 0 + +// Startup boost +#define MCCONF_CC_STARTUP_BOOST_DUTY 0.01 + +// Minimum Current +#define MCCONF_CC_MIN_CURRENT 0.05 + +// Current Controller Gain +#define MCCONF_CC_GAIN 0.0046 + +// Current Control Ramp Step Max +#define MCCONF_CC_RAMP_STEP 0.04 + +// Fault Stop Time +#define MCCONF_M_FAULT_STOP_TIME 500 + +// Duty Ramp Step Max +#define MCCONF_M_RAMP_STEP 0.02 + +// Current Backoff Gain +#define MCCONF_M_CURRENT_BACKOFF_GAIN 0.5 + +// Encoder counts +#define MCCONF_M_ENCODER_COUNTS 8192 + +// Sine Amplitude +#define MCCONF_M_ENCODER_SIN_AMP 1 + +// Cosine Amplitude +#define MCCONF_M_ENCODER_COS_AMP 1 + +// Sine Offset +#define MCCONF_M_ENCODER_SIN_OFFSET 1.65 + +// Cosine Offset +#define MCCONF_M_ENCODER_COS_OFFSET 1.65 + +// Sin/Cos Filter Constant +#define MCCONF_M_ENCODER_SINCOS_FILTER 0.5 + +// Sin/Cos Phase Correction +#define MCCONF_M_ENCODER_SINCOS_PHASE 0 + +// Sensor Port Mode +#define MCCONF_M_SENSOR_PORT_MODE 7 + +// Invert Motor Direction +#define MCCONF_M_INVERT_DIRECTION 0 + +// DRV8301 OC Mode +#define MCCONF_M_DRV8301_OC_MODE 0 + +// DRV8301 OC Adjustment +#define MCCONF_M_DRV8301_OC_ADJ 16 + +// Minimum Switching Frequency +#define MCCONF_M_BLDC_F_SW_MIN 3000 + +// Maximum Switching Frequency +#define MCCONF_M_BLDC_F_SW_MAX 35000 + +// Switching Frequency +#define MCCONF_M_DC_F_SW 25000 + +// Beta Value for Motor Thermistor +#define MCCONF_M_NTC_MOTOR_BETA 3380 + +// Auxiliary Output Mode +#define MCCONF_M_OUT_AUX_MODE 0 + +// Motor Temperature Sensor Type +#define MCCONF_M_MOTOR_TEMP_SENS_TYPE 1 + +// Coefficient for PTC Motor Thermistor +#define MCCONF_M_PTC_MOTOR_COEFF 0.25 + +// Custom NTC/PTC Resistance +#define MCCONF_M_NTCX_PTCX_RES 10000 + +// Custom NTC/PTC Base Temperature +#define MCCONF_M_NTCX_PTCX_BASE_TEMP 25 + +// Hall Sensor Extra Samples +#define MCCONF_M_HALL_EXTRA_SAMPLES 1 + +// Battery Filter Constant +#define MCCONF_M_BATT_FILTER_CONST 70 + +// Motor Poles +#define MCCONF_SI_MOTOR_POLES 8 + +// Gear Ratio +#define MCCONF_SI_GEAR_RATIO 7 + +// Wheel Diameter +#define MCCONF_SI_WHEEL_DIAMETER 0.714 + +// Battery Type +#define MCCONF_SI_BATTERY_TYPE 0 + +// Battery Cells Series +#define MCCONF_SI_BATTERY_CELLS 16 + +// Battery Capacity +#define MCCONF_SI_BATTERY_AH 14.5 + +// Motor No Load Current +#define MCCONF_SI_MOTOR_NL_CURRENT 1 + +// BMS Type +#define MCCONF_BMS_TYPE 1 + +// BMS Limit Mode +#define MCCONF_BMS_LIMIT_MODE 3 + +// Temperature Limit Start +#define MCCONF_BMS_T_LIMIT_START 45 + +// Temperature Limit End +#define MCCONF_BMS_T_LIMIT_END 65 + +// SOC Limit Start +#define MCCONF_BMS_SOC_LIMIT_START 0.05 + +// SOC Limit End +#define MCCONF_BMS_SOC_LIMIT_END 0 + +// Forward CAN to Local +#define MCCONF_BMS_FWD_CAN_MODE 0 + +// MCCONF_LUNA_M600_H_ +#endif + diff --git a/package_firmware.py b/package_firmware.py index 706d463d..db2db0c9 100755 --- a/package_firmware.py +++ b/package_firmware.py @@ -73,6 +73,7 @@ package_dict["LUNA_BBSHD"] = [['luna_bbshd', default_name]] package_dict["LUNA_M600"] = [['luna_m600', default_name]] package_dict["LUNA_M600_V2"] = [['luna_m600', default_name]] package_dict["LUNA_M600_V2_Rev5"] = [['luna_m600_Rev5', default_name]] +package_dict["LUNA_M600_V2_Rev5_60V"] = [['luna_m600_Rev5_60V', default_name]] package_dict["UNITY"] = [['unity', default_name], ['unity_no_limits', no_limits_name]] package_dict["Cheap_FOCer_2"] = [['Cheap_FOCer_2', default_name],