Mục lục:

Robot tự cân bằng - Thuật toán điều khiển PID: 3 bước
Robot tự cân bằng - Thuật toán điều khiển PID: 3 bước

Video: Robot tự cân bằng - Thuật toán điều khiển PID: 3 bước

Video: Robot tự cân bằng - Thuật toán điều khiển PID: 3 bước
Video: điều khiển PID xe hai bánh tự cân bằng 2024, Tháng mười hai
Anonim
Robot tự cân bằng - Thuật toán điều khiển PID
Robot tự cân bằng - Thuật toán điều khiển PID

Dự án này được hình thành vì tôi muốn tìm hiểu thêm về Thuật toán điều khiển và cách triển khai hiệu quả các vòng lặp PID chức năng. Dự án vẫn đang trong giai đoạn phát triển vì mô-đun Bluetooth vẫn chưa được thêm vào sẽ cho phép điều khiển robot từ điện thoại thông minh hỗ trợ Bluetooth.

Động cơ DC N20 được sử dụng tương đối rẻ và do đó có nhiều tác dụng đáng kể trong đó. Điều này dẫn đến một lượng nhỏ giật khi động cơ khắc phục tình trạng 'chùng' khi nó tác dụng mô-men xoắn lên các bánh xe. Do đó, không thể đạt được chuyển động hoàn toàn mượt mà. Đoạn mã tôi đã viết khá đơn giản nhưng thể hiện hiệu quả các khả năng của thuật toán PID.

Tóm tắt dự án:

Khung của robot được in 3D bằng máy in Ender 3 và được thiết kế để ép khít với nhau.

Robot được điều khiển bởi Arduino Uno lấy dữ liệu cảm biến từ MPU6050 và điều khiển động cơ DC thông qua trình điều khiển động cơ bên ngoài. Nó chạy bằng pin 7.4V, 1500mAh. Trình điều khiển động cơ điều chỉnh mức này thành 5V để cấp nguồn cho Arduino và cung cấp 7.4V cho động cơ.

Phần mềm được viết từ đầu với sự hỗ trợ của thư viện 'Arduino-KalmanFilter-master' và 'Arduino-MPU6050-master' từ gitHub.

Quân nhu:

  • Bộ phận in 3D
  • Arduino UNO
  • Cảm biến 6 trục MPU6050
  • Trình điều khiển động cơ D. C
  • Động cơ N20 D. C (x2)
  • Pin 9V

Bước 1: Chế tạo Robot

Chế tạo Robot
Chế tạo Robot
Chế tạo Robot
Chế tạo Robot
Chế tạo Robot
Chế tạo Robot

In và lắp ráp

Toàn bộ cấu trúc phải vừa vặn với máy ép nhưng tôi đã sử dụng chất liệu siêu dính để giữ chặt các thành phần nhằm đảm bảo rô bốt hoàn toàn cứng cáp khi giữ thăng bằng.

Tôi đã thiết kế các bộ phận trong Fusion 360 và đã tối ưu hóa từng bộ phận để in mà không cần hỗ trợ để cho phép dung sai chặt chẽ hơn và bề mặt hoàn thiện sạch hơn.

Các cài đặt được sử dụng trên Máy in Ender 3 là: Độ sáng lớp 0,16mm @ 40% infill cho tất cả các bộ phận.

Bước 2: Robot in 3D

Robot in 3D
Robot in 3D

Khung xe (x1)

Bánh xe trái (x2)

Vỏ động cơ bên trái (x2)

Vỏ Arduino (x1)

Bước 3: Thuật toán điều khiển PID

Thuật toán điều khiển PID
Thuật toán điều khiển PID

Tôi đã viết Thuật toán điều khiển PID từ đầu bằng thư viện 'Arduino-KalmanFilter-master' và 'Arduino-MPU6050-master' từ gitHub.

Tiền đề của Thuật toán như sau:

  • Đọc dữ liệu thô từ MPU6050
  • Sử dụng Bộ lọc Kalman để phân tích dữ liệu từ cả Con quay hồi chuyển và Gia tốc kế để loại bỏ những điểm không chính xác trong số đọc của con quay hồi chuyển do gia tốc của cảm biến. Điều này trả về một giá trị tương đối mịn cho cao độ của cảm biến theo độ đến hai chữ số thập phân.
  • Tính sai số E theo góc, tức là: Góc giữa cảm biến và điểm đặt.
  • Tính toán sai số theo tỷ lệ dưới dạng (Hằng số tỷ lệ x sai số).
  • Tính lỗi Tích hợp dưới dạng tổng đang chạy của (Hằng số tích hợp x lỗi).
  • Tính toán sai số phái sinh dưới dạng hằng số như [(Hằng số phân biệt) x (Thay đổi lỗi / Thay đổi theo thời gian)]
  • Tính tổng tất cả các lỗi để đưa ra đầu ra tốc độ được gửi đến động cơ.
  • Tính toán hướng quay động cơ dựa trên dấu hiệu của góc sai số.
  • Vòng lặp sẽ chạy vô thời hạn và xây dựng dựa trên đầu ra khi đầu vào thay đổi. Nó là một vòng lặp phản hồi, sử dụng các giá trị đầu ra làm giá trị đầu vào mới cho lần lặp tiếp theo.

Bước cuối cùng là điều chỉnh các thông số Kp, Ki & Kd của vòng lặp PID.

  1. Điểm khởi đầu tốt là tăng từ từ Kp cho đến khi rô bốt dao động quanh điểm cân bằng và có thể rơi được.
  2. Tiếp theo, bắt đầu Kd ở khoảng 1% giá trị của Kp và tăng từ từ cho đến khi dao động biến mất và robot lướt nhẹ khi được đẩy.
  3. Cuối cùng, bắt đầu với Ki khoảng 20% Kp và thay đổi cho đến khi robot "vượt quá" điểm đặt để chủ động bắt ngã và quay trở lại phương thẳng đứng.

Đề xuất: