编码器计数主要是对单片机的定时器经行配置,然后是读取得到的值对其进行转换为速度等
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "encoder.h"
- #include "timer.h"
- #include "pwm.h"
- #include "motor.h"
- #include "led.h"
- #include "key.h"
- int Encoder_Left=0 ,Encoder_Right=0; //左右编码器的脉冲计数
- float speed_Left=0 ,speed_Right=0;
-
- int main(void)
- {
- delay_init(); //延时函数初始化
- uart_init(9600); //串口初始化为9600
- Encoder_Init_TIM3();
- Encoder_Init_TIM4();
- AIN_Init();
- KEY_Init();
- LED_Init();
- TIM1_PWM_Init(899,8);
- TIM5_Int_Init(99,7199); // 0.01S ((arr+1)(psc+1))/72000000
- while(1)
- {
- TIM_SetCompare1(TIM1,850);
- TIM_SetCompare4(TIM1,500);
- zuozhuan();
- /* 转速(1秒钟转多少圈)=单位时间内的计数值/总分辨率*时间系数 */
- speed_Left=Encoder_Left/0.01*0.000181245;
- speed_Right=Encoder_Right/0.01*0.000181245;
- printf("左轮编码器脉冲数为: %d\r\n",Encoder_Left);
- printf("右轮编码器脉冲数为: %d\r\n",Encoder_Right);
- printf("speed_Left: %f\r\n",speed_Left);
- printf("speed_Right: %f\r\n",speed_Right);
-
- }
-
- }
-
-
复制代码
代码:
编码器.7z
(194.87 KB, 下载次数: 41)
|