Obsah:

Chronograf vzduchovej pušky, chronoskop. 3D tlač: 13 krokov
Chronograf vzduchovej pušky, chronoskop. 3D tlač: 13 krokov

Video: Chronograf vzduchovej pušky, chronoskop. 3D tlač: 13 krokov

Video: Chronograf vzduchovej pušky, chronoskop. 3D tlač: 13 krokov
Video: How to Build a Vsr-10 from COMPLETE Scratch!!! | Airsoft Sniper Rifle DIY Guide | Taring Carving 🐲🔥 2024, November
Anonim
Image
Image
Funkcia
Funkcia

Ahoj všetci, dnes sa pozrieme na projekt, ktorý som urobil v roku 2010. Chronograf vzduchovej pušky. Toto zariadenie vám povie rýchlosť strely. Peleta, BB alebo dokonca vzduchová mäkká BB plastová guľa.

V roku 2010 som si zo zábavy kúpil vzduchovku. Trafil plechovky, fľaše, mieril. Viem, že rýchlosť tejto pištole bola maximálne 500 stôp/s. Pretože to je kanadský zákon. K dispozícii je niekoľko silnejších vzduchoviek, na ktoré však musíte mať licenciu a vo Walmarte si ich nemôžete kúpiť.

Teraz, keď mám túto licenciu, môžem si kúpiť inú. Ale poviedka, rovnaká zbraň bola k dispozícii v USA rýchlosťou 1000 stôp/s. ČO!? Rovnaká zbraň? áno … V Kanade má zdvih zdvihový otvor a pružina je mäkšia.

Prvá vec, ktorú musíte urobiť, je vyplniť dieru. To som urobil s spájkou. Ďalšou vecou bolo objednať si náhradnú pružinu. Ale počkajte … aká je aktuálna rýchlosť mojej novej hračky? Je jar skutočne potrebná? Neviem a chcem to vedieť. Chcem to vedieť teraz, ale ako?

Preto som urobil tento projekt. Stačili mi 2 senzory, uC a displej a sme na rade.

Minulý týždeň som videl na poličke svoj starý modrý chronograf a hovorím si: „Prečo to nezdieľate a neurobíte s tým pokyny?“A mimochodom, mohli by sme zvýšiť presnosť a pridať indikátor batérie. Na zapnutie/vypnutie dajte 1 tlačidlo namiesto 2. Montáž na celý povrch. Teraz sme v roku 2020!

Tak a je to … začnime!

Krok 1: Funkcia

-Rýchlosť granúl

-Rýchlosť

-20 mhz beh, obrovská presnosť

-Automatické vypnutie

-Zobrazí sa napätie batérie

-k dispozícii je chemická látka

-pcb k dispozícii

-zoznam dielov k dispozícii

-STL k dispozícii

-C kód k dispozícii

Krok 2: Teória prevádzky a presnosti

-Máme uC bežiace na 20 MHz. Použitý oscilátor je TCX0 +-2,5 ppm

-Máme 2 senzory vzdialené 3 palce od seba.

-Projektil zasiahol prvý senzor. uC začať počítať (časovač 1)

-Projektil zasiahol druhý senzor. uC prestaňte počítať.

-uC skontrolujte hodnotu timer1, urobte matematiku a zobrazte rýchlosť a rýchlosť.

Používam 16 -bitový časovač1 + príznak pretečenia tov1. 17 bitov celkom pre 131071 „tic“pre plný počet.

1/20 MHz = 50 ns. Každý tik je 50ns

131071 x 50 ns = 6,55355 ms na 3 palce.

6,55355 ms x 4 = 26,21 ms až 12 palcov.

1/26,21 ms = 38,1472637 stôp/s

Toto je najnižšia rýchlosť, akú môže zariadenie merať.

Prečo 20 MHz? Prečo nevyužiť interných 8 MHz alebo dokonca kryštál?

Moje prvé zariadenie používalo interný oscilátor. Fungoval, ale tento nebol dostatočne presný. Rozdiely sú príliš veľké. Kryštál je lepší, ale teplota má rôznu frekvenciu. S tým nemôžeme urobiť presné meracie zariadenie. Čím viac je frekvencia vysoká, tým viac otáčok sa bude počítať pri rovnakej rýchlosti. Vzorkovanie bude lepšie, aby malo veľmi dobrú presnosť. Pretože tik nie je deliteľný, strata je malá, ak je pracovný cyklus rýchly.

Pri 20 MHz máme kroky 50 ns. Vieme, ako presne je 50 ns na projektil pri 38 ft/s.

38,1472637 ft/s delené 131071 = 0, 000291042 stôp

0, 0003880569939956207 stôp x 12 = 0, 003492512 palcov

1/0, 003492512 = 286,37 ". Inými slovami. Pri 50 ft/s máme presnosť +- 1/286" alebo +- 0, 003492512 palcov

Ale ak je môj oscilátor najhorší a beží na 20 MHz +2,5 ppm, je to v poriadku? Poďme zistiť…

2,5 ppm z 20 000 000 je: (20000000/1000000) x 2,5 = 20000050 Hz

V najhoršom prípade teda máme ďalších 50 hodín s frekvenciou 20 MHz. Je to 50 hodín za 1 sekundu. O koľko viac tic na časovači1, ak peleta dosahuje rovnakú rýchlosť (38,1472637 stôp/s alebo 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 stôp/s

Máme teda 38,14735907 stôp/s namiesto 38,1472637 stôp/s

Teraz vieme, že 2,5 ppm neovplyvňuje výsledok.

Tu je niekoľko príkladov rôznej rýchlosti

Pre 1000 ft/s

1 000 stôp/s x 12 je 12 000 palcov/s

1 sekunda na 12 000 ", koľko času musíte urobiť na 3"? 3x1/12000 = 250 us sekúnd

250 us / 50 ns = 5 000 tic.

Časovač 1 bude na 5 000

uC urobte matematiku a zobrazí sa 1000 ft/s. Zatiaľ je všetko dobré

Pre rýchlosť 900 stôp/s

900 stôp/s je 10800 /s

3x1/10800 = 277,77 nás

277, 77 ns / 50 ns = 5555, 5555 tic

Časovač 1 bude na 5555

uC urobte matematiku a namiesto 900 sa zobrazí 900, 09

Prečo? pretože časovač 1 je na 5555 a 0, 5555 je stratený. Časovače Tic nie sú deliteľné.

Vyskytla sa chyba pre 0, 09 na 900 stôp/s

0, 09/900x100 = 0, iba 01% chyba

Pri 1500 ft/s je 1500 ft/s 18 000 palcov/s 3x1/10800 = 166,66 USD

166,66 us / 50 ns = 3333,333 tic Časovač 1 bude na 3333

uC urobte matematiku a namiesto 1500 sa zobrazí 1500,15.15/1500x100 = 0, 01%

Pre 9 000 stôp/s

9 000 x 12 = 1 800 000 palcov / s

3x1/180000 = 27,7777 nás

27,77 us / 50 ns = 555, 555

Časovač 1 bude na 555 a 4/(1/555x50ns) sa zobrazí 9009, 00 sa zobrazí

Tu je chyba 9 stôp/s na 9000 = 0, 1%

Ako vidíte, pri vyššej rýchlosti rastie % chyby. Ale zostaňte <0,1%

Tieto výsledky sú veľmi dobré.

Presnosť však nie je lineárna. Pri 10 000 ft/s je to 0, 1 %. Novinkou je, že nikdy netestujeme peletu 10 000 ft/s.

Ďalšia vec, ktorú treba mať na pamäti. Keď dôjde k prerušeniu, uC vždy dokončí poslednú inštrukciu pred zadaním prerušenia. Je to normálne a robia to všetky uC. Ak kódujete arduino, v C alebo dokonca assembler. Väčšinu času budete čakať v nekonečnej slučke … čakať. Problém je v tom, že v slučke strávime 2 cykly. Normálne to nie je dôležité. Ale v našom prípade. ÁNO, každý tik je dôležitý. Pozrime sa na nekonečnú slučku:

montér:

slučka:

rjmp slučka

V C:

zatiaľ čo (1) {}

V skutočnosti kompilátor C používa inštrukciu rjmp. RJMP sú 2 cykly.

To znamená, že ak dôjde k prerušeniu prvého cyklu, stratíme jeden cyklus (tic) (50ns).

Mojím spôsobom, ako to opraviť, je pridať do slučky veľa inštrukcií nop. NOP je 1 cyklus.

slučka:

nop

nop

nop

nop

nop

rjmp slučka

Ak k prerušeniu dôjde na pokyn nop. Sme v poriadku Ak sa to stane v druhom cykle inštrukcie rjmp, sme v poriadku. Ale ak sa to stane v prvom cykle inštrukcie rjmp, stratíme jeden tik. Áno, je to len 50 ns, ale ako vidíte vyššie, 50 ns na 3 palce nie je nič. Nemôžeme to opraviť softvérom, pretože nevieme, kedy presne k prerušeniu dôjde. Preto v kóde uvidíte veľa inštrukcií nop. Teraz som si celkom istý, že prerušenie padne na pokyn nop. Ak pripočítam 2000 nop, mám 0, 05%, aby som spadol do inštrukcie rjmp.

Ďalšia vec, ktorú treba mať na pamäti. Keď dôjde k prerušeniu. Kompilátor urobí veľa tlačení a ťahaní. Ale vždy je to rovnaké číslo. Teraz teda môžeme vykonať softvérovú opravu.

Na záver k tomuto:

Presnosť pre priemernú peletu 1000 ft/s je 0, 01%

100x presnejší ako ostatné 1% na trhu. Frekvencia je vyššia a s TCXO presnejšia

Napríklad 1% z 1000 ft/s je viac alebo menej 10 ft/s. Je to obrovský rozdiel.

Krok 3: Schéma a zoznam dielov

Schéma a zoznam dielov
Schéma a zoznam dielov

Tu som implementoval svoj obvod zapnutia/vypnutia jedným tlačidlom. (pozri môj posledný návod) Tento obvod je veľmi šikovný a funguje veľmi dobre.

Používam atmega328p. Tento je naprogramovaný v C.

Displej je štandardne kompatibilný s 2 riadkami a LCD HD44780. Používa sa 4 -bitový režim.

Na dodanie napätia do TCMO 20 MHz sa používa 3,3 V regulátor.

D1 je pre podsvietenie LCD. Voliteľné. Ak nenainštalujete D1, batéria vydrží dlhšie.

Všetky odpory a krytky sú v balení 0805

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 1M

R2 1M

R4 2,2 tis

R5 160

R6 160

R7 1M

R8 1M

U1 MIC5317-3.3 MIC5317 SOT23-5

U2 DMG6601LVT DMG6601LVT SOT23-6

LCD 2 -riadkový HD44780. Nie je potrebné kupovať modul i2c.

Senzory:

2x vysielač OP140A

2x prijímač OPL530

Kodér: PEC11R-4215K-S0024 *Nezabudnite pridať 4x 10k odpory a 2x 0,01uf na vykonanie filtra snímača. viď obrázok nižšie

Krok 4: Súbor Gerber PCB

Súbor Gerber PCB
Súbor Gerber PCB
Súbor Gerber PCB
Súbor Gerber PCB
Súbor Gerber PCB
Súbor Gerber PCB
Súbor Gerber PCB
Súbor Gerber PCB

Tu sú súbory Gerber

Krok 5: Spájkujte svoju PCB

Spájkujte svoju PCB
Spájkujte svoju PCB
Spájkujte svoju PCB
Spájkujte svoju PCB
Spájkujte svoju PCB
Spájkujte svoju PCB

So schematickou pomocou spájkujte všetky svoje súčiastky na doske plošných spojov. Každá časť alebo napísané na PCB, R1, R2 … a tak ďalej.

Nemám nainštalovanú D1. Toto je pre podsvietenie LCD. Je to krásne, ale výdrž batérie je ovplyvnená. Preto som sa rozhodol nechať podsvietenie LCD vypnuté.

Krok 6: Programovanie Atmega328p

Programovanie Atmega328p
Programovanie Atmega328p

Tu v kroku 12 skontrolujte naprogramovanie atmega328p. Na tento účel poskytujem súbor.hex.

Tu je program avrdude pripravený na programovanie dávkového súboru. Stačí kliknúť na program usbasp.bat a váš usbasp sa nainštaluje správne. Všetko sa vykoná automaticky vrátane poistkového bitu.

1drv.ms/u/s!AnKLPDy3pII_vXaGPIZKMXxaXDul?e…

V tomto projekte zdieľam aj zdrojový kód C. Uvedomte si, že niektoré poznámky v ňom môžu byť vo francúzštine. Https: //1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…

Krok 7: LCD displej

Displej LCD
Displej LCD
Displej LCD
Displej LCD

Nainštalujte pásku a spojte PCB a LCD dohromady

Krok 8: Súbor STL

Súbor STL
Súbor STL
Súbor STL
Súbor STL
Súbor STL
Súbor STL

stl

1drv.ms/u/s!AnKLPDy3pII_vgezy0i0Aw3nD-xr?e…

Podpora je potrebná pre puzdro, rúrku snímača a držiak pušky.

Všetky som vytlačil na výšku 0,2 mm.

Krok 9: OTOČNÝ KÓDER

OTOČNÝ KÓDER
OTOČNÝ KÓDER
ROTAČNÝ KÓDER
ROTAČNÝ KÓDER
OTOČNÝ KÓDER
OTOČNÝ KÓDER

Tento rotačný snímač je pripojený ku konektoru isp. slúži na zmenu hmotnosti peliet a zapnutie a vypnutie zariadenia.

vcc isp pin 2 (vyťahovací odpor)

Terminál A (žltý) prejdite na kolík ISP 1

Terminál B (zelený) prejdite na pin 3 poskytovateľa internetových služieb

Svorka C (GND) kolíkový kolík 6

Pridávam 2 obrázky, aby som videl rozdiel medzi filtrom a bez filtra. Rozdiel medzi oboma môžete ľahko vidieť.

Stlačením tlačidla prejdete do konektora SW plošných spojov.

Krok 10: Potrubie snímača

Senzorová rúrka
Senzorová rúrka
Senzorová rúrka
Senzorová rúrka
Senzorová rúrka
Senzorová rúrka

DÔLEŽITÉ:

Potrubie snímača musí byť čierne a prijímač snímača musí byť skrytý

Moje prvé pokusy boli mať krásnu červenú fajku. Ale toto je ošemetné! Vôbec to nefungovalo. Zistil som, že vonkajšie svetlo dopadá a plastový senzor prijímača je vždy zapnutý.

Aby som dosiahol dobrý výsledok, nemal som na výber zmeniť farbu na čiernu.

Nainštalujte prijímač na vrch. A skryte priehľadný plast čiernou farbou, páskou alebo gumou, čiernym silikónom.

Nainštalujte vysielač na spodok.. Pero skontrolujte, či senzory reagujú dobre. Možno bude potrebné dieru žiariča trochu zväčšiť. bude to závisieť od kalibrácie vašej tlačiarne.

Tiež mám lepší výsledok v tieni. Vyhnite sa priamemu slnečnému žiareniu.

Krok 11: Alternatíva potrubia snímača

Alternatívna rúrka snímača
Alternatívna rúrka snímača
Alternatívna rúrka snímača
Alternatívna rúrka snímača

Ak nemáte 3D tlačiareň, môžete to isté urobiť s medenou rúrkou. Bude to fungovať veľmi dobre. Je ťažké urobiť dieru presne 3 palce a prijímač a vysielač musia byť zarovnané.

Krok 12: Peleta na osciloskope a kalibrácia

Peleta na osciloskope a kalibrácia
Peleta na osciloskope a kalibrácia

Jedná sa o skutočnú peletu, ktorá prechádza potrubím. Sonda 1 žltá je snímač 1. Sonda 2 fialová je snímač 2.

Čas/div je 50 nás.

Môžeme napočítať 6 divízií po 50us. 50 us x 6 = 300 us (pre 3 palce). 300 us x 4 = 1,2 ms na 1 stopu

1/1,2 ms = 833,33 ft/s

Tiež môžeme vidieť, že senzor je normálne pri 5 V. A môžeme zablokovať svetlo vysielača, snímač klesne na 0.

Je to spôsob, akým uC štartuje a zastavuje jeho rozhovor (časovač1)

Ale aby som vedel, či je rýchlosť presná, potreboval som spôsob, ako to merať.

Na kalibráciu softvéru a testovanie presnosti tohto zariadenia som použil referenčný oscilátor s frekvenciou 10 MHz. Pozrite si moje GPSDO na iných pokynoch.

Týmto 10 mhz napájam ďalší atmega328. A naprogramujte tento v assembleri, aby mi odoslal 2 impulzy zakaždým, keď stlačím tlačidlo na simuláciu pelety. Presne ako sme videli na obrázku, ale namiesto toho, aby som mal skutočnú peletu, to bolo ďalšie uC, ktoré mi poslalo 2 impulzy.

Pri každom stlačení tlačidla bol odoslaný 1 impulz a presne 4 ms po odoslaní ďalšieho impulzu.

Týmto spôsobom dokážem vyvážiť softvérový kompilátor tak, aby bol vždy zobrazených 1 000 stôp/s.

Krok 13: Viac…

Viac…
Viac…
Viac…
Viac…

Toto je môj prvý prototyp roku 2010.

V prípade akýchkoľvek otázok alebo hlásenia chyby mi môžete poslať e -mail. Anglicky alebo francúzsky. Budem sa snažiť pomôcť.

Odporúča: