Mục lục:
- Bước 1: Nguyên tắc làm việc
- Bước 2: Xây dựng
- Bước 3: Lắp ráp
- Bước 4: Thiết kế tuyến đường của bạn
- Bước 5: Lập trình mã của bạn
- Bước 6: XONG !
Video: Dòng dựa trên PID theo sau robot với mảng cảm biến POLOLU QTR 8RC: 6 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Xin chào!
đây là bài viết đầu tiên của tôi về các tài liệu hướng dẫn, và hôm nay tôi sẽ hướng dẫn bạn cách thực hiện và giải thích về cách bắt một dòng dựa trên PID theo sau rô bốt sử dụng mảng cảm biến QTR-8RC.
Trước khi tiếp tục xây dựng robot, chúng ta cần hiểu cái được gọi là PID,
Bước 1: Nguyên tắc làm việc
PID là gì ??
Thuật ngữ PID là viết tắt của tỷ lệ, tích phân, đạo hàm. Vì vậy, đơn giản, những gì chúng tôi đang làm với PID với dòng sau là, chúng tôi đang đưa ra lệnh cho rô bốt đi theo dòng và phát hiện các lượt bằng cách tính toán lỗi bằng cách xem xét cách nó đã đi xa khỏi đường ray.
các thuật ngữ chính như đã đề cập trong tài liệu polalu
Giá trị tỷ lệ gần đúng tỷ lệ với vị trí của rô bốt của bạn so với đường. Có nghĩa là, nếu rô bốt của bạn được căn giữa chính xác trên đường thẳng, chúng tôi mong đợi một giá trị tỷ lệ chính xác bằng 0
Giá trị tích phân ghi lại lịch sử chuyển động của rô-bốt: là tổng của tất cả các giá trị của thuật ngữ tỷ lệ đã được ghi lại kể từ khi rô-bốt bắt đầu chạy
Đạo hàm là tốc độ thay đổi của giá trị tỷ lệ thuận
Trong hướng dẫn này, chúng ta sẽ chỉ nói về các thuật ngữ Kp và Kd, tuy nhiên, kết quả cũng có thể được thực hiện bằng cách sử dụng thuật ngữ Ki. Các bài đọc mà chúng ta nhận được từ cảm biến không chỉ là các bài đọc tương tự mà còn là các bài đọc vị trí của robot. về cơ bản, bộ cảm biến cung cấp các giá trị từ 0 đến 2500, từ độ phản xạ tối đa đến độ phản xạ tối thiểu, nhưng đồng thời, cũng cung cấp thông tin về khoảng cách mà rô bốt đã mắc kẹt so với đường thẳng.)
Bây giờ chúng ta cần xem xét thuật ngữ lỗi, Đây là sự khác biệt của hai giá trị giá trị điểm đặt và giá trị hiện tại. (Giá trị điểm đặt là số đọc tương ứng với vị trí "hoàn hảo" của cảm biến trên đầu dòng và dòng điện giá trị là số đọc tức thời của cảm biến. Ví dụ: Nếu bạn đang sử dụng cảm biến mảng này và đang sử dụng 8 cảm biến, bạn sẽ nhận được số đọc vị trí là 3500 nếu bạn đang ở ngay vị trí, khoảng 0 nếu bạn ở quá xa dòng và khoảng 7000 nếu bạn quá đúng.). Mục tiêu của chúng tôi là làm cho lỗi bằng không. Sau đó, chỉ robot mới có thể đi theo dòng một cách trơn tru.
Sau đó đến phần tính toán,.
1) tính toán sai số.
Lỗi = Giá trị điểm đặt - Giá trị hiện tại = 3500 - vị trí
Như tôi đang sử dụng 8 cảm biến. cảm biến cho giá trị vị trí là 3500 khi rô bốt được đặt hoàn hảo. Bây giờ chúng tôi đã tính toán lỗi của mình, biên độ mà rô bốt của chúng tôi trôi qua đường đua, đã đến lúc chúng tôi xem xét kỹ lưỡng lỗi và điều chỉnh tốc độ động cơ cho phù hợp
2) xác định tốc độ điều chỉnh của động cơ.
MotorSpeed = Kp * Error + Kd * (Error - LastError);
LastError = Lỗi;
RightMotorSpeed = RightBaseSpeed + MotorSpeed;
LeftMotorSpeed = LeftBaseSpeed - Tốc độ động cơ;
Nói một cách logic, lỗi 0 có nghĩa là rô-bốt của chúng ta lệch sang trái, có nghĩa là rô-bốt của chúng ta cần đi sang phải một chút, điều này có nghĩa là động cơ bên phải cần giảm tốc độ và động cơ bên trái cần tăng tốc. ĐÂY LÀ PID!
Giá trị MotorSpeed được xác định từ chính phương trình. RightBaseSpeed và LeftBaseSpeed là tốc độ (bất kỳ giá trị nào của PWM 0-255) tại đó rô bốt chạy khi lỗi bằng 0.
Mã mà tôi đã đính kèm cũng bao gồm cách kiểm tra các giá trị vị trí của cảm biến, vì vậy bạn có thể mở màn hình nối tiếp và tải mã lên và tự mình xem cách động cơ quay khi vị trí thay đổi.
Nếu bạn gặp rắc rối khi triển khai robot của mình, chỉ cần kiểm tra xem và xem bằng cách thay đổi các dấu hiệu của phương trình !!!
Và bây giờ phần khó nhất là TÌM KIẾM Kp VÀ Kd, tôi đã phải dành hơn 1 giờ để điều chỉnh hoàn hảo rô bốt của mình. Thay vì đặt các giá trị ngẫu nhiên, tôi đã tìm ra một phương pháp dễ dàng hơn để xác định điều này.
- Bắt đầu với kp và Kd bằng 0, và bắt đầu với Kp, trước tiên hãy thử đặt Kp bằng 1 và quan sát robot, mục tiêu của chúng ta là đi theo đường ngay cả khi nó bị chao đảo, nếu robot vượt quá và mất đường thì giá trị kp sẽ giảm.nếu rô bốt không thể điều hướng một ngã rẽ và chậm chạp sẽ tăng giá trị Kp.
- Một khi rô bốt dường như hơi theo dòng, hãy điều chỉnh giá trị Kd (giá trị Kd> giá trị Kp) bắt đầu từ 1 và tăng giá trị cho đến khi bạn thấy ổ đĩa trơn tru và ít lắc lư hơn.
- Khi rô bốt bắt đầu đi theo dòng, hãy tăng tốc độ và xem liệu nó có thể duy trì và đi theo dòng hay không.
Hãy nhớ rằng tốc độ có ảnh hưởng trực tiếp đến việc điều chỉnh PID và đôi khi bạn có thể cần phải điều chỉnh lại để phù hợp với tốc độ của rô bốt của mình.
Bây giờ chúng ta có thể bắt đầu xây dựng robot của mình.
Bước 2: Xây dựng
Arduino atmega 2560 với cáp USB –đây là vi điều khiển chính được sử dụng.
Chassis- cho khung robot, tôi đã sử dụng 2 tấm acrylic hình tròn được sử dụng cho một dự án khác rất hoàn hảo cho việc này. Sử dụng đai ốc và ốc vít, tôi đã chế tạo khung gầm 2 tầng, để tôi có thể gắn các mô-đun khác vào tấm trên. Hoặc bạn có thể sử dụng khung làm sẵn có sẵn.
www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…
Động cơ bánh răng micrometal- robot cần động cơ quay nhanh để đối phó với quy trình PID, vì điều đó tôi đã sử dụng động cơ được đánh giá ở 6V 400rpm và bánh xe thích hợp.
www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…
www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…
Mảng cảm biến QTR 8Rc – cái này có thể được sử dụng để theo dõi dòng, như đã đề cập trước đó, tôi nghĩ bây giờ bạn đã hiểu rõ về cách vận hành mảng cảm biến với PID. Mã rất đơn giản và sử dụng các thư viện arduino hiện có, bạn sẽ có thể để xây dựng một người theo dõi dòng nhanh chóng.
www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…
Trình điều khiển động cơ TB6612FNG-Tôi muốn sử dụng một trình điều khiển động cơ có thể xử lý các ngã rẽ và thay đổi hướng trong tích tắc, có khả năng hãm động cơ một cách hiệu quả khi tín hiệu PWM xuống thấp.
www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…
Pin lipo- Pin lipo 11,1V được sử dụng để cung cấp năng lượng cho rô bốt. Mặc dù tôi đã sử dụng pin lipo 11,1 V nhưng dung lượng này nhiều hơn những gì cần thiết cho arduino và động cơ. Nếu bạn có thể tìm thấy loại pin 7,4V có trọng lượng nhẹ pin lipo hoặc pin Ni-MH 6V nó sẽ là hoàn hảo. Vì lý do này tôi phải sử dụng một bộ chuyển đổi buck để chuyển đổi điện áp thành 6V.
11.1V-
7.4 V-
Mô-đun chuyển đổi Buck-
Ngoài ra, bạn cần dây nhảy, đai ốc và bu lông, tua vít và băng dính điện cũng như dây buộc zip để đảm bảo rằng mọi thứ đều đúng vị trí.
Bước 3: Lắp ráp
gắn các động cơ và một bánh xe nhỏ vào một tấm bằng đai ốc và vít, sau đó gắn cảm biến QTR, trình điều khiển động cơ, bo mạch arduino và cuối cùng là pin vào khung.
Đây là một sơ đồ hoàn hảo mà tôi tìm thấy trên Internet, cho bạn biết các kết nối nên được thực hiện như thế nào.
Bước 4: Thiết kế tuyến đường của bạn
Bây giờ dự án của bạn dường như sắp kết thúc. Trong khi ở giai đoạn cuối, bạn cần có một đấu trường nhỏ để thử nghiệm robot của mình. Tôi đã sử dụng một đường ngẫu nhiên có chiều rộng là 3 cm đường trắng trên nền đen. Hãy chắc chắn rằng bạn dán mọi thứ tốt. Và trong thời gian này, 90 thần tượng là các giao cắt và giao cắt góc, bởi vì nó là một trường hợp phức tạp về điểm mã hóa.
Bước 5: Lập trình mã của bạn
1. Tải xuống và cài đặt Arduino
IDE máy tính để bàn
· Windows -
· Mac OS X -
· Linux -
2. Tải xuống và dán tệp mảng cảm biến QTR 8 RC vào thư mục thư viện Arduino.
·
· Dán tệp vào đường dẫn - C: / Arduino / thư viện
3. Tải xuống và mởLINEFOLLOWING.ino
4. Tải mã lên bảng arduino qua cáp USB
Bước 6: XONG !
bây giờ bạn có một dòng sau robot do chính bạn tạo ra.
Hy vọng hướng dẫn này hữu ích. Đừng ngần ngại liên hệ với tôi qua [email protected] nếu bạn có bất kỳ vấn đề nào.
hẹn gặp lại bạn với một dự án mới khác.
Thưởng thức xây dựng !!
Đề xuất:
Làm thế nào để tự động hóa ngôi nhà dựa trên IoT với Rơle điều khiển cảm biến NodeMCU: 14 bước (có hình ảnh)
Cách tạo Tự động hóa tại nhà dựa trên IoT với Rơle điều khiển cảm biến NodeMCU: Trong dự án dựa trên IoT này, tôi đã thực hiện Tự động hóa tại nhà với mô-đun rơle điều khiển Blynk và NodeMCU với phản hồi thời gian thực. Trong Chế độ Thủ công, mô-đun chuyển tiếp này có thể được điều khiển từ Điện thoại di động hoặc điện thoại thông minh và, Công tắc bằng tay. Trong Chế độ tự động, smar này
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 - Theo dõi nhiệt độ độ ẩm & chỉ số nhiệt trên M5stick-C với DHT11: 6 bước
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 | Theo dõi nhiệt độ độ ẩm và chỉ số nhiệt trên M5stick-C Với DHT11: Xin chào các bạn, trong phần hướng dẫn này, chúng ta sẽ học cách giao tiếp cảm biến nhiệt độ DHT11 với m5stick-C (một bảng phát triển của m5stack) và hiển thị nó trên màn hình của m5stick-C. Vì vậy, trong hướng dẫn này, chúng ta sẽ đọc nhiệt độ, độ ẩm & nhiệt tôi
Kết nối cảm biến DHT11 / DHT22 với đám mây với bo mạch dựa trên ESP8266: 9 bước
Kết nối cảm biến DHT11 / DHT22 với đám mây với bo mạch dựa trên ESP8266: Trong bài viết trước, tôi đã kết nối bo mạch NodeMCU dựa trên ESP8266 của mình với dịch vụ Cloud4RPi. Bây giờ, đã đến lúc cho một dự án thực sự
Theo dõi thời tiết và đồng hồ mạng dựa trên ESP8266: 3 bước (có hình ảnh)
Theo dõi thời tiết và đồng hồ mạng dựa trên ESP8266: Dự án cuối tuần ngắn và đơn giản với ESP8266 và Màn hình OLED 0,96 '' 128x64. Thiết bị là đồng hồ mạng, tức là lấy thời gian từ máy chủ ntp. Nó cũng Hiển thị thông tin thời tiết với các biểu tượng từ openweathermap.org Mô-đun ESP8266 (A
Thuyết phục bản thân chỉ sử dụng bộ biến tần dòng 12V sang dòng AC cho dây đèn LED thay vì tua lại chúng cho dòng 12V.: 3 bước
Thuyết phục bản thân chỉ sử dụng Biến tần dòng 12V sang AC cho Dây đèn LED Thay vì Tua lại chúng cho 12V.: Kế hoạch của tôi rất đơn giản. Tôi muốn cắt dây đèn LED chạy trên tường thành nhiều mảnh sau đó quấn lại để chạy hết 12 volt. Giải pháp thay thế là sử dụng bộ biến tần, nhưng tất cả chúng ta đều biết chúng kém hiệu quả kinh khủng, phải không? Bên phải? Hoặc là họ?