Სარჩევი:

PID დაფუძნებული ხაზი Robot– ით POLOLU QTR 8RC– სენსორული მასივით: 6 ნაბიჯი (სურათებით)
PID დაფუძნებული ხაზი Robot– ით POLOLU QTR 8RC– სენსორული მასივით: 6 ნაბიჯი (სურათებით)

ვიდეო: PID დაფუძნებული ხაზი Robot– ით POLOLU QTR 8RC– სენსორული მასივით: 6 ნაბიჯი (სურათებით)

ვიდეო: PID დაფუძნებული ხაზი Robot– ით POLOLU QTR 8RC– სენსორული მასივით: 6 ნაბიჯი (სურათებით)
ვიდეო: აკონტროლეთ AC ბოლქვი Arduino AC Dimmer– ით 2024, ნოემბერი
Anonim
PID დაფუძნებული ხაზი Robot– ით POLOLU QTR 8RC– სენსორული მასივით
PID დაფუძნებული ხაზი Robot– ით POLOLU QTR 8RC– სენსორული მასივით

გამარჯობა!

ეს არის ჩემი პირველი ჩანაწერი ინსტრუქციებზე, დღეს კი მიგიყვანთ გზაზე და აგიხსნით, თუ როგორ უნდა გააფართოვოთ PID დაფუძნებული ხაზი რობოტის შემდეგ QTR-8RC სენსორული მასივის გამოყენებით.

რობოტის შენობაზე გადასვლამდე, ჩვენ უნდა გვესმოდეს, რასაც ჰქვია PID,

ნაბიჯი 1: მუშაობის პრინციპი

რა არის PID ??

ტერმინი PID ნიშნავს პროპორციულ, ინტეგრალურ, წარმოებულს. ასე რომ, რასაც ჩვენ ვაკეთებთ PID– ის ჩართვით შემდეგი ხაზით, ჩვენ ვაძლევთ ბრძანებას რობოტს დაიცვას ხაზი და გამოავლინოს შემობრუნებები შეცდომის გამოთვლით იმის გათვალისწინებით, თუ როგორ შორს გადავიდა გზიდან.

ძირითადი ტერმინები, როგორც ნახსენებია პოლალუს დოკუმენტებში

პროპორციული მნიშვნელობა დაახლოებით პროპორციულია თქვენი რობოტის პოზიციის მიმართ ხაზთან მიმართებაში. ანუ, თუ თქვენი რობოტი ზუსტად არის ორიენტირებული ხაზზე, ჩვენ ველოდებით პროპორციულ მნიშვნელობას ზუსტად 0

ინტეგრალური მნიშვნელობა აღწერს თქვენი რობოტის მოძრაობის ისტორიას: ეს არის პროპორციული ტერმინის ყველა მნიშვნელობის ჯამი, რომელიც ჩაწერილია რობოტის მუშაობის დაწყების დღიდან

წარმოებული არის პროპორციული მნიშვნელობის ცვლილების მაჩვენებელი

ამ სამეურვეოში ჩვენ ვისაუბრებთ მხოლოდ Kp და Kd ტერმინებზე, თუმცა, შედეგების მიღწევა შესაძლებელია Ki ტერმინის გამოყენებითაც. კითხვები, რომელსაც ჩვენ ვიღებთ სენსორიდან, არის არა მხოლოდ ანალოგური კითხვა, არამედ რობოტის პოზიციური კითხვაც.. ასე რომ, ძირითადად სენსორი უზრუნველყოფს მნიშვნელობებს 0 -დან 2500 -მდე, მაქსიმალური ამრეკლავიდან მინიმალურ ამრეკლამდე, მაგრამ, ამავე დროს, ასევე გვაწვდის ინფორმაციას იმის შესახებ, თუ რამდენად შორს არის რობოტი ხაზიდან.)

ახლა ჩვენ უნდა გავითვალისწინოთ შეცდომის ტერმინი, ეს არის განსხვავება ორი მნიშვნელობის მითითებული მნიშვნელობისა და მიმდინარე მნიშვნელობისა. მნიშვნელობა არის სენსორის მყისიერი კითხვა. მაგალითად: თუ თქვენ იყენებთ ამ მასივის სენსორს და იყენებთ 8 სენსორს, თქვენ მიიღებთ პოზიტიურ მაჩვენებელს 3500, თუ ადგილზე ხართ, 0 -ზე თუ თქვენ ძალიან შორს ხართ ხაზი და დაახლოებით 7000 თუ ძალიან შორს ხართ.) ჩვენი მიზანია შეცდომა ნულოვანი გავხადოთ. მხოლოდ ამის შემდეგ შეუძლია რობოტს შეუფერხებლად დაიცვას ხაზი.

შემდეგ მოდის გაანგარიშების ნაწილი,.

1) გამოთვალეთ შეცდომა.

შეცდომა = მითითებული მნიშვნელობა - მიმდინარე მნიშვნელობა = 3500 - პოზიცია

ვიყენებ 8 სენსორს. სენსორი იძლევა პოზიტიურ მაჩვენებელს 3500 როდესაც რობოტი იდეალურად არის განთავსებული. ახლა, როდესაც ჩვენ გამოვთვალეთ ჩვენი შეცდომა, ზღვარი, რომლითაც ჩვენი რობოტი მოძრაობს ბილიკზე, დროა ჩვენ გავაანალიზოთ შეცდომა და შესაბამისად შევცვალოთ ძრავის სიჩქარე

2) განსაზღვრეთ ძრავების მორგებული სიჩქარე.

MotorSpeed = Kp * შეცდომა + Kd * (შეცდომა - LastError);

LastError = შეცდომა;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

ლოგიკურად რომ ვთქვათ, 0 -ის შეცდომა ნიშნავს იმას, რომ ჩვენი რობოტი არის მარცხნივ, რაც იმას ნიშნავს, რომ ჩვენი რობოტი უნდა წავიდეს ოდნავ მარჯვნივ, რაც თავის მხრივ ნიშნავს, რომ მარჯვენა ძრავა უნდა შენელდეს და მარცხენა ძრავა უნდა აჩქარდეს. ეს არის PID!

MotorSpeed მნიშვნელობა განისაზღვრება თავად განტოლებიდან. RightBaseSpeed და LeftBaseSpeed არის სიჩქარეები (PWM 0-255 ნებისმიერი მნიშვნელობა), რომლითაც რობოტი მუშაობს, როდესაც შეცდომა ნულის ტოლია.

კოდი, რომელიც მე დავამატე ასევე შეიცავს იმას, თუ როგორ უნდა შევამოწმოთ სენსორის პოზიციური მნიშვნელობები, ასე რომ თქვენ შეგიძლიათ გახსნათ სერიული მონიტორი და ატვირთოთ კოდი და თავად დარწმუნდეთ ხაზში როგორ ბრუნავს ძრავები პოზიციის ცვალებადობისას.

თუ რობოტის განხორციელებისას პრობლემები შეგექმნათ, უბრალოდ შეამოწმეთ თუ არა და ნახეთ განტოლების ნიშნების შეცვლით !!!

ახლა კი ყველაზე რთული ნაწილი KP და KD- ის პოვნა, მე მომიწია 1 საათზე მეტი დამეხარჯა ჩემი რობოტის სრულყოფისთვის. შემთხვევითი მნიშვნელობების დაყენების ნაცვლად, მე ვიპოვე უფრო მარტივი მეთოდი ამის დასადგენად.

  1. დაიწყეთ kp და Kd 0 – ის ტოლი და დაიწყეთ Kp– ით, პირველ რიგში სცადეთ Kp– ის 1 – ზე დაკვირვება და რობოტის დაკვირვება, ჩვენი მიზანია დაიცვას ხაზი მაშინაც კი, თუ ის ცვალებადია, თუ რობოტი გადალახავს და დაკარგავს ხაზს, შეამცირეთ kp მნიშვნელობა.თუ რობოტს არ შეუძლია გადატრიალება და დუნე გაზრდის Kp მნიშვნელობას.
  2. როგორც კი რობოტი გარკვეულწილად მიჰყვება ხაზს დაარეგულირეთ Kd მნიშვნელობა (Kd მნიშვნელობა> Kp მნიშვნელობა) დაიწყეთ 1 -დან და გაზარდეთ მნიშვნელობა სანამ არ დაინახავთ შეუფერხებელ დისკს ნაკლები მოძრაობით.
  3. მას შემდეგ რაც რობოტი დაიწყებს ხაზის გაყოლებას, გაზარდეთ სიჩქარე და ნახეთ შეძლებს თუ არა ის შეინარჩუნოს და დაიცვას ხაზი.

გაითვალისწინეთ, რომ სიჩქარე პირდაპირ გავლენას ახდენს PID– ის რეგულირებაზე და შეიძლება ზოგჯერ დაგჭირდეთ გადატვირთვა თქვენი რობოტის სიჩქარის შესატყვისად.

ახლა ჩვენ შეგვიძლია დავიწყოთ ჩვენი რობოტის მშენებლობა.

ნაბიჯი 2: აშენება

აღმაშენებელი
აღმაშენებელი
აღმაშენებელი
აღმაშენებელი
აღმაშენებელი
აღმაშენებელი

Arduino atmega 2560 USB კაბელით - ეს არის მთავარი მიკროკონტროლერი, რომელიც გამოიყენება.

შასი- რობოტის შასისთვის მე გამოვიყენე 2 წრიული აკრილის ფირფიტა, რომელიც გამოიყენება სხვა პროექტისთვის, რომელიც იდეალურია ამისათვის. თხილითა და ხრახნებით მე ავაშენე 2 სართულიანი შასი, ისე რომ სხვა მოდულები დავამატო ზედა ფირფიტაზე. ან თქვენ შეგიძლიათ გამოიყენოთ მზა შასი.

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

მიკრომეტალური გადაცემათა ძრავები- რობოტს სჭირდებოდა სწრაფი მბრუნავი ძრავები, რათა გაუმკლავდეს PID რუტინას, ამისთვის მე გამოვიყენე ძრავები, რომლებიც შეფასებულია 6V 400rpm- ზე და შესაფერისი დამჭერი ბორბლები.

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

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

QTR 8Rc სენსორული მასივი - ეს შეიძლება გამოყენებულ იქნას ხაზების თვალთვალისთვის, როგორც უკვე აღვნიშნე, მე ვფიქრობ, რომ თქვენ ახლა უკვე ნათლად გესმით, თუ როგორ გამოიყენოთ სენსორული მასივი PID– ით.კოდი ძალიან მარტივია და არსებული arduino ბიბლიოთეკების გამოყენებით თქვენ შეძლებთ ავაშენოთ სწრაფი ხაზის მიმდევარი.

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

TB6612FNG საავტომობილო დრაივერი-მინდოდა გამომეყენებინა ძრავის მძღოლი, რომელსაც შეეძლო გადახვევა და მიმართულებების შეცვლა სწრაფად, რომელსაც შეუძლია ეფექტურად დაამუხრუჭოს ძრავები, როდესაც PWM სიგნალი დაბალია.

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

ლიპო ბატარეა- 11.1 ვ ლიპო ბატარეა გამოიყენება რობოტის ენერგიის უზრუნველსაყოფად.მიუხედავად იმისა, რომ მე გამოვიყენე 11.1 ვ ლიპო ბატარეა, ეს სიმძლავრე იმაზე მეტია ვიდრე საჭიროა არდუინოს და ძრავებისთვის.თუ თქვენ იპოვით მსუბუქ წონაში 7.4 ვ lipo ბატარეა ან 6V Ni-MH ბატარეის პაკეტი იქნება სრულყოფილი. ამ მიზეზის გამო მე უნდა გამოვიყენო მამალიანი გადამყვანი ძაბვის 6 ვ-ზე გადასაყვანად.

11.1V-

7.4 V-

მამალი კონვერტორი მოდული-

გარდა ამისა, თქვენ გჭირდებათ ჯამპერის მავთულები, თხილი და ჭანჭიკები, ხრახნები და ელექტრული ლენტები და ასევე სამაგრები, რომ დარწმუნდეთ, რომ ყველაფერი ადგილზეა.

ნაბიჯი 3: შეკრება

აწყობა
აწყობა
აწყობა
აწყობა
აწყობა
აწყობა
აწყობა
აწყობა

მიამაგრეთ ძრავები და პატარა ბორბალი ფირფიტაში თხილითა და ხრახნებით და შემდეგ დააინსტალირეთ QTR სენსორი, ძრავის მძღოლი, არდუინოს დაფა და ბოლოს ბატარეა შასისზე.

აქ არის ინტერნეტში აღმოჩენილი სრულყოფილი დიაგრამა, რომელიც გეუბნებათ როგორ უნდა მოხდეს კავშირის დამყარება.

ნაბიჯი 4: შეიმუშავეთ თქვენი ხაზის ბილიკი

შეიმუშავეთ თქვენი ხაზის სიმღერა
შეიმუშავეთ თქვენი ხაზის სიმღერა

ახლა თქვენი პროექტი თითქმის დასრულებულია.როგორც ბოლო ეტაპზე თქვენ უნდა გქონდეთ პატარა არენა რობოტის შესამოწმებლად. მე გამოვიყენე შემთხვევითი ხაზი 3 სმ სიგანის თეთრი ხაზით შავ ფონზე. დარწმუნდით, რომ ყველაფერი კარგად ჩასვით. და ამ დროისთვის 90 გრადუსიანი კუთხის კვეთისა და კვეთის თავიდან ასაცილებლად, რადგან ეს არის რთული შემთხვევა კოდირების თვალსაზრისით.

ნაბიჯი 5: დაპროგრამეთ თქვენი კოდი

1. ჩამოტვირთეთ და დააინსტალირეთ Arduino

დესკტოპის IDE

· ფანჯრები -

· Mac OS X -

· Linux -

2. ჩამოტვირთეთ და ჩასვით QTR 8 RC სენსორული მასივის ფაილი Arduino ბიბლიოთეკების საქაღალდეში.

·

· ჩასვით ფაილები გზაზე - C: / Arduino / ბიბლიოთეკები

3. ჩამოტვირთეთ და გახსენითLINEFOLLOWING.ino

4. ატვირთეთ კოდი arduino დაფაზე USB კაბელის საშუალებით

ნაბიჯი 6: შესრულებულია

Image
Image

ახლა თქვენ გაქვთ საკუთარი ხელით შექმნილი რობოტი.

ვიმედოვნებ, რომ ეს გაკვეთილი იყო სასარგებლო.ნუ მოგერიდებათ დამიკავშირდით [email protected] თუ რაიმე პრობლემა გაქვთ.

მალე შევხვდებით სხვა ახალ პროექტს.

ისიამოვნეთ მშენებლობით !!

გირჩევთ: