Obsah:

Pokročilý robot sledujúci čiaru: 22 krokov (s obrázkami)
Pokročilý robot sledujúci čiaru: 22 krokov (s obrázkami)

Video: Pokročilý robot sledujúci čiaru: 22 krokov (s obrázkami)

Video: Pokročilý robot sledujúci čiaru: 22 krokov (s obrázkami)
Video: Mluvící robot 2024, Júl
Anonim
Image
Image
Prototypovanie - perfboard
Prototypovanie - perfboard

Jedná sa o pokročilého robota sledujúceho čiaru založeného na linkovom snímači Teensy 3.6 a QTRX, ktorý som postavil a na ktorom pracujem už nejaký čas. V porovnaní s mojím predchádzajúcim robotom nasledujúcim po rade existuje niekoľko zásadných vylepšení v oblasti dizajnu a výkonu. Zlepšila sa rýchlosť a odozva robota. Celková konštrukcia je kompaktná a ľahká. Komponenty sú usporiadané blízko osi kolesa tak, aby sa minimalizoval moment hybnosti. Vysokovýkonné mikrokovové prevodové motory poskytujú dostatočný krútiaci moment a silikónové kolesá s hliníkovým nábojom ponúkajú veľmi potrebnú trakciu pri vysokých rýchlostiach. Kryt podpery a kódovače kolies umožňujú robotovi určiť jeho polohu a orientáciu. S nainštalovaným systémom Teensyview je možné zobrazovať všetky relevantné informácie a dôležité parametre programu aktualizovať pomocou tlačidiel.

Na stavbu tohto robota budete potrebovať nasledujúce zásoby (a veľa času a trpezlivosti, ktoré máte k dispozícii).

Zásoby

Elektronika

  • Vývojová rada Teensy 3.6
  • Prop Shield so snímačmi pohybu
  • Sparkfun TeensyView
  • Pololu QTRX-MD-16A pole senzora odrazu
  • 15x20cm obojstranný prototyp DPS
  • Pololu regulátor zvyšovania/znižovania napätia S9V11F3S5
  • Pololu nastaviteľný 4-5-20V zosilňovač napätia U3V70A
  • Mikroprevodový motor MP12 6V 1580 ot./min. S kodérom (x2)
  • Nosič dvojitého motora DRV8833 (x2)
  • Batéria Li-Po 3,7 V, 750 mAh
  • Vypínač ON/OFF
  • Elektrolytický kondenzátor 470uF
  • Elektrolytický kondenzátor 1000uF (x2)
  • Keramický kondenzátor 0,1uF (x5)
  • Tlačidlá (x3)
  • 10 mm zelená LED (x2)

Hardvér

  • Atom silikónové koleso 37x34mm (x2)
  • Pololu Ball Caster s 3/8 "kovovou guľou
  • N20 držiak motora (x2)
  • Skrutka a matice

Káble a konektory

  • 24AWG flexibilné vodiče
  • 24 -pinový prerušovač FFC na DIP a kábel FFC (typ A, dĺžka 150 mm)
  • Okrúhla hlavička kolíka
  • Kruhový kolíkový konektor s dlhou koncovkou
  • Pravouhlý dvojradový hlavičkový konektor
  • Pravouhlý dvojradový hlavičkový konektor
  • Mužská hlavička špendlíka
  • Mužská hlavička ihly

Nástroje

  • Multimeter
  • Spájkovačka
  • Spájkovací drôt
  • Odstraňovač drôtov
  • Drôtová rezačka

Krok 1: Prehľad systémov

Rovnako ako môj predchádzajúci návrh samovyvažovacieho robota, tento robot je súborom oddeľovacích dosiek namontovaných na perfboarde, ktorý slúži aj účelu konštrukcie.

Hlavné systémy robota sú popísané nižšie.

Mikrokontrolér: Vývojová doska Teensy 3.6 s 32-bitovým 180MHz procesorom ARM Cortex-M4.

Riadkový snímač: Polelu's QTRX-MD-16A 16-kanálový analógový výstupný rad linkových snímačov v usporiadaní strednej hustoty (rozstup snímača 8 mm).

Pohon: 6V, 1580 ot./min., Vysokovýkonné mikrokovové prevodové motory s magnetickým snímačom kolies a silikónovými kolesami osadenými na hliníkových nábojoch.

Odometria: Páry kodérov magnetických kolies na odhad súradníc a prejdenej vzdialenosti.

Senzor orientácie: Štít podpery so snímačmi pohybu na odhad polohy a smeru robota.

Napájanie: 3,7 V, 750 mAh lipo batéria ako zdroj energie. Regulátor zvyšovania/znižovania 3,3 V napája mikrokontrolér, senzory a zobrazovacie zariadenie. Oba motory poháňa nastaviteľný zvyšovací regulátor.

Užívateľské rozhranie: Teensyview na zobrazenie informácií. Oddelenie troch tlačidiel na prijímanie vstupov používateľov. Dve čísla zelených diód LED s priemerom 10 mm na indikáciu stavu počas behu.

Krok 2: Začnime s prototypovaním

Image
Image

Uvedený obvod implementujeme na perfboard. Naše oddeľovacie dosky musíme najskôr pripraviť tak, že na ne spájkujeme hlavičky. Video poskytne predstavu o tom, ktoré záhlavia by mali byť spájkované na ktoré oddeľovacie dosky.

Po spájkovaní záhlaví na oddeľovacích doskách položte úchyt Teensyview a tlačidlo na vrch Teensy.

Krok 3: Prototypovanie - perfboard

Prototypovanie - perfboard
Prototypovanie - perfboard

Zaobstarajte si prototyp perfboardu s obojstrannou stranou 15 x 20 cm a označte hranicu trvalou značkou, ako je to znázornené na obrázku. Vyvŕtajte otvory veľkosti M2 na montáž sústavy snímačov, kolieska a mikro kovových prevodových motorov na miesta označené bielym kruhom. Po spájkovaní a testovaní všetkých komponentov neskôr prerezáme dosku pozdĺž hranice.

Naše prototypovanie začneme spájkovaním kolíkov a zásuviek záhlavia na doske. Na tieto hlavičky budú neskôr vložené oddeľovacie dosky. Dávajte pozor na umiestnenie hlavičiek na perfboarde. Na základe tohto rozloženia hlavičiek spojíme všetky vodiče.

Krok 4: Prototypovanie - štít štítu

Prototypovanie - štít štítu
Prototypovanie - štít štítu
Prototypovanie - štít štítu
Prototypovanie - štít štítu
Prototypovanie - štít štítu
Prototypovanie - štít štítu
Prototypovanie - štít štítu
Prototypovanie - štít štítu

Najprv spájkujeme spojenia so štítom podpery. Pretože používame iba snímače pohybu ochranného štítu, musíme okrem 3V a uzemňovacích kolíkov ochranného štítu pripojiť iba kolíky SCL, SDA a IRQ.

Po dokončení pripojenia vložte Teensy a kryt podpery a kalibrujte snímače pohybu podľa tu uvedených krokov.

Krok 5: Prototypovanie - sila a zem

Prototypovanie - sila a zem
Prototypovanie - sila a zem

Spájkujte všetky napájacie a uzemňovacie spoje podľa obrázku. Vložte všetky oddeľovacie dosky na miesto a zaistite kontinuitu pomocou multimetra. Overte rôzne úrovne napätia na palube.

  • Li-po výstupné napätie (zvyčajne medzi 3V a 4,2V)
  • Výstupné napätie regulátora zosilnenia/spustenia (3,3 V)
  • Nastaviteľné výstupné napätie zosilňovača (nastavené na 6V)

Krok 6: Prototypovanie - nosič vodiča motora

Prototypovanie - nosič vodičov motorov
Prototypovanie - nosič vodičov motorov
Prototypovanie - nosič vodičov motorov
Prototypovanie - nosič vodičov motorov
Prototypovanie - nosič vodičov motorov
Prototypovanie - nosič vodičov motorov

Nosná doska s dvojitým motorom vodiča DRV8833 môže dodávať kontinuálne 1,2 A a 2A špičkové prúdy na kanál. Dva kanály spojíme paralelne, aby sme poháňali jeden motor. Pripojenie spájkujte podľa nižšie uvedených krokov.

  • Paralelne zapojte dva vstupy a dva výstupy nosiča ovládača motora, ako je znázornené na obrázku.
  • Pripojte vstupné riadiace vodiče k ovládaču motora.
  • Pripojte 1000uF elektrolytický kondenzátor a 0,1uF keramický kondenzátor ku konektorom Vin a Gnd dvoch dosiek nosiča.
  • Pripojte keramický kondenzátor 0,1 uF k výstupným svorkám ovládača motora.

Krok 7: Prototypovanie - záhlavie poľa snímača čiary

Prototypovanie - záhlavie poľa snímača čiary
Prototypovanie - záhlavie poľa snímača čiary
Prototypovanie - záhlavie poľa snímača čiary
Prototypovanie - záhlavie poľa snímača čiary
Prototypovanie - záhlavie poľa snímača čiary
Prototypovanie - záhlavie poľa snímača čiary
Prototypovanie - záhlavie poľa snímača čiary
Prototypovanie - záhlavie poľa snímača čiary

Teensy 3.6 má dva ADC - ADC0 a ADC1, ktoré sú multiplexované na 25 prístupných pinov. Máme prístup k akýmkoľvek dvom kolíkom z dvoch ADC súčasne. K ADC0 a ADC1 pripojíme každý osem riadkových senzorov. Senzory párneho čísla budú pripojené k ADC1 a senzory nepárneho čísla k ADC0. Pripojenie spájkujte podľa nižšie uvedených krokov. Neskôr pripojíme snímač linky pomocou adaptéra a kábla FFC k DIP.

  • Pripojte všetky párne kolíky snímača (16, 14, 12, 10, 8, 6, 4, 2) podľa obrázku. Veďte vodič na pripojenie kolíka senzora 12 cez zadnú stranu perfboardu.
  • Pripojte ovládací kolík vysielača (AJ DENNÝ) k pinu Teensy 30.
  • Pripojte všetky nepárne senzorové kolíky (15, 13, 11, 9, 7, 5, 3, 1) podľa obrázku.
  • Pripojte elektrolytický kondenzátor 470uF cez Vcc a Gnd.

Ak pozorne sledujete kolíky snímača čiar a im zodpovedajúce kolíky záhlavia na doske, všimnete si, že horný riadok snímača čiar sa mapuje na spodný riadok záhlavia na doske a naopak. Je to preto, že keď pripojíme čiarový senzor k perfboardu pomocou dvojradových pravouhlých hlavičiek, riadky sa zarovnajú správne. Trvalo mi nejaký čas, kým som to zistil a opravil priradenia pinov v programe.

Krok 8: Prototypovanie - motor s mikro prevodovkou a kodér

Prototypovanie - motor s mikro prevodovkou a kodér
Prototypovanie - motor s mikro prevodovkou a kodér
  • Zaistite mikro kovový prevodový motor pomocou snímača polohy pomocou držiakov motora N20.
  • Pripojte vodiče motora a snímača podľa obrázku.
  • Ľavý kodér - kolíky Teensy 4 a 0
  • Pravý kodér - kolíky Teensy 9 a 27

Krok 9: Prototypovanie - diódy LED

Prototypovanie - LED diódy
Prototypovanie - LED diódy
Prototypovanie - LED diódy
Prototypovanie - LED diódy

Dve diódy LED indikujú, či robot zistil zákrutu alebo nie. Na pripojenie LED k Teensy som použil odpor série 470 ohmov.

  • Ľavá LED anóda na pin Teensy 6
  • Pravá LED anóda k pinu Teensy 8

Krok 10: Prototypovanie - prestávky

Image
Image
Prototypovanie - Breakouts
Prototypovanie - Breakouts

Teraz, keď sme dokončili všetky naše spájkovanie na perfboarde, môžeme opatrne prerezať hranicu označenú na perfboarde a odstrániť ďalšie kúsky perfboardu. Tiež pripevnite dve kolesá a koliesko.

Vložte všetky oddeľovacie dosky do príslušných zásuviek. Informácie o vložení oddeľovača FFC-DIP a upevnení linkového snímača QTRX-MD-16A nájdete vo videu.

Krok 11: Prehľad softvérových knižníc

Prehľad softvérových knižníc
Prehľad softvérových knižníc

Teensy naprogramujeme v Arduino IDE. Skôr ako začneme, budeme potrebovať niekoľko knižníc. Knižnice, ktoré budeme používať, sú:

  • Kodér
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

A niektoré, ktoré boli napísané špeciálne pre tohto robota,

  • Tlačidlo
  • LineSensor
  • TeensyviewMenu
  • Motory

Knižnice špecifické pre tohto robota sú podrobne prediskutované a sú k dispozícii na stiahnutie v ďalších krokoch.

Krok 12: Vysvetlené knižnice - tlačidlo

Táto knižnica slúži na prepojenie oddeľovacej dosky s tlačidlom a Teensy. Použité funkcie sú

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

Volanie tohto konštruktora vytvorením objektu nakonfiguruje kolíky tlačidiel do režimu INPUT_PULLUP.

int8_t waitForButtonPress (neplatné);

Táto funkcia počká, kým sa nestlačí a neuvoľní tlačidlo, a vráti kód kľúča.

int8_t getSingleButtonPress (neplatné);

Táto funkcia kontroluje, či je tlačidlo stlačené a uvoľnené. Ak áno, vráti kód kľúča, inak vráti nulu.

Krok 13: Vysvetlené knižnice - čiarový snímač

LineSensor je knižnica na prepojenie poľa linkového senzora s Teensy. Nasledujú použité funkcie.

LineSensor (prázdny);

Zavolanie tohto konštruktora vytvorením objektu inicializuje ADC0 a ADC1, načíta prahové, minimálne a maximálne hodnoty z EEPROM a konfiguruje kolíky senzora do vstupného režimu a ovládací kolík emitora do výstupného režimu.

neplatná kalibrácia (uint8_t calibrationMode);

Táto funkcia kalibruje snímače linky. Kalibračný režim môže byť buď MIN_MAX alebo MEDIAN_FILTER. Táto funkcia je podrobne vysvetlená v neskoršom kroku.

void getSensorsAnalog (uint16_t *sensorValue, uint8_t mode);

Číta pole senzorov v ktoromkoľvek z troch režimov, ktoré prešli ako argument. Režim je stav žiaričov a môže byť ZAPNUTÝ, VYPNUTÝ alebo VYPÍNAČ. Režim TOGGLE kompenzuje hodnoty reflektancie snímača vplyvom okolitého svetla. Senzory pripojené k ADC0 a ADC1 sa čítajú synchrónne.

int getLinePosition (uint16_t *sensorValue);

Vypočíta polohu poľa snímača nad čiarou metódou váženého priemeru.

uint16_t getSensorsBinary (uint16_t *sensorValue);

Vráti 16-bitovú reprezentáciu stavu senzorov. Binárna indikuje, že senzor je nad čiarou, a binárna nula znamená, že senzor je mimo čiaru.

uint8_t countBinary (uint16_t binaryValue);

Odovzdaním 16-bitovej reprezentácie hodnôt senzorov do tejto funkcie sa vráti počet senzorov, ktoré sú nad čiarou.

void getSensorsNormalized (uint16_t *sensorValue, uint8_t mode);

Načíta hodnoty senzora a obmedzí každú hodnotu senzora na zodpovedajúce minimálne a maximálne hodnoty. Hodnoty senzorov sú potom mapované z ich zodpovedajúceho minimálneho až maximálneho rozsahu do 0 až 1 000 rozsahov.

Krok 14: Vysvetlené knižnice - TeensyviewMenu

TeensyviewMenu je knižnica, kde je prístup k funkciám ponuky zobrazenia. Nasledujú použité funkcie.

TeensyViewMenu (neplatné);

Volaním tohto konštruktora sa vytvorí objekt triedy LineSensor, PushButton a TeensyView.

void intro (prázdno);

Slúži na navigáciu v ponuke.

prázdny test (prázdny);

Toto sa nazýva interne v ponuke, keď sa majú hodnoty riadkových senzorov zobraziť na serveri Teensyview na testovanie.

Krok 15: Vysvetlené knižnice - motory

Motors je knižnica slúžiaca na pohon dvoch motorov. Nasledujú použité funkcie.

Motory (prázdne);

Zavolaním tohto konštruktora vytvorením objektu sa konfiguruje riadenie smeru motora a riadiace kolíky PWM do výstupného režimu.

void setSpeed (int leftMotorSpeed, int rightMotorSpeed);

Volanie tejto funkcie poháňa dva motory pri otáčkach, ktoré prechádzajú ako argumenty. Hodnota rýchlosti sa môže pohybovať od -255 do +255 so záporným znamienkom naznačujúcim, že smer otáčania je obrátený.

Krok 16: Testovanie - odometria kodéra

Otestujeme snímače magnetických kolies a zobrazíme polohu a vzdialenosť, ktorú robot prekonal.

Odovzdajte súbor DualEncoderTeensyview.ino. Program zobrazí kliešte kodéra na serveri Teensyview. Kodér zaškrtne prírastok, ak posuniete robota dopredu, a znížite, ak ho posuniete dozadu.

Teraz nahrajte súbor EncoderOdometry.ino. Tento program zobrazuje polohu robota v súradniciach x-y, zobrazuje celkovú prejdenú vzdialenosť v centimetroch a uhol otočený v stupňoch.

Na určenie polohy z kliešťov kodéra som odporučil implementáciu mŕtveho počítania odometrom na robote s R/C servo diferenciálnym pohonom od Seattle Robotics Society.

Krok 17: Testovanie - pohybové senzory Prop Shield

Uistite sa, že ste kalibrovali snímače pohybu podľa krokov uvedených tu.

Teraz nahrajte PropShieldTeensyView.ino. Na Teensyview by ste mali vidieť hodnoty akcelerometra, gyroskopu a magnetometra všetkých troch osí.

Krok 18: Prehľad programu

Program pre pokročilého sledovača riadkov je napísaný v Arduino IDE. Program funguje v nasledujúcom poradí, ktoré je vysvetlené nižšie.

  • Hodnoty uložené v EEPROM sa načítajú a zobrazí sa ponuka.
  • Po stlačení LAUNCH program vstúpi do slučky.
  • Načítajú sa normalizované hodnoty čiarových senzorov.
  • Binárna hodnota polohy riadka sa získa pomocou normalizovaných hodnôt senzora.
  • Počet senzorov, ktoré sú nad čiarou, sa vypočíta z binárnej hodnoty polohy riadka.
  • Aktualizujú sa značky kodéra a aktualizuje sa celková prejdená vzdialenosť, súradnice x-y a uhol.
  • Pre rôzne hodnoty binárneho počtu v rozsahu od 0 do 16 sa vykoná sada inštrukcií. Ak je binárny počet v rozsahu 1 až 5 a ak sú senzory, ktoré sú nad čiarou, vedľa seba, zavolá sa rutina PID. Rotácia sa vykonáva v iných kombináciách binárnej hodnoty a binárneho počtu.
  • V rutine PID (čo je vlastne rutina PD) sú motory poháňané rýchlosťami vypočítanými na základe chyby, zmeny chyby, hodnôt Kp a Kd.

Program v súčasnosti nemeria hodnoty orientácie z ochranného štítu. Prebieha príprava a práve sa aktualizuje.

Odovzdajte TestRun20.ino. V ďalších krokoch, po ktorých budeme testovať nášho robota, uvidíme, ako sa pohybovať v ponuke, upravovať nastavenia a ako kalibrovať linkové snímače.

Krok 19: Navigácia v ponuke a nastaveniach

Ponuka má nasledujúce nastavenia, ktoré je možné navigovať pomocou ľavého a pravého tlačidla a vyberať pomocou stredového tlačidla. Nastavenia a ich funkcie sú popísané nižšie.

  1. CALIBRATE: Na kalibráciu linkových senzorov.
  2. TEST: Zobrazenie hodnôt snímačov riadkov.
  3. SPUŠTENIE: Na začiatok riadok.
  4. MAXIMÁLNA RÝCHLOSŤ: Nastavenie hornej hranice rýchlosti robota.
  5. OTOČENIE RÝCHLOSTI: Nastavenie hornej hranice rýchlosti robota pri otáčaní, tj. Keď sa obe kolesá otáčajú rovnakou rýchlosťou v opačných smeroch.
  6. KP: Proporcionálna konštanta.
  7. KD: Derivátová konštanta.
  8. RUN MODE: Na výber medzi dvoma prevádzkovými režimami - NORMÁLNY a ACCL. V NORMÁLNOM režime robot beží vo vopred definovaných rýchlostiach zodpovedajúcich hodnotám polohy riadka. V režime ACCL je MAXIMÁLNA RYCHLOSŤ robota nahradená ACCL SPEED vo vopred definovaných fázach trate. Toto môže byť použité na zrýchlenie robota v priamych častiach trate. Nasledujúce nastavenia sú dostupné iba vtedy, ak je RUN MODE nastavený ako ACCL.
  9. LAP DISTANCE: Nastavenie celkovej dĺžky pretekárskej trate.
  10. RÝCHLOSŤ ACCL: Na nastavenie rýchlosti zrýchlenia robota. Táto rýchlosť nahrádza MAXIMÁLNU RÝCHLOSŤ v rôznych fázach trate, ako je definované nižšie.
  11. NIE. OF STAGES: Nastavenie počtu stupňov, v ktorých sa používa ACCL SPEED.
  12. FÁZA 1: Nastavenie počiatočných a koncových vzdialeností etapy, v ktorej je MAXIMÁLNA RÝCHLOSŤ nahradená RÝCHLOSŤOU ACCL. Začiatok a koniec vzdialenosti pre každú etapu je možné nastaviť samostatne.

Krok 20: Kalibrácia čiarového senzora

Image
Image

Kalibrácia linkového senzora je proces, pomocou ktorého sa určuje prahová hodnota každého zo 16 senzorov. Táto prahová hodnota sa používa na rozhodnutie, či je konkrétny snímač nad čiarou alebo nie. Na stanovenie prahových hodnôt 16 senzorov používame jednu z týchto dvoch metód.

MEDIÁNSKY FILTER: Pri tejto metóde sú riadkové snímače umiestnené nad bielym povrchom a pre všetkých 16 snímačov sa odoberie vopred definovaný počet snímačov. Stanovia sa stredné hodnoty všetkých 16 senzorov. Rovnaký postup sa opakuje po umiestnení linkových senzorov na čierny povrch. Prahová hodnota je priemerom stredných hodnôt čiernobielych povrchov.

MIN MAX: Pri tejto metóde sa hodnoty senzora čítajú opakovane, kým používateľ nevyzve na zastavenie. Uložia sa maximálne a minimálne hodnoty, s ktorými sa každý senzor stretne. Prahová hodnota je priemerom minimálnych a maximálnych hodnôt.

Takto získané prahové hodnoty sú mapované do rozsahu 0 až 1 000.

Kalibrácia linkových senzorov metódou MIN MAX je zobrazená na videu. Po kalibrácii linkových senzorov je možné údaje vizualizovať tak, ako je to znázornené na obrázku. Zobrazí sa nasledujúca informácia.

  • 16-bitová binárna reprezentácia polohy riadka s binárnou 1 indikujúcou, že zodpovedajúci linkový snímač je nad čiarou a binárnou 0 indikujúcou, že linkový snímač je mimo linku.
  • Počet z celkového počtu senzorov, ktoré sú nad čiarou.
  • Minimálne, maximálne a hodnoty senzorov (surové a normalizované) zo 16 senzorov, vždy jeden senzor.
  • Poloha čiary v rozsahu -7500 až +7500.

Minimálne a maximálne hodnoty snímačov sú potom uložené v EEPROM.

Krok 21: Testovacia prevádzka

Image
Image

Video je zo skúšobnej prevádzky, v ktorej je robot naprogramovaný tak, aby sa zastavil po dokončení jedného kola.

Krok 22: Záverečné myšlienky a vylepšenia

Súťaž robotov
Súťaž robotov

Hardvér zostavený na zostavenie tohto robota program, ktorý ho beží, nevyužíva v plnej miere. V programovej časti by sa dalo urobiť veľa vylepšení. Pohybové snímače podperného štítu sa v súčasnosti nepoužívajú na určovanie polohy a orientácie. Odometrické údaje z kodérov je možné kombinovať s orientačnými údajmi z ochranného štítu, aby sa presne určila poloha a smerovanie robota. Tieto údaje potom môžu byť použité na programovanie robota, aby sa naučil stopu vo viacerých kolách. Odporúčame vám experimentovať v tejto časti a podeliť sa o svoje výsledky.

Veľa štastia.

Súťaž robotov
Súťaž robotov

Druhá cena v súťaži robotov

Odporúča: