Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
PrecisionMovement Arduino kitabxanasından istifadə edərək Arduino robotunuzu müəyyən bir məsafəyə düz getməsini və ya müəyyən bir açı ilə bükülməsini təmin edin.
Bükülmə zamanı sürtünməni minimuma endirmək üçün robotun yuvarlanan bir topa və ya ekvivalentinə ehtiyacı var.
www.pololu.com/product/954
Robota müəyyən bir məsafəyə irəliləməyi və ya müəyyən bir açı ilə bükülməsini söyləyə bilərsiniz. Proqram öz mövqeyini ölü hesablamalar vasitəsi ilə müəyyənləşdirir. Mövqe hesablamaları yalnız təkər sürətinə əsaslandığından sürüşmə əhəmiyyətli səhvlərə səbəb olacaq. Robotun dizayneri sürüşmə riskini minimuma endirmək üçün diqqətli olmalıdır.
Bu SnappyXO robotu ilə işləmək üçün sınaqdan keçirilmişdir.
Addım 1: Dərsliyin yeri dəyişdirildi
Dərslik aşağıdakı səhifəyə köçürüldü. Bu dərslik artıq saxlanılmır.
sites.google.com/stonybrook.edu/premo
Addım 2: SnappyXO Diferensial Sürücü Robotu yaradın
İstifadə edəcəyimiz PreciseMovement kitabxanası yalnız diferensial sürücü robotları ilə uyğundur. Digər 2 təkərli robotlardan istifadə etməyi seçə bilərsiniz.
Addım 3: Elektronikanı qoşun
Standart SnappyXO Optik Kodlayıcı üçün:
D0 (kodlayıcı çıxışı) -> Arduino Rəqəmsal Pin
VCC -> Arduino 5V
GND -> GND
Motor və Arduino Gücü:
Motorun enerji mənbəyi istifadə etdiyiniz mühərriklərə uyğun olmalıdır. SnappyXO dəsti üçün motor gücü üçün 4AA, Arduino gücü üçün 9V batareya istifadə olunur. Hamısının ortaq bir GND olduğuna əmin olun.
Addım 4: PreciseMovement Arduino Kitabxanasını quraşdırın
Yüklə:
github.com/jaean123/PreciseMovement-library/releases
Arduino Kitabxanasını necə quraşdırmaq olar:
wiki.seeedstudio.com/How_to_install_Arduino_Library/
Addım 5: Kod
Arduino Kodu:
create.arduino.cc/editor/ whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview
Bu parametrlər tənzimləmə tələb edir. Kodda tövsiyə olunan etiketli digər parametrlər daha yaxşı performans üçün tənzimlənə bilər.
- Motor pinlərini ARDUINO PINS altında yoxlayın və quraşdırın.
-
LENGTH və RADIUS -u təyin edin.
- UZUNLUQ, sol təkərdən sağ təkərə olan məsafədir.
- RADIUS təkərin radiusudur.
-
PULSES_PER_REV -ni təyin edin, bu kodlayıcı bir təkər inqilabı üçün çıxan pulsların sayıdır.
- Enkoderlərin təkər şaftından oxumaq üçün bağlı olmadığı təqdirdə, bu, bir motor mili inqilabı üçün enkoderin çıxdığı puls sayından fərqlidir.
- PULSES_PER_REV = (motor milinin bir inqilabı üçün pulslar) x (dişli nisbəti)
-
Robotun irəli hərəkətindən sonra atış etdiyini görürsünüzsə STOP_LENGTH təyin edin.
Təxmini mövqe hədəfdən STOP_LENGTH uzaqlaşdıqda robot dayanacaq. Beləliklə, STOP_LENGTH, robotun dayanması üçün lazım olan təxmini məsafədir
-
PID parametrləri
KP_FW: Bu irəli hərəkətin mütənasib komponentidir. Robot düz gedənə qədər bunu artırın. Bunu düzəltməklə düz yola gedə bilmirsinizsə, ehtimal ki, cihaz günahkardır. (məsələn, təkərlərin uyğunsuzluğu və s.)
KP_TW: Bu, PID bükülmə hərəkətinin mütənasib komponentidir. Sadəcə aşağı bir dəyərdən başlayın və bükülmə sürəti və ya bükülmə zamanı robotun açısal sürəti kifayət qədər sürətli olana qədər artırın, ancaq aşmağa səbəb olmayın. Müşahidələr aparmaq üçün, loop funksiyasına aşağıdakıları daxil edərək robotu 0 -dan 90 -a və geriyə dəyişə bilərsiniz
KP_FW tənzimləmək üçün bunu döngəyə qoyun:
mover.forward (99999);
KP_TW -ni tənzimləmək üçün 0 -dan 90 -a qədər dəyişmək üçün bunu döngəyə qoyun:
mover.twist (90); // Twist 90 CW
gecikmə (2000);
mover.twist (-90) // Twist 90 CCW
gecikmə (2000);
Nəzərə alın ki, TARGET_TWIST_OMEGA -da açısal sürəti əslində bükmək üçün KI_TW -ni də tənzimləmək lazımdır, çünki mütənasib nəzarətçi heç vaxt dəqiq hədəfə çatmayacaq. Bununla birlikdə, bu açı sürətində bükülməyə ehtiyac yoxdur. Bucaq sürətinin kifayət qədər yavaş olması lazımdır.
Addım 6: Necə Çalışır
Bunun necə işlədiyi ilə maraqlanırsınızsa, oxuyun.
İrəli hərəkət düz bir yolda təmiz təqib alqoritmi ilə düz saxlanılır. Saf təqibdə daha çox:
Bükülmə PID nəzarətçisi bükülmə açısal sürətini TARGET_TWIST_OMEGA səviyyəsində saxlamağa çalışır. Qeyd edək ki, bu açısal sürət təkərlərin deyil, bütün robotun bucaq sürətidir. Yalnız bir PID nəzarətçisi istifadə olunur və çıxışı həm sol, həm də sağ mühərriklərin PWM yazma sürətidir. Bucağı hesablamaq üçün ölü hesablamalar aparılır. Bucaq səhv həddinə çatdıqda robot dayanır.