|
楼主 |
发表于 2020-11-11 19:29:54
|
显示全部楼层
- /*
- 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
- 实验一百七十:L293D四路电机驱动板 motor control shield 马达板
- Adafruit Motor Shield模块 Arduino AFMotor 电机扩展板
- 1、安装库:百度搜索“AFMotor库”— 下载 — 拷贝到Arduino-libraries 文件夹中
- 2、实验之五:驱动28BYJ-48步进电机
- */
- #include <AFMotor.h> // 本程序中使用AFMotor库
-
- AF_Stepper motor1(2048, 1); // 这2条语句的作用是建立2个步进电机对象,它们的名称分别是:motor1/2。
- AF_Stepper motor2(2048, 2); // 对象名称后面括号中的两个参数分别代表了步进电机旋转一周的步数以及
- // 步进电机连接在扩展板上的端口号。如AF_Stepper motor1(2048, 1)语句中
- // 参数2048代表motor1旋转一周需要走2048步。假如您的电机旋转一周需要32步,
- // 那么请在第一个参数位置输入32这一数字参数。
- // 括号中第二个参数1代表motor1连接在M1和M2端口。
- // 对于motor2对象,它括号中的参数2代表该电机连接在M3和M4端口。
-
- void setup() {
- Serial.begin(9600); //启动串口通讯
-
- motor1.setSpeed(10); // 这2条语句的作用是通过setSpped库函数设置电机运行速度。
- motor2.setSpeed(10); // setSpped库函数中的参数是运行速度参数。
- // 速度参数越大,运转速度越快。参数为0时电机停止转动。
- }
-
- /*
- 以下的loop函数中有4段程序语句。它们的内容十分类似,主要语句都是是通过step库函数来控制
- 步进电机的运行模式。step库函数一共有3个参数。如loop函数的第二行语句:motor1.step(2048, FORWARD, SINGLE)。
- 括号中的第一个参数是控制电机走的步数,这里的参数2048就是让电机走2048步。
- 接下来的关键字参数"FORWARD"作用是控制电机旋转方向。"FORWARD"是控制电机"正转",
- 这里也可以使用关键字"BACKWARD"让电机"反转"。
- 最后一个关键字参数是用于控制步进电机运转模式的。这里可选的关键字参数有:
- SINGLE - 全步进模式(单线圈)。电机每走一步,扩展板只给一相线圈供电。
- DOUBLE - 全步进模式(双线圈)。电机每走一步,扩展板会同时给两相线圈供电。
- 此模式运行的电机比SINGLE模式下的扭矩要更大,但是电机耗电也会更多。
- INTERLEAVE - 半步进模式。这种模式是SINGLE和DOUBLE的混合。电机每走一步,扩展板对线圈供电方式
- 在一相和两相之间交替切换。举例来说,电机走第一步时,只有一相线圈通电。
- 走第二步时,会有两相线圈供电,然后又是一相,再两相......这样交替通电。
- 这种控制模式的优点是电机运行更流畅,但是缺点是运行速度大打折扣。
- MICROSTEP - 微步进模式。此模式下的电机运行更光滑,但缺点是扭矩会打折扣。
- */
-
- void loop() {
- Serial.println("Single Mode"); //串口监视器输出当前运行模式为“Single”
- motor1.step(2048, FORWARD, SINGLE); //步进电机以SINGLE模式"正转"2048步
- motor1.step(2048, BACKWARD, SINGLE); //步进电机以SINGLE模式"反转"2048步
-
- Serial.println("Double Mode"); //串口监视器输出当前运行模式为“Double”
- motor2.step(2048, FORWARD, DOUBLE); //步进电机以DOUBLE模式"正转"2048步
- motor2.step(2048, BACKWARD, DOUBLE); //步进电机以DOUBLE模式"反转"2048步
-
- Serial.println("Interleave Mode"); //串口监视器输出当前运行模式为“Interleave”
- motor1.step(2048, FORWARD, INTERLEAVE); //步进电机以INTERLEAVE模式"正转"2048步
- motor1.step(2048, BACKWARD, INTERLEAVE); //步进电机以INTERLEAVE模式"反转"2048步
-
- Serial.println("Micrsostep Mode"); //串口监视器输出当前运行模式为“Micrsostep”
- motor2.step(2048, FORWARD, MICROSTEP); //步进电机以MICROSTEP模式"正转"2048步
- motor2.step(2048, BACKWARD, MICROSTEP); //步进电机以MICROSTEP模式"反转"2048步
- }
复制代码 |
|