motor_param.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. #ifndef _MOTOR_PARAM_H__
  2. #define _MOTOR_PARAM_H__
  3. #include "bsp/bsp.h"
  4. #include "os/os_types.h"
  5. #include "foc/core/controller.h"
  6. #define CONFIG_MAX_D_COUNT 20
  7. #define CONFIG_MAX_VEL_COUNT 20
  8. #define CONFIG_MAX_VOL_COUNT 5
  9. /* 电机外特性map, 每个转速点对应的最大扭矩 */
  10. typedef struct {
  11. s16 rpm;
  12. s16 torque;
  13. }motor_map_t;
  14. typedef struct{
  15. s16 torque;
  16. s16 d;
  17. s16 q;
  18. }torque2dq_t;
  19. typedef struct {
  20. s16 iq;
  21. float lq;
  22. }iq_lq_map_t;
  23. typedef torque2dq_t torque_map_t;
  24. typedef struct {
  25. s16 curr;
  26. s16 id;
  27. }curr_pair_t;
  28. /* 转速对应的d轴电流 */
  29. typedef struct {
  30. s16 rpm;
  31. u8 n;
  32. torque2dq_t dqmap[CONFIG_MAX_D_COUNT];
  33. }rpm_torque_map;
  34. /* 电压、转速对应的d轴电流 */
  35. typedef struct {
  36. s16 vol;
  37. u8 n;
  38. rpm_torque_map rpm_torque[CONFIG_MAX_VEL_COUNT];
  39. }vol_rpm_torque_map;
  40. s16 motor_max_torque_for_rpm(s16 rpm);
  41. void motor_mpta_fw_lookup(float rpm, float torque, dq_t *dq_out);
  42. float motor_get_lq_from_iq(s16 iq);
  43. float motor_get_ebreak_toruqe(float rpm);
  44. #if 0
  45. #if CONFIG_MOT_TYPE==MOTOR_BLUESHARK_NEW1
  46. #define MOTOR_R 0.010f
  47. #define MOTOR_Ld (0.000120f*0.5f)
  48. #define MOTOR_Lq (0.000200f*0.5f)
  49. #define MOTOR_POLES 4
  50. #define MOTOR_ENC_OFFSET 0.0F
  51. #define CONFIG_MAX_MOTOR_TORQUE 40.0F
  52. #define TRQ_PI_KP 0.14F
  53. #define TRQ_PI_KI 0.15F
  54. #define CONFIG_CURRENT_BANDWITH 1000.0f /* 电流环带宽 */
  55. #define CONFIG_DEFAULT_PHASE_CURR_LIM 200
  56. #define CONFIG_MAX_FW_D_CURR 100.0F //d轴最大的退磁电流
  57. #define MOTOR_NR 0x11
  58. #elif CONFIG_MOT_TYPE==MOTOR_BLUESHARK_A1
  59. #define MOTOR_STATOR_5N
  60. #ifndef MOTOR_STATOR_5N
  61. #define MOTOR_R 0.011f //5N -> 0.0164/2
  62. #define MOTOR_Ld (0.000140F*0.5f) //5N -> 0.000048
  63. #define MOTOR_Lq (0.000356f*0.5f) //5N -> 0.0001335
  64. #define MOTOR_Flux (0.019f)
  65. #else
  66. #define MOTOR_R 0.009f
  67. #define MOTOR_Ld (0.000100F*0.5f) //5N -> 0.000048
  68. #define MOTOR_Lq (0.000240f*0.5f) //5N -> 0.0001335
  69. #define MOTOR_Flux (0.0158f)
  70. #endif
  71. #define MOTOR_POLES 4
  72. #define MOTOR_ENC_OFFSET 0.0F
  73. #define CONFIG_MAX_MOTOR_TORQUE 400.0f//45.0F
  74. #define PI_VEL_LIM_KP 0.085F //0.13f
  75. #define PI_VEL_LIM_KI 2.5F
  76. #define PI_VEL_LIM_KD 0.0F
  77. #define PI_VEL_KP 0.1F //0.13f
  78. #define PI_VEL_KI 3.0F
  79. #define PI_VEL_KD 0.0F
  80. #define MOTOR_NR 0x16
  81. //4000->10, 34; 8000->8, 15
  82. #define CONFIG_CURRENT_BANDWITH (800 * 2 * PI) /* 电流环带宽 = bandwith / (2 * pi)*/
  83. #define CONFIG_DEFAULT_PHASE_CURR_LIM 500
  84. #define CONFIG_MAX_FW_D_CURR 300.0F //d轴最大的退磁电流
  85. #define CONFIG_CURRENT_LOOP_DECOUPE //电流环解耦
  86. #define CONFIG_SENSORLESS_MAX_IDC 60
  87. #define CONFIG_SENSORLESS_MAX_TORQUE 100
  88. #define CONFIG_SENSORLESS_MAX_SPEED 5000
  89. #elif CONFIG_MOT_TYPE==MOTOR_BLUESHARK_NEW2
  90. #define MOTOR_R 0.013f
  91. #define MOTOR_Ld (0.000140f*0.5f)
  92. #define MOTOR_Lq (0.000320f*0.5f)
  93. #define MOTOR_POLES 4
  94. #define MOTOR_ENC_OFFSET 250.0F
  95. #define CONFIG_MAX_MOTOR_TORQUE 40.0F
  96. #define TRQ_PI_KP 0.14F
  97. #define TRQ_PI_KI 0.15F
  98. #define MOTOR_NR 0x12
  99. #define CONFIG_CURRENT_BANDWITH 1000.0f /* 电流环带宽 */
  100. #define CONFIG_DEFAULT_PHASE_CURR_LIM 200
  101. #define CONFIG_MAX_FW_D_CURR 100.0F //d轴最大的退磁电流
  102. #elif CONFIG_MOT_TYPE==MOTOR_BLUESHARK_ZD_100
  103. #define MOTOR_R 0.008f
  104. #define MOTOR_Lq (0.000125f*0.5f)
  105. #define MOTOR_Ld (0.000091f*0.5f)
  106. #define MOTOR_POLES 5
  107. #define MOTOR_Flux (0.019f)
  108. #define MOTOR_ENC_OFFSET 0.0F
  109. #define PI_VEL_LIM_KP 0.085F //0.13f
  110. #define PI_VEL_LIM_KI 2.5F
  111. #define PI_VEL_LIM_KD 0.0F
  112. #define PI_VEL_KP 0.1F //0.13f
  113. #define PI_VEL_KI 3.0F
  114. #define PI_VEL_KD 0.0F
  115. #define MOTOR_NR 0x13
  116. #define CONFIG_CURRENT_LOOP_DECOUPE //电流环解耦
  117. #define CONFIG_SENSORLESS_MAX_IDC 30
  118. #define CONFIG_SENSORLESS_MAX_TORQUE 80
  119. #define CONFIG_SENSORLESS_MAX_SPEED 3000
  120. #elif CONFIG_MOT_TYPE==MOTOR_BLUESHARK_OLD
  121. #define MOTOR_R 0.012f
  122. #define MOTOR_Ld (0.000143f*0.5f)
  123. #define MOTOR_Lq (0.000205f*0.5f)
  124. #define MOTOR_POLES 5
  125. #define MOTOR_ENC_OFFSET 180.0F
  126. #define CONFIG_MAX_MOTOR_TORQUE 40.0F
  127. #define TRQ_PI_KP 0.14F
  128. #define TRQ_PI_KI 0.15F
  129. #define MOTOR_NR 0x14
  130. #define CONFIG_CURRENT_BANDWITH 1000.0f /* 电流环带宽 */
  131. #define CONFIG_DEFAULT_PHASE_CURR_LIM 200
  132. #define CONFIG_MAX_FW_D_CURR 100.0F //d轴最大的退磁电流
  133. #elif CONFIG_MOT_TYPE==MOTOR_3505
  134. //编码器电机 3505
  135. #define MOTOR_R 0.08f
  136. #define MOTOR_Ld 0.000032f
  137. #define MOTOR_Lq 0.000032f
  138. #define MOTOR_POLES 10
  139. #define CONFIG_MAX_MOTOR_CURR 20.0F
  140. #define TRQ_PI_KP 0.14F
  141. #define TRQ_PI_KI 0.15F
  142. #define MOTOR_NR 0x15
  143. #define CONFIG_CURRENT_BANDWITH 1000.0f /* 电流环带宽 */
  144. #endif
  145. #endif
  146. #endif /* _MOTOR_PARAM_H__ */