Kazalo:
- Zaloge
- 1. korak: Pregled sistemov
- 2. korak: Začnimo s prototipiranjem
- 3. korak: Izdelava prototipov - Perfboard
- 4. korak: Izdelava prototipov - Prop Shield
- 5. korak: izdelava prototipov - moč in tla
- Korak 6: Izdelava prototipov - Nosilec voznika motorja
- Korak 7: Prototipiranje - Glava matrike senzorskega tipa
- 8. korak: Izdelava prototipov - motor in dajalnik mikro zobnikov
- 9. korak: izdelava prototipov - LED
- 10. korak: izdelava prototipov - prelomi
- 11. korak: Pregled knjižnic programske opreme
- 12. korak: Razložene knjižnice - PushButton
- 13. korak: Razložene knjižnice - linijski senzor
- Korak 14: Razložene knjižnice - TeensyviewMenu
- Korak 15: Razložene knjižnice - motorji
- Korak 16: Testiranje - Odometrija kodirnika
- Korak 17: Preizkušanje - Senzorji gibanja ščitnika za oporo
- 18. korak: Pregled programa
- 19. korak: Krmarjenje po meniju in nastavitvah
- 20. korak: Umerjanje senzorja linije
- 21. korak: Testni zagon
- Korak: Zadnje misli in izboljšave
Video: Napredni sledilni robot: 22 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
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
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
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
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
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
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
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
- 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
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
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
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.
- CALIBRATE: Za umerjanje linijskih senzorjev.
- TEST: Za prikaz vrednosti senzorja linije.
- LAUNCH: Za začetek naslednje vrstice.
- MAX SPEED: Za nastavitev zgornje meje hitrosti robota.
- 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.
- KP: Sorazmerna konstanta.
- KD: Izpeljana konstanta.
- 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.
- LAP DISTANCE: Za nastavitev skupne dolžine dirkalne proge.
- ACCL SPEED: Za nastavitev pospeševalne hitrosti robota. Ta hitrost nadomešča MAX SPEED na različnih stopnjah proge, kot je definirano spodaj.
- NE. STOPNJ: Za nastavitev števila stopenj, kjer se uporablja ACCL SPEED.
- 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
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
Videoposnetek je testnega teka, v katerem je robot programiran, da se ustavi po preteku enega kroga.
Korak: Zadnje misli in izboljšave
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.
Druga nagrada na natečaju Roboti
Priporočena:
Mandalorijski sledilni trak MVRK: 8 korakov (s slikami)
Mandalorski sledilnik MVRK: Četrti maj je, sicer znan kot Dan vojn zvezd, praznik, ki nam je zelo blizu in nam je pri srcu. Letos smo se odločili, da ga praznujemo nekoliko drugače kot pretekla leta. Z izkustveno tehnologijo in projektom ustvarjalca smo se lotili kompleksnega pristopa in se obrnili
Micro: bitni senzor vida MU - sledilni objekti: 6 korakov
Senzor vida Micro: bit MU - Sledilni predmeti: To je moj četrti vodnik do vidnega senzorja MU za micro: bit. Tukaj bom opisal, kako slediti objektom z micro: bitom in zapisati koordinate na zaslon OLED. V drugih vodičih sem prebral, kako mikro: bit priključiti na
Arduino -sledilni zvezdni sledilnik 'Scotch Mount' za astrofotografijo: 7 korakov (s slikami)
Arduino Powered 'Scotch Mount' Star Tracker za astrofotografijo: Za Scotch Mount sem se naučil, ko sem bil mlajši, in sem se z očetom srečal pri 16 letih. To je poceni in preprost način, da začnete z astrofotografijo, ki zajema osnove pred vami pojdite na zapletene teleskopske zadeve prvega
RC sledilni robot z uporabo Arduina - korak za korakom: 3 koraki
RC sledilni robot z uporabo Arduina - korak za korakom: Hej fantje, vrnil sem se s še enim super robotskim ohišjem podjetja BangGood. Upam, da ste šli skozi naše prejšnje projekte - Spinel Crux V1 - Robot z gestami, Spinel Crux L2 - Robot Arduino Pick and Place z robotskimi rokami in The Badland Braw
ISS sledilni globus: 6 korakov (s slikami)
Globus za sledenje ISS: Mednarodna vesoljska postaja je eden vrhuncev človeške tehnologije in kdo ne bi želel vedeti njegove lokacije vsako minuto? Seveda nihče. Torej, v tem navodilu vam bomo pokazali, kako sestaviti sledilnik lokacije z LED diodami,