Mündəricat:

POLOLU QTR 8RC-Sensor Array ilə Robotun Ardınca PID əsaslı xətt: 6 addım (şəkillərlə)
POLOLU QTR 8RC-Sensor Array ilə Robotun Ardınca PID əsaslı xətt: 6 addım (şəkillərlə)

Video: POLOLU QTR 8RC-Sensor Array ilə Robotun Ardınca PID əsaslı xətt: 6 addım (şəkillərlə)

Video: POLOLU QTR 8RC-Sensor Array ilə Robotun Ardınca PID əsaslı xətt: 6 addım (şəkillərlə)
Video: How To Attach Breadboard Wires to QTR8 Sensor 2024, Iyul
Anonim
POLOLU QTR 8RC-Sensor Array ilə Robotun Ardınca PID əsaslı xətt
POLOLU QTR 8RC-Sensor Array ilə Robotun Ardınca PID əsaslı xətt

Salam!

Bu, təlimatlarla bağlı ilk yazımdır və bu gün sizi yolda aparacağam və QTR-8RC sensor sistemindən istifadə edərək robotun ardınca PID əsaslı bir xəttin necə qurulacağını izah edəcəyəm.

Robotun inşasına başlamazdan əvvəl PID adının nə olduğunu anlamalıyıq.

Addım 1: İş prinsipi

PID nədir?

PID termini, mütənasib, inteqral, törəmə deməkdir, sadəcə olaraq, PID -in xətti izləməklə etdiyimiz iş, robotun xətti izləməsini və səhvləri hesablayaraq dönüşləri aşkar etməsini əmr edirik. yoldan uzaqlaşdı.

polalu sənədlərində qeyd edildiyi kimi əsas şərtlər

Mütənasib dəyər, robotunuzun xətlə bağlı mövqeyi ilə təxminən mütənasibdir. Yəni, robotunuz dəqiq bir şəkildə mərkəzdədirsə, tam olaraq 0 nisbətli bir dəyər gözləyirik

İnteqral dəyər, robotunuzun hərəkət tarixini qeyd edir: robotun işə başladığı vaxtdan bəri qeydə alınan mütənasib müddətin bütün dəyərlərinin cəmidir

Törəmə, nisbi dəyərin dəyişmə sürətidir

Bu təlimatda yalnız Kp və Kd şərtləri haqqında danışacağıq, lakin nəticələr Ki terminindən istifadə etməklə əldə edilə bilər. Sensordan əldə etdiyimiz oxunuşlar yalnız analoq oxunmaları deyil, həm də robotun mövqe oxunuşlarıdır. Əsasən, sensor maksimum əks etdirmədən minimum əks olunmağa qədər olan 0 ilə 2500 arasında dəyərlər təmin edir, eyni zamanda robotun xətdən nə qədər uzaqlaşdığı barədə də məlumat verir.)

İndi səhv termini nəzərdən keçirməliyik, bu iki dəyərin təyin dəyərinin və cari dəyərin fərqidir. (Ayar nöqtəsi, sensorların xətlərin üstündəki "mükəmməl" yerləşdirilməsinə uyğun gələn oxunuşdur. dəyər, sensorun ani oxunuşlarıdır. Məsələn: Əgər bu dizi sensörünü istifadə edirsinizsə və 8 sensordan istifadə edirsinizsə, yerində olsanız 3500, sizdən çox uzaqda olsanız 0 ətrafında bir mövqe oxu alacaqsınız. xətti və çox haqlıysanız təxminən 7000.). Məqsədimiz xətanı sıfıra endirməkdir. Yalnız bundan sonra robot xətti rahatlıqla izləyə bilər.

Sonra hesablama hissəsi gəlir.

1) xətanı hesablayın.

Xəta = Ayar nöqtəsi dəyəri - Cari dəyər = 3500 - mövqe

8 sensordan istifadə edirəm. robot, mükəmməl yerləşdirildikdə sensor 3500 mövqe oxu verir. İndi səhvimizi, robotumuzun marşrut boyunca sürüşdüyü marjı hesabladıqdan sonra, xətanı araşdırıb mühərrik sürətini buna uyğun tənzimləmə vaxtımız gəldi.

2) mühərriklərin tənzimlənmiş sürətlərini təyin edin.

MotorSpeed = Kp * Səhv + Kd * (Xəta - Son Xəta);

LastError = Səhv;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

Məntiqlə desək, 0 -luq səhv robotumuzun sola doğru getdiyini bildirir, bu da robotumuzun bir az sağa getməsi deməkdir, bu da öz növbəsində sağ motorun yavaşlaması, sol motorun isə sürətlənməsi lazımdır. BU PIDDİR!

MotorSpeed dəyəri tənliyin özündən müəyyən edilir. RightBaseSpeed və LeftBaseSpeed, səhv sıfır olduqda robotun işlədiyi sürətlərdir (PWM 0-255 hər hansı bir dəyəri).

Əlavə etdiyim kod, sensorun mövqe dəyərlərinin necə yoxlanacağını da ehtiva edir, buna görə serial monitoru aça və kodu yükləyə bilərsiniz və mövqe dəyişdikdə mühərriklərin necə fırlandığını özünüz görə bilərsiniz.

Robotunuzu tətbiq edərkən problemlə üzləşirsinizsə, tənliklərin işarələrini dəyişdirərək yoxlayın və baxın !!!

İndi kip və kd tapmağın ən hiyləgər hissəsi robotumu mükəmməl bir şəkildə düzəltmək üçün 1 saatdan çox vaxt sərf etməli oldum. Təsadüfi dəyərlər qoymaq əvəzinə bunu təyin etmək üçün daha asan bir üsul tapdım.

  1. 0 -a bərabər olan kp və Kd ilə başlayın və Kp ilə başlayın, əvvəlcə Kp -i 1 -ə qoyun və robotu müşahidə edin, məqsədimiz titrəsə də xətti izləməkdir, robot həddindən artıq aşır və xətti itirirsə kp dəyərini azaldır. Əgər robot bir dönüş edə bilməsə və ləng dursa Kp dəyərini artırar.
  2. Robot xətti bir qədər izlədikdən sonra Kd dəyərini (Kd dəyəri> Kp dəyəri) 1 -dən başlayın və daha az yellənən hamar bir sürücü görənə qədər dəyəri artırın.
  3. Robot xətti izləməyə başladıqdan sonra sürəti artırın və xətti saxlaya biləcəyini yoxlayın.

Sürətin PID tənzimləməsinə birbaşa təsir etdiyini unutmayın və bəzən robotunuzun sürətinə uyğunlaşmaq üçün yenidən tənzimləməyə ehtiyac ola bilər.

İndi robotumuzun inşasına başlaya bilərik.

Addım 2: Quraşdırma

Qurmaq
Qurmaq
Qurmaq
Qurmaq
Qurmaq
Qurmaq

USB kabel ilə Arduino atmega 2560 - istifadə olunan əsas mikrokontrolördür.

Şassi- robot şassisi üçün başqa bir layihə üçün istifadə olunan 2 dairəvi akril lövhədən istifadə etdim. Fındıq və vintlərdən istifadə edərək 2 mərtəbəli bir şassi qurdum ki, digər modulları üst lövhəyə bağlaya biləm. hazır şassi istifadə edə bilərsiniz.

www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…

Mikrometal dişli mühərrikləri- Robotun PID rejiminin öhdəsindən gəlmək üçün sürətli fırlanan mühərriklərə ehtiyacı var, bunun üçün 6V 400 rpm-də mühərriklərdən və uyğun tutacaq təkərlərdən istifadə etmişəm.

www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…

www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…

QTR 8Rc sensor massivi - bu, əvvəllər qeyd edildiyi kimi, xətti izləmək üçün istifadə edilə bilər, düşünürəm ki, indi PID ilə sensor massivinin necə işlədiləcəyi barədə aydın bir anlayışa sahibsiniz.kod çox sadədir və mövcud arduino kitabxanalarından istifadə edə biləcəksiniz. sürətli bir xətt izləyicisi qurmaq.

www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…

TB6612FNG Motor sürücüsü-PWM siqnalı aşağı düşəndə mühərrikləri effektiv şəkildə əyləc edə bilən döngələri idarə edə bilən və istiqamətləri dəyişə bilən bir motor sürücüsündən istifadə etmək istədim.

www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…

Lipo batareyası- 11.1V lipo batareyası robotu enerji ilə təmin etmək üçün istifadə olunur.11.1 V lipo akkumulyatoru istifadə etməyimə baxmayaraq, bu tutum arduino və mühərriklər üçün lazım olandan daha çoxdur. Yüngül çəkili 7.4V tapa bilsəniz lipo batareyası və ya 6V Ni-MH batareya paketi mükəmməl olacaq. Bu səbəbdən gərginliyi 6V-a çevirmək üçün bir dollar çeviricidən istifadə etməliyəm.

11.1V-

7.4 V-

Buck çevirici modulu-https://www.ebay.com/itm/1PCS-DC-DC-LM2596-power-…

Əlavə olaraq, hər şeyin yerində olduğundan əmin olmaq üçün tullanan tellərə, qoz -fındıqlara, boltlara, tornavidalara və elektrik lentlərinə və fermuar bağlarına ehtiyacınız var.

Addım 3: Montaj

Montaj
Montaj
Montaj
Montaj
Montaj
Montaj
Montaj
Montaj

mühərrikləri və kiçik bir təkər təkərini qoz -fındıq və vintlərdən istifadə edərək boşqaba bağlayın və sonra QTR sensörünü, motor sürücüsünü, arduino lövhəsini və nəhayət batareyanı şassiyə bağlayın.

Budur, İnternetdə tapdığım mükəmməl bir diaqram, əlaqələrin necə qurulacağını izah edir.

Addım 4: Line Trackinizi Dizayn edin

Line Trackinizi Dizayn Edin
Line Trackinizi Dizayn Edin

İndi layihəniz demək olar ki, bitdi. Son mərhələdə robotunuzu sınamaq üçün kiçik bir arenaya sahib olmalısınız. Qara bir fonda təsadüfi 3 sm genişliyində ağ xətt istifadə etdik. Hər şeyi yaxşı yapışdırdığınızdan əmin olun. Və bu anda 90 degees bucaq kəsişməsindən və kəsişmələrindən qaçın, çünki kodlaşdırma baxımından mürəkkəb bir haldır.

Addım 5: Kodunuzu proqramlaşdırın

1. Arduino yükləyin və quraşdırın

Masaüstü IDE

· Pəncərələr -

· Mac OS X -

· Linux -

2. QTR 8 RC sensor serial faylını Arduino kitabxana qovluğuna yükləyib yapışdırın.

·

· Faylları yola yapışdırın - C: / Arduino / libraries

3. Yükləyin və açınLINEFOLLOWING.ino

4. Kodu USB kabel vasitəsilə arduino lövhəsinə yükləyin

Addım 6: BİTDİN

Image
Image

İndi özünüz tərəfindən hazırlanan robotu izləyən bir xəttiniz var.

Ümid edirəm bu təlimat faydalı oldu. Hər hansı bir probleminiz varsa mənimlə [email protected] vasitəsilə əlaqə saxlamaqdan çəkinməyin.

tezliklə başqa bir yeni layihə ilə görüşərik.

Binadan zövq alın !!

Tövsiyə: