DFBk6iY6hK4 发表于 2019-4-11 23:15:35

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

本帖最后由 DFBk6iY6hK4 于 2019-4-13 17:14 编辑

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

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号口高电平,其他低电平),依次循环,步进电机正转,每个球员踢给下一个球员所用时间代表了速度(脉冲),时间越短,步进电机转动越快。


3、程序案例
   
      自定义两个变量:步进角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步进电机
1、接线
   
步进电机上蓝、黄、红、绿四个线分别接到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 )前向跑继续高电平,依次循环为步进电机逆时针转动。   每个接力跑运动员跑到下个运动员身边所用时间代表了速度(脉冲),时间越短,步进电机转动越快。

3、程序案例
自定义两个变量:步进角angle,速度speeds
       自定义两个函数:
      ctlStepMotor电机转动方向判断函数,当angle>0,步进电机按照speeds速度正转,共执行angle次;
当angle<0,步进电机按照speeds速度反转,共执行angle(取整数,取绝对值)次。
      StepMotorStop电机停止函数,4个数字口全部低电平。
主程序:
   步进电机以0.001的速度(脉冲)正转360度,等待2秒,再以0.001的速度(脉冲)反转360度,等待2秒,电机停转1秒。


   
   













CPY 发表于 2023-11-29 15:49:18

lthirty 发表于 2022-5-14 14:58
函数参数重新定义成数字值,然后参数重新拉下就可以了。

请问是怎么操作的呢?自定义模块点开只能改名字,如何定义成数字值呢?能否说一下,谢谢你。

温柔的投降 发表于 2020-1-6 14:49:58

jlk 发表于 2019-12-29 20:36
编译失败,请指教,谢谢!!!

我的也是这样,可能自定义函数有问题,不知道怎么回事

学不会的小赵 发表于 2021-9-19 20:13:43

温柔的投降 发表于 2020-1-6 14:49
我的也是这样,可能自定义函数有问题,不知道怎么回事

能教教我吗?

DFBk6iY6hK4 发表于 2019-4-11 23:29:04

【Mind+】Arduino用ULN2003驱动控制5线四相24BYJ48步进电机教程来了

super-power 发表于 2019-4-12 08:40:30

好帖子,降低了门槛。

Forgotten 发表于 2019-4-12 13:55:34

厉害厉害{:5_153:}

遥远2 发表于 2019-10-21 19:37:11

图文并茂,辛苦了

jlk 发表于 2019-12-29 20:36:11

编译失败,请指教,谢谢!!!

liudeqiang_2008 发表于 2020-2-4 00:34:10

我也是同样的问题,请楼主赐教,感谢!

狂风飙升 发表于 2020-2-5 22:31:05

求楼主教一下在Mind+软件中sj01带编码的驱动电机的使用方法。

txm派瑞深山锹 发表于 2020-4-2 11:21:29

好教程!!

蜜蜂优品 发表于 2020-4-2 12:24:22

楼主跪求联系方式

学不会的小赵 发表于 2021-9-19 20:13:05

jlk 发表于 2019-12-29 20:36
编译失败,请指教,谢谢!!!

整出来了吗?

lthirty 发表于 2022-5-14 14:58:00

函数参数重新定义成数字值,然后参数重新拉下就可以了。

三春牛-创客 发表于 2023-1-4 08:59:17

厉害厉害

三春牛-创客 发表于 2023-1-4 09:00:19

好教程!

三春牛-创客 发表于 2023-1-4 09:01:39

还画了图,低门槛!

三春牛-创客 发表于 2023-1-4 09:03:07

学习了,感谢分享!

花生编程 发表于 2023-1-19 21:32:00

厉害厉害

花生编程 发表于 2023-1-19 21:33:01

学习了,感谢分享!

花生编程 发表于 2023-1-19 21:34:03

教程很详细!赞!
页: [1] 2
查看完整版本: 【Mind+】Arduino控制步进电机(最全)