Სარჩევი:
- ნაბიჯი 1: მუშაობის პრინციპი
- ნაბიჯი 2: აშენება
- ნაბიჯი 3: შეკრება
- ნაბიჯი 4: შეიმუშავეთ თქვენი ხაზის ბილიკი
- ნაბიჯი 5: დაპროგრამეთ თქვენი კოდი
- ნაბიჯი 6: შესრულებულია
ვიდეო: PID დაფუძნებული ხაზი Robot– ით POLOLU QTR 8RC– სენსორული მასივით: 6 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
გამარჯობა!
ეს არის ჩემი პირველი ჩანაწერი ინსტრუქციებზე, დღეს კი მიგიყვანთ გზაზე და აგიხსნით, თუ როგორ უნდა გააფართოვოთ 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 საათზე მეტი დამეხარჯა ჩემი რობოტის სრულყოფისთვის. შემთხვევითი მნიშვნელობების დაყენების ნაცვლად, მე ვიპოვე უფრო მარტივი მეთოდი ამის დასადგენად.
- დაიწყეთ kp და Kd 0 – ის ტოლი და დაიწყეთ Kp– ით, პირველ რიგში სცადეთ Kp– ის 1 – ზე დაკვირვება და რობოტის დაკვირვება, ჩვენი მიზანია დაიცვას ხაზი მაშინაც კი, თუ ის ცვალებადია, თუ რობოტი გადალახავს და დაკარგავს ხაზს, შეამცირეთ kp მნიშვნელობა.თუ რობოტს არ შეუძლია გადატრიალება და დუნე გაზრდის Kp მნიშვნელობას.
- როგორც კი რობოტი გარკვეულწილად მიჰყვება ხაზს დაარეგულირეთ Kd მნიშვნელობა (Kd მნიშვნელობა> Kp მნიშვნელობა) დაიწყეთ 1 -დან და გაზარდეთ მნიშვნელობა სანამ არ დაინახავთ შეუფერხებელ დისკს ნაკლები მოძრაობით.
- მას შემდეგ რაც რობოტი დაიწყებს ხაზის გაყოლებას, გაზარდეთ სიჩქარე და ნახეთ შეძლებს თუ არა ის შეინარჩუნოს და დაიცვას ხაზი.
გაითვალისწინეთ, რომ სიჩქარე პირდაპირ გავლენას ახდენს 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: შესრულებულია
ახლა თქვენ გაქვთ საკუთარი ხელით შექმნილი რობოტი.
ვიმედოვნებ, რომ ეს გაკვეთილი იყო სასარგებლო.ნუ მოგერიდებათ დამიკავშირდით [email protected] თუ რაიმე პრობლემა გაქვთ.
მალე შევხვდებით სხვა ახალ პროექტს.
ისიამოვნეთ მშენებლობით !!
გირჩევთ:
გადახვევა ერთი LCD ხაზი: 4 ნაბიჯი (სურათებით)
გადახვევა ერთი LCD ხაზი: თხევადი ბროლის ბიბლიოთეკას აქვს ორი სასარგებლო ფუნქცია scrollDisplayLeft () და scrollDisplayRight (). ეს ფუნქციები გადაადგილდება მთელ ეკრანზე. ანუ ისინი გადადიან ორივე სტრიქონზე 1602 LCD და ოთხივე სტრიქონი 2004 წლის LCD– ზე. რაც ჩვენ ხშირად გვჭირდება არის აბი
ESP32 დაფუძნებული RFID მკითხველი სენსორული ეკრანით: 7 ნაბიჯი
ESP32 დაფუძნებული RFID მკითხველი სენსორული ეკრანით: ამ მცირე ინსტრუქციით მე ვაჩვენებ, თუ როგორ უნდა შევქმნათ მარტივი RFID მკითხველი TFT გამომავალით კედელზე დასაყენებლად ESP32 DEV KIT C მოდულის, RC-522 წამკითხველი PCB და AZ-Touch ESP ნაკრების გამოყენებით. თქვენ შეგიძლიათ გამოიყენოთ ეს მკითხველი კარზე შესასვლელად ან დამრღვევი
ამინდზე დაფუძნებული მუსიკის გენერატორი (ESP8266 დაფუძნებული მიდი გენერატორი): 4 ნაბიჯი (სურათებით)
ამინდზე დაფუძნებული მუსიკის გენერატორი (ESP8266 დაფუძნებული მიდი გენერატორი): გამარჯობა, დღეს მე აგიხსნით, თუ როგორ უნდა შექმნათ თქვენი საკუთარი პატარა ამინდი მუსიკის გენერატორი. იგი ეფუძნება ESP8266- ს, რომელიც არდუინოს მსგავსია და ის პასუხობს ტემპერატურას, წვიმას და სინათლის ინტენსივობა. ნუ ელოდებით, რომ ის მთელ სიმღერებს ან აკორდს გამოიმუშავებს
ბეტონის გადამცემი ხაზი Bluetooth სპიკერი: 7 ნაბიჯი (სურათებით)
ბეტონის გადამცემი ხაზი Bluetooth სპიკერი: გამარჯობა, მე ვარ ბენი და მე მიყვარს ნივთების დამზადება. დღეს მე ვაპირებ გაჩვენოთ როგორ გააკეთოთ ბეტონის გადამცემი ხაზი Bluetooth სპიკერი. მე მინდოდა ჩემი ოთახისთვის გამეხადა თანამედროვე სპიკერი, რის გამოც ავირჩიე ბეტონი საქმისთვის. მე მქონდა ბევრი
Arduino დაფუძნებული Nextion სენსორული კონტროლი: 4 ნაბიჯი
Arduino დაფუძნებული Nextion Touch Controls: მეგობარი ეძებდა მაგარ გამოსავალს მისი მანქანის HVAC (გათბობა, ვენტილაცია, ჰაერის მდგომარეობა) სენსორული ეკრანისა და Arduino– ს საშუალებით. იდეა გამიჩნდა ჩემმა ძველმა პროექტმა გაჭიმულ ლიმუზინის ინტერიერის კონტროლის შესახებ, მაგრამ ეს