四相五线步进电机

进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。你可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时你也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

下面这个就是本次实验使用的步进电机


IMGP0641_调整大小.JPG

工业使用的步进电机与本次实验使用的不同,下面图式两种不同款式的工业用步进电机

步进电机_调整大小.jpg

使用步进电机前一定要仔细查看说明书,确认是四相还是两相,各个线怎样连接,本次实验使用的步进电机是四相的,不同颜色的线定义如下图:

Snap2.jpg

下面是电机的端口结构图,1,3为一组,2,4为一组,5号是共用的VCC。

28BYJ48内部结构图.jpg

因本次使用的步进电机功率很小,所以可以直接使用一个ULN2003芯片进行驱动,如果是大功率的步进电机,是需要对应的驱动板的。

IMGP0596_调整大小.JPG

ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。可以用来驱动步进电机。

其结构图如下


Snap3.jpg

硬件连接图如下

Snap1.jpg

IMGP0590_调整大小.JPG

把代码下载到arduino控制板中看看效果
ARDUINO 代码 复制打印
  
  
  1. /*
  2.  * 步进电机跟随电位器旋转
  3.  * (或者其他传感器)使用0号模拟口输入
  4.  * 使用arduino IDE自带的Stepper.h库文件
  5.  */
  6.  
  7. #include <Stepper. h>
  8.  
  9. // 这里设置步进电机旋转一圈是多少步
  10. #define STEPS 100
  11.  
  12. // attached to设置步进电机的步数和引脚
  13. Stepper stepper (STEPS, 8, 9, 10, 11 );
  14.  
  15. // 定义变量用来存储历史读数
  16. int previous = 0;
  17.  
  18. void setup ( )
  19. {
  20.    // 设置电机每分钟的转速为90步
  21.   stepper. setSpeed ( 90 );
  22. }
  23.  
  24. void loop ( )
  25. {
  26.    // 获取传感器读数
  27.    int val = analogRead ( 0 );
  28.  
  29.    // 移动步数为当前读数减去历史读数
  30.   stepper. step (val - previous );
  31.  
  32.    // 保存历史读数
  33.   previous = val;
  34. }



前几天我也试验了一下,用的是28BYJ-48 Stepper Motor 12V+ULN2003APG
改了改一个代码,现在的效果是电位计控制正反转

  1. /*
  2. This program drives a unipolar or bipolar stepper motor.
  3. The motor is attached to digital pins 8 - 11 of the Arduino.

  4. Created 11 Mar. 2007
  5. Modified 30 Nov. 2009
  6. by Tom Igoe

  7. */
  8. #include <Stepper.h>

  9. const int stepsPerRevolution = 64;  // change this to fit the number of steps per revolution for your motor
  10. // initialize the stepper library on pins 8 through 11:
  11. Stepper myStepper(stepsPerRevolution, 8,9,10,11);   
  12. const int aInPin=A0;
  13. int val;

  14. void setup() {
  15.   // set the speed at 60 rpm:
  16.   myStepper.setSpeed(200);
  17.   // initialize the serial port:
  18.   Serial.begin(9600);
  19. }

  20. void loop() {
  21.   val=analogRead(aInPin);
  22.   val=map(val,0,1023,0,99);
  23.   Serial.println(val);
  24.   // step one revolution  in two direction:
  25.   if(val>50){
  26.     Serial.println("clockwise");
  27.     //原library是整步,整步走的角度是半步走的角度的两倍,半步走的声音比较小,平稳些,启动时最好是半步的走比较稳定
  28.     //022中library修改为半步模式不成功???FUCK
  29.     //四拍运行时步距角为θ=360度/(revolution*4)(俗称整步),八拍运行时步距角为θ=360度/(revolution*8)(俗称半步)
  30.     myStepper.step(stepsPerRevolution/2);//
  31.     delay(500);
  32.   }
  33.   else{
  34.     // step one revolution in the other direction:
  35.     Serial.println("counterclockwise");
  36.     myStepper.step(-stepsPerRevolution/2);
  37.     delay(500);
  38.   }
  39. }

复制代码

  • 8
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值