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

    文章

    3639

    浏览量

    134429
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355754
  • 定时器
    +关注

    关注

    23

    文章

    3246

    浏览量

    114725
收藏 人收藏

    评论

    相关推荐

    其利天下技术·伺服电机编码器的作用及工作原理·低压伺服电机驱动方案开发

    电机系统中起着至关重要的作用,是实现高效、稳定和精确控制的核心组件。编码器的作用是什么呢?它的工作原理又是怎样的?其利天下·伺服电机驱动方案编码器
    的头像 发表于 11-02 10:38 298次阅读
    其利天下技术·伺服<b class='flag-5'>电机</b><b class='flag-5'>编码器</b>的作用及工作原理·低压伺服<b class='flag-5'>电机</b><b class='flag-5'>驱动</b>方案开发

    伺服电机编码器种类有哪些?

    在转速为1000 rpm以上,在高负载下有很好的性能。 这种类型的编码器具有良好的抗振稳定性,在高负载下保持较高性能。 该类型编码器可以使用与交流伺服电机匹配的交流驱动器,例如 PID
    的头像 发表于 07-21 17:01 1163次阅读

    旋转编码器控制电机速度

    旋转编码器控制电机速度
    发表于 06-24 09:16 4次下载

    西门子更换电机编码器设置

    引言 西门子电机驱动器广泛应用于工业自动化领域,其性能和可靠性得到了广泛认可。 编码器的作用 编码器是一种将机械位置转换为电信号的传感
    的头像 发表于 06-17 15:10 1301次阅读

    三菱伺服电机编码器接线方法

    引言 伺服电机是一种高精度、高响应速度的电机,广泛应用于工业自动化、机器人、数控机床等领域。编码器作为伺服电机的重要组成部分,其作用是检测电机
    的头像 发表于 06-17 14:11 2300次阅读

    伺服电机编码器的作用和功能是什么

    伺服电机编码器是伺服电机系统中的重要组成部分,它的作用和功能对于整个系统的稳定性、精度和可靠性具有至关重要的影响。本文将详细介绍伺服电机编码器
    的头像 发表于 06-17 11:09 2016次阅读

    伺服电机编码器的型号怎么看

    伺服电机编码器是伺服电机的重要组成部分,它能够将电机的旋转角度、速度等信息转换为电信号,为控制系统提供精确的位置和速度反馈。 一、伺服电机
    的头像 发表于 06-17 11:07 1890次阅读

    如何判断伺服电机编码器故障?

    伺服电机编码器是伺服系统中非常重要的部件,它用于测量电机轴的旋转角度和速度,为控制系统提供反馈信号。如果编码器出现故障,将直接影响伺服电机
    的头像 发表于 06-17 11:05 2549次阅读

    伺服电机编码器怎么判断好坏

    伺服电机编码器是伺服系统中的重要组成部分,其性能的好坏直接影响到伺服系统的精度和稳定性。本文将详细介绍伺服电机编码器的工作原理、性能指标、故障诊断方法以及维护保养措施,帮助用户更好地判
    的头像 发表于 06-17 11:02 1447次阅读

    伺服电机编码器线怎么区分正负极

    伺服电机编码器线是伺服系统中非常重要的一部分,它负责将电机的旋转信息转换为电信号,以实现对电机的精确控制。在伺服电机
    的头像 发表于 06-17 10:58 2318次阅读

    伺服电机编码器的原理及使用注意事项

    伺服电机编码器作为现代自动化系统中不可或缺的组成部分,其性能的优劣直接影响到整个系统的稳定性和精确度。本文将对伺服电机编码器的原理进行详细解析,并列举使用
    的头像 发表于 06-13 14:49 1049次阅读

    伺服电机编码器如何调零

    伺服电机编码器调零是确保电机精确控制的重要步骤。本文将详细介绍伺服电机编码器调零的原理、步骤和注意事项,以帮助用户更好地理解和操作。 伺服
    的头像 发表于 06-05 15:41 4449次阅读

    伺服电机编码器故障及维修 伺服电机编码器调零对位方法

    伺服电机编码器是用来测量电机转动角度和速度的重要部件。然而,由于长时间运行、环境因素等原因,编码器可能会出现故障,影响电机的准确运行。下面
    的头像 发表于 02-14 18:06 2.8w次阅读

    磁性编码器和光电编码器的比较

    伺服电机编码器是一种关键的反馈装置,用于测量和控制电机的转速和位置。在选择伺服电机编码器时,常常面临一个选择:使用磁电
    的头像 发表于 01-18 10:29 3155次阅读

    编码器种类及编码器原理

    编码器是一种将机械运动转换为数字电信号的传感。当驾驶员想要控制电机旋转时,U、V、W三相电气输出驱动电机运行。为了将
    的头像 发表于 01-17 17:02 1669次阅读
    <b class='flag-5'>编码器</b>种类及<b class='flag-5'>编码器</b>原理