Arduino MG996R

Trong bài hướng dẫn này, chúng ta sẽ học cách sử dụng động cơ servo MG996R có mô-men xoắn cao với Arduino.

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×MG996R Servo Motor
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về động cơ servo

Động cơ servo MG996R là một động cơ servo có mô-men xoắn cao, có thể nâng lên đến 15 kg trọng lượng. Động cơ có thể quay trục từ 0° đến 180°, mang lại kiểm soát chính xác vị trí góc. Để biết thông tin cơ bản về động cơ servo, vui lòng tham khảo hướng dẫn Arduino - Động cơ servo.

Sơ đồ chân

Động cơ servo MG996R được sử dụng trong ví dụ này gồm ba chân:

  • Chân VCC (thường màu đỏ) cần được kết nối với VCC (4.8V – 7.2V)
  • Chân GND (thường màu đen hoặc nâu) cần được kết nối với GND (0V)
  • Chân tín hiệu (thường màu vàng hoặc cam) nhận tín hiệu PWM điều khiển từ một chân của Arduino
sơ đồ chân của động cơ servo mg996r

Sơ đồ đấu dây

Vì MG996R là một động cơ servo có mô-men xoắn cao, nó tiêu thụ nhiều điện năng. Chúng ta không nên cấp nguồn cho động cơ này từ chân 5V của Arduino. Thay vào đó, chúng ta cần sử dụng nguồn cấp ngoài cho động cơ servo MG996R.

sơ đồ nối dây động cơ servo mg996r cho Arduino

This image is created using Fritzing. Click to enlarge image

Mã nguồn Arduino

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-mg996r */ #include <Servo.h> Servo servo; // create servo object to control a servo void setup() { servo.attach(9); // attaches the servo on pin 9 to the servo objectư servo.write(0); // rotate slowly servo to 0 degrees immediately } void loop() { for (int angle = 0; angle <= 180; angle += 1) { // rotate slowly from 0 degrees to 180 degrees, one by one degree // in steps of 1 degree servo.write(angle); // control servo to go to position in variable 'angle' delay(10); // waits 10ms for the servo to reach the position } for (int angle = 180; angle >= 0; angle -= 1) { // rotate from 180 degrees to 0 degrees, one by one degree servo.write(angle); // control servo to go to position in variable 'angle' delay(10); // waits 10ms for the servo to reach the position } }

Hướng dẫn từng bước

  • Kết nối Arduino với máy tính bằng cáp USB
  • Mở Arduino IDE, chọn board và cổng đúng
  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên Arduino
Arduino ide - cách tải mã lên
  • Xem kết quả: Động cơ servo quay chậm từ 0° đến 180° và sau đó quay trở lại từ 180° về 0°

Giải thích mã nguồn

Bạn có thể tìm lời giải thích ở các dòng chú thích của mã Arduino ở phía trên.

Cách Điều Khiển Tốc Độ Động Cơ Servo

Bằng cách sử dụng các hàm map()millis(), chúng ta có thể điều khiển tốc độ của động cơ servo một cách mượt mà, không chặn các phần mã khác.

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-mg996r */ #include <Servo.h> Servo myServo; unsigned long MOVING_TIME = 3000; // moving time is 3 seconds unsigned long moveStartTime; int startAngle = 30; // 30° int stopAngle = 90; // 90° void setup() { myServo.attach(9); moveStartTime = millis(); // start moving // TODO: other code } void loop() { unsigned long progress = millis() - moveStartTime; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle); myServo.write(angle); } // TODO: other code }

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.