Mục lục:

Robot tự cân bằng hai bánh: 7 bước
Robot tự cân bằng hai bánh: 7 bước

Video: Robot tự cân bằng hai bánh: 7 bước

Video: Robot tự cân bằng hai bánh: 7 bước
Video: Hướng dẫn lập trình ROBOT tự cân bằng dùng động cơ bước .Self balancing robot using stepper motor 2024, Tháng mười một
Anonim
Robot tự cân bằng hai bánh
Robot tự cân bằng hai bánh

Người hướng dẫn này sẽ thực hiện quá trình thiết kế và chế tạo một robot tự cân bằng. Xin lưu ý, tôi chỉ muốn nói rằng robot tự cân bằng không phải là một khái niệm mới và chúng đã được chế tạo và ghi chép bởi những người khác. Tôi muốn sử dụng cơ hội này để chia sẻ với bạn cách hiểu của tôi về robot này.

Robot tự cân bằng là gì?

Robot tự cân bằng là một hệ thống sử dụng dữ liệu đo lường quán tính, được thu thập từ một cảm biến trên bo mạch, để liên tục điều chỉnh vị trí của nó để giữ thẳng đứng.

Làm thế nào nó hoạt động?

Một phép tương tự đơn giản cần xem xét là một con lắc ngược. Nơi khối tâm nằm trên điểm trục. Tuy nhiên, trong trường hợp của chúng ta, chúng ta đang hạn chế con lắc ở 1 bậc tự do bằng cách có một trục quay, trong trường hợp của chúng ta là trục quay của hai bánh xe. Vì bất kỳ loại xáo trộn nào cũng sẽ khiến robot bị ngã, chúng ta cần có phương pháp chủ động giữ thăng bằng cho robot. Đây là lúc thuật toán vòng kín (bộ điều khiển PID) của chúng tôi phát huy tác dụng, khi biết robot của chúng tôi đang rơi theo hướng nào, chúng tôi có thể điều chỉnh hướng quay của động cơ để giữ cho hệ thống cân bằng.

Thuật toán vòng kín hoạt động như thế nào?

Nguyên tắc cơ bản để giữ thăng bằng cho robot là, nếu robot đang rơi về phía trước, nó sẽ bù lại bằng cách di chuyển phần dưới của robot về phía trước để bắt lấy chính nó và do đó giữ thẳng đứng. Tương tự như vậy, nếu rô bốt bị ngã về phía sau, nó sẽ bù lại bằng cách di chuyển phần dưới của rô bốt về phía sau để bắt lấy chính nó.

Vì vậy, chúng ta cần làm hai việc ở đây, đầu tiên, chúng ta cần tính toán góc nghiêng (Roll) mà robot đang trải qua và kết quả là chúng ta cần điều khiển hướng quay của các động cơ.

Chúng ta sẽ đo góc nghiêng như thế nào?

Để đo góc nghiêng, chúng ta sẽ sử dụng Đơn vị đo lường quán tính. Các mô-đun này kết hợp một gia tốc kế và con quay hồi chuyển.

  • Gia tốc kế là một thiết bị điện từ đo gia tốc thích hợp, đây là gia tốc của một vật trong một hệ thống nghỉ tức thời.
  • Con quay hồi chuyển là một thiết bị cơ điện để đo vận tốc góc và được sử dụng để xác định hướng của thiết bị.

Tuy nhiên, vấn đề với việc sử dụng các cảm biến như vậy là:

  • Gia tốc kế rất ồn nhưng nhất quán theo thời gian, góc thay đổi theo chuyển động ngang đột ngột
  • Mặt khác, giá trị con quay hồi chuyển sẽ thay đổi theo thời gian, nhưng ban đầu, nó khá chính xác

Đối với hướng dẫn này, tôi sẽ không triển khai bộ lọc thay vì sử dụng Xử lý chuyển động kỹ thuật số (DMP) tích hợp. Những người khác đã sử dụng bộ lọc bổ sung để có được tín hiệu mượt mà, bạn có thể chọn bất kỳ phương pháp nào bạn thích. khi robot cân bằng với một trong hai cách triển khai.

Quân nhu

Các bộ phận:

  1. Arduino Pro Mini 3.3V 8 với ATMEGA328 8 Mhz
  2. FT232RL 3.3V 5.5V FTDI Mô-đun bộ chuyển đổi nối tiếp USB sang TTL
  3. Mô-đun GY-521 với MPU-6050
  4. Một cặp động cơ bánh răng vi mô N20 6V - 300 vòng / phút
  5. Trình điều khiển động cơ L298N
  6. Bộ chuyển đổi DC sang DC LM2596S
  7. Pin (Bộ pin Li-ion 9,7V có thể sạc lại)
  8. Dây đeo pin
  9. Hai bảng mạch PCB tạo mẫu
  10. Nam và nữ chân cắm đầu dây jumper

Công cụ:

  1. Hàn sắt và thuốc hàn
  2. Đế đỡ đệm hex bằng nylon
  3. Bộ tuốc nơ vít chính xác
  4. máy in 3D

Bước 1: Thi công

Vì tôi đã có quyền truy cập vào máy in 3D, tôi quyết định in 3D khung máy và sử dụng thiết bị chờ để kết nối mọi thứ với nhau.

Robot gồm 4 lớp

  1. Lớp dưới cùng kết nối các động cơ và có các điểm lắp cho mô-đun trình điều khiển động cơ L298N
  2. Lớp tiếp theo chứa bảng nguyên mẫu với Arduino pro mini và các tiêu đề được hàn vào nó
  3. Lớp thứ ba gắn IMU
  4. Lớp trên cùng, mà tôi gọi là "lớp đệm" chứa pin, bộ chuyển đổi buck và công tắc tiền tệ

Nguyên tắc thiết kế chính của tôi là giữ mọi thứ theo mô-đun. Lý do cho điều này là nếu có vấn đề gì xảy ra với một trong các thành phần mà tôi có thể dễ dàng thay thế nó hoặc nếu tôi cần một thành phần cho một dự án khác, tôi có thể dễ dàng lấy nó mà không phải lo lắng về việc không thể sử dụng lại hệ thống.

Bước 2: Đấu dây

Đấu dây
Đấu dây

Tôi đã hàn một số panh tiêu đề nữ vào bảng mạch hoàn hảo để khớp với các chân cắm tiêu đề mini của Arduino pro. Sau đó, tôi hàn tiêu đề đực ghim bo mạch để cho phép truy cập vào I / O. Phần còn lại của các thành phần được gắn vào khung in 3D và được kết nối bằng dây nhảy.

Bước 3: Lý thuyết điều khiển

Bây giờ chúng ta chuyển sang phần cốt lõi của dự án. Để giữ cho robot cân bằng, chúng ta cần tạo ra một tín hiệu điều khiển thích hợp để điều khiển động cơ đi đúng hướng và ở tốc độ chính xác để giữ cho robot luôn cân bằng và ổn định. Để làm điều này, chúng tôi sẽ sử dụng một thuật toán vòng điều khiển phổ biến được gọi là bộ điều khiển PID. Như từ viết tắt cho thấy có ba thuật ngữ cho bộ điều khiển này, đây là các thuật ngữ tỷ lệ, tích phân và đạo hàm. Mỗi hệ số đi kèm với các hệ số xác định mức độ ảnh hưởng của chúng đối với hệ thống. Thông thường, phần tốn nhiều thời gian nhất của việc triển khai bộ điều khiển là điều chỉnh lợi ích cho từng hệ thống duy nhất để có được phản hồi tối ưu nhất.

  • Số hạng tỷ lệ nhân trực tiếp với sai số để đưa ra kết quả đầu ra, vì vậy sai số càng lớn thì phản hồi càng lớn
  • Thuật ngữ tích phân tạo ra một phản hồi dựa trên sự tích lũy của lỗi để giảm lỗi ở trạng thái ổn định. Hệ thống mất cân bằng càng lâu thì các động cơ sẽ phản hồi nhanh
  • Thuật ngữ đạo hàm là đạo hàm của sai số được sử dụng để dự đoán phản ứng trong tương lai và làm như vậy nó làm giảm dao động do vượt quá trạng thái ổn định.

Nguyên tắc cơ bản của thuật toán này là liên tục tính toán góc nghiêng là hiệu số giữa vị trí mong muốn và vị trí hiện tại, điều này được gọi là sai số. Sau đó, nó sử dụng các giá trị lỗi này và tính toán tổng các phản hồi tỷ lệ, tích phân và đạo hàm để có được đầu ra, là các tín hiệu điều khiển được gửi đến động cơ. Do đó, nếu sai số lớn, tín hiệu điều khiển được gửi đến động cơ sẽ quay động cơ ở tốc độ cao để về trạng thái cân bằng. Tương tự như vậy, nếu sai số nhỏ, tín hiệu điều khiển sẽ quay động cơ ở tốc độ thấp để giữ thăng bằng cho robot.

Bước 4: Sử dụng MPU 6050

Thư viện MPU6050

github.com/jrowberg/i2cdevlib/tree/master/…

Hiệu chỉnh hiệu chỉnh Không phải tất cả các cảm biến đều là bản sao chính xác của nhau. Do đó, nếu bạn kiểm tra hai MPU 6050, bạn có thể nhận được các giá trị khác nhau cho gia tốc kế và con quay hồi chuyển khi được đặt vẫn trên cùng một bề mặt. Để khắc phục sự chênh lệch góc không đổi này, chúng ta cần tôn vinh từng cảm biến mà chúng ta sử dụng. Chạy tập lệnh này:

www.i2cdevlib.com/forums/topic/96-arduino-…

được viết bởi Luis Rodenas, chúng ta sẽ nhận được sự bù đắp. Các lỗi bù có thể được loại bỏ bằng cách xác định các giá trị bù trong quy trình setup ().

Sử dụng Bộ xử lý chuyển động kỹ thuật số

MPU6050 chứa DMP (Bộ xử lý chuyển động kỹ thuật số).

DMP là gì? Bạn có thể coi DMP như một bộ vi điều khiển tích hợp xử lý chuyển động phức tạp từ con quay hồi chuyển 3 trục và gia tốc kế 3 trục trên mpu6050, sử dụng các thuật toán tổng hợp chuyển động của riêng nó. Giảm tải quá trình xử lý sẽ được thực hiện bởi Arduino

Làm thế nào để sử dụng nó? Để tìm ra cách sử dụng DMP, hãy xem bản phác thảo ví dụ MPU6050_DMP6 đi kèm với thư viện MPU6050 (trong Arduino IDE: File-> Example-> MPU6050-> MPU6050_DMP6). Đây cũng là cơ hội tốt để kiểm tra cảm biến của bạn có thực sự hoạt động và việc đấu dây có chính xác hay không

Bước 5: Mã hóa

Tôi đã sử dụng Arduino IDE và giao diện FTDI để lập trình Arduino pro mini.

Sử dụng bản phác thảo ví dụ (MPU6050_DMP6) đi kèm với thư viện MPU6050 làm mã cơ sở của tôi, tôi đã thêm một hàm PID () và MotorDriver ().

Thêm thư viện

  • MPU6050: Để sử dụng cảm biến MPU6050, chúng tôi sẽ cần tải xuống thư viện nhà phát triển I2C từ Jeff Rowberg và thêm nó vào thư mục "thư viện" Arduino có trong tệp chương trình trên máy tính của bạn.
  • Wire: Chúng tôi cũng cần thư viện Wire để cho phép chúng tôi giao tiếp với các thiết bị I2C.

Mã giả

Bao gồm các Thư viện:

  • Wire.h
  • MPU6050
  • I2Cdev.h

Khởi tạo biến, hằng và đối tượng

Cài đặt ()

  • Đặt chế độ pin để điều khiển động cơ
  • Đặt chế độ ghim cho đèn LED trạng thái
  • Khởi tạo MPU6050 và đặt các giá trị bù đắp

PID ()

Tính giá trị PID

MotorDriver (phản hồi PID)

Sử dụng giá trị PID để điều khiển tốc độ và hướng của động cơ

Vòng ()

  • Nhận dữ liệu từ DMP
  • Gọi hàm PID () a MotorDriver ()

Bước 6: Quy trình điều chỉnh PID

Đây là phần tẻ nhạt nhất của dự án và cần một chút kiên nhẫn trừ khi bạn gặp may. Dưới đây là các bước:

  1. Đặt số hạng I và D thành 0
  2. Giữ robot, điều chỉnh P để robot bắt đầu dao động về vị trí cân bằng
  3. Với P được đặt, tăng I để rô bốt tăng tốc nhanh hơn khi mất cân bằng. Với P và I được điều chỉnh thích hợp, robot sẽ có thể tự cân bằng trong ít nhất vài giây, với một số dao động
  4. Cuối cùng, tăng D giảm dao động

Nếu lần thử đầu tiên không cho kết quả như ý, hãy lặp lại các bước với một giá trị khác là P. Ngoài ra, hãy lưu ý rằng bạn có thể tinh chỉnh các giá trị PID sau đó để tăng hiệu suất hơn nữa. Các giá trị ở đây phụ thuộc vào phần cứng, đừng ngạc nhiên nếu bạn nhận được các giá trị PID rất lớn hoặc rất nhỏ.

Bước 7: Tuyên bố

Các động cơ bánh răng siêu nhỏ được sử dụng để phản ứng chậm lại với các nhiễu động lớn và do hệ thống quá nhẹ nên không có đủ quán tính để có được hiệu ứng con lắc mong muốn, vì vậy nếu robot nghiêng về phía trước, nó sẽ chỉ nghiêng một góc và chạy về phía trước. Cuối cùng, bánh xe in 3D là một lựa chọn tồi vì chúng liên tục trượt.

Góp ý để phát triển:

  • Động cơ nhanh hơn với mô-men xoắn cao hơn, tức là đối với động cơ DC có điện áp cao hơn thì mô-men xoắn cao hơn
  • lấy pin nặng hơn hoặc chỉ cần di chuyển khối lượng cao hơn một chút
  • Thay bánh xe in 3D bằng bánh xe cao su để có thêm lực kéo

Đề xuất: