Kazalo:

Napredni sledilni robot: 22 korakov (s slikami)
Napredni sledilni robot: 22 korakov (s slikami)

Video: Napredni sledilni robot: 22 korakov (s slikami)

Video: Napredni sledilni robot: 22 korakov (s slikami)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Julij
Anonim
Image
Image
Izdelava prototipov - Perfboard
Izdelava prototipov - Perfboard

To je napredna linija, ki sledi robotu, ki temelji na linijskem senzorju Teensy 3.6 in QTRX, ki sem ga izdelal in na katerem delam že kar nekaj časa. V moji prejšnji liniji po robotu je pri oblikovanju in delovanju nekaj večjih izboljšav. Hitrost in odziv robota sta se izboljšala. Celotna struktura je kompaktna in lahka. Sestavni deli so razporejeni blizu osi kolesa, tako da se kotni moment čim bolj zmanjša. Visoko zmogljivi mikro kovinski zobniški motorji zagotavljajo ustrezen navor, silikonska platišča iz aluminijevega pesta pa prepotreben oprijem pri visokih hitrostih. Podporni ščitnik in dajalniki koles omogočajo robotu, da določi svoj položaj in usmeritev. Z vgrajenim sistemom Teensyview si lahko ogledate vse pomembne informacije in posodobite pomembne parametre programa s pomočjo gumbov.

Za začetek izdelave tega robota boste potrebovali naslednje zaloge (in veliko časa in potrpljenja na voljo).

Zaloge

Elektronika

  • Teensy 3.6 razvojni odbor
  • Podporni ščit s senzorji gibanja
  • Sparkfun TeensyView
  • Niz senzorskih odbojev Pololu QTRX-MD-16A
  • 15x20cm dvostranski prototip PCB
  • Regulator napetosti Pololu Step-Up/Step-Down S9V11F3S5
  • Pololu nastavljiv regulator napetosti 4-5-20V U3V70A
  • MP12 6V 1580 vrt / min mikro gonilni motor z dajalnikom (x2)
  • DRV8833 Nosilec z dvojnim motorjem (x2)
  • 3.7V, 750mAh Li-Po baterija
  • Stikalo za vklop/izklop
  • Elektrolitski kondenzator 470uF
  • Elektrolitski kondenzator 1000uF (x2)
  • Keramični kondenzator 0,1uF (x5)
  • Gumbi (x3)
  • 10 mm zelena LED (x2)

Strojna oprema

  • Atom silikonsko kolo 37x34mm (x2)
  • Kolesa za žogico Pololu s kovinsko kroglo 3/8”
  • Nosilec motorja N20 (x2)
  • Vijaki in matice

Kabli in priključki

  • Prilagodljive žice 24AWG
  • 24 -polni odklop FFC -DIP in kabel FFC (tip A, dolžina 150 mm)
  • Okrogla ženska nožica
  • Okrogla ženska nožica z dolgim terminalom
  • Ženska glava v dveh vrsticah pod pravim kotom
  • Pravokotni dvovrstni moški zaglavnik
  • Moški pin pin
  • Moški zatič za iglo

Orodja

  • Multimeter
  • Spajkalnik
  • Spajkalna žica
  • Odstranjevalec žice
  • Rezalnik žice

1. korak: Pregled sistemov

Tako kot pri moji prejšnji zasnovi samo uravnoteženega robota je tudi ta robot sklop odbojnih plošč, nameščenih na plošči, ki služi tudi namenu konstrukcije.

Glavni sistemi robota so opisani spodaj.

Mikrokrmilnik: Teensy 3.6 razvojna plošča z 32-bitnim 180MHz ARM Cortex-M4 procesorjem.

Line senzor: Pololujev QTRX-MD-16A 16-kanalni analogni izhodni linijski senzorski niz v razporeditvi srednje gostote (8 mm nagiba senzorja).

Pogon: 6V, 1580rpm, visokozmogljivi mikro kovinski zobniški motorji z magnetnim dajalnikom koles in silikonskimi kolesi, nameščenimi na aluminijastih pestih.

Odometrija: pari dajalnikov magnetnih koles za oceno koordinat in prevožene razdalje.

Orientacijski senzor: Podporni ščit s senzorji gibanja za oceno položaja in smeri robota.

Napajanje: 3,7 V, 750 mAh lipo baterija kot vir energije. Regulator koraka navzgor/navzdol 3.3V napaja mikrokrmilnik, senzorje in prikazovalno napravo. Nastavljiv povečevalni regulator poganja dva motorja.

Uporabniški vmesnik: Teensyview za prikaz informacij. Prekinitev s tremi gumbi za sprejemanje vnosov uporabnikov. Dve številki zelenih LED s premerom 10 mm za prikaz stanja med delovanjem.

2. korak: Začnimo s prototipiranjem

Image
Image

Zgornje vezje bomo izvajali na plošči. Najprej moramo pripraviti naše odbojne plošče tako, da na njih spajkamo glave. Videoposnetek bo predstavil, katere glave je treba spajkati na katere prelomne plošče.

Ko spajkate glave na odbojne plošče, zložite Teensyview in odtis z gumbom na vrh Teensyja.

3. korak: Izdelava prototipov - Perfboard

Izdelava prototipov - Perfboard
Izdelava prototipov - Perfboard

Pridobite dvostransko prototipno ploščo velikosti 15x20 cm in označite mejo s trajnim markerjem, kot je prikazano na sliki. Izvrtajte luknje velikosti M2 za vgradnjo senzorskega niza, kolesca in mikro kovinskih zobniških motorjev na mestih, označenih z belim krogom. Perfboard bomo kasneje razrezali vzdolž meje po spajkanju in testiranju vseh sestavnih delov.

S prototipiranjem bomo začeli spajkati zatiče glave in vtičnice na plošči. Prelomne plošče bodo kasneje vstavljene v te glave. Bodite pozorni na položaj glav na plošči. Na podlagi te postavitve glav bomo povezali vse žice.

4. korak: Izdelava prototipov - Prop Shield

Prototipizacija - Prop Shield
Prototipizacija - Prop Shield
Prototipizacija - Prop Shield
Prototipizacija - Prop Shield
Prototipizacija - Prop Shield
Prototipizacija - Prop Shield
Prototipizacija - Prop Shield
Prototipizacija - Prop Shield

Najprej bomo spajkali povezave na oporni ščit. Ker uporabljamo samo senzorje gibanja ščitnika opornika, moramo poleg 3V in ozemljitvenih zatičev ščitnika opornika priključiti samo nožice SCL, SDA in IRQ.

Ko je povezava končana, vstavite Teensy in podporni ščit ter kalibrirajte senzorje gibanja, tako da sledite tukaj navedenim korakom.

5. korak: izdelava prototipov - moč in tla

Prototipi - moč in tla
Prototipi - moč in tla

Spajkajte vse napajalne in ozemljitvene povezave, ki se nanašajo na sliko. Vstavite vse odklopne plošče in zagotovite neprekinjenost z multimetrom. Preverite različne ravni napetosti na krovu.

  • Li-po izhodna napetost (običajno med 3V in 4.2V)
  • Izhodna napetost regulatorja koraka navzgor/navzdol (3,3 V)
  • Nastavljiva izhodna napetost regulatorja (nastavljeno na 6V)

Korak 6: Izdelava prototipov - Nosilec voznika motorja

Izdelava prototipov - prevoznik voznika motorja
Izdelava prototipov - prevoznik voznika motorja
Izdelava prototipov - prevoznik voznika motorja
Izdelava prototipov - prevoznik voznika motorja
Izdelava prototipov - prevoznik voznika motorja
Izdelava prototipov - prevoznik voznika motorja

Nosilna plošča gonilnika DRV8833 z dvojnim motorjem lahko oddaja 1,2A neprekinjene in 2A največje tokove na kanal. Dva kanala bomo vzporedno povezali za pogon enega motorja. Spajate povezave, tako da sledite spodnjim korakom.

  • Vzporedno dva vhoda in dva izhoda nosilca gonilnika motorja, kot je prikazano na sliki.
  • Vhodne krmilne žice priključite na gonilnik motorja.
  • Priključite elektrolitski kondenzator 1000uF in keramični kondenzator 0,1uF preko sponk Vin in Gnd obeh nosilnih plošč.
  • Na izhodne sponke gonilnika motorja priključite 0,1uF keramični kondenzator.

Korak 7: Prototipiranje - Glava matrike senzorskega tipa

Prototipiranje - Glava matrike senzorskega tipa
Prototipiranje - Glava matrike senzorskega tipa
Prototipiranje - Glava matrike senzorskega tipa
Prototipiranje - Glava matrike senzorskega tipa
Prototipiranje - Glava matrike senzorskega tipa
Prototipiranje - Glava matrike senzorskega tipa
Prototipiranje - Glava matrike senzorskega tipa
Prototipiranje - Glava matrike senzorskega tipa

Teensy 3.6 ima dva ADC -ja - ADC0 in ADC1, ki sta multipleksirana na 25 dostopnih nožic. Dostopimo lahko do poljubnih dveh zatičev z obeh ADC -jev hkrati. Na ADC0 in ADC1 bomo povezali po osem linijskih senzorjev. Senzorji za sodo število bodo povezani z ADC1, senzorji za lihe številke pa na ADC0. Spajate povezave, tako da sledite spodnjim korakom. Kasneje bomo linijski senzor s FFC priključili na DIP adapter in kabel.

  • Povežite vse enakomerne nožice senzorja (16, 14, 12, 10, 8, 6, 4, 2), kot je prikazano na sliki. Žico za priključitev senzorskega zatiča 12 napeljite skozi hrbtno stran plošče.
  • Kontrolni zatič oddajnika (ČAK) priključite na Teensy pin 30.
  • Priključite vse lihe nožice senzorja (15, 13, 11, 9, 7, 5, 3, 1), kot je prikazano na sliki.
  • Priključite elektrolitski kondenzator 470uF na Vcc in Gnd.

Če pozorno opazujete zatiče linijskega senzorja in ustrezne zatiče glave na plošči, boste opazili, da se zgornja vrstica linijskega senzorja preslika v spodnjo vrstico glave na plošči in obratno. To je zato, ker ko se linijski senzor povežemo s ploščo z dvema vrsticama pod pravim kotom, se vrstice pravilno poravnajo. Kar nekaj časa sem potreboval, da sem to ugotovil in popravil dodelitev pin v programu.

8. korak: Izdelava prototipov - motor in dajalnik mikro zobnikov

Prototipiranje - motor in dajalnik mikro zobnikov
Prototipiranje - motor in dajalnik mikro zobnikov
  • Pritrdite mikro kovinski zobniški motor z dajalnikom z nosilci motorja N20.
  • Priključite žice motorja in dajalnika, kot je prikazano na sliki.
  • Levi kodirnik - Teensy zatiči 4 in 0
  • Desni dajalnik - Teensy zatiči 9 in 27

9. korak: izdelava prototipov - LED

Prototipiranje - LED
Prototipiranje - LED
Prototipiranje - LED
Prototipiranje - LED

Dve LED diodi označujeta, ali je robot zaznal zavoj ali ne. Za priključitev LED na Teensy sem uporabil upor serije 470 ohmov.

  • Leva LED anoda do Teensy pin 6
  • Desna LED anoda na Teensy pin 8

10. korak: izdelava prototipov - prelomi

Image
Image
Prototipi - prelomi
Prototipi - prelomi

Zdaj, ko smo končali vse svoje spajkanje na plošči, lahko previdno prerežemo mejo, označeno na plošči, in odstranimo dodatne koščke plošče. Pritrdite tudi dve kolesi in kolesce.

Vstavite vse odklopne plošče v ustrezne vtičnice. Če želite vstaviti odmik FFC-DIP in pritrditi linijski senzor QTRX-MD-16A, glejte video.

11. korak: Pregled knjižnic programske opreme

Pregled knjižnic programske opreme
Pregled knjižnic programske opreme

Teensy bomo programirali v Arduino IDE. Preden začnemo, bomo potrebovali nekaj knjižnic. Knjižnice, ki jih bomo uporabljali, so:

  • Kodirnik
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

In nekateri, ki so bili napisani posebej za tega robota,

  • Pritisni gumb
  • LineSensor
  • TeensyviewMenu
  • Motorji

Knjižnice, značilne za tega robota, so podrobno obravnavane in so na voljo za prenos v naslednjih korakih.

12. korak: Razložene knjižnice - PushButton

Ta knjižnica je namenjena povezovanju odmične plošče s tipkami s Teensyjem. Uporabljene funkcije so

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

Klic tega konstruktorja z ustvarjanjem predmeta konfigurira zatiče tipk na način INPUT_PULLUP.

int8_t waitForButtonPress (void);

Ta funkcija počaka, dokler pritisnete in spustite gumb, in vrne kodo ključa.

int8_t getSingleButtonPress (void);

Ta funkcija preveri, če pritisnete in spustite gumb. Če da, vrne kodo ključa, sicer vrne nič.

13. korak: Razložene knjižnice - linijski senzor

LineSensor je knjižnica za povezovanje nizov linijskih senzorjev s Teensyjem. Spodaj so navedene uporabljene funkcije.

LineSensor (nično);

Klicanje tega konstruktorja z ustvarjanjem objekta inicializira ADC0 in ADC1, odčita prag, najnižje in največje vrednosti iz EEPROM -a in konfigurira zatiče senzorja v način vnosa, krmilni pin oddajnika pa v način izhoda.

void calibrate (uint8_t calibrationMode);

Ta funkcija umerja linijske senzorje. Način calibrationMode je lahko MIN_MAX ali MEDIAN_FILTER. Ta funkcija je podrobneje razložena v naslednjem koraku.

void getSensorsAnalog (uint16_t *sensorValue, način uint8_t);

Prebere niz senzorjev v katerem koli od treh načinov, posredovanih kot argument. Način je stanje oddajnikov in je lahko ON, OFF ali TOGGLE. Način TOGGLE kompenzira odčitke senzorja zaradi zunanje svetlobe. Senzorji, povezani z ADC0 in ADC1, se berejo sinhrono.

int getLinePosition (uint16_t *sensorValue);

Izračuna položaj niza senzorjev nad črto po metodi tehtanega povprečja.

uint16_t getSensorsBinary (uint16_t *sensorValue);

Vrne 16-bitno predstavitev stanja senzorjev. Binarna označuje, da je senzor nad črto, binarna nič pa, da je senzor izven črte.

uint8_t countBinary (uint16_t binaryValue);

Če tej funkciji prenesete 16-bitno predstavitev vrednosti senzorjev, se vrne število senzorjev, ki so nad črto.

void getSensorsNormalized (uint16_t *sensorValue, način uint8_t);

Odčita vrednosti senzorja in omeji vsako vrednost senzorja na ustrezne vrednosti min in max. Vrednosti tipala se nato preslikajo iz ustreznega območja min do max do območja od 0 do 1000.

Korak 14: Razložene knjižnice - TeensyviewMenu

TeensyviewMenu je knjižnica, kjer lahko dostopate do funkcij prikazanega menija. Spodaj so navedene uporabljene funkcije.

TeensyViewMenu (nično);

Klic tega konstruktorja ustvari objekt razreda LineSensor, PushButton in TeensyView.

void intro (void);

To je za krmarjenje po meniju.

preskus void (void);

To se pokliče znotraj menija, ko naj se vrednosti linijskega senzorja prikažejo v Teensyviewu za testiranje.

Korak 15: Razložene knjižnice - motorji

Motors je knjižnica, ki se uporablja za pogon obeh motorjev. Spodaj so navedene uporabljene funkcije.

Motorji (prazni);

Klicanje tega konstruktorja z ustvarjanjem predmeta konfigurira krmiljenje smeri motorja in krmilne zatiče PWM na izhodni način.

void setSpeed (int leftMotorSpeed, int rightMotorSpeed);

Klic te funkcije poganja oba motorja pri hitrostih, ki sta bila podana kot argumenta. Vrednost hitrosti se lahko giblje od -255 do +255 z negativnim predznakom, ki kaže, da je smer vrtenja obrnjena.

Korak 16: Testiranje - Odometrija kodirnika

Preizkusili bomo dajalnike magnetnih koles in prikazali položaj in razdaljo, ki jo pokriva robot.

Naložite DualEncoderTeensyview.ino. Program prikaže kodre kodirnika na Teensyview. Dajalnik označuje povečanje, če premaknete robota naprej, in zmanjšanje, če ga premaknete nazaj.

Zdaj naložite EncoderOdometry.ino. Ta program prikazuje položaj robota v smislu x-y koordinat, prikazuje celotno prevoženo razdaljo v centimetrih in kot, obrnjen v stopinjah.

Seattle Robotics Society sem za določitev položaja iz kodirnikov označil izvedbo mrtvega štetja z Odometrijo na robotu s servo diferencialnim pogonom R/C.

Korak 17: Preizkušanje - Senzorji gibanja ščitnika za oporo

Prepričajte se, da ste kalibrirali senzorje gibanja, tako da sledite tukaj navedenim korakom.

Zdaj naložite PropShieldTeensyView.ino. V Teensyviewu bi morali videti vrednosti merilnika pospeška, žiroskopa in magnetometra vseh treh osi.

18. korak: Pregled programa

Program za naprednega sledilca linij je napisan v Arduino IDE. Program deluje v naslednjem vrstnem redu, opisanem spodaj.

  • Vrednosti, shranjene v EEPROM -u, se preberejo in prikaže se meni.
  • Ko pritisnete tipko LAUNCH, program vstopi v zanko.
  • Normirane vrednosti linijskega senzorja se odčitajo.
  • Binarna vrednost položaja črte je pridobljena z normaliziranimi vrednostmi senzorja.
  • Štetje števila senzorjev, ki so nad črto, se izračuna iz binarne vrednosti položaja črte.
  • Kodo kodirnika posodobimo in posodobimo skupno razdaljo, x-y koordinate in kot.
  • Za različne vrednosti binarnega števila od 0 do 16 se izvede niz navodil. Če je binarno štetje v razponu od 1 do 5 in če so senzorji, ki so čez črto, med seboj, se pokliče rutina PID. Rotacija se izvaja v drugih kombinacijah binarne vrednosti in binarnega štetja.
  • V rutini PID (ki je v bistvu tudi rutina PD) se motorji poganjajo s hitrostmi, izračunanimi na podlagi napake, spremembe napake, vrednosti Kp in Kd.

Program trenutno ne meri orientacijskih vrednosti iz ščitnika. To delo je v teku in se posodablja.

Naložite TestRun20.ino. V naslednjih korakih, po katerih bomo preizkusili našega robota, bomo videli, kako krmariti po meniju, prilagoditi nastavitve in kako umeriti linijske senzorje.

19. korak: Krmarjenje po meniju in nastavitvah

V meniju so naslednje nastavitve, po katerih lahko krmarite z levim in desnim gumbom ter jih izberete s sredinskim gumbom. Spodaj so opisane nastavitve in njihove funkcije.

  1. CALIBRATE: Za umerjanje linijskih senzorjev.
  2. TEST: Za prikaz vrednosti senzorja linije.
  3. LAUNCH: Za začetek naslednje vrstice.
  4. MAX SPEED: Za nastavitev zgornje meje hitrosti robota.
  5. ROTATE HITROST: Za nastavitev zgornje meje hitrosti robota, ko izvaja zavoj, to je, ko se obe kolesi obračata z enako hitrostjo v nasprotnih smereh.
  6. KP: Sorazmerna konstanta.
  7. KD: Izpeljana konstanta.
  8. RUN MODE: Za izbiro med dvema načinoma delovanja - NORMAL in ACCL. V NORMALNEM načinu robot deluje z vnaprej določenimi hitrostmi, ki ustrezajo vrednostim položaja črte. V načinu ACCL se MAX SPEED robota nadomesti z ACCL SPEED na vnaprej določenih stopnjah proge. To lahko uporabite za pospešitev robota na ravnih odsekih proge. Naslednje nastavitve so dostopne samo, če je NAČIN RUN nastavljen na ACCL.
  9. LAP DISTANCE: Za nastavitev skupne dolžine dirkalne proge.
  10. ACCL SPEED: Za nastavitev pospeševalne hitrosti robota. Ta hitrost nadomešča MAX SPEED na različnih stopnjah proge, kot je definirano spodaj.
  11. NE. STOPNJ: Za nastavitev števila stopenj, kjer se uporablja ACCL SPEED.
  12. STOPNJA 1: Za nastavitev začetne in končne razdalje stopnje, pri kateri je MAX SPEED zamenjana z ACCL SPEED. Za vsako stopnjo je mogoče začetno in končno razdaljo nastaviti ločeno.

20. korak: Umerjanje senzorja linije

Image
Image

Umerjanje linijskega senzorja je postopek, s katerim se določi mejna vrednost vsakega od 16 senzorjev. Ta mejna vrednost se uporablja za odločitev, ali je določeno tipalo nad črto ali ne. Za določitev mejnih vrednosti 16 senzorjev uporabimo eno od obeh metod.

MEDIAN FILTER: Pri tej metodi se linijski senzorji postavijo nad belo površino in za vseh 16 senzorjev se izvede vnaprej določeno število odčitkov senzorjev. Določene so mediane vrednosti vseh 16 senzorjev. Enak postopek se ponovi, ko senzorje linije postavite na črno površino. Mejna vrednost je povprečje srednjih vrednosti črno -belih površin.

MIN MAX: Pri tej metodi se vrednosti senzorjev večkrat berejo, dokler uporabnik ne zahteva ustavitve. Največje in najmanjše vrednosti, ki jih zazna vsak senzor, se shranijo. Mejna vrednost je povprečje najnižje in največje vrednosti.

Tako dobljene mejne vrednosti so preslikane v območje od 0 do 1000.

Umerjanje linijskih senzorjev po metodi MIN MAX je prikazano v videu. Po umerjanju linijskih senzorjev si lahko podatke vizualiziramo, kot je prikazano na sliki. Prikažejo se naslednje informacije.

  • 16-bitna binarna predstavitev položaja linije z binarnim 1, ki označuje, da je ustrezno linijsko tipalo nad črto, in binarno 0, ki označuje, da je linijsko tipalo izven črte.
  • Štetje skupnega števila senzorjev, ki so čez črto.
  • Najmanjše, največje in vrednosti senzorjev (surove in normalizirane) 16 senzorjev, en senzor naenkrat.
  • Položaj črte v območju od -7500 do +7500.

Najmanjša in največja vrednost linijskega senzorja se nato shranita v EEPROM.

21. korak: Testni zagon

Image
Image

Videoposnetek je testnega teka, v katerem je robot programiran, da se ustavi po preteku enega kroga.

Korak: Zadnje misli in izboljšave

Natečaj Roboti
Natečaj Roboti

Strojna oprema, ki je sestavljena za izdelavo tega robota, programa, ki ga izvaja, ne uporablja v celoti. V programskem delu bi lahko naredili veliko izboljšav. Senzorji gibanja ščitnika opornika se trenutno ne uporabljajo za določanje položaja in orientacije. Podatke o kilometrski razdalji iz kodirnikov je mogoče združiti z orientacijskimi podatki iz ščitnika za natančno določanje položaja in smeri robota. Ti podatki se lahko nato uporabijo za programiranje robota za učenje proge v več krogih. Spodbujam vas, da na tem delu eksperimentirate in delite svoje rezultate.

Vso srečo.

Natečaj Roboti
Natečaj Roboti

Druga nagrada na natečaju Roboti

Priporočena: