Turinys:
- 1 žingsnis: funkcija
- 2 žingsnis: veikimo teorija ir tikslumas
- 3 žingsnis: schema ir dalių sąrašas
- 4 žingsnis: PCB Gerber failas
- 5 žingsnis: lituokite savo kompiuterį
- 6 žingsnis: „Atmega328p“programavimas
- 7 žingsnis: LCD ekranas
- 8 veiksmas: STL failas
- 9 žingsnis: ROTARY ENCODER
- 10 žingsnis: jutiklio vamzdis
- 11 žingsnis: Jutiklio vamzdžio alternatyva
- 12 žingsnis: granulės osciloskopu ir kalibravimas
- 13 žingsnis: daugiau…
Video: Chronografas, oro šautuvų chronografas. 3D spausdinimas: 13 žingsnių
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Sveiki visi, šiandien mes dar kartą apžiūrėsime projektą, kurį padariau 2010 m. Oro šautuvo chronografas. Šis prietaisas parodys sviedinio greitį. Granuliuotas, BB ar net minkštas BB plastikinis rutulys.
2010 metais pramogai nusipirkau oro šautuvą. Smūgiavo į skardines, butelius, taikėsi. Žinau, kad šio pistoleto greitis buvo didžiausias 500 pėdų per sekundę. Nes tai yra Kanados įstatymas. Yra keletas stipresnių oro šautuvų, tačiau jums reikia turėti licenciją ir negalite jų nusipirkti „Walmart“.
Dabar turėjau šią licenciją, galėjau nusipirkti kitą. Bet trumpa istorija, tas pats ginklas buvo prieinamas JAV 1000 pėdų per sekundę greičiu. KĄ!? Tas pats ginklas? taip … Kanadoje smūgis turi skylę, o spyruoklė minkštesnė.
Pirmas dalykas, kurį reikia padaryti, yra užpildyti skylę. Tai aš padariau su lydmetaliu. Kitas dalykas, kurį reikia padaryti, buvo užsisakyti pakaitinę spyruoklę. Bet palaukite … koks dabartinis mano naujo žaislo greitis? Ar tikrai reikia pavasario? Nežinau ir noriu žinoti. Dabar noriu sužinoti, bet kaip?
Štai kodėl aš padariau šį projektą. Viskas, ko man reikėjo, buvo 2 jutikliai, uC ir ekranas, ir mes dirbame.
Praėjusią savaitę pamačiau savo seną mėlyną chronografą ant lentynos ir kalbu su savimi: „Kodėl nesidalinti tuo ir daryti su juo ką nors pamokomo?“Ir, beje, galėtume padidinti tikslumą ir pridėti akumuliatoriaus indikatorių. Įjunkite ir išjunkite 1 mygtuką, o ne 2. Visų paviršių tvirtinimas. Dabar esame 2020 m.!
Taigi štai… pradėkime!
1 žingsnis: funkcija
-granulių greitis
-Greitis
-20 mhz bėgimas, didžiulis tikslumas
-Išjungta automatiškai
-Rodoma akumuliatoriaus įtampa
-galima schema
-pcb galima
-galimas dalių sąrašas
-galima STL
-Galimas C kodas
2 žingsnis: veikimo teorija ir tikslumas
-Pas mus uC veikia 20Mhz. Naudojamas osciliatorius yra TCX0 +-2,5 ppm
-Mes turime 2 jutiklius 3 colių atstumu vienas nuo kito.
-Šovinys pataikė į pirmąjį jutiklį. uC pradėti skaičiuoti (1 laikmatis)
-Šovinys pataikė į antrąjį jutiklį. uC nustokite skaičiuoti.
-uC patikrinkite laikmačio1 vertę, atlikite matematiką ir rodykite greitį bei greitį.
Aš naudoju 16 bitų laikmatį1 + perpildymo vėliavą tov1. Iš viso 17 bitų už 131071 „tik“, jei norite visiškai suskaičiuoti.
1/20 mhz = 50 ns. Kiekvienas tikas yra 50 USD
131071 x 50 ns = 6,55355 ms iki 3 colių.
6,55355 ms x 4 = 26,21 ms iki 12 colių.
1/26,21 ms = 38,1472637 pėdos/s
Tai yra mažiausias greitis, kurį prietaisas gali išmatuoti.
Kodėl 20 mhz? Kodėl gi nenaudojant vidinio 8 MHz ar net cristal?
Mano pirmasis prietaisas naudojo vidinį osciliatorių. Veikė, bet šis nebuvo pakankamai tikslus. Skirtumas yra per didelis. Cristal yra geresnis, tačiau temperatūra skiriasi. Mes negalime padaryti tikslaus matavimo prietaiso. Be to, kuo didesnis dažnis, tuo pačiu greičiu bus skaičiuojama daugiau tikslų. Mėginių ėmimas bus geresnis, jei bus labai geras tikslumas. Kadangi tikas nėra padalijamas, nuostoliai yra nedideli, jei darbo ciklas yra greitas.
Esant 20 MHz dažniui, mes turime 50 ns žingsnius. Ar žinome, kiek tikslumas yra 50 ns sviediniui esant 38 pėdų per sekundę greičiui.
38,1472637 pėdų/s padalinkite iš 131071 = 0, 000291042 pėdų
0 0003880569939956207 pėdų x 12 = 0, 003492512 colių
1/0, 003492512 = 286,37 ". Kitaip tariant. 50 pėdų per sekundę tikslumas yra +- 1/286" arba +- 0, 003492512 colių
Bet jei mano osciliatorius yra blogiausias ir veikia 20 mhz +2,5 ppm, ar viskas gerai? Išsiaiškinkime…
2,5 ppm iš 20 000 000 yra: (20000000/1000000) x 2,5 = 20000050 Hz
Taigi blogiausiu atveju mes turime dar 50 laikrodžių 20 MHz dažniu. 50 sekundžių per 1 sekundę. Kiek taškų daugiau už 1 laikmatį, jei granulės veikia tuo pačiu greičiu (38,1472637 pėdos/s arba 6,55 ms)?
1/20000050 = 49,999875 ns
49.999875 ns x 131071 = 6, 553533616 ms
6, 553533616 ms x 4 = 26,21413446 ms
1/26.21413446 ms = 38.14735907 pėdos/s
Taigi mes turime 38,14735907 pėdų/s, o ne 38,1472637 pėdų/s
Dabar mes žinome, kad 2,5 ppm neturi įtakos rezultatui.
Štai keletas skirtingų greičių pavyzdžių
Už 1000 pėdų per sekundę
1000 pėdų/s x 12 yra 12000 colių/s
1 sekundė už 12000 „kiek laiko padaryti 3“? 3x1/12000 = 250 JAV sekundžių
250 JAV / 50 ns = 5000 tikų.
1 laikmatis bus 5000
uC do the math ir rodomas 1000 pėdų per sekundę. Kol kas viskas gerai
Už 900 pėdų per sekundę
900 pėdų per sekundę yra 10800 colių per sekundę
3x1/10800 = 277,77 mus
277, 77 ns / 50 ns = 5555, 5555 tik
1 laikmatis bus 5555
uC do the math ir 900, bus rodomas 09, o ne 900
Kodėl? nes 1 laikmatis yra 5555 ir 0, 5555 prarastas. Laikmačio žymeklis nėra padalijamas.
Turime klaidą 0, 09 dėl 900 pėdų per sekundę
0, 09/900x100 = 0, 01% tik klaida
1500 pėdų/1500 pėdų yra 18000 colių/s 3x1/10800 = 166,66 JAV
166,66 us / 50 ns = 3333,3333 tic 1 laikmatis bus 3333
uC do the math ir 1500.15 bus rodomas vietoj 1500, tai yra.15/1500x100 = 0, 01%
Už 9000 pėdų/s
9000 x 12 = 180000 colių / s
3x1/180000 = 27.7777 mus
27,77 us / 50 ns = 555, 555
Laikmatis1 bus 555, o 4/(1/555x50ns) bus rodomas 9009, 00
Čia klaida yra 9 pėdos/s 9000 = 0, 1%
Kaip matote, % klaida didėja, kai greitis yra didesnis. Bet likti <0,1%
Tie rezultatai labai geri.
Tačiau tikslumas nėra linijinis. Esant 10000 pėdų per sekundę, tai yra 0, 1 %. Gera naujiena - mes niekada nebandome 10 000 pėdų per sekundę granulių.
Kitas dalykas, kurį reikia turėti omenyje. Kai įvyksta pertrauka, uC visada baigia paskutinę instrukciją prieš įvesdama pertrauką. Tai normalu ir visi UC tai daro. Jei koduojate arduino, C arba net surinkėjas. Dažniausiai lauki amžiną ciklą… laukti. Problema ta, kad cikle mes praleidžiame 2 ciklus. Paprastai tai nėra svarbu. Bet mūsų atveju. TAIP, kiekvienas tikėjimas yra svarbus. Pažvelkime į begalinę kilpą:
surinkėjas:
kilpa:
rjmp kilpa
C:
tuo tarpu (1) {}
Iš tikrųjų C kompiliatorius naudoja rjmp instrukciją. RJMP yra 2 ciklai.
Tai reiškia, kad jei pertrauka įvyksta pirmajam ciklui, mes prarandame vieną ciklą (tic) (50ns).
Mano būdas tai išspręsti yra pridėti daug nop instrukcijų į kilpą. NOP yra 1 ciklas.
kilpa:
be problemų
be problemų
be problemų
be problemų
be problemų
rjmp kilpa
Jei pertrauka įvyksta pagal instrukciją. Mums viskas gerai. Jei tai atsitiks antrame „rjmp“instrukcijų cikle, mums viskas gerai. Bet jei tai atsitiks per pirmąjį „rjmp“instrukcijų ciklą, mes prarasime vieną tiką. Taip, tai tik 50 ns, bet, kaip matote aukščiau, 50 ns 3 coliuose nėra nieko. Mes negalime to ištaisyti programine įranga, nes nežinome, kada tiksliai nutinka pertrauka. Štai kodėl kode pamatysite daug „nop“nurodymų. Dabar esu tikras, kad pertrauka bus vykdoma pagal instrukciją. Jei pridėsiu 2000 nop, turiu 0, 05% rjmp instrukcijos.
Kitas dalykas, kurį reikia turėti omenyje. Kai nutinka pertrauka. Kompiliatorius daug stumia ir traukia. Bet tai visada tas pats skaičius. Taigi dabar galime atlikti programinės įrangos taisymą.
Norėdami padaryti išvadą šiuo klausimu:
Vidutinio 1000 pėdų/s granulių tikslumas yra 0,01%
100 kartų tikslesnis nei kiti rinkoje esantys 1%. Dažnis yra didesnis, o naudojant TCXO - tikslesnis
Pavyzdžiui, 1% 1000 pėdų per sekundę yra daugiau ar mažiau 10 pėdų per sekundę. Tai didžiulis skirtumas.
3 žingsnis: schema ir dalių sąrašas
Čia aš įgyvendinau savo vieno mygtuko įjungimo/išjungimo grandinę. (žr. mano paskutinį nurodymą) Ši grandinė yra labai patogi ir veikia labai gerai.
Aš naudoju atmega328p. Šis užprogramuotas C.
Ekranas yra standartinis 2 eilučių LCD HD44780 suderinamas. Naudojamas 4 bitų režimas.
TCXO 20mhz įtampai tiekti naudojamas 3.3v reguliatorius.
D1 skirtas LCD foniniam apšvietimui. Neprivaloma. Jei neįdiegsite D1, baterija tarnaus ilgiau.
Visi rezistoriai ir dangteliai yra 0805 pakuotėje
C1.1uf 25v
C2 1uf 16v
C3 2.2uf 10v
C4.1uf
C5.1uf
C6.1uf
C7 1uf
C8.1uf
C9.1uf
C10.1uf
D1 1n4148 SM SOT123
D2 5.1v SOT123
IC1 ATMEGA328p
IC2 MIC5225-5.0YM5-TR TPS70950DBVT SOT23-DBV
OSC1 TXETDCSANF-20.000000
R1 1 mln
R2 1 mln
R4 2,2 tūkst
R5 160
R6 160
R7 1 mln
R8 1 mln
U1 MIC5317-3,3 MIC5317 SOT23-5
U2 DMG6601LVT DMG6601LVT SOT23-6
Ekranas LCD 2 eilutės HD44780. Nereikia pirkti „i2c“modulio.
Jutikliai:
2x skleidėjas OP140A
2x imtuvas OPL530
Kodavimo įrenginys: PEC11R-4215K-S0024 *Nepamirškite pridėti 4x 10k rezistorių ir 2x.01uf, kad atliktumėte kodavimo filtrą. žr. paveikslėlį žemiau
4 žingsnis: PCB Gerber failas
Čia yra gerber failai
5 žingsnis: lituokite savo kompiuterį
Padedant schematiškai, lituokite visus savo komponentus ant plokštės. Kiekviena dalis arba parašyta ant pcb, r1, r2 … ir pan.
Aš neįdiegiau D1. Tai skirta LCD foniniam apšvietimui. Tai gražu, tačiau baterijos veikimo laikas yra paveiktas. Taigi aš nusprendžiau neleisti LCD foninio apšvietimo.
6 žingsnis: „Atmega328p“programavimas
Patikrinkite čia, atlikdami 12 veiksmą, kad užprogramuotumėte „atmega328p“. Čia pateikiu.hex failą.
Čia yra avrdude programa, paruošta programuoti paketinį failą. Spustelėkite tik programą usbasp.bat ir jūsų usbasp yra tinkamai įdiegtas. Viskas bus padaryta automatiškai, įskaitant saugiklį.
1drv.ms/u/s!AnKLPDy3pII_vXaGPIZKMXxaXDul?e…
Šiame projekte aš taip pat dalinuosi C šaltinio kodu. Atminkite, kad kai kurios pastabos gali būti prancūzų kalba. Http://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx?
7 žingsnis: LCD ekranas
Įdiekite juostą ir prijunkite PCB ir LCD
8 veiksmas: STL failas
stl failą
1drv.ms/u/s!AnKLPDy3pII_vgezy0i0Aw3nD-xr?e…
Reikia atramos korpusui, jutiklio vamzdžiui ir šautuvo laikikliui.
Visi atspausdinti.2 mm aukščio.
9 žingsnis: ROTARY ENCODER
Šis sukamasis kodavimo įrenginys yra prijungtas prie ISP jungties. jis naudojamas granulių svoriui pakeisti ir prietaisui įjungti bei išjungti.
vcc ISP kaištis 2 (ištraukite rezistorių)
A terminalas (geltonas) eikite į IPT 1 kaištį
B terminalas (žalias) eikite į IPT 3 kaištį
Gnybto C (gnd) ISP kaištis 6
Pridedu 2 nuotraukas, kad pamatyčiau skirtumą tarp filtro ir filtro neturėjimo. Jūs galite lengvai pamatyti skirtumą tarp abiejų.
Mygtukas eina į PCB jungtį.
10 žingsnis: jutiklio vamzdis
SVARBU:
Jutiklio vamzdis turi būti juodas, o jutiklio imtuvas - paslėptas
Pirmieji mano bandymai buvo turėti gražų raudoną vamzdį. Bet tai yra keblu! Tai visai neveikė. Aš supratau, kad įeina lauko šviesa, plastikas ir imtuvo jutiklis visada buvo įjungti.
Kad rezultatas būtų geras, neturėjau pasirinkimo pakeisti spalvos į juodą.
Įdiekite imtuvą viršuje. Ir paslėpkite skaidrų plastiką juodais dažais, juostele ar guma, juodu silikonu.
Įdiekite spinduliuotę apačioje. Rašikliu patikrinkite, ar jutikliai gerai reaguoja. Galbūt skleidėjo skylę reikės šiek tiek padidinti. tai priklausys nuo spausdintuvo kalibravimo.
Aš taip pat turiu geresnį rezultatą šešėlyje. Venkite tiesioginių saulės spindulių.
11 žingsnis: Jutiklio vamzdžio alternatyva
Jei neturite 3D spausdintuvo, tą patį galite padaryti su variniu vamzdžiu. Tai labai gerai veiks. Sunku padaryti tai, kad skylė yra tiksliai 3 colių, o imtuvas ir skleidėjas turi būti suderinti.
12 žingsnis: granulės osciloskopu ir kalibravimas
Tai tikras granulių perdavimas. 1 zondas geltonas yra jutiklis 1. 2 zondas purpurinis yra 2 jutiklis.
Laikas/div yra 50 mus.
Galime suskaičiuoti 6 padalinius po 50. 50 JAV x 6 = 300 JAV (3 coliams). 300 us x 4 = 1,2 ms 1 pėdai
1/1,2 ms = 833,33 pėdos/s
Taip pat matome, kad jutiklis paprastai yra 5 V įtampos. Ar galime užblokuoti spinduliuojančią šviesą, jutiklį nukristi iki 0.
Taip uC pradeda ir sustabdo jo skaitiklį (1 laikmatis)
Bet norint tiksliai žinoti, ar greitis buvo tikslus, man reikėjo būdo tai įvertinti.
Norėdami atlikti programinės įrangos kalibravimą ir patikrinti šio įrenginio tikslumą, aš naudoju 10 mhz etaloninį osciliatorių. Žr. Mano GPSDO kitą instrukciją.
Aš maitinu kitą atmega328 šiuo 10 mhz. Ir užprogramuokite šį asamblėją, kad kaskart, kai paspausiu mygtuką, man atsiųstų 2 impulsus, kad imituotų granules. Tiksliai taip, kaip matėme paveikslėlyje, bet vietoj to, kad turėtume tikrą granulę, kitas uC man atsiuntė 2 impulsus.
Kiekvieną kartą paspaudus mygtuką buvo siunčiamas 1 impulsas ir lygiai 4 ms po kito.
Tokiu būdu galiu subalansuoti programinės įrangos kompiliatorių, kad visada būtų rodomas 1000 pėdų per sekundę.
13 žingsnis: daugiau…
Tai pirmasis mano 2010 metų prototipas.
Jei turite klausimų ar pranešimų apie klaidas, galite man atsiųsti el. Anglų arba prancūzų. Pasistengsiu padėti.
Rekomenduojamas:
Sukurkite lengvą begalybės veidrodžio kubą - NE 3D spausdinimas ir NE programavimas: 15 žingsnių (su paveikslėliais)
Sukurkite lengvą begalybės veidrodžio kubą | NE 3D spausdinimo ir NE programavimo: visiems patinka geras begalybės kubas, tačiau atrodo, kad juos būtų sunku pagaminti. Mano tikslas šioje instrukcijoje yra žingsnis po žingsnio parodyti, kaip tai padaryti. Ne tik tai, bet ir naudodamasis instrukcijomis, kurias jums duosiu, galėsite padaryti vieną
[3D spausdinimas] 30 W didelės galios rankinis žibintas: 15 žingsnių (su nuotraukomis)
[3D spausdinimas] 30 W didelės galios nešiojamasis žibintas: jei skaitote tai, tikriausiai matėte vieną iš tų „Youtube“vaizdo įrašų, kuriuose rodomi „pasidaryk pats“itin galingi šviesos šaltiniai su didžiulėmis radiatoriais ir baterijomis. Tikriausiai jie tai netgi vadina „žibintais“, bet aš visada turėjau kitokią sampratą
Oro taršos aptikimas + oro filtravimas: 4 žingsniai
Oro taršos aptikimas ir oro filtravimas: Vokietijos Šveicarijos tarptautinės mokyklos studentai (Aristobulus Lam, Victor Sim, Nathan Rosenzweig ir Declan Loges) kartu su „MakerBay“darbuotojais sukūrė integruotą oro taršos matavimo ir oro filtravimo efektyvumo sistemą. Ši
HRV (namų oro keitiklis) „Arduino“valdiklis su oro ekonomizatoriumi: 7 žingsniai (su nuotraukomis)
HRV (namų oro keitiklis) „Arduino“valdiklis su oro taupymo priemone: „HRV Arduino“valdiklis su oro ekonomizatoriumi Nenorėjau mokėti 200 USD už naują. Visada norėjau kažko, kas nuodėmė oro ekonomizatorių
„Alexa“užuolaidų valdymo sistema - 3D spausdinimas ir maža kaina: 19 žingsnių (su nuotraukomis)
„Alexa“užuolaidų valdymo sistema - 3D spausdinimas ir mažos kainos: Sveiki, aš jau seniai stengiuosi automatizuoti kuo daugiau mūsų namų. Žiemai atkeliavus į JK, nusprendžiau nuvalyti užduotį vakare uždaryti visas užuolaidas, o ryte vėl jas atidaryti. Tai reiškia, kad bėgu