hall_sensor.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /**********************************
  2. * 文件名称: hall_sensor.h
  3. * 功能描述: 霍尔传感器模块头文件
  4. * 主要内容:
  5. * 1. 定义霍尔传感器相关宏
  6. * 2. 声明霍尔传感器相关变量
  7. *
  8. * 注意事项:
  9. * - 包含霍尔传感器的时钟和采样频率定义
  10. * - 包含角度和速度计算的系数定义
  11. **********************************/
  12. #ifndef __HALL_SENSOR_H_
  13. #define __HALL_SENSOR_H_
  14. typedef struct
  15. {
  16. uint8_t state; // 当前稳定霍尔状态
  17. uint8_t state_last; //上一个霍尔状态
  18. float angle; //霍尔传感器计算得到的电机角度
  19. float angle_add; //单次电流环时间内角度自增值
  20. uint32_t ccr;
  21. float theta[6]; //霍尔传感器六个扇区的角度
  22. uint32_t count[6]; //经过六个扇区分别花费的计数值
  23. uint32_t last_valid_count[6]; //上一个扇区有效计数值,用于滤波
  24. uint8_t flag; //是否进入闭环控制的标志位
  25. float speed[6]; //六个扇区的角速度
  26. float Speed; //电机角速度,是对 speed[6] 取了平均值
  27. } Hall_TypeDef;
  28. /**
  29. * @brief 霍尔传感器定时器时钟频率
  30. * @details 设置为84MHz
  31. */
  32. #define HALL_TIM_CLOCK (u32)84000000
  33. /**
  34. * @brief 霍尔传感器采样频率
  35. * @details 设置为10kHz
  36. */
  37. #define HALL_SAMPLE_FREQ (u32)10000
  38. /**
  39. * @brief 相位偏移角度
  40. * @details 设置为60度,转换为弧度
  41. */
  42. // #define PHASE_SHIFT_ANGLE (float)(60.0f/360.0f*2.0f*PI)
  43. #define PHASE_SHIFT_ANGLE (float)(26.36f/360.0f*2.0f*PI)
  44. /**
  45. * @brief 角度计算因子
  46. * @details 用于将计数值转换为角度增量
  47. */
  48. #define HALL_ANGLE_FACTOR (float)((float)HALL_TIM_CLOCK/(float)HALL_SAMPLE_FREQ*PI/3.0f)
  49. /**
  50. * @brief 速度计算因子
  51. * @details 用于将计数值转换为电机速度
  52. */
  53. #define HALL_SPEED_FACTOR (float)((float)HALL_TIM_CLOCK/6.0f)
  54. Hall_TypeDef* Hall_Get(void);
  55. #endif