【Mind+】Arduino控制步进电机(最全)

2019-04-114.5万
AI 快速预览详细 收起
本文详细介绍了如何使用ULN2003和L298N驱动板控制步进电机。首先介绍了ULN2003驱动板和5线四相24BYJ48步进电机的接线方法,然后解释了步进电机的工作原理,并提供了具体的程序案例。特别注意的是,在模块化程序中,速度(脉冲)只能给到0.002,否则电机不会转动。此外,还介绍了L298N驱动两相四线42步进电机的接线和工作原理。


一、ULN2003驱动和5线四相24BYJ48步进电机。

【Mind+】Arduino控制步进电机(最全)图1


1、接线
        驱动板上的正极和负极接Arduino板的VCC和GND(5V供电可以驱动);
驱动板上的IN1,IN2,IN3,IN4分别接Arduino板上的数字口11,10,9,8;
2、工作原理
       打个比方,四相是四个足球运动员,对应的是数字口11,10,9,8,均匀站在圆圈的四个位置,11号球员将球踢给10号(11号口高电平,其他低电平),10号再踢给9号(10号口高电平,其他低电平),9号再踢给8号(9号口高电平,其他低电平),8号再踢给11号(8号口高电平,其他低电平),依次循环,步进电机正转,每个球员踢给下一个球员所用时间代表了速度(脉冲),时间越短,步进电机转动越快。
【Mind+】Arduino控制步进电机(最全)图2

3、程序案例
【Mind+】Arduino控制步进电机(最全)图3   【Mind+】Arduino控制步进电机(最全)图4
      自定义两个变量:步进角angle,速度speeds
       自定义两个函数:
      ctlStepMotor电机转动方向判断函数,当angle>0,步进电机按照speeds速度正转,共执行angle次;
当angle<0,步进电机按照speeds速度反转,共执行angle(取整数,取绝对值)次。
      StepMotorStop电机停止函数,4个数字口全部低电平。
主程序:
     步进电机以0.002的速度(脉冲)正转360度,等待2秒,再以0.002的速度(脉冲)反转360度,等待2秒,电机停转1秒。   
4、特别注意
在Arduino IDE中速度(脉冲)可以给到0.001,转速最大,但是在模块化程序中速度(脉冲)只能给到0.002,如果给0.001电机就不转了。
    如果转动角度angle给的360,但是电机实际可能不是360度,需要在执行次数上加一个补偿量。

二、L298N驱动两相四线42步进电机【Mind+】Arduino控制步进电机(最全)图5
1、接线
【Mind+】Arduino控制步进电机(最全)图6  【Mind+】Arduino控制步进电机(最全)图7  【Mind+】Arduino控制步进电机(最全)图8
步进电机上蓝、黄、红、绿四个线分别接到L298驱动板上的OUT1(输出A+)、OUT2(输出A-)、OUT3(输出B+)、OUT4(输出B-)上;
42步进电机正常工作需要接12V,但是这里我只是演示使用所以接的是主板的5V供电,可以转动,但扭矩很小;
L298驱动板上的IN1,IN2,IN3,IN4分别接主板数字口的PIN8,PIN9,PIN10,PIN11

2、工作原理
42步进电机是两相四线步进电机,只要对两相绕组电流通断和电流方向控制就可以;
      可以这样理解,A+(PIN8 HIGH),B+(PIN10 HIGH),A-(PIN9 HIGH),B-(PIN11 HIGH)四个运动员进行接力跑,A+(PIN8 )拿着接力棒,高电平,开始跑,接力棒接给B+(PIN10 ),A+(PIN8 )和B+(PIN10 )同时高电平,A+(PIN8 )松手则变回低电平,B+(PIN10 )向前跑继续高电平,B+(PIN10 )将接力棒接给A-(PIN9 ),则B+(PIN10)和A-(PIN9 )同时高电平,B+(PIN10)松手变回低电平,A-(PIN9 )前向跑继续高电平,依次循环为步进电机逆时针转动。     每个接力跑运动员跑到下个运动员身边所用时间代表了速度(脉冲),时间越短,步进电机转动越快。
【Mind+】Arduino控制步进电机(最全)图9
3、程序案例
自定义两个变量:步进角angle,速度speeds
       自定义两个函数:
      ctlStepMotor电机转动方向判断函数,当angle>0,步进电机按照speeds速度正转,共执行angle次;
当angle<0,步进电机按照speeds速度反转,共执行angle(取整数,取绝对值)次。
      StepMotorStop电机停止函数,4个数字口全部低电平。
主程序:
     步进电机以0.001的速度(脉冲)正转360度,等待2秒,再以0.001的速度(脉冲)反转360度,等待2秒,电机停转1秒。
【Mind+】Arduino控制步进电机(最全)图10
  【Mind+】Arduino控制步进电机(最全)图11
     【Mind+】Arduino控制步进电机(最全)图12
     【Mind+】Arduino控制步进电机(最全)图13
【Mind+】Arduino控制步进电机(最全)图14












17-3步进电机可正反转.zip

45.55 KB, 下载次数: 16503

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(20)
Hello_Micropython_World
Hello_Micropython_World
玩我呢??
花生编程
花生编程
超低门槛
花生编程
花生编程
6666666666
花生编程
花生编程
教程很详细!赞!
花生编程
花生编程
学习了,感谢分享!
花生编程
花生编程
厉害厉害
三春牛-创客
三春牛-创客
学习了,感谢分享!
三春牛-创客
三春牛-创客
还画了图,低门槛!
三春牛-创客
三春牛-创客
好教程!
三春牛-创客
三春牛-创客
厉害厉害
lthirty
lthirty
函数参数重新定义成数字值,然后参数重新拉下就可以了。
CPY
CPY回复lthirty
请问是怎么操作的呢?自定义模块点开只能改名字,如何定义成数字值呢?能否说一下,谢谢你。
蜜蜂优品
蜜蜂优品
楼主跪求联系方式
txm派瑞深山锹🐛🐜🐞🦂
txm派瑞深山锹🐛🐜🐞🦂
好教程!!
狂风飙升
狂风飙升
求楼主教一下在Mind+软件中sj01带编码的驱动电机的使用方法。
liudeqiang_2008
liudeqiang_2008
我也是同样的问题,请楼主赐教,感谢!
jlk
jlk
编译失败,请指教,谢谢!!!
学不会的小赵
学不会的小赵回复温柔的投降
能教教我吗?
学不会的小赵
学不会的小赵回复jlk
整出来了吗?
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
遥远2
遥远2
图文并茂,辛苦了
Forgotten
Forgotten
厉害厉害
super-power
super-power
好帖子,降低了门槛。
DFBk6iY6hK4
DFBk6iY6hK4
作者
【Mind+】Arduino用ULN2003驱动控制5线四相24BYJ48步进电机教程来了
- 没有更多了 -