电机编码器-stm32编码器模式

电机编码器-stm32编码器模式
电机编码器-stm32编码器模式

电机编码器的使&STM32的定时器编码器模式

一、基础知识:

编码器是小车测速反馈必不可少的模块,在做自平衡和速度的

精确控制需要有编码器读取电机的转速和方向

上图为编码器的示意图,中间是一个带光栅的码盘,光通过光栅,接收管接收到高电平,没通过,接收到低电平。电机旋转一圈,码盘上有多少光栅,接受管就会接收多少个高电平。

我们做的自平衡是用的是SK3530高性能直流减速电机

采用光栅测速单圈输出448*30个AB相脉冲也就是13440相位差90度

接线说明:从白线到蓝线一次为:

白线:A相;绿线:B相;红线:3.3V-5V;黑线;GND

黄线和蓝线为电机两根接线柱的线,通常接电机驱动。正转A相超前B相90度,也就是说,A相进入下降沿的时候,B相是高电平,反转的时候A相落后B 相90度,也就是说A相进入下降沿的时候,B相是低电平,通常用法:A相接入单片机的中断IO口,B相接入单片机的普通IO口。

二、stm32编码器模式接口:

在通用定时器和高级定时器中有这个功能

从图上中可以看出,TI1波形先于TI2波形90°时,每遇到一个边沿变化是,计数器加1(可以通过寄存器设置加减),可以看出一个光栅,被计数了4次。TI1波形后于TI2波形90°时,每遇到一次边沿变化,计数器减1。

也就是说13440个脉冲计数了13440*4=53760次

简单的计数显示程序:

由于DJ_jishu_L是int16_t即(signed)int类型数据范围-32768~32767 TIM_GetCounter返回值是unsigned int类型转换为int类转动一圈

DJ_jishu_L变化情况:

即从0到-32768到32767到11579计数器变化值=32768+(32767-11579)= 53956与之前的53760相差不大

程序如下

两个定时两个通道PA6PA7左电机PB6PB7右电机

相关主题
相关文档
最新文档