Skip to content

编码器

编码器一般是去统计电机的转动角度,或者转动速度。通过器件输出的脉冲,来和转动的角度对应上去 alt text

1. 硬件连接

两个电阻在做上拉,给两根线提供一个基础的驱动能力。 alt text

2. CubeMX生成代码

如下图,选择好Encoder Mode 这个选项就好了,它会自动配置好定时器的输入捕获功能。 alt text

3. 编写代码

串口重定向

将串口的代码重新使用了printf来输出,

C
#include <stdio.h>
 //重定向c库函数printf到串口USARTx,重定向后可使用printf函数
 int fputc(int ch, FILE *f)
 {
     /* 发送一个字节数据到串口USARTx */
     HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
     return (ch);
 }

下面是定时器的配置函数,只需要启动定时器2, 然后读取到定时器的值,打印出来就可以了。

C
	short CaptureNumberA =0;
	HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL);
  while (1)
  {		 //编码器   
		CaptureNumberA=__HAL_TIM_GET_COUNTER(&htim2);
		HAL_Delay(100);
		printf("CaptureNumberA:%d \r\n",CaptureNumberA);
  }

4. 后记

编码器在电机的检测转速上使用的比较多,一般用做对速度的测量