35532| 24
|
[教程] 【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秒。 |
45.55 KB, 下载次数: 8319
【Mind+】Arduino用ULN2003驱动控制5线四相24BYJ48步进电机教程来了 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed