Customer.h 16 KB

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