Სარჩევი:

მოწინავე ხაზის შემდგომი რობოტი: 22 ნაბიჯი (სურათებით)
მოწინავე ხაზის შემდგომი რობოტი: 22 ნაბიჯი (სურათებით)

ვიდეო: მოწინავე ხაზის შემდგომი რობოტი: 22 ნაბიჯი (სურათებით)

ვიდეო: მოწინავე ხაზის შემდგომი რობოტი: 22 ნაბიჯი (სურათებით)
ვიდეო: Выбор оборудования для перманентного макияжа: Денис Миридонов и Ольга Ханафи #hanafycolourspigments 2024, ივლისი
Anonim
Image
Image
პროტოტიპი - პერფოფორდი
პროტოტიპი - პერფოფორდი

ეს არის მოწინავე ხაზი რობოტის საფუძველზე Teensy 3.6 და QTRX ხაზის სენსორზე, რომელიც მე ავაშენე და ვმუშაობ უკვე დიდი ხანია. არსებობს მნიშვნელოვანი გაუმჯობესება დიზაინში და შესრულებაში ჩემი ადრეული რობოტის შემდეგ. რობოტის სიჩქარე და რეაგირება გაუმჯობესდა. საერთო სტრუქტურა არის კომპაქტური და მსუბუქი. კომპონენტები განლაგებულია ბორბლის ღერძთან ახლოს ისე, რომ მინიმუმამდე დაიყვანოს კუთხოვანი იმპულსი. მაღალი სიმძლავრის მიკრო ლითონის გადაცემათა ძრავები უზრუნველყოფენ ადექვატურ ბრუნვას და ალუმინის კერა სილიკონის ბორბლები უზრუნველყოფენ ძალიან საჭირო წევას მაღალი სიჩქარით. საყრდენი ფარი და ბორბლების კოდირება რობოტს საშუალებას აძლევს განსაზღვროს მისი პოზიცია და ორიენტაცია. Teensyview ბორტზე დამონტაჟებული, ყველა შესაბამისი ინფორმაციის ვიზუალიზაცია და მნიშვნელოვანი პროგრამის პარამეტრების განახლება შესაძლებელია ღილაკების გამოყენებით.

ამ რობოტის მშენებლობის დასაწყებად დაგჭირდებათ შემდეგი მარაგი (და ბევრი დრო და მოთმინება თქვენს განკარგულებაში).

მარაგები

ელექტრონიკა

  • Teensy 3.6 განვითარების საბჭო
  • საყრდენი ფარი მოძრაობის სენსორებით
  • Sparkfun TeensyView
  • Pololu QTRX-MD-16A ამრეკლავი სენსორების მასივი
  • 15x20 სმ ორმხრივი პროტოტიპი PCB
  • Pololu Step-Up/Step-Down ძაბვის რეგულატორი S9V11F3S5
  • Pololu რეგულირებადი 4-5-20V ნაბიჯ-ნაბიჯ ძაბვის რეგულატორი U3V70A
  • MP12 6V 1580 rpm მიკრო სიჩქარის ძრავა კოდირებით (x2)
  • DRV8833 Dual Motor Driver Carrier (x2)
  • 3.7V, 750 mAh Li-Po ბატარეა
  • Ჩართვა / გამორთვა
  • ელექტროლიტური კონდენსატორი 470uF
  • ელექტროლიტური კონდენსატორი 1000uF (x2)
  • კერამიკული კონდენსატორი 0.1uF (x5)
  • ღილაკები (x3)
  • 10 მმ მწვანე LED (x2)

ტექნიკა

  • ატომური სილიკონის ბორბალი 37x34 მმ (x2)
  • Pololu Ball Caster 3/8”ლითონის ბურთით
  • N20 ძრავის სამონტაჟო (x2)
  • ჭანჭიკი და თხილი

კაბელები და კონექტორები

  • 24AWG მოქნილი მავთული
  • 24 პინიანი FFC to DIP გარღვევა და FFC კაბელი (ტიპი A, სიგრძე 150 მმ)
  • მრგვალი ქალის სათაური
  • მრგვალი ქალი pin სათაური გრძელი ტერმინალი
  • მართკუთხა ორმაგი მწკრივის ქალი სათაური
  • მართკუთხა ორმაგი რიგის მამრობითი სათაური
  • მამრობითი pin სათაური
  • მამაკაცის ნემსის ქინძისთავი

ინსტრუმენტები

  • მულტიმეტრი
  • გასაყიდი რკინა
  • შედუღების მავთული
  • მავთულის სტრიპტიზიორი
  • მავთულის საჭრელი

ნაბიჯი 1: სისტემების მიმოხილვა

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

რობოტის ძირითადი სისტემები მოცემულია ქვემოთ.

მიკროკონტროლერი: Teensy 3.6 განვითარების დაფა 32-ბიტიანი 180MHz ARM Cortex-M4 პროცესორით.

ხაზის სენსორი: Pololu- ს QTRX-MD-16A 16 არხიანი ანალოგური გამომავალი ხაზის სენსორის მასივი საშუალო სიმკვრივის მოწყობით (8 მმ სენსორის მოედანზე).

წამყვანი: 6V, 1580rpm, მაღალი სიმძლავრის მიკრო ლითონის გადაცემათა კოლოფის ძრავები მაგნიტური ბორბლების კოდირებით და სილიკონის ბორბლებით, რომლებიც დამონტაჟებულია ალუმინის კერაზე.

ოდომეტრია: ბორბლის მაგნიტური კოდირების წყვილი კოორდინატებისა და დაფარული მანძილის შესაფასებლად.

ორიენტაციის სენსორი: დამცავი ფარი მოძრაობის სენსორებით რობოტის პოზიციისა და სათაურის შესაფასებლად.

კვების წყარო: 3.7V, 750mAh ლიპო ბატარეა, როგორც ენერგიის წყარო. 3.3V გაძლიერება/შემცირების მარეგულირებელი აძლიერებს მიკროკონტროლერს, სენსორებს და ჩვენების მოწყობილობას. რეგულირებადი შემდგომი რეგულატორი აძლიერებს ორ ძრავას.

მომხმარებლის ინტერფეისი: Teensyview ინფორმაციის ჩვენებისათვის. სამი ღილაკით გარღვევა მომხმარებლის შეყვანის მისაღებად. ორი ნომერი 10 მმ დიამეტრის მწვანე LED- ები სტატუსის მითითებისთვის გაშვებისას.

ნაბიჯი 2: დავიწყოთ პროტოტიპი

Image
Image

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

გარღვევის დაფებზე სათაურების შედუღების შემდეგ დააწყვეთ Teensyview და დააჭირეთ ღილაკს Teensy თავზე.

ნაბიჯი 3: პროტოტიპი - პერფორდი

პროტოტიპი - პერფოფორდი
პროტოტიპი - პერფოფორდი

მიიღეთ 15x20 სმ ორმაგი მხარის პროტოტიპის პერფორი და აღნიშნეთ საზღვარი მუდმივი მარკერით, როგორც ეს მოცემულია სურათზე. გაბურღეთ M2 ზომის ხვრელები სენსორული მასივის, ბორბლის და მიკრო ლითონის გადაცემათა ძრავების დასაყენებლად თეთრ წრეზე მონიშნულ ადგილებში. ჩვენ მოგვიანებით დავჭრით პერფორდს საზღვრის გასწვრივ ყველა კომპონენტის შედუღების და გამოცდის შემდეგ.

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

ნაბიჯი 4: პროტოტიპი - საყრდენი ფარი

პროტოტიპი - საყრდენი ფარი
პროტოტიპი - საყრდენი ფარი
პროტოტიპი - საყრდენი ფარი
პროტოტიპი - საყრდენი ფარი
პროტოტიპი - საყრდენი ფარი
პროტოტიპი - საყრდენი ფარი
პროტოტიპი - საყრდენი ფარი
პროტოტიპი - საყრდენი ფარი

ჩვენ პირველად გავაფორმებთ კავშირებს საყრდენ ფართან. ვინაიდან ჩვენ ვიყენებთ მხოლოდ დამცავი ფარის მოძრაობის სენსორებს, ჩვენ უნდა დავუკავშიროთ მხოლოდ SCL, SDA და IRQ ქინძისთავები გარდა 3V და დამცავი ფარის გრუნტისა.

კავშირის დასრულების შემდეგ, ჩადეთ Teensy და დამცავი ფარი და დააკალიბრეთ მოძრაობის სენსორები აქ მითითებული ნაბიჯების დაცვით.

ნაბიჯი 5: პროტოტიპი - ძალა და მიწა

პროტოტიპი - ძალა და მიწა
პროტოტიპი - ძალა და მიწა

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

  • Li-po გამომავალი ძაბვა (ჩვეულებრივ 3V და 4.2V შორის)
  • გაძლიერება/ქვემოთ მარეგულირებელი გამომავალი ძაბვა (3.3V)
  • რეგულირებადი შემდგომი რეგულატორი გამომავალი ძაბვა (დაყენებულია 6V)

ნაბიჯი 6: პროტოტიპი - საავტომობილო მძღოლის გადამზიდავი

პროტოტიპი - საავტომობილო მძღოლის გადამზიდავი
პროტოტიპი - საავტომობილო მძღოლის გადამზიდავი
პროტოტიპი - საავტომობილო მძღოლის გადამზიდავი
პროტოტიპი - საავტომობილო მძღოლის გადამზიდავი
პროტოტიპი - საავტომობილო მძღოლის გადამზიდავი
პროტოტიპი - საავტომობილო მძღოლის გადამზიდავი

DRV8833 ორმაგი ძრავის მძღოლის გადამზიდავი დაფა შეუძლია გადასცეს 1.2A უწყვეტი და 2A პიკური დენები თითო არხზე. ჩვენ დავაკავშირებთ ორ არხს პარალელურად ერთი ძრავის მართვისთვის. შეაერთეთ კავშირები ქვემოთ მოყვანილი ნაბიჯების შესაბამისად.

  • პარალელურად ორი შესასვლელი და ორი გამოსავალი საავტომობილო მძღოლის გადამზიდავი, როგორც ნაჩვენებია სურათზე.
  • შეაერთეთ შესასვლელი კონტროლის მავთულები ძრავის დრაივერთან.
  • შეაერთეთ 1000uF ელექტროლიტური კონდენსატორი და 0.1uF კერამიკული კონდენსატორი ორი გადამზიდი დაფის Vin და Gnd ტერმინალებზე.
  • შეაერთეთ 0.1uF კერამიკული კონდენსატორი ძრავის დრაივერის გამომავალი ტერმინალების გასწვრივ.

ნაბიჯი 7: პროტოტიპი - ხაზის სენსორული მასივის სათაური

პროტოტიპი - ხაზის სენსორული მასივის სათაური
პროტოტიპი - ხაზის სენსორული მასივის სათაური
პროტოტიპი - ხაზის სენსორული მასივის სათაური
პროტოტიპი - ხაზის სენსორული მასივის სათაური
პროტოტიპი - ხაზის სენსორული მასივის სათაური
პროტოტიპი - ხაზის სენსორული მასივის სათაური
პროტოტიპი - ხაზის სენსორული მასივის სათაური
პროტოტიპი - ხაზის სენსორული მასივის სათაური

Teensy 3.6– ს აქვს ორი ADC - ADC0 და ADC1, რომლებიც მულტიპლექსირებულია 25 ხელმისაწვდომ ქინძისთავზე. ჩვენ შეგვიძლია ერთდროულად შევიტანოთ ორი ორი პინი ორი ADC– დან. ჩვენ დავაკავშირებთ რვა ხაზის სენსორს თითოეული ADC0 და ADC1. ლუწი რიცხვის სენსორები დაუკავშირდება ADC1- ს და კენტი რიცხვების სენსორები ADC0- ს. შეაერთეთ კავშირები ქვემოთ მოყვანილი ნაბიჯების შესაბამისად. ჩვენ მოგვიანებით დავუკავშირდებით ხაზის სენსორს FFC– ს გამოყენებით DIP ადაპტერსა და კაბელს.

  • შეაერთეთ ყველა სენსორის ქინძისთავები (16, 14, 12, 10, 8, 6, 4, 2), როგორც ეს მოცემულია სურათზე. გაუშვით მავთული სენსორის პინ 12 -ის დასაკავშირებლად დაფის უკანა მხარეს.
  • შეაერთეთ emitter კონტროლის პინი (EVEN) Teensy pin 30 -თან.
  • შეაერთეთ ყველა უცნაური სენსორის ქინძისთავები (15, 13, 11, 9, 7, 5, 3, 1), როგორც ეს მოცემულია სურათზე.
  • შეაერთეთ 470uF ელექტროლიტური კონდენსატორი Vcc და Gnd– ის გასწვრივ.

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

ნაბიჯი 8: პროტოტიპი - მიკრო გადაცემათა კოლოფი და კოდირება

პროტოტიპი - მიკრო გადაცემათა კოლოფი და კოდირება
პროტოტიპი - მიკრო გადაცემათა კოლოფი და კოდირება
  • დააფიქსირეთ მიკრო ლითონის გადაცემათა კოლოფი კოდირებით N20 ძრავის სამაგრების გამოყენებით.
  • შეაერთეთ ძრავა და კოდირების მავთულები, როგორც ეს მოცემულია სურათზე.
  • მარცხენა კოდირება - მოზარდის ქინძისთავები 4 და 0
  • მარჯვენა კოდირება - მოზარდის ქინძისთავები 9 და 27

ნაბიჯი 9: პროტოტიპი - LED- ები

პროტოტიპი - LED- ები
პროტოტიპი - LED- ები
პროტოტიპი - LED- ები
პროტოტიპი - LED- ები

ორი LED ნათურა მიუთითებს რობოტმა აღმოაჩინა შემობრუნება თუ არა. მე გამოვიყენე 470 ohm სერიის რეზისტორი LED- ების Teensy– ს დასაკავშირებლად.

  • მარცხენა LED ანოდი Teensy pin 6 -ზე
  • მარჯვენა LED ანოდი Teensy pin 8 -ზე

ნაბიჯი 10: პროტოტიპი - გარღვევა

Image
Image
პროტოტიპი - გარღვევა
პროტოტიპი - გარღვევა

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

ჩადეთ ყველა გამყოფი დაფა მათ შესაბამის სოკეტებში. FFC-DIP გარღვევის ჩასასმელად და QTRX-MD-16A ხაზის სენსორის დასაფიქსირებლად იხილეთ ვიდეო.

ნაბიჯი 11: პროგრამული ბიბლიოთეკების მიმოხილვა

პროგრამული ბიბლიოთეკების მიმოხილვა
პროგრამული ბიბლიოთეკების მიმოხილვა

ჩვენ დავპროგრამებთ Teensy in Arduino IDE. სანამ დავიწყებთ, დაგვჭირდება ბიბლიოთეკები. ბიბლიოთეკები, რომლებსაც ჩვენ გამოვიყენებთ, არის:

  • კოდირება
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

ზოგი კი დაწერილია სპეციალურად ამ რობოტისთვის,

  • PushButton
  • LineSensor
  • Teensyview მენიუ
  • მოტორსი

ამ რობოტის სპეციფიკური ბიბლიოთეკები დეტალურად არის განხილული და ხელმისაწვდომია ჩამოსატვირთად მომდევნო ნაბიჯებში.

ნაბიჯი 12: ბიბლიოთეკების ახსნა - PushButton

ეს ბიბლიოთეკა განკუთვნილია თინეიჯერებთან ღილაკზე გასასვლელი დაფის დასაკავშირებლად. გამოყენებული ფუნქციებია

PushButton (int leftButtonPin, int centreButtonPin, int rightButtonPin);

ამ კონსტრუქტორის გამოძახება ობიექტის შექმნით აყენებს ღილაკზე მიმაგრებულ ღილაკებს INPUT_PULLUP რეჟიმში.

int8_t waitForButtonPress (ბათილია);

ეს ფუნქცია ელოდება სანამ ღილაკს არ დააჭერთ და გამოუშვებს და დააბრუნებს გასაღების კოდს.

int8_t getSingleButtonPress (ბათილია);

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

ნაბიჯი 13: ბიბლიოთეკების ახსნა - ხაზის სენსორი

LineSensor არის ბიბლიოთეკა ხაზის სენსორების მასივის Teensy– თან დასაკავშირებლად. ქვემოთ მოცემულია გამოყენებული ფუნქციები.

LineSensor (ბათილია);

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

ბათილად დაკალიბრება (uint8_t calibrationMode);

ეს ფუნქცია ადგენს ხაზის სენსორებს. კალიბრაციის რეჟიმი შეიძლება იყოს MIN_MAX ან MEDIAN_FILTER. ეს ფუნქცია დეტალურად არის ახსნილი შემდგომ ეტაპზე.

void getSensorsAnalog (uint16_t *sensorValue, uint8_t რეჟიმი);

კითხულობს სენსორულ მასივს სამივე რეჟიმიდან არგუმენტის სახით. რეჟიმი არის გამოსხივების მდგომარეობა და შეიძლება იყოს ON, OFF ან TOGGLE. TOGGLE რეჟიმი ანაზღაურებს სენსორის ამრეკლავი მაჩვენებლებს გარე შუქის გამო. ADC0 და ADC1– თან დაკავშირებული სენსორები იკითხება სინქრონულად.

int getLinePosition (uint16_t *sensorValue);

ითვლის სენსორული მასივის პოზიციას ხაზზე საშუალო შეწონილი მეთოდით.

uint16_t getSensorsBinary (uint16_t *sensorValue);

აბრუნებს სენსორების მდგომარეობის 16 ბიტიან გამოსახულებას. ორობითი ერთი მიუთითებს იმაზე, რომ სენსორი ხაზზე მეტია და ორობითი ნული მიუთითებს, რომ სენსორი ხაზის მიღმაა.

uint8_t რაოდენობა ორობითი (uint16_t ორობითი მნიშვნელობა);

ამ ფუნქციაზე სენსორული მნიშვნელობების 16 ბიტიანი გამოსახულების გადაცემა აბრუნებს სენსორების რაოდენობას, რომლებიც ხაზზე მეტია.

void getSensorsNormalized (uint16_t *sensorValue, uint8_t რეჟიმი);

კითხულობს სენსორის მნიშვნელობებს და ზღუდავს თითოეული სენსორის მნიშვნელობას მის შესაბამის მინიმალურ და მაქსიმალურ მნიშვნელობებამდე. სენსორის მნიშვნელობები რუქდება მათი შესაბამისი მინიდან მაქსიმალურ დიაპაზონში 0 -დან 1000 დიაპაზონამდე.

ნაბიჯი 14: ბიბლიოთეკების ახსნა - TeensyviewMenu

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

TeensyViewMenu (ბათილია);

ამ კონსტრუქტორის გამოძახება ქმნის კლასის ობიექტს LineSensor, PushButton და TeensyView.

void intro (void);

ეს არის მენიუში ნავიგაციისთვის.

ბათილი ტესტი (ბათილია);

ეს ეწოდება შინაგანად მენიუში, როდესაც ხაზის სენსორის მნიშვნელობები გამოჩნდება Teensyview– ზე შესამოწმებლად.

ნაბიჯი 15: ბიბლიოთეკების ახსნა - მოტორსი

მოტორსი არის ბიბლიოთეკა, რომელიც გამოიყენება ორი ძრავის მართვისთვის. ქვემოთ მოცემულია გამოყენებული ფუნქციები.

ძრავები (ბათილია);

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

void setSpeed (int leftMotorSpeed, int rightMotorSpeed);

ამ ფუნქციის გამოძახება ამოძრავებს ორ ძრავას არგუმენტებად გადატანილი სიჩქარით. სიჩქარის მნიშვნელობა შეიძლება იყოს -255 -დან +255 -მდე, უარყოფითი ნიშნით, რომელიც მიუთითებს როტაციის მიმართულების საპირისპიროდ.

ნაბიჯი 16: ტესტირება - კოდირების ოდომეტრია

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

ატვირთეთ DualEncoderTeensyview.ino. პროგრამა აჩვენებს კოდირების ტკიპებს Teensyview– ზე. დამშიფრავი იმატებს, თუ რობოტს წინ მიიწევთ და მცირდება თუ უკან გადააქვთ.

ახლა ატვირთეთ EncoderOdometry.ino. ეს პროგრამა აჩვენებს რობოტის პოზიციას x-y კოორდინატების თვალსაზრისით, აჩვენებს სანტიმეტრში დაფარულ საერთო მანძილს და გრადუსში გადახვეულ კუთხეს.

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

ნაბიჯი 17: ტესტირება - საყრდენი ფარის მოძრაობის სენსორები

დარწმუნდით, რომ დაკალიბრებული გაქვთ მოძრაობის სენსორები აქ მითითებული ნაბიჯების დაცვით.

ახლა ატვირთეთ PropShieldTeensyView.ino. თქვენ უნდა გქონდეთ საშუალება ნახოთ სამივე ღერძის ამაჩქარებელი, გირო და მაგნიტომეტრის მნიშვნელობა Teensyview– ზე.

ნაბიჯი 18: პროგრამის მიმოხილვა

მოწინავე ხაზის მიმდევრის პროგრამა დაწერილია Arduino IDE- ში. პროგრამა მუშაობს ქვემოთ მოცემული თანმიმდევრობით.

  • EEPROM- ში შენახული მნიშვნელობები იკითხება და მენიუ გამოჩნდება.
  • LAUNCH დაჭერით, პროგრამა შემოდის მარყუჟში.
  • ნორმალიზებული ხაზის სენსორის მნიშვნელობები იკითხება.
  • ხაზის პოზიციის ორობითი მნიშვნელობა მიიღება ნორმალიზებული სენსორის მნიშვნელობების გამოყენებით.
  • სენსორების რაოდენობის რაოდენობა, რომლებიც ხაზზეა, გამოითვლება ხაზის პოზიციის ორობითი მნიშვნელობიდან.
  • კოდირების ტკიპები განახლებულია და დაფარულია მთლიანი მანძილი, განახლებულია x-y კოორდინატები და კუთხე.
  • 0 -დან 16 -მდე ორობითი რიცხვის სხვადასხვა მნიშვნელობებისთვის, შესრულებულია ინსტრუქციების ნაკრები. თუ ორობითი რიცხვი 1 -დან 5 დიაპაზონშია და თუ სენსორები, რომლებიც ხაზის ზემოთ არიან, ერთმანეთის მიმდებარეა, ეწოდება PID რუტინას. როტაცია ხორციელდება ორობითი მნიშვნელობისა და ორობითი რიცხვის სხვა კომბინაციებში.
  • PID– ის რუტინაში (რომელიც ემყარება PD– ს რუტინას), ძრავები მოძრაობენ სიჩქარით, რომელიც გამოითვლება შეცდომის, შეცვლის შეცვლის, Kp და Kd მნიშვნელობების საფუძველზე.

პროგრამა ამჟამად არ ზომავს ორიენტაციის მნიშვნელობებს დამცავი ფარიდან. ეს არის სამუშაო, რომელიც მიმდინარეობს და განახლდება.

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

ნაბიჯი 19: ნავიგაცია მენიუში და პარამეტრებში

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

  1. კალიბრაცია: ხაზის სენსორების დაკალიბრება.
  2. ტესტი: ხაზის სენსორის მნიშვნელობების ჩვენება.
  3. გაშვება: შემდეგი ხაზის დასაწყებად.
  4. MAX SPEED: რობოტის სიჩქარის ზედა ზღვრის დასადგენად.
  5. როტაციის სიჩქარე: რობოტის სიჩქარის ზედა ზღვრის დასადგენად, როდესაც ის ასრულებს ბრუნვას, ანუ როდესაც ორივე ბორბალი თანაბარი სიჩქარით ბრუნავს საპირისპირო მიმართულებით.
  6. KP: პროპორციული მუდმივი.
  7. KD: წარმოებული მუდმივა.
  8. RUN MODE: ორ ოპერაციულ რეჟიმს შორის ასარჩევად - NORMAL და ACCL. ნორმალურ რეჟიმში, რობოტი მუშაობს წინასწარ განსაზღვრული სიჩქარით, რომელიც შეესაბამება ხაზის პოზიციის მნიშვნელობებს. ACCL რეჟიმში, რობოტის MAX SPEED შეიცვალა ACCL SPEED ტრასის წინასწარ განსაზღვრულ ეტაპებზე. ეს შეიძლება გამოყენებულ იქნას რობოტის დასაჩქარებლად ბილიკის პირდაპირ მონაკვეთებზე. შემდეგი პარამეტრები ხელმისაწვდომია მხოლოდ იმ შემთხვევაში, თუ RUN MODE დაყენებულია როგორც ACCL.
  9. წრე დისტანცია: სარბოლო ტრასის მთლიანი სიგრძის დასადგენად.
  10. ACCL SPEED: რობოტის აჩქარების სიჩქარის დასადგენად. ეს სიჩქარე ცვლის MAX SPEED– ს ბილიკის სხვადასხვა ეტაპზე, როგორც ეს განსაზღვრულია ქვემოთ.
  11. არა ეტაპები: დაადგინეთ ეტაპების რაოდენობა, სადაც გამოიყენება ACCL SPEED.
  12. ეტაპი 1: დაადგინეთ იმ ეტაპის საწყისი და დასასრული მანძილი, რომელშიც MAX SPEED შეიცვალა ACCL SPEED– ით. თითოეული ეტაპისთვის დაწყებისა და დასასრულის დისტანციები ცალკე შეიძლება განისაზღვროს.

ნაბიჯი 20: ხაზის სენსორის დაკალიბრება

Image
Image

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

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

MIN MAX: ამ მეთოდით, სენსორის მნიშვნელობები არაერთხელ იკითხება მანამ, სანამ მომხმარებელი არ მოითხოვს გაჩერებას. ინახება თითოეული სენსორის მაქსიმალური და მინიმალური მნიშვნელობები. ბარიერი მნიშვნელობა არის მინიმალური და მაქსიმალური მნიშვნელობების საშუალო.

ამგვარად მიღებული ბარიერის მნიშვნელობები ასახულია 0 -დან 1000 დიაპაზონში.

ვიდეოში ნაჩვენებია ხაზის სენსორების დაკალიბრება MIN MAX მეთოდით. ხაზის სენსორების დაკალიბრების შემდეგ, მონაცემების ვიზუალიზაცია შესაძლებელია როგორც სურათზეა ნაჩვენები. ნაჩვენებია შემდეგი ინფორმაცია.

  • ხაზის პოზიციის 16 ბიტიანი ორობითი წარმოდგენა ორობითი 1-ით, რომელიც მიუთითებს, რომ შესაბამისი ხაზის სენსორი ხაზზე მეტია და ორობითი 0 მიუთითებს, რომ ხაზის სენსორი ხაზის მიღმაა.
  • სენსორების მთლიანი რაოდენობის რაოდენობა, რომლებიც ხაზზეა.
  • მინიმალური, მაქსიმალური და სენსორული მნიშვნელობები (ნედლი და ნორმალიზებული) 16 სენსორიდან, ერთი სენსორი ერთდროულად.
  • ხაზის პოზიცია დიაპაზონში -7500 -დან +7500 -მდე.

მინიმალური და მაქსიმალური ხაზის სენსორის მნიშვნელობები ინახება EEPROM– ში.

ნაბიჯი 21: სატესტო გაშვება

Image
Image

ვიდეო არის საცდელი ეტაპი, რომელშიც რობოტი არის დაპროგრამებული, რომ გაჩერდება ერთი წრის დასრულების შემდეგ.

ნაბიჯი 22: საბოლოო აზრები და გაუმჯობესებები

რობოტების კონკურსი
რობოტების კონკურსი

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

Წარმატებები.

რობოტების კონკურსი
რობოტების კონკურსი

მეორე პრიზი რობოტების კონკურსში

გირჩევთ: