资讯详情

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

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

一、所需配件

  1. Arduino 开发板 x1

    image-20220120143349053

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

  3. 5V电源模块 x1

  4. 12V电源 x2

  5. 杜邦线(公对母) x15

  6. 其他铜导线 x10

  7. 红波按钮 x1

  8. 光驱步进电机 x2

  9. 激光头 x1


步进电机和L298N接线说明

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

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


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

  1. 将第一块L298N的IN1~IN4分别连接Arduino如下图所示:

  2. 第二块L298N同理,IN1~IN4分别连接Arduino如下图所示:


四、激光头与Arduino接线说明

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

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


五、红波按钮与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); } 

七、运行效果

预览效果


八、实物图

标签: 25l0电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台