Để tiếp tục câu hỏi tôi đã hỏi ở đây: Sự bất ổn định của quad-ray với chế độ tự động đơn giản ... Tôi muốn hỏi một vài câu hỏi về việc thực hiện một bộ điều khiển cơ bản cho một tứ giác được điều khiển bởi mô-đun APM 2.6. (Tôi đang sử dụng khung từ 3DRobotics)
Tôi đã tước toàn bộ hệ thống điều khiển xuống chỉ còn hai khối PID, một khối để điều khiển cuộn và một khối khác để điều khiển cao độ (ngáp và mọi thứ khác ... tôi sẽ nghĩ về chúng sau).
Tôi đang thử nghiệm thiết lập này trên một giàn khoan bao gồm một chùm quay tự do, trong đó tôi đã buộc chặt hai cánh tay của tứ giác. Hai người kia được tự do di chuyển. Vì vậy, tôi thực sự đang thử nghiệm một mức độ tự do (cuộn hoặc cao độ) tại một thời điểm.
Kiểm tra hình ảnh bên dưới: ở đây A, B đánh dấu chùm tia xoay tự do mà thiết lập được gắn vào.
Với việc điều chỉnh cẩn thận các thông số P và D, tôi đã xoay sở để đạt được một chuyến bay duy trì trong khoảng 30 giây.
Nhưng bằng cách 'duy trì', tôi đơn giản có nghĩa là một thử nghiệm trong đó máy bay không bị lật đổ sang một bên. Chuyến bay ổn định của Rock vẫn không có chỗ trong tầm nhìn, và hơn 30 giây của chuyến bay cũng có vẻ khá khó khăn. Nó chao đảo từ đầu. Khi nó đạt đến 20 - 25 giây, nó bắt đầu nghiêng sang một bên. Trong vòng 30 giây, nó đã nghiêng sang một bên bởi một lề không thể chấp nhận được. Chẳng mấy chốc, tôi thấy nó nằm ngửa
Đối với bản thân mã PID, tôi đang tính toán tỷ lệ lỗi từ 'bộ lọc miễn phí' của dữ liệu con quay hồi chuyển + gia tốc. Thuật ngữ tích phân được đặt thành không. Thuật ngữ P đến khoảng 0,39 và thuật ngữ D là 0,0012. (Tôi không sử dụng thư viện Arduino Arduino trên mục đích, chỉ muốn có một trong số các PID của riêng tôi được triển khai ở đây.)
Kiểm tra video này, nếu bạn muốn xem nó hoạt động như thế nào.
http://www.youtube.com/watch?v=LpsNBL8ydBA&feature=youtu.be [Yeh, thiết lập khá cổ xưa! Tôi đồng ý. :)]
Xin vui lòng cho tôi biết những gì tôi có thể làm để cải thiện sự ổn định ở giai đoạn này.
@Ian: Trong số nhiều thử nghiệm tôi đã thực hiện với thiết lập của mình, tôi đã vẽ đồ thị cho một số thử nghiệm bằng cách đọc từ màn hình nối tiếp. Dưới đây là bài đọc mẫu của Roll vs 'Motor1 & Motor2 - đầu vào PWM' (hai động cơ điều khiển cuộn):
Đối với đầu vào / đầu ra:
Đầu vào: Giá trị cuộn và cường độ (tính theo độ), thu được bằng cách kết hợp gia tốc kế + con quay hồi chuyển
Đầu ra: Giá trị PWM cho động cơ, được phân phối bằng hàm motor.write () của thư viện Servo
Nghị quyết
Tôi đã giải quyết vấn đề. Đây là cách thực hiện:
Mấu chốt của vấn đề nằm ở cách tôi triển khai chương trình Arduino. Tôi đã sử dụng hàm write () để cập nhật các góc servo, điều này chỉ chấp nhận các bước nguyên trong đối số (hoặc bằng cách nào đó chỉ đáp ứng với đầu vào số nguyên, 100 và 100.2 tạo ra kết quả tương tự). Tôi đã thay đổi nó thành writeMicroseconds () và điều đó làm cho máy photocopy ổn định hơn đáng kể.
Tôi đã thêm RPM trên một động cơ trong khi giữ cho động cơ kia ở giá trị ổn định. Tôi đã thay đổi điều này để tăng RPM trong một động cơ trong khi giảm động cơ đối diện. Điều đó giữ cho tổng lực đẩy ngang không thay đổi, điều này có thể giúp tôi khi tôi cố gắng giữ độ cao thẳng đứng giữ vật này.
Tôi đã đẩy RPM lên đến giới hạn tối đa, đó là lý do tại sao quad quad cứ mất kiểm soát ở mức tối đa. Không có chỗ cho RPM tăng khi cảm nhận được độ nghiêng.
Tôi quan sát thấy rằng một trong những động cơ vốn đã yếu hơn so với cái kia, tôi không biết tại sao. Tôi đã mã hóa một phần bù vào đầu vào động cơ PWM đó.
Cảm ơn tất cả mọi người vì đã ủng hộ tôi.
Mã nguồn:
Nếu bạn quan tâm, đây là mã nguồn của việc triển khai PID đơn giản của tôi: Mã nguồn PID
Xin vui lòng kiểm tra nó trong phần cứng của bạn. Bất kỳ đóng góp cho dự án sẽ được hoan nghênh.