直流电机开发笔记2

您所在的位置:网站首页 直流电机霍尔 直流电机开发笔记2

直流电机开发笔记2

2024-07-09 10:23| 来源: 网络整理| 查看: 265

1.正交编码器的原理

通常,光电式编码器的输出信号有A信号和B信号,部分还会有Z信号,也叫做零点信号,本平台使用的电机只有A/B信号,当电机旋转时,A/B两路信号输出正交脉冲信号,这是测量电机速度的依据,之所以称为正交,是A相信号和B相信号的相位差为90度,如下图所示。 在这里插入图片描述 电机正向旋转时,A相信号超前B相90度;在反向旋转时,B相信号超前A相90度。衡量编码器测量精度的参数为编码器线数,例如一个2500线编码器,即表示电机旋转一周,A相及B相会分别产生2500个脉冲信号。通常,编码器计数时会采用四倍频方式,即在A相上升沿,A相下降沿,B相上升沿,B相下降沿都进行计数,所以一个脉冲周期实际计数4次,2500线的编码器旋转一周可以计10000个数,精度为0.036度。

2. STM32的正交编码器接口

大部分的中高端单片机都带有正交编码器接口,将A/B相信号接入单片机编码器接口,即可以对脉冲进行计数,我们定时(例如1ms)读取脉冲个数,就可以计算出电机速度,例如1ms读到100个脉冲,以2500线编码器为例,采用了四倍步计数的情况下,电机速度计算为:100x1000x60/10000=600rpm。STM32编码器计数原理如下图,它会根据电机的旋转方向向上或向下计数,有关STM32编码器模式请查看STM32数据手册,有详细解说。 在这里插入图片描述

3.基于HAL库的STM32编码器接口

让我们打开CUBEMX,一起来感受一下图形化编缉程序的高效之处,打开CUBEMX后,点击File—>New Project,如下图所示 在这里插入图片描述 在Part Number中填写使用的芯片,这里以STM32F103C8为例,双击芯片,如下图所示。 在这里插入图片描述 配置晶体时钟选择外部晶振及时钟,并在选择串行SWD程序下载接口,如下图所示 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 STM32的大部分定时器都带有正交编码器接口,我们这里选择TIM3,引脚对应STM32的PA6和PA7,改动红框中的参数,其他参数保持不变,如下图所示。 在这里插入图片描述 选择工程配置参数,如下图所示 在这里插入图片描述 选择代码参数并点击生成代码,如下图所示。 在这里插入图片描述 点击OPEN PROJECT打开工程 ,如下图 在这里插入图片描述

4.添加代码,实现速度测量

接下来的代码里我会添加一些中文注释,以便不了解HAL库的同学能够快速知道CubeMx是如何调用HAL库的,以及CubeMx调用HAL库帮我们做了什么。 首先,新建encoder.c/.h文件,并添加图中所示代码 在这里插入图片描述

在这里插入图片描述 然后分别在main.c文件以及中断函数文件stm32f1xx_it.c中添加以下代码,ps:别忘了包含头文件encoder.h 在这里插入图片描述 在这里插入图片描述

5.速度测量实验

采用硬件仿真的方式,用手转动电机,测得速度如图所示,实验成功,如果发现抖动较大,可以对速度进行滤波,采用滑动平均滤波或一阶低通滤波算法均可。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3