Sisukord:

Täiustatud liini jälgiv robot: 22 sammu (piltidega)
Täiustatud liini jälgiv robot: 22 sammu (piltidega)

Video: Täiustatud liini jälgiv robot: 22 sammu (piltidega)

Video: Täiustatud liini jälgiv robot: 22 sammu (piltidega)
Video: ISTANBUL TURKEY: TOP 21 UNMISSABLE Things To Do (MUST Watch Before Visiting!!!) 2024, November
Anonim
Image
Image
Prototüüpimine - Perfboard
Prototüüpimine - Perfboard

See on täiustatud liini järgiv robot, mis põhineb Teensy 3.6 ja QTRX liinianduril, mille olen ehitanud ja mille kallal olen juba mõnda aega töötanud. Minu varasema rida järgneva roboti kujunduses ja jõudluses on tehtud mõningaid olulisi parandusi. Roboti kiirus ja reageerimisvõime on paranenud. Üldine struktuur on kompaktne ja kerge. Komponendid on paigutatud ratta telje lähedale, et minimeerida nurkkiirust. Suure võimsusega mikrometallist hammasrataste mootorid tagavad piisava pöördemomendi ja alumiiniumist rummuga silikoonrattad pakuvad suurel kiirusel hädavajalikku veojõudu. Kilp ja rattakooderid võimaldavad robotil määrata oma asukoha ja orientatsiooni. Kui Teensyview on pardale paigaldatud, saab kogu asjakohast teavet visualiseerida ja programmi olulisi parameetreid nuppude abil värskendada.

Selle roboti ehitamise alustamiseks vajate järgmisi tarvikuid (ning teie käsutuses palju aega ja kannatust).

Tarvikud

Elektroonika

  • Teensy 3.6 arendusnõukogu
  • Prop Shield koos liikumisanduritega
  • Sparkfun TeensyView
  • Pololu QTRX-MD-16A peegeldusandur
  • 15x20 cm kahepoolne prototüüp PCB
  • Pololu astme-/alandamispinge regulaator S9V11F3S5
  • Pololu reguleeritav 4-5-20V pingeregulaator U3V70A
  • MP12 6V 1580 p / min mikrokäigukastiga mootor koos kodeerijaga (x2)
  • DRV8833 kahe mootoriga draiverikandja (x2)
  • 3,7 V, 750 mAh Li-Po aku
  • ON/OFF lüliti
  • Elektrolüütkondensaator 470uF
  • Elektrolüütkondensaator 1000uF (x2)
  • Keraamiline kondensaator 0.1uF (x5)
  • Nupud (x3)
  • 10 mm roheline LED (x2)

Riistvara

  • Atomi silikoonratas 37x34mm (x2)
  • Pololu palliratas 3/8”metallpalliga
  • N20 mootorikinnitus (x2)
  • Polt ja mutrid

Kaablid ja pistikud

  • 24AWG painduvad juhtmed
  • 24 -kontaktiline FFC -DIP -katkestus ja FFC -kaabel (tüüp A, pikkus 150 mm)
  • Ümmargune emane tihvti päis
  • Ümmargune emase tihvtiga päise pikk klemm
  • Täisnurkse kaherealise naissoost päis
  • Täisnurkne kaherealine isane päis
  • Isase tihvti päis
  • Isase nõela tihvti päis

Tööriistad

  • Multimeeter
  • Jootekolb
  • Jootetraat
  • Traadi eemaldaja
  • Traadi lõikur

Samm: süsteemide ülevaade

Nagu minu varasema isetasakaalustava roboti kujunduse puhul, on ka see robot purustusplaatide kogum, mis on paigaldatud parfüürile, mis täidab ka struktuuri eesmärki.

Allpool on toodud roboti peamised süsteemid.

Mikrokontroller: Teensy 3.6 arendusplaat, millel on 32-bitine 180 MHz ARM Cortex-M4 protsessor.

Liiniandur: Pololu QTRX-MD-16A 16-kanaliline analoogväljundliini anduri massiiv keskmise tihedusega (8 mm anduri samm).

Ajam: 6 V, 1580 p / min, suure võimsusega mikrometallist hammasrataste mootorid, millel on magnetiline rattakodeerija ja alumiiniumist rummudele paigaldatud silikoonrattad.

Odomeetria: magnetilised rattakodeeripaarid koordinaatide ja läbitud vahemaa hindamiseks.

Orienteerumisandur: liikumissensoritega tugikilp roboti asukoha ja suuna hindamiseks.

Toide: 3.7V, 750mAh lipo aku toiteallikana. 3.3 V üles/alla regulaator toidab mikrokontrollerit, andureid ja kuvaseadet. Reguleeritav suurendusregulaator toidab kahte mootorit.

Kasutajaliides: Teensyview teabe kuvamiseks. Kolme vajutusega nupp kasutaja sisendite vastuvõtmiseks. Kaks numbrit 10 mm läbimõõduga rohelist LED -i, mis näitavad olekut jooksmise ajal.

2. samm: alustame prototüüpimisega

Image
Image

Rakendame ülaltoodud skeemi parfüüril. Peame esmalt oma murdelauad valmis hoidma, jootades neile päised. Videost saab aimu, milliseid päiseid tuleks jootma hakata.

Pärast päiste jootmist purunemisplaatidele virnastage Teensyview ja nupuvajutus Teensy peale.

3. samm: prototüüpimine - Perfboard

Prototüüpimine - Perfboard
Prototüüpimine - Perfboard

Hankige 15x20 cm kahepoolne prototüüp ja tehke piir püsimarkeriga, nagu pildil näidatud. Puurige M2 suurusega augud andurimassiivi, rattaratta ja mikrometallist hammasrataste mootorite paigaldamiseks valge ringiga tähistatud kohtadesse. Pärast kõigi komponentide jootmist ja katsetamist lõikame parfüümi mööda piiri.

Alustame oma prototüüpimist, jootades päisepistikud ja pistikupesad perfboardil. Jaotusplaadid lisatakse nendele päistele hiljem. Pöörake hoolikalt tähelepanu päiste asukohale laual. Me ühendame kõik juhtmed selle päiste paigutuse põhjal.

4. samm: prototüüpimine - propkilp

Prototüüpimine - Prop Shield
Prototüüpimine - Prop Shield
Prototüüpimine - Prop Shield
Prototüüpimine - Prop Shield
Prototüüpimine - Prop Shield
Prototüüpimine - Prop Shield
Prototüüpimine - Prop Shield
Prototüüpimine - Prop Shield

Esmalt jootame ühendused tugikilbiga. Kuna kasutame ainult propsi varjestuse liikumisandureid, peame ühendama ainult SCL-, SDA- ja IRQ -tihvtid, välja arvatud 3V ja maandusklapi nööpnõelad.

Kui ühendus on lõpule jõudnud, sisestage Teensy ja propkilp ning kalibreerige liikumisandurid, järgides siin kirjeldatud samme.

5. samm: prototüüpimine - võimsus ja maapind

Prototüüpimine - jõud ja maa
Prototüüpimine - jõud ja maa

Jootke kõik toite- ja maandusühendused vastavalt pildile. Paigaldage kõik murdelauad oma kohale ja kindlustage järjepidevus multimeetri abil. Kontrollige pardal olevaid erinevaid pingetasemeid.

  • Li-po väljundpinge (tavaliselt vahemikus 3V kuni 4,2V)
  • Regulaatori väljundpinge (3,3 V)
  • Reguleeritav astmelise regulaatori väljundpinge (seatud 6V)

6. samm: prototüüpimine - mootorijuhi kandja

Prototüüpimine - mootorijuhi vedaja
Prototüüpimine - mootorijuhi vedaja
Prototüüpimine - mootorijuhi vedaja
Prototüüpimine - mootorijuhi vedaja
Prototüüpimine - mootorijuhi vedaja
Prototüüpimine - mootorijuhi vedaja

Kahemootorilise draiveri kandjaplaat DRV8833 võib edastada 1,2A pidevat ja 2A tippvoolu kanali kohta. Ühendame kaks kanalit paralleelselt ühe mootori juhtimiseks. Ühendage ühendused, järgides alltoodud samme.

  • Paralleelselt mootori juhi kandja kaks sisendit ja kahte väljundit, nagu pildil näidatud.
  • Ühendage sisendjuhtimisjuhtmed mootori draiveriga.
  • Ühendage 1000uF elektrolüütkondensaator ja 0,1uF keraamiline kondensaator kahe kandeplaadi Vin ja Gnd klemmide külge.
  • Ühendage 0,1 uF keraamiline kondensaator mootorijuhi väljundklemmidega.

Samm 7: Prototüüpimine - jooneanduri massiivi päis

Prototüüpimine - liinianduri massiivi päis
Prototüüpimine - liinianduri massiivi päis
Prototüüpimine - liinianduri massiivi päis
Prototüüpimine - liinianduri massiivi päis
Prototüüpimine - liinianduri massiivi päis
Prototüüpimine - liinianduri massiivi päis
Prototüüpimine - liinianduri massiivi päis
Prototüüpimine - liinianduri massiivi päis

Teensy 3.6 -l on kaks ADC -d - ADC0 ja ADC1, mis on multipleksitud 25 juurdepääsetavale tihvtile. Meil on juurdepääs kahele tihvtile kahest ADC -st korraga. Me ühendame kaheksa liiniandurit ADC0 ja ADC1 -ga. Paarnumbri andurid ühendatakse ADC1 -ga ja paaritu arvu andurid ADC0 -ga. Ühendage ühendused järgmiselt. Hiljem ühendame liinianduri FFC abil DIP -adapteri ja kaabliga.

  • Ühendage kõik paarisanduri tihvtid (16, 14, 12, 10, 8, 6, 4, 2), nagu joonisel näidatud. Viige anduri tihvti 12 ühendamise traat läbi perfboardi tagakülje.
  • Ühendage emitteri juhtnupp (EVEN) Teensy tihvtiga 30.
  • Ühendage kõik paaritu anduri tihvtid (15, 13, 11, 9, 7, 5, 3, 1), nagu pildil näidatud.
  • Ühendage 470uF elektrolüütkondensaator Vcc ja Gnd vahel.

Kui jälgite tähelepanelikult joondeanduri tihvte ja neile vastavaid päise nööpe perboardil, märkate, et jooneanduri ülemine rida kaardistub perboardi päise alumisele reale ja vastupidi. Selle põhjuseks on asjaolu, et kui me ühendame liinianduri kahepoolse täisnurkse päise abil perfboardiga, joonduvad read õigesti. Mul kulus üsna palju aega, et sellest aru saada ja programmis pin -ülesandeid parandada.

8. samm: prototüüpimine - mikrokäigumootor ja kodeerija

Prototüüpimine - Micro Gear mootor ja kodeerija
Prototüüpimine - Micro Gear mootor ja kodeerija
  • Kinnitage mikrometallist käigumootor kodeerijaga, kasutades N20 mootorikinnitusi.
  • Ühendage mootori ja kodeerija juhtmed, nagu pildil näidatud.
  • Vasak kooder - Teensy tihvtid 4 ja 0
  • Parem kooder - Teensy tihvtid 9 ja 27

9. samm: prototüüpimine - valgusdioodid

Prototüüpimine - LED -id
Prototüüpimine - LED -id
Prototüüpimine - LED -id
Prototüüpimine - LED -id

Kaks LED -i näitavad, kas robot on pöörde tuvastanud või mitte. Olen kasutanud 470-oomise seeria takisti LED-ide ühendamiseks Teensyga.

  • Vasak LED -anood kuni Teensy tihvtini 6
  • Parem LED -anood Teensy tihvtiga 8

10. samm: prototüüpimine - läbimurde

Image
Image
Prototüüpimine - purunemised
Prototüüpimine - purunemised

Nüüd, kui oleme lõpetanud kogu jootmise perfboardil, saame hoolikalt lõigata mööda perfboardile märgitud piiri ja eemaldada perfboardi lisatükid. Kinnitage ka kaks ratast ja ratas.

Sisestage kõik katkestusplaadid vastavatesse pistikupesadesse. FFC-DIP katkestuse sisestamise ja QTRX-MD-16A liinianduri kinnitamise kohta vaadake videot.

Samm 11: Tarkvara raamatukogude ülevaade

Tarkvararaamatukogude ülevaade
Tarkvararaamatukogude ülevaade

Programmeerime Teensy Arduino IDE -s. Enne alustamist vajame mõnda raamatukogu. Meie kasutatavad raamatukogud on järgmised:

  • Kodeerija
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

Ja mõned, mis on spetsiaalselt selle roboti jaoks kirjutatud,

  • PushButton
  • LineSensor
  • Menüü Teensyview
  • Mootorid

Selle roboti jaoks mõeldud raamatukogusid käsitletakse üksikasjalikult ja need on järgmiste sammude jaoks allalaadimiseks saadaval.

12. samm: raamatukogude selgitamine - nupp

See raamatukogu on mõeldud nuppude jaotusplaadi ühendamiseks Teensyga. Kasutatavad funktsioonid on

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

Selle konstruktori kutsumine objekti loomisega konfigureerib nuppude tihvtid INPUT_PULLUP režiimi.

int8_t waitForButtonPress (tühine);

See funktsioon ootab nupu vajutamist ja vabastamist ning tagastab võtmekoodi.

int8_t getSingleButtonPress (tühine);

See funktsioon kontrollib, kas nuppu vajutatakse ja vabastatakse. Kui jah, tagastab võtmekood, muidu tagastab nulli.

Samm 13: Raamatukogude selgitamine - liiniandur

LineSensor on teegi liinianduri massiivi ühendamiseks Teensyga. Kasutatavad funktsioonid on järgmised.

LineSensor (tühine);

Selle konstruktori kutsumine objekti loomisega initsialiseerib ADC0 ja ADC1, loeb EEPROM -ist läve-, miinimum- ja maksimumväärtused ning konfigureerib anduri tihvtid sisendrežiimi ja emitteri juhtnupu väljundrežiimi.

void calibrate (uint8_t calibrationMode);

See funktsioon kalibreerib liiniandureid. CalibrationMode võib olla kas MIN_MAX või MEDIAN_FILTER. Seda funktsiooni selgitatakse üksikasjalikult hilisemas etapis.

void getSensorsAnalog (uint16_t *sensorValue, uint8_t režiim);

Loeb andurmassiivi mis tahes kolmest argumendina edastatud režiimist. Režiim on heitjate olek ja see võib olla SEES, VÄLJA või LÜLITATUD. TOGGLE -režiim kompenseerib anduri näidu ümbritseva valguse peegelduvuse näitu. ADC0 ja ADC1 -ga ühendatud andureid loetakse sünkroonselt.

int getLinePosition (uint16_t *sensorValue);

Arvutab andurite massiivi asukoha joone kohal kaalutud keskmise meetodil.

uint16_t getSensorsBinary (uint16_t *sensorValue);

Tagastab andurite oleku 16-bitise esituse. Binaarne näitab, et andur on üle joone ja binaarne null näitab, et andur on liinist väljas.

uint8_t countBinary (uint16_t binaryValue);

Anduriväärtuste 16-bitise esituse edastamine sellele funktsioonile tagastab üle joone olevate andurite arvu.

void getSensorsNormalized (uint16_t *sensorValue, uint8_t režiim);

Loeb anduri väärtusi ja piirab iga anduri väärtuse vastavatele min ja max väärtustele. Seejärel kaardistatakse andurite väärtused nende vastava min -maksimaalse vahemiku vahemikku 0 kuni 1000.

14. samm: raamatukogude selgitamine - menüü TeensyviewMenu

TeensyviewMenu on teek, kust pääseb juurde ekraanimenüü funktsioonidele. Kasutatavad funktsioonid on järgmised.

TeensyViewMenu (tühine);

Selle konstruktori kutsumine loob klassi LineSensor, PushButton ja TeensyView objekti.

tühine sissejuhatus (tühine);

See on menüüs navigeerimiseks.

tühine test (tühine);

Seda nimetatakse menüüsiseselt, kui liinianduri väärtused tuleb Teensyview'is testimiseks kuvada.

15. samm: raamatukogude selgitamine - mootorid

Mootorid on raamatukogu, mida kasutatakse kahe mootori juhtimiseks. Kasutatavad funktsioonid on järgmised.

Mootorid (tühjad);

Selle konstruktori kutsumine objekti loomisega konfigureerib mootori suuna juhtimise ja PWM juhtimispoldid väljundrežiimi.

void setSpeed (int leftMotorSpeed, int rightMotorSpeed);

Selle funktsiooni kutsumine juhib kaht mootorit argumentidena edastatud kiirustel. Kiiruse väärtus võib olla vahemikus -255 kuni +255, negatiivne märk näitab, et pöörlemissuund on vastupidine.

16. etapp: testimine - kodeerija odomeetria

Katsetame magnetiliste rataste kodeerijaid ja kuvame roboti läbitud asukoha ja vahemaa.

Laadige üles DualEncoderTeensyview.ino. Programm kuvab Teensyview'is kodeerija puugid. Kooder tiksub edasi, kui liigutate robotit edasi, ja kahandab, kui liigutate robotit tahapoole.

Nüüd laadige üles EncoderOdometry.ino. See programm kuvab roboti asukoha x-y koordinaatidena, kuvab kogu läbitud vahemaa sentimeetrites ja nurga, mis on pööratud kraadides.

Seadme Robootikaühingu asukoha määramiseks olen viidanud Odomeetria rakendamisele surnud arve rakendamisel robotile, millel on R/C servo diferentsiaalkäik.

17. etapp: testimine - propkilbi liikumisandurid

Veenduge, et olete liikumisandurid kalibreerinud, järgides siin kirjeldatud samme.

Nüüd laadige üles PropShieldTeensyView.ino. Teensyview'is peaksite nägema kõigi kolme telje kiirendusmõõturi, güroskoobi ja magnetomeetri väärtusi.

18. samm: programmi ülevaade

Edasijõudnutele mõeldud programm on kirjutatud Arduino IDE -s. Programm töötab järgmises järjestuses, mida selgitatakse allpool.

  • EEPROM -i salvestatud väärtused loetakse ja kuvatakse menüü.
  • LAUNCH vajutamisel siseneb programm silmusesse.
  • Loetakse normaliseeritud liinianduri väärtusi.
  • Jooneasendi binaarväärtus saadakse anduri normaliseeritud väärtuste abil.
  • Liini ületavate andurite arvu arvutatakse rea asukoha binaarse väärtuse põhjal.
  • Kodeerija puuke uuendatakse ja läbitud vahemaad, x-y koordinaate ja nurka uuendatakse.
  • Kahendarvude erinevate väärtuste puhul vahemikus 0 kuni 16 täidetakse juhiste komplekt. Kui binaararv on vahemikus 1 kuni 5 ja kui üle joone asuvad andurid asuvad üksteise kõrval, kutsutakse välja PID -rutiin. Pööramine toimub teistes binaarse väärtuse ja kahendarvu kombinatsioonides.
  • PID -rutiinis (mis on tegelikult PD -rutiin) juhitakse mootoreid kiirustel, mis arvutatakse vea, vea muutuse, Kp ja Kd väärtuste põhjal.

Praegu ei mõõda programm propaali kaitsekilbi orientatsiooniväärtusi. See on pooleli olev töö ja seda uuendatakse.

Laadige üles TestRun20.ino. Järgmistes sammudes, mille järel katsetame oma robotit, näeme, kuidas menüüs navigeerida, seadeid kohandada ja liiniandureid kalibreerida.

19. samm: menüüs ja seadetes navigeerimine

Menüüs on järgmised seaded, mida saab navigeerida vasaku ja parema nupuga ning valida keskmise nupu abil. Seadeid ja nende funktsioone kirjeldatakse allpool.

  1. KALIBREERIMINE: liiniandurite kalibreerimiseks.
  2. TEST: Jooneandurite väärtuste kuvamiseks.
  3. LAUNCH: Järgmise stardijoone alustamiseks.
  4. MAX SPEED: Roboti kiiruse ülempiiri määramiseks.
  5. Pöörlemiskiirus: Roboti kiiruse ülempiiri seadmiseks, kui see sooritab pööret, st kui mõlemad rattad pöörlevad võrdsetel kiirustel vastassuundades.
  6. KP: Proportsionaalne konstant.
  7. KD: tuletiskonstant.
  8. RUN MODE: valida kahe töörežiimi vahel - NORMAL ja ACCL. NORMAL režiimis töötab robot eelmääratud kiirustel, mis vastavad liini asukoha väärtustele. ACCL -režiimis asendatakse raja eelmääratud etappidel roboti MAX SPEED ACCL SPEED -ga. Seda saab kasutada roboti kiirendamiseks raja sirgetel lõikudel. Järgmised seaded on saadaval ainult siis, kui RUN MODE on seatud ACCL -iks.
  9. LAP DISTANCE: Võistlusraja kogupikkuse määramiseks.
  10. ACCL SPEED: Roboti kiirenduskiiruse määramiseks. See kiirus asendab MAX SPEED raja erinevatel etappidel, nagu allpool määratletud.
  11. EI OF STADES: ACCL SPEED -i kasutamise etappide arvu määramiseks.
  12. 1. ETAPP: Määrake etapi algus- ja lõppkaugus, kus MAX SPEED asendatakse ACCL SPEED -ga. Iga etapi jaoks saab stardi- ja lõppdistantsi eraldi määrata.

20. samm: joonanduri kalibreerimine

Image
Image

Jooneanduri kalibreerimine on protsess, mille abil määratakse iga 16 anduri läviväärtus. Seda läviväärtust kasutatakse otsustamaks, kas konkreetne andur on üle liini või mitte. 16 anduri läviväärtuste määramiseks kasutame ühte kahest meetodist.

MEEDIAFILTER: Selle meetodi korral asetatakse joonandurid valge pinna kohale ja kõigi 16 anduri jaoks võetakse etteantud arv andurite näitu. Määratakse kõigi 16 anduri mediaanväärtused. Sama protsessi korratakse pärast joonandurite asetamist mustale pinnale. Läviväärtus on mustade ja valgete pindade mediaanväärtuste keskmine.

MIN MAX: Selle meetodi korral loetakse anduri väärtusi korduvalt, kuni kasutaja palub peatada. Salvestatakse iga anduri maksimaalsed ja minimaalsed väärtused. Läviväärtus on miinimum- ja maksimumväärtuste keskmine.

Sel viisil saadud läviväärtused kaardistatakse vahemikku 0 kuni 1000.

Liiniandurite kalibreerimine MIN MAX meetodil on näidatud videos. Pärast liiniandurite kalibreerimist saab andmeid visualiseerida, nagu pildil näidatud. Kuvatakse järgmine teave.

  • Jooneasendi 16-bitine binaarne esitus koos binaar 1-ga, mis näitab, et vastav jooneandur on üle joone, ja binaarne 0, mis näitab, et jooneandur on liinist väljas.
  • Liini ületavate andurite koguarv.
  • Miinimum-, maksimum- ja anduri väärtused (töötlemata ja normaliseeritud) 16 anduri kohta, üks andur korraga.
  • Liini asukoht vahemikus -7500 kuni +7500.

Seejärel salvestatakse minimaalsed ja maksimaalsed liinianduri väärtused EEPROM -i.

21. etapp: proovisõit

Image
Image

Video on proovisõidust, mille käigus robot on programmeeritud peatuma pärast ühe ringi läbimist.

22. etapp: lõplikud mõtted ja täiustused

Robotite võistlus
Robotite võistlus

Selle roboti ehitamiseks kokku pandud riistvara ei kasuta seda käivitav programm täies ulatuses. Programmi osas saab teha palju parandusi. Toetuskilbi liikumisandureid ei kasutata praegu positsiooni ja orientatsiooni määramiseks. Koodritest saadud odomeetriaandmeid saab kombineerida propsi kaitsekilbi orientatsiooniandmetega, et täpselt kindlaks määrata roboti asukoht ja suund. Neid andmeid saab seejärel kasutada, et programmeerida robot õppima rada mitmel ringil. Soovitan teil selles osas katsetada ja oma tulemusi jagada.

Edu.

Robotite võistlus
Robotite võistlus

Robotite võistluse teine auhind

Soovitan: