步进电机驱动详解_步进电机最简单的驱动方法

(5) 2024-06-07 20:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
步进电机驱动详解_步进电机最简单的驱动方法,希望能够帮助你!!!。

使用l298n模块驱动步进电机

    • 效果演示
    • 步进电机工作原理
    • l298n模块工作原理
    • 编写程序下载以及接线

效果演示

最近在使用步进电机的时候,发现细分驱动器太大了,而且只是会使用细分驱动器的话并不能代表你会用步进电机了,于是就想找个小一点的驱动自己编写代码驱动步进电机,于是l298n模块就符合我的要求了,它不仅小而且还带有两路大功率电机的输出,把他接到步进电机的四相刚刚好!

按照惯例,先上效果图
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第1张
可以看出,我能够精确控制步进电机旋转360度以及稳定速度旋转。下面我来给出教程啦

步进电机工作原理

不知道工作原理的话是写不出驱动程序的,在这里我简单说说步进电机通过l298n的工作原理
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第2张
如图所示分别代表步进电机的四根线A+ A- B+ B- 。初中物理应该学过,通电导线会产生磁场,所以我们只要改变图中所示电流方向就可以得到不同方向的磁场,图示线圈即为步进电机的定子。
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第3张
接下来就是图示所示的运行了,因为我们改变了电流方向,即不断改变定子的磁场,根据异极相吸的道理,转子就会跟随着变化的磁场而转动,这就是步进电机旋转的原理。然后我们怎么控制他的角度呢?
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第4张
如图所示,我们只要控制好A+ A- B+ B-的高低电平就可以控制步进电机旋转特定的角并停下,要是无限循环就会一直匀速转动啦。对应的真值表如下
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第5张
在这里肯定有很多小伙伴有疑问了,你这里不是8拍转一圈吗?那你的步进值不是360/8=45度吗?为什么说电机的步进值是1.8度那么小呢?
这里我就要科普一下了,上面是步进电机的实现原理,现实的步进电机是比较复杂的,因为转子的周围还有很多小齿,比如1.8步进值的电机的话转子齿为50,所以公式是360/50/8=0.9为半拍步进值。360/50/4=1.8才是步进值

l298n模块工作原理

我们知道,单片机的io口虽然可以输出pwm波,但是他不能带动大功率的东西比如电机,而且电平也只有3.3v。于是乎我们就需要一个功率放大的模块比如l298n。它能够通过单片机的控制而产生方向与大小可变的电流电压输出,可以给步进电机的四相产生相应的脉冲。
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第6张
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第7张
IN1和IN2分别接入单片机的两个pwm输出脚。通过占空比来控制输出的电压大小,比如说l298n接入12v电源,我IN1输入50%占空比的pwm波,IN0输入电平为0,则输出口A+ A-产生正6v的电压。因为这个模块有两路,于是我们便可以输出步进电机所需的4种电平来驱动,这就是驱动原理

编写程序下载以及接线

步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第8张
我选用了TIM1的1.2通道和TIM的1.2通道分别接l298n的pwm1.pwm2.pwm3.pwm4
我们就初始化相应的引脚和时钟,因为是占空比控制所以频率无所谓,这里我选用了7.5khz,开发板时钟源是240M
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第9张
不会初始化定时器使用io口输出电平的可以去网上搜索学习下

接下来就是重要部分的模拟步进电机的8拍运行了
我们确定好一个占空比之后,引脚输出pwm波视为逻辑1,不输出pwm波视为逻辑0。于是我们就可以这样实现步进电机的逻辑输入了
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第10张
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第11张
这里的节拍输入间隔我选择了1000us,因为经过实测这样比较平滑,不会出现剧烈抖动或者失步。

然后就是主函数了。我们怎样实现某个角度的控制呢?
步进电机驱动详解_步进电机最简单的驱动方法_https://bianchenghao6.com/blog__第12张
因为输入一个半拍脉冲就会旋转0.9度,根据这个就可以精确计算所需要的角度了,也可以进行死循环使得电机匀速运动。旋转完成之后记得失能电机,不然一直停着不转电能无法被正确释放会产生不好的后果。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复