直线电机生产厂家博智达主营直线电机环形直线电机音圈电机大理石龙门模组等产品。

直线电机

直线电机 环形直线电机 大理石龙门模组 DD马达

DD马达
直线电机厂家
直线电机> 步进电机 >[步进电机控制器]stm32F4定时器中断 + 步进电机控制器 控制四线两相步进电机

[步进电机控制器]stm32F4定时器中断 + 步进电机控制器 控制四线两相步进电机

发布时间:2020-09-12 17:39:28 阅读次数:143 文章来源:深圳博智达机器人
导读: 今天给大家分享一个初级版本的步进电机的控制方法,用到的步进电机是4线两相的42步进电机如下图: 步进电机驱动选用的是这款TB6600 供电选用了12V的稳压电源最小系统板供电是从J...

stm32F4定时器中断 + 步进电机控制器 控制四线两相步进电机


今天给大家分享一个初级版本的步进电机的控制方法,用到的步进电机是4线两相的42步进电机如下图:
[步进电机控制器]stm32F4定时器中断 + 步进电机控制器 控制四线两相步进电机

    步进电机驱动选用的是这款TB6600

    供电选用了12V的稳压电源最小系统板供电是从Jlink上直接引出
    MCU是stm32F407ZGT6最小系统板
    根据步进电机控制器的资料可以知道步进电机的速度和转过的角度都是通过PUL+和PUL-来控制的
    (这里插一段关于步进电机驱动上的六个控制接线端子的使用,将其中的四个+或者是四根-接在一起做成共阳接法或者共阴接法,如果电平是3.3V或者5V可以不串接电阻,如果电压大于5V需要在每一根线上串接相应阻值的电阻)
    这里我选择的是共阳接法也就是将所有的正极接线接到了一起
    EN-引脚悬空(我的程序里面暂时没有用到,实际使用需要读者自行考虑)
    DIR-接单片机PE12口
    PUL-接单片机PE13口

    接下来就说一下我程序的基本思路:

    要想控制步进电机我们一般是控制两个东西:1是转过的角度值(位置)2是速度(为了防止丢步和平稳的启动机器预防启动极限和转子振荡我们的速度不能变化太快)
    归结到程序上也就是我们需要控制PE13IO口输出一定的方波信号。这个信号一方面有数量的限定,另一方面这个信号的频率不能是一个固定的数值(除非你的控制对时间没有要求,可以允许设备一直以一个较低的速度运行),这里我们选用了定时器中断作为脉冲的时间基准,在定时器的中断函数里面我们对IO口的电平进行翻转一次获得一个方波的边缘(一半的方波)通过对中断次数的统计我们可以实现对位置的控制(理想情况下),另一个需求就是控制速度,我的解决方案是控制中断的频率以此来实现控制方波的频率,具体的操作就是修改定时器的预分频器PSC,通过改变最终进入定时器CNT的脉冲频率来实现修改定时频率的目的(这里用到的是定时器的更新中断)
    以上是初始化代码,需要注意的请看备注,这份代码我会上传到CSDN需要的朋友可以自行下载也可以私信我
    主要是一个定时器的初始化以及中断的配置、两个通用IO的初始化
    以上是中断函数部分通过这噶函数我们可以实现对运行状态的粗略控制:我们可以控制脉冲的数量,进而控制步进电机转过的角度。我们可以控制定时器的中断频率,进而控制脉冲的频率以此实现对步进电机速度的控制。
    说明:此代码只适合新手来看看,并不适用于实际生产!步进电机的速度控制算法有比这个优秀很多的,这只是我初步写的一个初级版本,后续会补上其他版本的步进电机控制方案。
    另外有一点需要注意的就是步进电机的细分选择:我这边选择的是8细分电流是根据电机特性选择的1.5A细分方面不建议细分太多,这样会导致初级版本的程序频繁的进入中断函数,占用的CPU时间可能会影响程序的运行效率。细分的如果太少也会导致一些其他问题,比如电机的噪音增大。电流大小会直接影响到电机的力矩,如果电流过小可能会导致大电机启动不起来。电流过大则会导致小电机的发热严重。EN引脚一般是控制释放电机的,这里有一个概念叫做保持力矩,也就是步进电机再点击驱动器的电流影响下会保持当前的位置难以转动,这个力矩的大小是由电流决定的也就是保持力矩。
    另外分享一个快速区分步进电机的两根相线的方法:将步进电机的任意两条相线短接,转动转子,如果有卡顿的感觉那就说明短接的两根是同一相!另外的两根自然就是另一相。

以上就是关于"[步进电机控制器]stm32F4定时器中断 + 步进电机控制器 控制四线两相步进电机"的详细介绍了,更多内容关注博智达直线电机官网其他资讯!


㊣本文链接地址:[步进电机控制器]stm32F4定时器中断 + 步进电机控制器 控制四线两相步进电机
直线电机标签: