luna_m600: new firmware that defaults to 60V battery settings

Signed-off-by: Marcos Chaparro <mchaparro@powerdesigns.ca>
This commit is contained in:
Marcos Chaparro 2023-12-13 14:35:38 -03:00
parent aa073f13df
commit 95bdf83a9d
5 changed files with 633 additions and 2 deletions

View File

@ -21,9 +21,14 @@
#ifndef HW_LUNA_M600_H_ #ifndef HW_LUNA_M600_H_
#define 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" #include "appconf_luna_m600.h"
#define QMLUI_SOURCE_HW "hwconf/luna/m600/qmlui_luna_m600.c" #define QMLUI_SOURCE_HW "hwconf/luna/m600/qmlui_luna_m600.c"
@ -38,7 +43,11 @@
#define HW_USE_BRK #define HW_USE_BRK
#ifdef M600_Rev5 #ifdef M600_Rev5
#ifdef M600_60V_BATTERY
#define HW_NAME "LUNA_M600_V2_Rev5_60V"
#else
#define HW_NAME "LUNA_M600_V2_Rev5" #define HW_NAME "LUNA_M600_V2_Rev5"
#endif
#define HW_HAS_3_SHUNTS #define HW_HAS_3_SHUNTS
#define HW_HAS_PHASE_FILTERS #define HW_HAS_PHASE_FILTERS
#define HW_PHASE_A_FILTER_GPIO GPIOB #define HW_PHASE_A_FILTER_GPIO GPIOB

View File

@ -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 <http://www.gnu.org/licenses/>.
*/
#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_ */

View File

@ -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

View File

@ -73,6 +73,7 @@ package_dict["LUNA_BBSHD"] = [['luna_bbshd', default_name]]
package_dict["LUNA_M600"] = [['luna_m600', default_name]] package_dict["LUNA_M600"] = [['luna_m600', default_name]]
package_dict["LUNA_M600_V2"] = [['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"] = [['luna_m600_Rev5', default_name]]
package_dict["LUNA_M600_V2_Rev5_60V"] = [['luna_m600_Rev5_60V', default_name]]
package_dict["UNITY"] = [['unity', default_name], package_dict["UNITY"] = [['unity', default_name],
['unity_no_limits', no_limits_name]] ['unity_no_limits', no_limits_name]]
package_dict["Cheap_FOCer_2"] = [['Cheap_FOCer_2', default_name], package_dict["Cheap_FOCer_2"] = [['Cheap_FOCer_2', default_name],