0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32的正交编码器驱动电机设计

西西 来源:博客园 作者:鸽纸 2020-09-10 16:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1。编码器原理

什么是正交?如果两个信号相位相差90度,则这两个信号称为正交。由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向。

这里使用了TI12模式,例如当T1上升沿,T2在低电平时;T1下降沿,T2在高电平时,向上计数,这样的好处是当有毛刺产生的时候,会自动+1 -1过滤掉毛刺。

2。编码器的中断

由于编码器是基于定时器的,所以编码器的中断实际上就是定时器的中断。也就是说定时器是每隔一定时间加一个数(或减一个数 ),当数到达预设值时就产生中断,而编码器是每一个有效脉冲就加一个数(或减一个数 ),当数到达预设值时就产生中断。若预设值为1000则编码器与定时器中断不同的是,当编码器反转时值到达999产生一次中断,而当编码器正转到达0时同 样产生一次中断。在硬件上这两个中断是没法区分的,这也就造成了有种情况的误判。

3。STM32编码器没有考虑的情况

想象一下,如果编码器的预设值为1000,当某次我们使得编码器正转产生中断后,立即反转则又该怎么办呢?根据上面的说法,这时候会产生两次一样的中断。 如果在算法上没有处理的话,极有可能认为是行走了两次正向。但实际上并没有。所以这个时候必须结合方向来判断行走的情况(判断方向使用的是DIR寄存器 位)或者在产生中断后读一次count寄存器位(看看是999还是0,以此来判断当前的方向)。只有上一次为正且这一次同样为正,距离才是相加的。

4。STM32f1系列定时器16位的问题

我用STM32的定时器3工作于编码器方式,可以正常得到编码器位置,但由于现在只有16位计数,位数不够,我想扩展到32位,可以先用定时器内部连接,将定时器3 的溢出送到定时器2,用定时器2做高位,在正转的时候正常,但反向的时候出错。换了个思路,做个每10ms产生一次的中断,在中断中调用下面的代码,下述代码中MAX_COUNT是 比 10ms内可能出现的计数最大值还要大的值,ENCODER_TIM_PERIOD是定时器的period值,最好比MAX_COUNT大,然后定义一个32位的有符号变量,如currentCount,然后每隔10ms执行一次currentCount += Enc_GetCount();只需要去读取currentCount的值就可以得到位移信息了。

s16 Enc_GetCount(void)

{

static u16 lastCount = 0;

u16 curCount = ENCODER_TIM-》CNT;

s32 dAngle = curCount - lastCount;

if(dAngle 》= MAX_COUNT){

dAngle -= ENCODER_TIM_PERIOD;

}else if(dAngle 《 -MAX_COUNT){

dAngle += ENCODER_TIM_PERIOD;

}

lastCount = curCount;

return (s16)dAngle;

}

5。其它一些得到的信息

1.编码器有个转速上限,超过这个上限是不能正常工作的,这个是硬件的限制,原则上线数越多转速就越低,这点在选型时要注意,编码器的输出一般是开漏的,所以单片机的io一定要上拉输入状态。

2.定时器初始化好以后,任何时候CNT寄存器的值就是编码器的位置信息,正转他会加反转他会减这部分是不需要软件干预的,初始化时给的TIM_Period 值应该是码盘整圈的刻度值,在减溢出会自动修正为这个数。加超过此数值就回0.

3.如果要扩展成多圈计数需要溢出中断,程序上圈计数加减方向位就行了。

4.每个定时器的输入脚可以通过软件设定滤波

5.应用中如果没有绝对位置信号或者初始化完成后还没有收到绝对位置信号前的计数只能是相对计数。收到绝对位置信号后重新修改一次CNT的值就行了。码盘一般都有零位置信号,结合到定时器捕获输入就行。上电以后要往返运动一下找到这个位置。

6.即便有滤波计数值偶尔也会有出错误的情况,一圈多计一个或少计一个数都是很正常的特别是转速比较高的时候尤其明显,有个绝对位置信号做修正是很有必要的。绝对位置信号不需要一定在零位置点,收到这个信号就将CNT修正为一个固定的数值即可。

7.开启定时器的输入中断可以达到每个步计数都作处理的效果,但是高速运转的时候你可能处理不过来.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    45

    文章

    4013

    浏览量

    143377
  • STM32
    +关注

    关注

    2313

    文章

    11195

    浏览量

    374677
  • 定时器
    +关注

    关注

    23

    文章

    3373

    浏览量

    124575
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MT6825 18 位绝对式磁编码器正交 AMR 电桥与角度解算机制

    MT6825 是纳芯微(原麦歌恩 MagnTek)基于各向异性磁阻(AMR) 技术的 18 位单圈绝对式磁编码器,核心由正交 AMR 惠斯通电桥阵列与硬件加速 CORDIC 角度解算构成,实现 0
    的头像 发表于 04-23 17:00 361次阅读

    基于单芯片架构的纳芯微磁编码器: 技术路线对比与电机适配

    位置反馈的主流方案。本文从传感机理、单芯片信号链、三大路线核心对比、电机场景适配、工程实现五大维度,系统解析纳芯微磁编码器的技术内核与选型逻辑,为电机驱动系统的
    的头像 发表于 04-21 16:27 120次阅读

    三菱伺服电机编码器引脚的定义

    三菱伺服电机编码器的引脚定义没有统一的标准,会因 驱动器系列(如 MR-JE、MR-J4)  和 编码器类型(增量式/绝对式)  而不同。 最权威的资料始终是您所用
    的头像 发表于 04-14 12:12 295次阅读
    三菱伺服<b class='flag-5'>电机</b>的<b class='flag-5'>编码器</b>引脚的定义

    伺服电机正余弦编码器的相位对齐方式

    伺服电机正余弦编码器的相位对齐,本质上是为了让编码器反馈的位置信号与电机转子实际的磁极位置(电角度)建立精确的对应关系。这是实现矢量控制、确保电机
    的头像 发表于 03-20 15:36 207次阅读
    伺服<b class='flag-5'>电机</b>正余弦<b class='flag-5'>编码器</b>的相位对齐方式

    磁铁在编码器中的作用与应用

    编码器中,磁铁的作用不可小觑,常用的磁性材料主要是钕铁硼和铁氧体,今天这篇文章主要介绍下磁铁用于哪些编码器类型,以及其具体作用。磁铁在编码器中的作用(功能)是什么?在编码器中,磁铁主
    的头像 发表于 03-19 14:42 413次阅读
    磁铁在<b class='flag-5'>编码器</b>中的作用与应用

    增量正交编码器:工业自动化的“精密导航仪”

    ——增量正交编码器。它如同设备的“神经末梢”,将机械运动转化为可量化的数字信号,为工业自动化构建起精密的感知网络。 正交信号:破解旋转方向的“密码本” 贝弗德增量正交
    的头像 发表于 02-05 08:39 222次阅读

    解锁精准运动控制密码:增量式正交编码器的卓越之选

    在工业自动化、机器人技术、智能制造等蓬勃发展的时代,精准的运动控制与位置检测成为设备高效运行的核心要素。而增量式正交编码器,宛如一位默默耕耘的幕后英雄,以其卓越的性能和可靠的表现,为各类设备的稳定运行提供了坚实保障。
    的头像 发表于 02-01 11:01 752次阅读

    MY RIO采集编码器问题

    准备用MY RIO做实时控制,需要采集正交AB编码器的数据,有没有做过类似的项目大神指导一下。
    发表于 01-19 17:51

    变频+异步电机的组合,外接编码器如何实现高精度定位运动

    在工业自动化领域,变频与异步电机的组合因其经济性和可靠性被广泛应用,但传统开环控制难以满足高精度定位需求。通过外接编码器实现闭环控制,可显著提升系统定位精度至±0.1mm甚至更高。本文将深入解析该
    的头像 发表于 12-04 07:39 1431次阅读
    变频<b class='flag-5'>器</b>+异步<b class='flag-5'>电机</b>的组合,外接<b class='flag-5'>编码器</b>如何实现高精度定位运动

    Vishay RAIK060 旋转绝对感应套件编码器技术解析

    Vishay RAIK060旋转绝对电感套件编码器专门用于电机驱动、机器人位置和具有精确定位的工业运动控制。这些编码器通过LED状态颜色轻松组装,对外部磁场、电场和温度不敏感。RAIK
    的头像 发表于 11-11 11:31 1225次阅读
    Vishay RAIK060 旋转绝对感应套件<b class='flag-5'>编码器</b>技术解析

    RVMCU课堂「17」: 手把手教你玩转RVSTAR—正交编码器接口篇

    ​上期内容我们介绍了定时的PWM输出功能,本期内容来介绍一下定时正交译码功能(编码器接口)。正交
    发表于 10-31 08:21

    NI数采卡 差分AB正交编码器信号采集

    请教一下各位,如何使用NI数采卡采集差分输入AB正交编码器角度信号。 PCIE-6320/6340 usb6210/6421 在不增加差分转单端模块的情况下,如何接线和设置DAQ参数。
    发表于 10-20 09:15

    FPGA FOC驱动编码器模块介绍

    在多路FOC驱动板上,一共是支持了两种编码器和两种角度获取方式,分别是AS5047P和MT6835,SPI和ABZ。AS5047P的精度是14bit,MT6835的精度是21bit,它们的价格差不多
    的头像 发表于 09-06 09:50 5845次阅读
    FPGA FOC<b class='flag-5'>驱动</b><b class='flag-5'>编码器</b>模块介绍

    什么是伺服电机编码器?作用/关键技术/选型等一起看看吧!

    什么是伺服电机编码器? 伺服电机编码器是伺服系统中的核心反馈元件,用于实时检测电机的转速、位置、角度等参数,并将信号反馈给控制
    的头像 发表于 06-09 11:07 3266次阅读
    什么是伺服<b class='flag-5'>电机</b><b class='flag-5'>编码器</b>?作用/关键技术/选型等一起看看吧!

    伺服电机编码器与转子磁极相位对齐方法

    永磁交流伺服电机编码器相位为何要与转子磁极相位对齐 其唯一目的就是要达成矢量控制的目标,使 d 轴励磁分量和 q 轴出力分量解耦,令永磁交流伺服电机定子绕组产生的电磁场始终正交于转子
    发表于 05-14 16:00