查看:
1842
|
回复:
1
|
智能小车编码器检测出来的速度,如何和PWM输出匹配 ??
|
风也温柔
1
主题
1
回复 |
1#
电梯直达
之前做过一次平衡车,没有深究知识细节。 这一次做智能小车,一步一步搞清楚相关知识点,最近有一个疑问: 通过定时器编码器功能检测出来的电机速度,如何匹配驱动电机的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.969697 MotorCurSpeed = 1.818182 MotorCurSpeed = 1.969697 请教一下各位大佬!同时也相互交流一下!!! |
风也温柔
1
主题
1
回复 |
2#
问题解决了; 复习了PID算法控制,PID的输入输出是没有绝对关系的; 两者依靠这PID算法来维持。 |
|