Turinys:

„Nerf“chronografas ir ugnies statinės greitis: 7 žingsniai
„Nerf“chronografas ir ugnies statinės greitis: 7 žingsniai

Video: „Nerf“chronografas ir ugnies statinės greitis: 7 žingsniai

Video: „Nerf“chronografas ir ugnies statinės greitis: 7 žingsniai
Video: My DIY Arduino chronograph 2024, Lapkritis
Anonim
Image
Image
„Nerf“chronografas ir ugnies statinės greitis
„Nerf“chronografas ir ugnies statinės greitis

Įvadas

Kaip tinklelis, visada labai malonu matyti skaičiavimo rezultatus. Daugelis iš mūsų jau anksčiau modifikavome „Nerf“ginklus ir kam nepatinka mesti putų gabalus per namus daugiau nei 100 kadrų per sekundę greičiu?

Visą gyvenimą pakeitęs daugybę „Nerf“ginklų, pradedant nuo tada, kai buvau su tėčiu ~ 10 metų, iki dabar, kai aš ir mano sugyventiniai ir toliau putojame po butą vienas į kitą, aš visada norėjau tiksliai žinoti, kaip greitai skrenda smiginis, ir kiek smiginio per sekundę šaudo mano sugyventiniai „Rapid-Strike“. Yra komercinių „Nerf“ir „Airsoft“chronografų, tačiau didelio tikslumo jie yra brangūs, ir smagu juos pasigaminti patiems. Jei norite nusipirkti, „Nerf“išleido statinę, beveik identišką toje, kuri buvo parodyta šiame projekte (su geresniu pramoniniu dizainu), ir ją galite rasti čia:

„Nerf Modulus Ghost-Ops Chrono Barrel“

„Nerf“versija taip pat maitinama baterijomis ir rodo smiginio šaudymo skaitiklį. „Instructable“čia taip pat yra ekranas ir atstatymo mygtukas, tačiau greičiui apskaičiuoti priklauso nuo smiginio ilgio ir neatrodo, kad jis naudoja pertraukas. Pagrindinis šio projekto dėmesys bus skiriamas nuosekliam ryšiui (kaip paprastą pavyzdį, kurį nebuvo lengva rasti internete) ir pertraukų naudojimui tiksliam laiko nustatymui. Tikėtina, kad dėl tų pačių priežasčių tai gali būti lengvai paversta „airsoft“chronografu, naudojant griežtesnį gaubtą ir geresnę „airsoft“ginklų tvirtinimo sistemą. Nenaudojant pertraukų, kodas gali būti lėtesnis ir ne toks efektyvus, taip pat daug sunkiau laiku nustatyti mikrosekundes, nes milisekundės nesukurs tikslių smiginio greičio verčių.

Aš per daug nesikoncentruosiu į korpuso dizainą, nors „GitHub“yra STL failų, nes kiekvienas gali tiesiog nusipirkti „Nerf“versiją, kuri tikrai yra geresnė tikram žaidimui, tačiau būsima jos versija gali sušvelninti rezultatus.

Pagrindiniai principai (mokymosi rezultatai):

  • Turi standartinės „Nerf“statinės formą
  • Fototransistorių naudojimas kaip smiginio laiko vartai.
  • Parodo „Adruino“pertraukimų naudojimą laiko nustatymui
  • Apdorojimo naudojimas su „Arduino“nuosekliam ryšiui

Projekto apimtis:

Aš planuoju apžvelgti daugiausia šio projekto specifiką su trumpomis apžvalgomis ir rekomenduoju perskaityti „Arduino“ir „Processsing“nuorodas, kad gautumėte daugiau informacijos. Tai neišmokys jūsų lituoti, bet labiau to, kaip integruoti „Arduino“ir „Processing“bei naudoti pertraukas. Didžioji šio mokymosi dalis bus skaitant tikrąjį komentuojamą kodą, todėl įsitikinkite, kad perskaitėte visą kodą prieš aklai įkeldami ir bandydami jį pradėti veikti.

Panašių projektų pranašumai:

  • Pertraukų naudojimas tiksliam didelio greičio matavimui
  • Platus derinimo skyrius fototransistoriams
  • Ugnies greičio (ROF) skaičiavimas, išvesties raundai per sekundę (RPS)
  • Viso ekrano kompiuterio sąsaja - nenaudinga mūšio metu, bet puiku, jei norite kitiems parodyti rezultatus sraute ar „Youtube“su ekrano įrašymo įrenginiu.
  • Galima pritaikyti „Airsoft“ar „Paintball“, pakeitus tik gaubtą
  • Nereikia pasirinktinių PCB (būtų malonu ateityje atnaujinti, bet kiekvienas gali tai padaryti už palyginti mažą kainą
  • Bendra kaina yra mažesnė nei 10 USD, kai dalys yra atskirtos ir jei yra 3D spausdintuvas - prilyginama komercinėms išlaidoms, pridėjus ROF

1 žingsnis: reikalingos dalys ir įrankiai

Reikalingos dalys ir įrankiai
Reikalingos dalys ir įrankiai

Jei turite 3D spausdintuvą, tai jums bus puikus projektas, nes aš pateiksiu korpuso failus. Nesivaržykite atnaujinti korpusą. Po ranka neturėjau jokių LCD ekranų, tačiau antrojoje versijoje, tikiuosi, bus skystųjų kristalų ekranas ir bus naudojama „WEMOS D1“ar panaši „WiFi/BT“įjungta plokštė ir baterija. Tai leis registruoti duomenis mobiliajame telefone ir realaus laiko atsiliepimus - pavyzdžiui, kiek smiginio liko ginkle. Rekomenduojama šiek tiek lituoti, jei nesijaučiate patogiai, rekomenduoju vadovautis litavimo instrukcija ir tikriausiai nusipirkti papildomų elektroninių komponentų.

Reikalingi įrankiai:

  1. Lituoklis
  2. Karšto oro pūstuvas/ kaitinimo pistoletas/ žiebtuvėlis (jei naudojamas šilumos susitraukimas)
  3. Vielos nuėmikliai
  4. „Mini -B“USB kabelis (arba koks kabelis reikalingas jūsų mikrovaldikliui)
  5. Karštas klijų pistoletas arba panašus (aš naudoju 3D spausdinimo rašiklį, kad pritvirtinčiau visus komponentus prie 3D spausdinimo korpuso)

Reikalingos medžiagos:

  1. 22AWG kieto gyslos viela, pvz., Vientisos vielos laidų rinkinys 22AWG
  2. „Arduino Nano“(arba panašus, aš naudoju kloną), pvz.: 3 x „Arduino Nano“(klonas)
  3. Rezistorių rinkinys (2 x 220 omų, 2 x 220 000 omų) Galbūt sėkmingai galėsite naudoti mažesnės vertės išskleidžiamuosius rezistorius, pvz., 47 k Trikčių šalinimo vadove aprašoma, kaip nustatyti, ar ištraukiamas rezistorius yra tinkama jūsų konkretaus fototransistoriaus ir šviesos diodų rinkinio vertė. Dėl šios priežasties aš rekomenduoju įsigyti rinkinį: pvz., Rezistorių rinkinį
  4. 2 x IR šviesos diodai, pvz., IR LED ir fototransistorių rinkinys
  5. 2 x fototranzistorius
  6. 1 x 3D spausdintas gaubtas - IR nepermatomoje gijoje („Hatchbox Silver“dirbo ir buvo vienintelė mano išbandyta spalva)
  7. Visus projekto failus galite rasti čia „GitHub“ir pridėtame ZIP faile. STL taip pat galima rasti „Thingiverse“čia.

2 žingsnis: „Breadboard“bandymas

Duonos lentos testavimas
Duonos lentos testavimas
Duonos lentos testavimas
Duonos lentos testavimas

Kai elektronika atvyksta, lydmetalis veda prie fototransistorių ir IR šviesos diodų ~ 20-30 cm derinimui, aš rekomenduoju juos šilumos susitraukti. Neturėjau tinkamo dydžio šilumos susitraukimo ir šiam prototipui turėjau naudoti elektros juostą. Tai leis jums juos naudoti bandymams gaubte. Jei atspausdinote gaubtą ir turite šviesos diodus bei foto tranzistorius teisingose vietose, galite pradėti bandymą.

Įsitikinkite, kad įdiegėte „Arduino“ir „Processing“.

ZIP faile pradžioje yra visas kodas ir STL failai, skirti spausdinimui.

Iš pradžių naudokite „Arduino“derinimui ir apdorojimą naudokite tik galutiniam bandymui (viską galite pamatyti serijiniame „Arduino“monitoriuje).

Galite pabandyti tiesiog paleisti „Nerf“smiginį per chronografą naudodami „Arduino“įdiegtą „Chronogrpah_Updated.ino“. Jei tai veikia, viskas yra paruošta. Jei tai neveikia, greičiausiai turėsite koreguoti rezistoriaus vertes. Tai aptariama kitame žingsnyje.

Šiek tiek apie tai, kaip veikia kodas:

  1. Pertraukimas sustabdo kodą, kai smiginis praeina pro vartus, ir nustato laiką mikrosekundėmis
  2. Taip apskaičiuojamas greitis ir išsaugomas laikas
  3. Laikas tarp šūvių apskaičiuojamas ir paverčiamas raundais per sekundę
  4. Laikas tarp vartų apskaičiuojamas ir konvertuojamas į pėdas per sekundę, atsižvelgiant į vartų atstumą.

    Naudojant du vartus, galima pasiekti geresnių rezultatų naudojant vienodą laiką (kiek jutiklio turi būti uždengta) ir sumažėja histerezė

  5. Gaisro greitis ir greitis siunčiami serijiniu būdu, atskiriant juos kableliu, į serijinį monitorių „arduino“arba apdorojimo eskizą, leidžiantį sukurti gražią vartotojo sąsają (sutelkite dėmesį į apdorojimą, kai visa kita veikia!).

3 žingsnis: bandymas ir derinimas

Jei nepavyko atlikti pradinio bandymo, turime išsiaiškinti, kas nutiko.

Atidarykite „Arduino“pavyzdį „AnalogReadSerial“, esantį „File-> Examples-> 0.1 Basics“-> „AnalogReadSerial“

Norime užtikrinti, kad fototransistoriai veiktų taip, kaip mes tikimės. Mes norime, kad jie skaitytų AUKŠTĄ, kai smiginis jų neužstoja, ir ŽEMAI, kai smiginis ne. Taip yra todėl, kad kodas naudoja pertraukas, kad užfiksuotų laiką, kai smiginis praeina pro jutiklį, o naudojamas pertraukos tipas yra FALLING, o tai reiškia, kad jis suveiks pereinant iš HIGH į LOW. Norėdami užtikrinti, kad kaištis yra AUKŠTAS, šių kaiščių vertei nustatyti galime naudoti analoginius kaiščius.

Įkelkite „Arduino“pavyzdį „AnalogReadSerial“ir pereikite iš skaitmeninio kaiščio D2 arba D3 į A0.

D2 turėtų būti pirmasis jutiklis, o D3 - antrasis. Pasirinkite 1 ir perskaitykite. Vadovaukitės toliau pateiktu vadovu, kad nustatytumėte teisingą sprendimą pagal rodmenis:

Vertė yra 0 arba labai maža:

Iš pradžių vertė turėtų būti apie 1000, jei ji rodo labai mažą vertę arba nulį, tada įsitikinkite, kad jūsų šviesos diodai yra tinkamai prijungti ir nėra sudegę, taip pat gerai sulygiuoti. Bandydamas sudeginau savo šviesos diodus, kai vietoj 220 omų naudoju 100 omų rezistorių. Norint nustatyti teisingą rezistoriaus vertę, geriausia kreiptis į šviesos diodų duomenų lapą, tačiau dauguma šviesos diodų tikriausiai veiks su 220 omų rezistoriumi.

Šviesos diodai veikia, o vertė vis dar yra 0 arba labai maža:

Tikėtina, kad problema yra ta, kad nusileidimo rezistorius yra per mažas. Jei turite problemų su 220k rezistoriumi, galbūt padidinsite jį, o ne triukšmą. Turėtumėte įsitikinti, kad jūsų nuotraukų tranzistorius nėra sudegęs.

Vertė yra vidutinė riba:

Tai sukels daug problemų, dažniausiai klaidingų suveikimų, arba niekada nesukels aukšto lygio. Turime užtikrinti, kad būtų gautas AUKŠTAS, tam mums reikia ~ 600 vertės, tačiau siekiame, kad 900+ būtų saugūs. Pernelyg arti šios ribos gali atsirasti klaidingų suveikimų, todėl norime išvengti klaidingų teigiamų rezultatų. Norėdami sureguliuoti šią vertę, norime padidinti ištraukiamą rezistorių (220K). Aš tai jau padariau keletą kartų kurdamas savo dizainą ir jums greičiausiai to nereikės daryti, nes tai yra labai didelė nuleidžiamo rezistoriaus vertė.

Vertė yra labai triukšminga (daug šokinėja be jokių išorinių stimulų):

Įsitikinkite, kad jūsų laidai yra teisingi, naudodami ištraukiamą rezistorių. Jei tai teisinga, gali tekti padidinti rezistoriaus vertę.

Vertė įstrigo ties 1000+, net ir užblokavus jutiklį:

Įsitikinkite, kad jūsų ištraukiamasis rezistorius yra tinkamai prijungtas, tai gali įvykti, jei nėra ištraukimo. Jei tai vis dar yra problema, pabandykite sumažinti nuleidžiamojo rezistoriaus vertę.

Vertė yra didelė ir blokuoja šviesą iki nulio:

To turėtų pakakti, kad jutiklis veiktų, tačiau mes galime būti nepakankamai greiti, kai smiginis kerta kelią. Grandinėje yra tam tikra talpa, o naudojant 220K rezistorių gali praeiti šiek tiek laiko, kol įtampa nukris žemiau reikiamos ribos. Jei taip yra, sumažinkite šį rezistorių iki 100K ir pažiūrėkite, kaip veikia bandymai.

Užtikrinkite, kad bet kokie rezistorių pakeitimai būtų nuoseklūs tarp abiejų jutiklių

Užtikrinus vienodas abiejų jutiklių grandines, išlaikomas tas pats latentas tarp rezistorių, o tai leis užtikrinti geriausią matavimų tikslumą.

Jei turite papildomų problemų, palikite komentarą žemiau ir aš padarysiu viską, kad galėčiau jums padėti.

4 žingsnis: Aparatūros surinkimas

Techninės įrangos surinkimas
Techninės įrangos surinkimas
Techninės įrangos surinkimas
Techninės įrangos surinkimas
Techninės įrangos surinkimas
Techninės įrangos surinkimas

Lituokite komponentus prie mažos PCB, kaip parodyta čia:

Šviesos diodų ir fototranzistorių laidai turėtų nukirpti maždaug _.

Lituokite „Arduino“ant plokštės ir prijunkite rezistorius nuo žemės iki prieinamų kaiščių. Be to, įsitikinkite, kad 4 teigiamus laidus galima lengvai sujungti. Jei kyla problemų dėl to, galite nuimti vielos gabalėlį ir lituoti per visus laidus pabaigoje.

Aš prijungiau jutiklius prie priešingos korpuso pusės, tačiau drąsiai laidus jungite tol, kol šonai bus nuoseklūs. Aš nutraukiau laidus, kad jie būtų ilgesni, ir lituosiu laidus prie kiekvieno diodo paskutinį kartą. Šiek tiek atnaujinau laidų trasą, kad būtų daugiau vietos ir mažiau nerimauju dėl to, kad kai kurie laidai yra po PCB, o kiti - virš jų, kad būtų lengviau naudoti. STL yra viso projekto zip faile projekto pradžioje.

5 žingsnis: galutinis surinkimas

Galutinis surinkimas
Galutinis surinkimas
Galutinis surinkimas
Galutinis surinkimas
Galutinis surinkimas
Galutinis surinkimas

Jei jūsų PCB skylės nesutampa su skylėmis pagrindiniame chronografo korpuse, greičiausiai galite apsaugoti elektroniką korpuse tam tikra juostele ar karštais klijais, pastebėjau, kad po laido ir USB jos nereikia tvirtinti buvo, tačiau jūsų rezultatai gali skirtis. Jis suprojektuotas taip, kad būtų galima įspausti 1,75 mm giją į varžtų skyles, kad būtų galima sukrauti šilumą, tačiau PCB taip pat galima įsukti arba klijuoti. Svarbiausia čia yra užtikrinti, kad USB prievadas būtų prieinamas.

Uždenkite elektroniką elektronikos dangteliu. Atnaujinti failai turėtų tilpti geriau nei mano ir, tikiuosi, įsitvirtins vietoje, tačiau dangteliams suvirinti naudojau 3D spausdinimo rašiklį. Dabar esate pasirengęs paleisti smiginį!

Būsimas atnaujinimas gali naudoti vidinį laidų nukreipimą, tačiau dangteliai šiuo atveju šiek tiek atitinka „Nerf“estetiką.

6 žingsnis: veikiantis chronografas

Image
Image
Veikiantis chronografas
Veikiantis chronografas

Atidarius apdorojimo failą: „Chronograph_Intitial_Release“bus sukurta tikrai graži vartotojo sąsaja chronografui, rodančiam tiek FPS, tiek RPS (raundai per sekundę). Jei kyla problemų prisijungiant, įsitikinkite, kad uždarėte „Arduino“nuoseklųjį monitorių, gali tekti pakeisti kodo nuoseklųjį prievadą, tačiau tai komentuojama ir turėtų būti paprasta. Norėdami iš naujo nustatyti maksimalias vertes, tiesiog paspauskite tarpo klavišą savo kompiuteryje.

Šiek tiek apie tai, kaip veikia kodas (vartotojo sąsajos nuotrauką galima pamatyti aukščiau):

  1. Gauna įvestį iš „Arduino“
  2. Palyginkite tai su ankstesne įvestimi, kad surastumėte maksimalią vertę
  3. Visame ekrane rodomos dabartinės ir maksimalios vertės, kad būtų galima lengvai matyti vaizdą
  4. Iš naujo nustatoma maksimali vertė, kai paspaudžiamas tarpas

7 žingsnis: ateities planai

Būsimame atnaujinime bus šie patobulinimai. Jei turite papildomų funkcijų, kurių norėtumėte, praneškite man ir aš pabandysiu jas įgyvendinti.

  1. Įtraukti LCD ekraną
  2. Įtraukite baterijas
  3. „Nerf“suderinami tvirtinimo taškai
  4. Atnaujintas gaubtas
  5. Geležinės lankytinos vietos

Rekomenduojamas: