编码器
编码器一般是去统计电机的转动角度,或者转动速度。通过器件输出的脉冲,来和转动的角度对应上去
1. 硬件连接
两个电阻在做上拉,给两根线提供一个基础的驱动能力。
2. CubeMX生成代码
如下图,选择好Encoder Mode 这个选项就好了,它会自动配置好定时器的输入捕获功能。
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. 后记
编码器在电机的检测转速上使用的比较多,一般用做对速度的测量