/********************************** * 文件名称: hall_sensor.h * 功能描述: 霍尔传感器模块头文件 * 主要内容: * 1. 定义霍尔传感器相关宏 * 2. 声明霍尔传感器相关变量 * * 注意事项: * - 包含霍尔传感器的时钟和采样频率定义 * - 包含角度和速度计算的系数定义 **********************************/ #ifndef __HALL_SENSOR_H_ #define __HALL_SENSOR_H_ typedef struct { uint8_t state; // 当前霍尔状态 uint8_t state_last; // 上一个霍尔状态 float angle; // 霍尔计算得到的电机角度(原始) float angle_add; // 单次PWM周期角度自增值 uint32_t ccr; // 捕获计数值 float theta[6]; // 六个扇区的基准角度 uint32_t count[6]; // 各扇区计数值 uint32_t last_valid_count[6]; // 上次有效计数值 uint8_t flag; // 进入闭环标志 float speed[6]; // 各扇区电弧度 float Speed; // 平均电弧度 uint16_t enter_cnt; // 进入霍尔次数 } Hall_TypeDef; /** * @brief 霍尔传感器定时器时钟频率 * @details 设置为84MHz */ #define HALL_TIM_CLOCK (u32)84000000 /** * @brief 霍尔传感器采样频率 * @details 设置为10kHz */ #define HALL_SAMPLE_FREQ (u32)10000 /** * @brief 相位偏移角度 * @details 设置为60度,转换为弧度 */ // #define PHASE_SHIFT_ANGLE (float)(30.0f/360.0f*2.0f*PI) #define PHASE_SHIFT_RAD (float)(0.f) /** * @brief 角度计算因子 * @details 用于将计数值转换为角度增量 */ #define HALL_ANGLE_FACTOR (float)((float)HALL_TIM_CLOCK/(float)HALL_SAMPLE_FREQ*PI/3.0f) /** * @brief 速度计算因子 * @details 用于将计数值转换为电机速度 rad/s */ #define HALL_SPEED_FACTOR (float)(HALL_TIM_CLOCK ) extern Hall_TypeDef* Hall_Get(void); extern void Hall_Update_Interpolated_Angle(void); // 更新插值角度 extern float Get_Filtered_Speed(void); // 速度滤波 #endif