Arduino - Động cơ DC

Trong chương này, chúng tôi sẽ giao diện các loại động cơ khác nhau với bảng Arduino (UNO) và hướng dẫn bạn cách kết nối động cơ và điều khiển nó từ bảng của bạn.

Có ba loại động cơ khác nhau -

  • Động cơ DC
  • Động cơ servo
  • Động cơ bước

Động cơ DC (Động cơ dòng điện một chiều) là loại động cơ phổ biến nhất. Động cơ điện một chiều thường chỉ có hai dây dẫn, một dây dẫn dương và một dây dẫn cực âm. Nếu bạn kết nối trực tiếp hai dây dẫn này với pin, động cơ sẽ quay. Nếu bạn chuyển các dây dẫn, động cơ sẽ quay theo hướng ngược lại.

Warning- Không điều khiển động cơ trực tiếp từ các chân bảng Arduino. Điều này có thể làm hỏng bảng. Sử dụng Mạch trình điều khiển hoặc IC.

Chúng tôi sẽ chia chương này thành ba phần -

  • Chỉ cần làm cho động cơ của bạn quay
  • Kiểm soát tốc độ động cơ
  • Điều khiển hướng quay của động cơ DC

Thành phần bắt buộc

Bạn sẽ cần các thành phần sau:

  • 1x bảng Arduino UNO
  • 1x bóng bán dẫn PN2222
  • 1x Động cơ DC 6V nhỏ
  • 1x 1N4001 diode
  • Điện trở 1x 270 Ω

Thủ tục

Thực hiện theo sơ đồ mạch và thực hiện các kết nối như trong hình dưới đây.

Các biện pháp phòng ngừa

Thực hiện các biện pháp phòng ngừa sau đây khi thực hiện các kết nối.

  • Đầu tiên, hãy đảm bảo rằng bóng bán dẫn được kết nối đúng cách. Mặt phẳng của bóng bán dẫn phải đối diện với bảng Arduino như trong hình.

  • Thứ hai, đầu sọc của diode phải hướng về đường nguồn + 5V theo cách sắp xếp như trong hình.

Spin ControlArduino Code

int motorPin = 3;

void setup() {

}

void loop() {
   digitalWrite(motorPin, HIGH);
}

Mã cần lưu ý

Transistor hoạt động giống như một công tắc, điều khiển nguồn điện cho động cơ. Chân 3 của Arduino được sử dụng để bật và tắt bóng bán dẫn và được đặt tên là 'motorPin' trong bản phác thảo.

Kết quả

Động cơ sẽ quay hết tốc độ khi chân Arduino số 3 lên cao.

Kiểm soát tốc độ động cơ

Sau đây là sơ đồ của động cơ DC, được kết nối với bảng Arduino.

Mã Arduino

int motorPin = 9;

void setup() {
   pinMode(motorPin, OUTPUT);
   Serial.begin(9600);
   while (! Serial);
   Serial.println("Speed 0 to 255");
}

void loop() {
   if (Serial.available()) {
      int speed = Serial.parseInt();
      if (speed >= 0 && speed <= 255) {
         analogWrite(motorPin, speed);
      }
   }
}

Mã cần lưu ý

Transistor hoạt động giống như một công tắc, điều khiển công suất của động cơ. Chân 3 của Arduino được sử dụng để bật và tắt bóng bán dẫn và được đặt tên là 'motorPin' trong bản phác thảo.

Khi chương trình bắt đầu, nó sẽ nhắc bạn cung cấp các giá trị để điều khiển tốc độ của động cơ. Bạn cần nhập giá trị từ 0 đến 255 trong Serial Monitor.

Trong hàm 'loop', lệnh 'Serial.parseInt' được sử dụng để đọc số được nhập dưới dạng văn bản trong Serial Monitor và chuyển nó thành 'int'. Bạn có thể gõ bất kỳ số nào ở đây. Câu lệnh 'if' trong dòng tiếp theo chỉ đơn giản là ghi một số tương tự với số này, nếu số nằm trong khoảng từ 0 đến 255.

Kết quả

Động cơ DC sẽ quay với các tốc độ khác nhau tùy theo giá trị (0 đến 250) nhận được qua cổng nối tiếp.

Kiểm soát hướng quay

Để điều khiển hướng quay của động cơ DC mà không cần hoán đổi các dây dẫn, bạn có thể sử dụng một mạch được gọi là H-Bridge. Cầu H là một mạch điện tử có thể điều khiển động cơ theo cả hai hướng. Cầu H được sử dụng trong nhiều ứng dụng khác nhau. Một trong những ứng dụng phổ biến nhất là điều khiển động cơ trong robot. Nó được gọi là cầu H vì nó sử dụng bốn bóng bán dẫn được kết nối theo cách mà sơ đồ có dạng chữ "H."

Chúng tôi sẽ sử dụng IC L298 H-Bridge ở đây. L298 có thể điều khiển tốc độ và hướng của động cơ DC và động cơ bước, đồng thời có thể điều khiển hai động cơ đồng thời. Đánh giá hiện tại của nó là 2A cho mỗi động cơ. Tuy nhiên, ở những dòng điện này, bạn sẽ cần phải sử dụng đế tản nhiệt.

Thành phần bắt buộc

Bạn sẽ cần các thành phần sau:

  • IC cầu 1 × L298
  • 1 × động cơ DC
  • 1 × Arduino UNO
  • 1 × breadboard
  • 10 × dây jumper

Thủ tục

Sau đây là sơ đồ của giao diện động cơ DC với bảng Arduino Uno.

Sơ đồ trên cho thấy cách kết nối IC L298 để điều khiển hai động cơ. Có ba chân đầu vào cho mỗi động cơ, Input1 (IN1), Input2 (IN2) và Enable1 (EN1) cho Motor1 và Input3, Input4 và Enable2 cho Motor2.

Vì chúng ta sẽ chỉ điều khiển một động cơ trong ví dụ này, chúng ta sẽ kết nối Arduino với IN1 (chân 5), IN2 (chân 7) và Enable1 (chân 6) của IC L298. Chân 5 và 7 là đầu vào kỹ thuật số, tức là đầu vào BẬT hoặc TẮT, trong khi chân 6 cần tín hiệu điều chế độ rộng xung (PWM) để điều khiển tốc độ động cơ.

Bảng sau đây cho thấy động cơ sẽ quay theo hướng nào dựa trên các giá trị kỹ thuật số của IN1 và IN2.

TRONG 1 TRONG 2 Hành vi động cơ
PHANH
1 Ở ĐẰNG TRƯỚC
1 PHÍA SAU
1 1 PHANH

Chân IN1 của IC L298 được kết nối với chân 8 của Arduino trong khi IN2 được kết nối với chân 9. Hai chân kỹ thuật số này của Arduino điều khiển hướng của động cơ. Chân A của IC được kết nối với chân PWM 2 của Arduino. Điều này sẽ kiểm soát tốc độ của động cơ.

Để đặt giá trị của chân 8 và 9 của Arduino, chúng ta đã sử dụng hàm digitalWrite () và để đặt giá trị của chân 2, chúng ta phải sử dụng hàm analogWrite ().

Các bước kết nối

  • Kết nối 5V và nối đất của IC với 5V và nối đất của Arduino, tương ứng.
  • Nối động cơ vào chân 2 và 3 của IC.
  • Kết nối IN1 của IC với chân 8 của Arduino.
  • Kết nối IN2 của IC với chân 9 của Arduino.
  • Kết nối EN1 của IC với chân 2 của Arduino.
  • Kết nối SENS Một chân của IC với đất.
  • Kết nối Arduino bằng cáp USB Arduino và tải chương trình lên Arduino bằng phần mềm Arduino IDE.
  • Cung cấp nguồn cho bảng Arduino bằng nguồn điện, pin hoặc cáp USB.

Mã Arduino

const int pwm = 2 ; //initializing pin 2 as pwm
const int in_1 = 8 ;
const int in_2 = 9 ;
//For providing logic to L298 IC to choose the direction of the DC motor

void setup() {
   pinMode(pwm,OUTPUT) ; //we have to set PWM pin as output
   pinMode(in_1,OUTPUT) ; //Logic pins are also set as output
   pinMode(in_2,OUTPUT) ;
}

void loop() {
   //For Clock wise motion , in_1 = High , in_2 = Low
   digitalWrite(in_1,HIGH) ;
   digitalWrite(in_2,LOW) ;
   analogWrite(pwm,255) ;
   /* setting pwm of the motor to 255 we can change the speed of rotation
   by changing pwm input but we are only using arduino so we are using highest
   value to driver the motor */
   //Clockwise for 3 secs
   delay(3000) ;
   //For brake
   digitalWrite(in_1,HIGH) ;
   digitalWrite(in_2,HIGH) ;
   delay(1000) ;
   //For Anti Clock-wise motion - IN_1 = LOW , IN_2 = HIGH
   digitalWrite(in_1,LOW) ;
   digitalWrite(in_2,HIGH) ;
   delay(3000) ;
   //For brake
   digitalWrite(in_1,HIGH) ;
   digitalWrite(in_2,HIGH) ;
   delay(1000) ;
}

Kết quả

Đầu tiên động cơ sẽ chạy theo chiều kim đồng hồ (CW) trong 3 giây và sau đó chạy ngược chiều kim đồng hồ (CCW) trong 3 giây.