使用Arduino+L298N控制光驱两项四线步进电机

使用Arduino+L298N控制光驱两项四线步进电机

一、所需配件

  1. Arduino 开发板 x1

    image-20220120143349053

  2. L298N步进电机驱动模块 x2

    image-20220120143448412

  3. 5V电源模块 x1

  4. 12V电源 x2

  5. 杜邦线(公对母) x15

    image-20220120143635712

  6. 其他铜导线 x10

    点击查看图片来源

  7. 红波按钮 x1

    image-20220120143911285

  8. 光驱步进电机 x2

    image-20220120144103514

  9. 激光头 x1

    image-20220120144213022


二、步进电机与L298N接线说明

  1. 电机按下图摆放,4根线依次命名1、2、3、4

    image-20220120150035612

  2. L298N模块按下图摆放,电机的1、2、3、4分别与L298N的1、2、3、4相对应

    image-20220120150736521


三、L298N与Arduino开发板接线说明

  1. 将第一块L298N的IN1~IN4分别连接Arduino的2、3、4、5,如下图:

    image-20220120155212507

    image-20220120154944310

  2. 第二块L298N同理,IN1~IN4分别连接Arduino的6、7、8、9,如下图:

    image-20220120155516596


四、激光头与Arduino接线说明

  1. 激光头有三根线,分别标号1、2、3,其中1为电源正极,2为电源负极,3为信号控制,如图:

    image-20220120155910363

  2. 将1电源正极接入Arduino的5V,2接Arduino的GND,3接Arduino的10,如图:

    image-20220120160240093


五、红波按钮与Arduino接线说明

  1. 红波按钮未到,暂未调试……
  2. 将普通开关的其中一条线接入Arduino12号引脚,另一根线与GND相连

六、控制代码

已烧制,运维人员无需关心

int IN1 = 2; //定义L298N-1控制引脚
int IN2 = 3;
int IN3 = 4;
int IN4 = 5;

int IN5 = 6; //定义L298N-2控制引脚
int IN6 = 7;
int IN7 = 8;
int IN8 = 9;
int switchPin = 12;   // 开关引脚
int ledPin = 10;      // 激光灯引脚
int waitTime = 40;    // 电机转动速度
int moveLen = 10;     // 移动长度
int ledLight = 255;   // 激光头亮度值 0~255
void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  
  pinMode(IN5, OUTPUT);
  pinMode(IN6, OUTPUT);
  pinMode(IN7, OUTPUT);
  pinMode(IN8, OUTPUT);
  pinMode(switchPin, INPUT_PULLUP);  //使用该内部上拉电阻
  Serial.begin(9600); 
}

void loop() {
   int switchStatus = digitalRead(switchPin);
   if (switchStatus == LOW) {
     // 开关被按下,激光灯亮起,电机正转然后反转,激光灯熄灭
     analogWrite(ledPin, ledLight);
     for(int i = 0; i < moveLen; i++) {
        go(); 
     }
     for(int i = 0; i < moveLen; i++) {
        back(); 
     }
     analogWrite(ledPin, 0);
   }
   
}

void go() {
   digitalWrite(IN2, HIGH);
   delay(waitTime);
   cleanOne();
   digitalWrite(IN4, HIGH);
   delay(waitTime);
   cleanOne();
   digitalWrite(IN1, HIGH);
   delay(waitTime);
   cleanOne();
   digitalWrite(IN3, HIGH);
   delay(waitTime);
   cleanOne();  

   // 控制第二个电机
   digitalWrite(IN6, HIGH);
   delay(waitTime);
   cleanTwo();
   digitalWrite(IN8, HIGH);
   delay(waitTime);
   cleanTwo();
   digitalWrite(IN5, HIGH);
   delay(waitTime);
   cleanTwo();
   digitalWrite(IN7, HIGH);
   delay(waitTime);
   cleanTwo(); 
}


void back() {
   digitalWrite(IN3, HIGH);
   delay(waitTime);
   cleanOne();  
   digitalWrite(IN1, HIGH);
   delay(waitTime);
   cleanOne();
   digitalWrite(IN4, HIGH);
   delay(waitTime);
   cleanOne();
   digitalWrite(IN2, HIGH);
   delay(waitTime);
   cleanOne();

   // 控制第二个电机
   digitalWrite(IN7, HIGH);
   delay(waitTime);
   cleanTwo();  
   digitalWrite(IN5, HIGH);
   delay(waitTime);
   cleanTwo();
   digitalWrite(IN8, HIGH);
   delay(waitTime);
   cleanTwo();
   digitalWrite(IN6, HIGH);
   delay(waitTime);
   cleanTwo();
}

void cleanOne() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

void cleanTwo() {
  digitalWrite(IN5, LOW);
  digitalWrite(IN6, LOW);
  digitalWrite(IN7, LOW);
  digitalWrite(IN8, LOW);
}

七、运行效果

预览效果


八、实物图

image-20220120163514979

  • 13
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
使用ArduinoL298N控制N20电机的步骤如下: 1. 连接L298N电机驱动板:将L298N电机驱动板的VCC和GND引脚分别连接到电源和地上。将L298N的IN1和IN2引脚连接到Arduino的数字引脚上,例如数字引脚D3和D4。将L298N的ENA引脚连接到Arduino的数字引脚上,例如数字引脚D5。 2. 连接N20电机:将N20电机的正极连接到L298N电机驱动板的OUT1引脚上,将负极连接到OUT2引脚上。 3. 编写控制程序:以下是一个基本的控制N20电机的Arduino程序: ```cpp int motorPin1 = 3; //L298N的IN1引脚连接到数字引脚D3上 int motorPin2 = 4; //L298N的IN2引脚连接到数字引脚D4上 int enablePin = 5; //L298N的ENA引脚连接到数字引脚D5上 void setup() { pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(enablePin, OUTPUT); } void loop() { digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); analogWrite(enablePin, 200); //设置电机转速,最大值为255 delay(1000); //电机转动1秒钟 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); analogWrite(enablePin, 0); //停止电机 delay(1000); //停止1秒钟 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); analogWrite(enablePin, 200); //设置电机转速,最大值为255 delay(1000); //电机反转1秒钟 digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); analogWrite(enablePin, 0); //停止电机 delay(1000); //停止1秒钟 } ``` 这个程序可以让电机在正反方向之间循环转动,每次转动1秒钟,停止1秒钟。你可以根据需要,修改电机控制引脚、L298N的ENA引脚和转动时间等参数。需要注意的是,你需要根据你的具体电机和电源,调整电机的最大电流和电压,以避免损坏设备。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoungJ5788

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值