高中生
最后登录1970-1-1
在线时间 小时
注册时间2021-1-6
|
本帖最后由 逍暗博 于 2024-2-3 17:31 编辑
之前做过一次平衡车,没有深究知识细节。
这一次做智能小车,一步一步搞清楚相关知识点,最近有一个疑问:
通过定时器编码器功能检测出来的电机速度,如何匹配驱动电机的PWM值?
目前代码的设置如下:
1.主频200MHZ
2.编码器定时器TIM2: 分频1,周期65536
3.PWM驱动定时器TIM8:分频1,周期65536
4.基础定时器TIM5:分频200,周期10000, 也就是10MS循环一次。
然后我通过M法计数方式,PWM值给定32768,然后算出来得出:
- extern int Read_Encoder_Value(uint8_t Timer) ;
- float MotorCurSpeed = 0.0;
- void BSP_TIMER_IRQHANDLER(void)
- {
- /* 这里是定时器中断 */
- if(timer_interrupt_flag_get(BSP_TIMER,TIMER_INT_FLAG_UP) == SET)
- {
- timer_interrupt_flag_clear(BSP_TIMER,TIMER_INT_FLAG_UP); // 清除中断标志位
- /* 执行功能 */
- MotorCurSpeed = Read_Encoder_Value(1)/MOTOR_RATIO/0.01 ; // M 法计数
- printf("MotorCurSpeed = %f\r\n",MotorCurSpeed );
- }
- }
复制代码- MotorCurSpeed = 1.893939
- MotorCurSpeed = 1.893939
- MotorCurSpeed = 1.893939
- MotorCurSpeed = 1.969697
- MotorCurSpeed = 1.818182
- MotorCurSpeed = 1.969697
- MotorCurSpeed = 1.893939
复制代码
请教一下各位大佬!同时也相互交流一下!!!
|
|