Customer.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. /**
  2. * @copyright (C) COPYRIGHT 2022 Fortiortech Shenzhen
  3. * @file Customer.h
  4. * @author Fortiortech Appliction Team
  5. * @note Last modify author is Marcel He
  6. * @since 2019-05-17
  7. * @date 2022-07-14
  8. * @brief This file contains customer parameter used for Motor Control.
  9. */
  10. /* Define to prevent recursive inclusion -------------------------------------------------------- */
  11. #ifndef __CUSTOMER_H_
  12. #define __CUSTOMER_H_
  13. /**********************基础参数*****************************
  14. 1. 芯片参数
  15. 2. 电机参数
  16. 3. 电流采样参数
  17. 4. 母线电压采样参数
  18. **************************************************************/
  19. /* ----------------------------------------------------------------------------------------------------------------------------
  20. 1.芯片参数
  21. ---------------------------------------------------------------------------------------------------------------------------- */
  22. #define PWM_FREQUENCY (16.0) ///< (kHz) 载波频率
  23. #define PWM_DEADTIME (1.2) ///< (us) 死区时间
  24. #define MIN_WIND_TIME (2.6) ///< (us) 单电阻最小采样窗口,建议值死区时间+0.9us
  25. #define DLL_TIME (PWM_DEADTIME + 0.3) ///< (us) 双电阻最小脉宽设置, 建议值为死区时间值+0.2us以上
  26. /* ----------------------------------------------------------------------------------------------------------------------------
  27. 2.电机参数
  28. ---------------------------------------------------------------------------------------------------------------------------- */
  29. #define Pole_Pairs (4.0) ///< 极对数
  30. #define LD (0.07*1.0) ///< (H) D轴电感
  31. #define LQ (0.07*1.0) ///< (H) Q轴电感
  32. #define RS (45.15) ///< (Ω) 相电阻
  33. #define Ke (32.6) ///< (V/KRPM) 反电动势常数,选择AO观测器不需要Ke
  34. #define MOTOR_SPEED_BASE (3000.0) ///< (RPM) 速度基准
  35. //// 若选择AO自适应观测器 则无需填写Ke
  36. //#define KeVpp (1.832) ///< (V) 反电动势测量的峰峰值
  37. //#define KeT (68.40) ///< (ms) 反电动势测量的周期
  38. //#define Ke (Pole_Pairs * KeVpp * KeT / 207.84) ///< (V/KRPM) 反电动势常数
  39. /* ----------------------------------------------------------------------------------------------------------------------------
  40. 3.电流采样参数
  41. ---------------------------------------------------------------------------------------------------------------------------- */
  42. /**
  43. * @breaf 运放模式选择
  44. * @param (AMP_NOMAL) 外部放大
  45. * @param (AMP_PGA_DUAL) 内部PGA双端差分输入(放大倍数的标定外部引脚串1kΩ电阻)
  46. */
  47. #define HW_AMP_MODE (AMP_PGA_DUAL) ///< 运放模式选择
  48. #define HW_RSHUNT (0.39) ///< (Ω) 采样电阻
  49. /**
  50. * 放大倍数设置
  51. * @param (AMP2x) 内部PGA放大2倍
  52. * @param (AMP4x) 内部PGA放大4倍
  53. * @param (AMP8x) 内部PGA放大8倍
  54. * @param (AMP16x) 内部PGA放大16倍
  55. * @param (xxxxxx) 外部放大模式填写相应倍数
  56. */
  57. #define HW_AMPGAIN (AMP4x) ///< 放大倍数设置
  58. /**
  59. * 参考电压设置
  60. * @param (VREF3_0) 参考电压设置为3.0V
  61. * @param (VREF4_0) 参考电压设置为4.0V
  62. * @param (VREF4_5) 参考电压设置为4.5V
  63. * @param (VREF5_0) 参考电压设置为5.0V
  64. */
  65. #define HW_ADC_VREF (VREF5_0) ///< (V) ADC参考电压
  66. /**
  67. * 电流采样模式选择
  68. * @param (Single_Resistor) 单电阻电流采样模式
  69. * @param (Double_Resistor) 双电阻电流采样模式
  70. * @param (Three_Resistor) 三电阻电流采样模式
  71. */
  72. #define Shunt_Resistor_Mode (Single_Resistor) ///< 电流采样模式选择
  73. /**
  74. * 基准电压VREF对外输出使能
  75. * @param (Disable) 禁止
  76. * @param (Enable) 使能
  77. */
  78. #define VREF_OUT_EN (Disable) ///< 基准电压VREF对外输出使能
  79. /**
  80. * 偏置电压设置
  81. * @param (VHALF1_8) VHALF电压设置为1/8VREF
  82. * @param (VHALF1_4) VHALF电压设置为1/4VREF
  83. * @param (VHALF25_64) VHALF电压设置为25/64VREF
  84. * @param (VHALF1_2) VHALF电压设置为1/2VREF
  85. */
  86. #define HW_VHALF_SEL (VHALF1_2) ///< 偏置电压设置
  87. /**
  88. * @brief 运放0偏置电压配置(根据实际电路匹配)
  89. * @param (Enable) 运放0有接VHALF
  90. * @param (Disable) 运放0没接VHALF
  91. */
  92. #define VHALF_EN (Enable) ///< VHALF输出使能
  93. /* ----------------------------------------------------------------------------------------------------------------------------
  94. 4.母线电压采样参数
  95. ---------------------------------------------------------------------------------------------------------------------------- */
  96. #define RV1 (1000.0) ///< (kΩ) 母线电压分压电阻1
  97. #define RV2 (6.8) ///< (kΩ) 母线电压分压电阻2
  98. /**********************电机运行参数*****************************
  99. 1. 预充电参数与IPMtest
  100. 2. 预定位参数
  101. 3. 启动参数
  102. 4. 环路参数
  103. 5. 调速开关模式
  104. 6. 顺逆风参数
  105. 7. 观测器模式
  106. 8. 过调制
  107. 9. 正反转模式
  108. 10. PWM调速开关参数
  109. 11. 启停测试参数
  110. 12.发热丝控制参数设置
  111. **************************************************************/
  112. /* ----------------------------------------------------------------------------------------------------------------------------
  113. 1.预充电参数
  114. ---------------------------------------------------------------------------------------------------------------------------- */
  115. /**
  116. * 预充电使能
  117. * @param (Disable) 禁止
  118. * @param (Enable) 使能
  119. */
  120. #define CHARGE_EN (Enable) ///< 预充电使能
  121. #define CHARGE_DUTY (0.98) ///< (%) 预充电下桥Duty
  122. #define CHARGE_TIME (150) ///< (ms) 预充电时间
  123. /**
  124. * IPM测试模式,用以检测MCU——MOS间电路是否正常(使用此功能需要使能预充电,禁止接电机)
  125. * @param (Disable) 禁止
  126. * @param (Enable) 使能
  127. */
  128. #define IPMTEST (Disable)
  129. /* ----------------------------------------------------------------------------------------------------------------------------
  130. 2.预定位参数
  131. ---------------------------------------------------------------------------------------------------------------------------- */
  132. /**
  133. * 预定位模式选择
  134. * @param (ALIGN_DSIABLE) 禁止
  135. * @param (ALIGN_NOMAL) 正常预定位
  136. * @param (ALIGN_TEST) 测试模式,可用于手动测试电机极对数
  137. */
  138. #define ALIGN_MOME (ALIGN_DSIABLE) ///< 预定位模式选择
  139. #define Align_Angle (0.0) ///< (°) 预定位角度
  140. #define Align_Time (1) ///< (ms) 预定位时间
  141. /* 预定位的Kp、Ki */
  142. #define DQKP_Alignment _Q12(1.0) ///< 预定位的KP
  143. #define DQKI_Alignment _Q15(0.01) ///< 预定位的KI
  144. #define ID_Align_CURRENT I_Value(0.0) ///< (A) D轴定位电流
  145. #define IQ_Align_CURRENT I_Value(0.3) ///< (A) Q轴定位电流
  146. /* ----------------------------------------------------------------------------------------------------------------------------
  147. 3.启动参数
  148. ---------------------------------------------------------------------------------------------------------------------------- */
  149. /**
  150. * 开环启动模式选择
  151. * @param (Open_Start) 开环强拖启动
  152. * @param (Omega_Start) Omega启动
  153. */
  154. #define Open_Start_Mode (Omega_Start) ///< 开环启动模式选择
  155. /* 启动电流 */
  156. #define ID_Start_CURRENT I_Value(0.0) ///< (A) D轴启动电流
  157. #define IQ_Start_CURRENT I_Value(0.3) ///< (A) Q轴启动电流
  158. /* 顺风启动切入闭环电流 */
  159. #define ID_RUN_CURRENT I_Value(0.0) ///< (A) D轴运行电流
  160. #define IQ_RUN_CURRENT I_Value(0.2) ///< (A) Q轴运行电流
  161. /* 启动ATO参数 */
  162. #define ATO_BW_START (5.0) ///< 观测器带宽的滤波值,经典值为1.0-200.0
  163. #define ATO_BW_RUN1 (20.0)
  164. #define ATO_BW_RUN2 (30.0)
  165. #define ATO_BW_RUN3 (40.0)
  166. #define ATO_BW_RUN4 (50.0)
  167. //#define ATO_BW_START (0.0) ///< 观测器带宽的滤波值,经典值为1.0-200.0
  168. //#define ATO_BW_RUN1 (5.0)
  169. //#define ATO_BW_RUN2 (10.0)
  170. //#define ATO_BW_RUN3 (20.0)
  171. //#define ATO_BW_RUN4 (30.0)
  172. /* 启动ATO爬坡时间控制 */
  173. #define ATO_START_HOLDTIME (10) ///< (ms)观测器带宽的滤波值,启动第一拍ATO持续时间
  174. #define ATO_RAMP_PERIOD (20) ///< (ms)观测器带宽的滤波值,ATO爬坡递增 间隔时间
  175. /* OMEGA启动参数 */
  176. #define MOTOR_OMEGA_RAMP_ACC (10) ///< omega启动的增量(每个载波递增值)
  177. #define MOTOR_OMEGA_RAMP_MIN S_Value(200.0) ///< (RPM) omega启动的最小切换转速
  178. #define MOTOR_OMEGA_RAMP_END S_Value(400.0) ///< (RPM) omega启动的限制转速
  179. #define MOTOR_SPEED_SMOMIN_RPM (20.0) ///< (RPM) SMO运行最小转速影响启动
  180. #define SPD_BW (20.0) ///< 速度带宽的滤波值,经典值为5.0-40.0
  181. #define MOTOR_LOOP_RPM S_Value(500.0) ///< (RPM) 启动后电流环切入外部环路转速阈值
  182. /* 电机运行时最大最小转速 */
  183. #define MOTOR_SPEED_MIN_RPM S_Value(300.0) ///< (RPM) 运行最小转速
  184. #define MOTOR_SPEED_MAX_RPM S_Value(2000.0) ///< (RPM) 运行最大转速
  185. #define MOTOR_SPEED_STOP_RPM S_Value(250.0) ///< (RPM) 运行最小转速
  186. /* -----------电流环参数设置值-------------------------------------------------------------- */
  187. #define DKP_Start _Q12(2.3) ///< 启动DQ轴电流环KP
  188. #define DKI_Start _Q15(0.015) ///< 启动DQ轴电流环KI
  189. #define QKP_Start _Q12(2.3) ///< 启动DQ轴电流环KP
  190. #define QKI_Start _Q15(0.015) ///< 启动DQ轴电流环KI
  191. #define DKP _Q12(3.5) ///< 运行DQ轴电流环KP
  192. #define DKI _Q15(0.05) ///< 运行DQ轴电流环KI
  193. #define QKP _Q12(3.5) ///< 运行DQ轴电流环KP
  194. #define QKI _Q15(0.05) ///< 运行DQ轴电流环KI
  195. /* D轴参数设置 */
  196. #define DOUTMAX _Q15(0.9) ///< D轴电压最大限幅值,单位:输出占空比
  197. #define DOUTMIN _Q15(-0.9) ///< D轴电压最小限幅值,单位:输出占空比
  198. /* Q轴参数设置 */
  199. #define QOUTMAX _Q15(0.95) ///< Q轴电压最大限幅值,单位:输出占空比
  200. #define QOUTMIN _Q15(-0.95) ///< Q轴电压最小限幅值,单位:输出占空比
  201. /* ----------------------------------------------------------------------------------------------------------------------------
  202. 4. 环路参数
  203. ---------------------------------------------------------------------------------------------------------------------------- */
  204. /**
  205. * 闭环方式选择
  206. * @param (CURRENT_LOOP_CONTROL) 电流环
  207. * @param (SPEED_LOOP_CONTROL) 速度环
  208. * @param (POWER_LOOP_CONTROL) 功率环
  209. * @param (UQ_LOOP_CONTROL) UQ环
  210. */
  211. #define MOTOR_CTRL_MODE (SPEED_LOOP_CONTROL) ///< 闭环方式选择
  212. #define LOOP_TIME (2) ///< (ms) 外环环调节周期,默认为 1ms
  213. #define SKP _Q12(0.5) ///< 外环KP
  214. #define SKI _Q15(0.01) ///< 外环KI
  215. #define SKD _Q12(0.0) ///< 外环KD
  216. #define SOUTMAX I_Value(0.9) ///< (A) 外环电流最大限幅值
  217. #define SOUTMIN I_Value(0.0) ///< (A) 外环电流最小限幅值
  218. #define RAMP_INC S_Value(1) ///< (RPS) 每秒爬坡递增量
  219. #define RAMP_DEC S_Value(1) ///< (RPS) 每秒爬坡递减量
  220. /**
  221. * 五段式七段式切换
  222. * @param (Disable) 禁止
  223. * @param (Enable) 使能
  224. */
  225. #define SVPWM_5_Segment_Run_Enale (Disable) // 0:不开启五段式子 1:开启五段式
  226. #define Motor_F5SEG_Speed S_Value(1200) // 速度大于这个后切换成五段式
  227. #define Motor_F7SEG_Speed S_Value(1000) // 速度低于这个值,切换成七段式,主要是起动的时候
  228. /* 限制功率 */
  229. #define POWERLPFLIMIT (16000) ///< 15800大概在110W左右
  230. /**
  231. * 弱磁设置
  232. * @param (Disable) 禁止
  233. * @param (Enable) 使能
  234. */
  235. #define MotorFiledWeakenEn (Disable) ///< 弱磁使能位
  236. #define MotorFiledWeakenUs _Q15(0.90) ///< 弱磁能到的最大饱和电压(弱磁转速上不去的时候可以调小该值)
  237. #define MotorFiledWeakenKp _Q12(0.2) ///< 弱磁控制的Kp
  238. #define MotorFiledWeakenKi _Q15(0.003) ///< 弱磁控制的Ki
  239. /**
  240. * 电压补偿
  241. * @param (Disable) 禁止
  242. * @param (Enable) 使能
  243. */
  244. #define VoltageCompensationEn (Enable)
  245. #define VoltageCompensationDelayCnt (800) ///< 进入速度环后延迟1S进入电压补偿
  246. #define LinearCompensationAngel _Q15(0.0 / 180.0) ///< 根据电压降低到AC210V时开始给补偿角度
  247. #define LinearCompensationAngel_MAX _Q15(30.0 / 180.0) ///< 电压降低时最大补偿角度
  248. #define LinearCompensationAngel_MIN _Q15(-30.0 / 180.0) ///< 电压降低时最小补偿角度
  249. /* ----------------------------------------------------------------------------------------------------------------------------
  250. 5. 调速开关模式
  251. ---------------------------------------------------------------------------------------------------------------------------- */
  252. /**
  253. * 闭环方式选择
  254. * @param (PWMMODE) PWM调速
  255. * @param (SREFMODE) 模拟调速
  256. * @param (NONEMODE) 直接给定值,不调速
  257. * @param (KEYSCANMODE) 按键控制模式
  258. * @param (ONOFFTEST) 启停测试工具
  259. */
  260. #define SPEED_MODE (NONEMODE) ///< 闭环方式选择
  261. /* ----------------------------------------------------------------------------------------------------------------------------
  262. 6. 顺逆风参数
  263. ---------------------------------------------------------------------------------------------------------------------------- */
  264. /**
  265. * 顺逆风检测方式
  266. * @param (NoTailWind) 无逆风顺风判断
  267. * @param (RSDMethod) RSD比较器方法
  268. * @param (BEMFMethod) BEMF比较器方法
  269. * @param (FOCMethod) FOC计算方法
  270. */
  271. #define TAILWIND_MODE (FOCMethod) ///< 顺逆风检测方式
  272. /* 逆风顺风电流环KP、KI */
  273. #define DQKP_TailWind _Q12(0.3) ///< FOC计算顺逆风检测电流环KP
  274. #define DQKI_TailWind _Q15(0.005) ///< FOC计算顺逆风检测电流环KI
  275. #define TAILWIND_TIME (500) ///< (ms) 顺逆风检测时间
  276. #define ATO_BW_WIND (80) ///< 逆风判断观测器带宽的滤波值,经典值为8.0-100.0
  277. #define SPD_BW_WIND (20.0) ///< 逆风判断速度带宽的滤波值,经典值为5.0-40.0
  278. /* ----------------------------------------------------------------------------------------------------------------------------
  279. 7. 观测器模式
  280. ---------------------------------------------------------------------------------------------------------------------------- */
  281. /**
  282. * 估算器模式选择
  283. * @param (SMO) 滑膜估算
  284. * @param (PLL) 锁相环
  285. * @param (AO) 自适应
  286. */
  287. #define EstimateAlgorithm (AO) ///< 估算器模式选择
  288. /* ----------------------------------------------------------------------------------------------------------------------------
  289. 8. 过调制
  290. ---------------------------------------------------------------------------------------------------------------------------- */
  291. /**
  292. * 过调制
  293. * @param (Disable) 禁止
  294. * @param (Enable) 使能
  295. */
  296. #define OverModulation (Disable) ///< 开启过调制UD,UQ会被放大1.15倍,但极限状态可能导致电流畸变
  297. /* ----------------------------------------------------------------------------------------------------------------------------
  298. 9. 正反转模式
  299. ---------------------------------------------------------------------------------------------------------------------------- */
  300. /**
  301. * 转向设置
  302. * @param (CW) 顺时针
  303. * @param (CCW) 逆时针
  304. */
  305. #define FR_MODE (CW) ///< 转向设置
  306. /* ----------------------------------------------------------------------------------------------------------------------------
  307. 10. PWM调速开关参数
  308. ---------------------------------------------------------------------------------------------------------------------------- */
  309. /**
  310. * PWM调速 PWM极性选择
  311. * @param (PosiPWMDUTY) 正逻辑
  312. * @param (NegaPWMDUTY) 反逻辑
  313. */
  314. #define PWMDUTY_POLARITY (PosiPWMDUTY) ///< PWM调速 PWM极性选择
  315. /* 开关机Duty设置 */
  316. #define OFFPWMDuty _Q15(0.07) ///< 关机PWM占空比,小于该占空比关机
  317. #define OFFPWMDutyHigh _Q15(1.0) ///< 关机PWM占空比,大于该占空比关机
  318. #define ONPWMDuty _Q15(0.08) ///< 开机PWM占空比,大于该占空比时开机
  319. #define MINPWMDuty _Q15(0.10) ///< 速度曲线上最小PWM占空比
  320. #define MAXPWMDuty _Q15(0.90) ///< 速度曲线上最大PWM占空比
  321. /* ----------------------------------------------------------------------------------------------------------------------------
  322. 11. 启停测试参数
  323. ---------------------------------------------------------------------------------------------------------------------------- */
  324. /* -----启停测试参数配置----- */
  325. #define ONOFFTEST_REF S_Value(1000) ///< 测试给定,注意闭环方式不同给定值需要更改
  326. #define ONOFFTEST_ON_TIME (3000) ///< (ms) 启动运行时间
  327. #define ONOFFTEST_OFF_TIME (3000) ///< (ms) 停止时间
  328. /* -----停机刹车选择----- */
  329. #define StopBrakeFlag (0)
  330. #define StopWaitTime (550) ///< (ms) 刹车等待时间
  331. #define Stop_MOTOR_SPEED_RPM S_Value(300) ///< (RPM) 小于该转速刹车
  332. #endif
  333. /**
  334. * NTC采集
  335. * @param (Disable) 禁止
  336. * @param (Enable) 使能
  337. */
  338. #define NTCSignalENABLE (Enable) ///<NTC信号采集,1:复用LED端口采集NTC信号 0:不使能LED端口复用,没有NTC的可直接关掉