Obsah:

Chronograf vzduchové pušky, chronoskop. 3D tisk: 13 kroků
Chronograf vzduchové pušky, chronoskop. 3D tisk: 13 kroků

Video: Chronograf vzduchové pušky, chronoskop. 3D tisk: 13 kroků

Video: Chronograf vzduchové pušky, chronoskop. 3D tisk: 13 kroků
Video: FX Pocket Chronograph #fxairguns #sniper #viralvideo #best 2024, Červenec
Anonim
Image
Image
Vlastnosti
Vlastnosti

Ahoj všichni, dnes se vrátíme k projektu, který jsem udělal v roce 2010. Chronograf vzduchové pušky. Toto zařízení vám řekne rychlost střely. Pelety, BB nebo dokonce vzduchové měkké BB plastové kuličky.

V roce 2010 jsem si pro zábavu koupil vzduchovku. Mlátilo do plechovek, lahví, mířilo. Vím, že rychlost této zbraně byla maximálně 500 stop/s. Protože to je kanadský zákon. K dispozici je nějaká silnější vzduchovka, ale musíte mít licenci a nemůžete ji koupit ve Walmartu.

Teď jsem měl tuto licenci, mohl jsem si koupit další. Ale povídka, stejná zbraň byla k dispozici v USA rychlostí 1000 stop/s. CO!? Stejná zbraň? ano … V Kanadě má tah v sobě díru a pružina je měkčí.

První věc, kterou musíte udělat, je vyplnit díru. To jsem udělal s pájkou. Další věcí bylo objednat náhradní pružinu. Ale počkejte … jaká je aktuální rychlost mé nové hračky? Je jaro opravdu nutné? Nevím a chci to vědět. Chci to vědět teď, ale jak?

Proto jsem udělal tento projekt. Vše, co jsem potřeboval, byly 2 senzory, uC a displej a jsme v podnikání.

Minulý týden jsem viděl na poličce svůj starý modrý chronograf a povídal jsem si: „Proč to nesdílet a neudělat s tím instrukce?“A mimochodem, mohli bychom zvýšit přesnost a přidat indikátor baterie. Pro zapnutí/vypnutí vložte místo 2 tlačítka 1. Celý povrchový držák. Nyní jsme v roce 2020!

Tak a je to … začněme!

Krok 1: Funkce

-Rychlost pelet

-Rychlost

-20 mhz běh, obrovská přesnost

-Automatické vypnutí

-Zobrazuje se napětí baterie

-schemický k dispozici

-pcb k dispozici

-seznam dílů k dispozici

-STL k dispozici

-C kód k dispozici

Krok 2: Teorie provozu a přesnosti

-Máme uC běžící na 20 MHz. Použitý oscilátor je TCX0 +-2,5 ppm

-Máme 2 senzory vzdálené 3 palce od sebe.

-Projektil zasáhl první senzor. uC začít počítat (timer1)

-Projektil zasáhl druhý senzor. uC přestaňte počítat.

-uC zkontrolujte hodnotu timer1, proveďte matematickou a zobrazovací rychlost a rychlost.

Používám 16bitový časovač1 + příznak přetečení tov1. 17 bitů celkem za 131071 „tic“pro plný počet.

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

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

6,55355 ms x 4 = 26,21 ms na 12 palců.

1/26,21 ms = 38,1472637 stop/s

Toto je nejpomalejší rychlost, kterou může zařízení měřit.

Proč 20 MHz? Proč nepoužívat interní 8 MHz nebo dokonce cristal?

Moje první zařízení používalo interní oscilátor. Fungoval, ale tento nebyl dostatečně přesný. Variace jsou příliš velké. Krystal je lepší, ale teplota má různou frekvenci. S tím nemůžeme udělat přesné měřicí zařízení. Čím více je frekvence vysoká, tím více tiků se bude počítat se stejnou rychlostí. Vzorkování bude lepší, aby mělo velmi dobrou přesnost. Protože tik není dělitelný, je ztráta malá, pokud je pracovní cyklus rychlý.

Při 20 MHz máme kroky 50 ns. Víme, jak přesné je to 50 ns pro projektil při 38 ft/s.

38,1472637 ft/s děleno 131071 = 0, 000291042 stop

0, 0003880569939956207 stop x 12 = 0, 003492512 palců

1/0, 003492512 = 286,37 ". Jinými slovy. Při rychlosti 50 stop/s máme přesnost +- 1/286" nebo +- 0, 003492512 palců

Ale pokud je můj oscilátor nejhorší a běží na 20 MHz +2,5 ppm, je to v pořádku? Pojďme to zjistit…

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

V nejhorším případě tedy máme dalších 50 hodin na 20 MHz. Je to 50 hodin za 1 sekundu. O kolik více tic na časovači1, pokud pelety dosahují stejné rychlosti (38,1472637 stop/s nebo 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 stop/s

Takže máme 38,14735907 stop/s místo 38,1472637 stop/s

Nyní víme, že 2,5 ppm neovlivní výsledek.

Zde je příklad různé rychlosti

Pro 1000 ft/s

1000 ft/s x 12 je 12 000 palců/s

1 sekunda na 12 000 ", kolik času udělat 3"? 3x1/12000 = 250 us sekund

250 us / 50 ns = 5000 tic.

Časovač 1 bude na 5 000

uC proveďte matematiku a zobrazí se 1000 ft/s. Zatím je vše dobré

Pro 900 ft/s

900 stop/s je 10800 /s

3x1/10800 = 277,77 us

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

Časovač 1 bude na 5555

uC do matematiky a místo 900 se zobrazí 900, 09

Proč? protože časovač 1 je na 5555 a 0, 5555 je ztracen. Tic na časovači nejsou dělitelné.

Došlo k chybě pro 0, 09 na 900 ft/s

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

Pro 1500 ft/s je 1500 ft/s 18000 /s 3x1/10800 = 166,66 USD

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

uC proveďte matematiku a místo 1500 se zobrazí 1500,15.15/1500x100 = 0, 01%

Pro 9 000 ft/s

9000 x 12 = 180000 palců / s

3x1/180000 = 27,7777 nás

27,77 us / 50 ns = 555, 555

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

Zde je chyba 9 stop/s na 9000 = 0, 1%

Jak vidíte, chyba % stoupá, když je rychlost vyšší. Ale zůstaňte <0,1%

Ty výsledky jsou velmi dobré.

Přesnost ale není lineární. Při 10 000 stop/s je to 0, 1 %. Dobrou novinkou je, že nikdy netestujeme peletu 10 000 ft/s.

Další věc, kterou je třeba mít na paměti. Dojde -li k přerušení, uC vždy dokončí poslední instrukci, než vstoupí do přerušení. To je normální a všichni uC to dělají. Pokud kódujete arduino, v C nebo dokonce assembler. Většinu času budete čekat ve věčné smyčce … čekat. Problém je, že ve smyčce strávíme 2 cykly. Normálně to není důležité. Ale v našem případě. ANO, každý tik je důležitý. Podívejme se na nekonečnou smyčku:

montér:

smyčka:

smyčka rjmp

V C:

zatímco (1) {}

Ve skutečnosti kompilátor C používá instrukci rjmp. RJMP jsou 2 cykly.

To znamená, že pokud dojde k přerušení prvního cyklu, ztratíme jeden cyklus (tic) (50ns).

Můj způsob, jak to opravit, je přidat do smyčky mnoho instrukcí nop. NOP je 1 cyklus.

smyčka:

nop

nop

nop

nop

nop

smyčka rjmp

Pokud k přerušení dojde na pokyn nop. Jsme v pořádku Pokud se to stane ve druhém cyklu instrukce rjmp, jsme v pořádku. Ale pokud se to stane v prvním cyklu instrukce rjmp, ztratíme jeden tic. Ano, je to jen 50 ns, ale jak vidíte výše, 50 ns na 3 palce není nic. Nemůžeme to opravit softwarem, protože nevíme, kdy přesně k přerušení dojde. Proto v kódu uvidíte spoustu instrukcí nop. Teď jsem si docela jistý, že přerušení spadne na pokyn nop. Pokud přidám 2000 nop, mám 0, 05%, abych spadl na instrukci rjmp.

Další věc, kterou je třeba mít na paměti. Když dojde k přerušení. Kompilátor dělá mnoho push a pull. Ale vždy je to stejné číslo. Nyní tedy můžeme provést softwarovou opravu.

Na závěr k tomuto:

Přesnost pro průměrnou peletu 1000 ft/s je 0, 01%

100x přesnější než ostatní 1% na trhu. Frekvence je vyšší a s TCXO přesnější

Například 1% z 1000 ft/s je více nebo méně 10 ft/s. Je to obrovský rozdíl.

Krok 3: Schéma a seznam dílů

Schéma a seznam dílů
Schéma a seznam dílů

Zde jsem implementoval svůj obvod zapnutí/vypnutí jedním tlačítkem. (viz můj poslední návod) Tento obvod je velmi praktický a funguje velmi dobře.

Používám atmega328p. Tento je naprogramován v C.

Displej je standardní 2řádkový LCD HD44780 kompatibilní. Používá se 4bitový režim.

K napájení TCXO 20 MHz slouží napětí 3,3 V.

D1 je pro podsvícení LCD. Volitelný. Pokud nenainstalujete D1, baterie vydrží déle.

Všechny odpory a krytky jsou 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 1 mil

R2 1 mil

R4 2,2 tis

R5 160

R6 160

R7 1M

R8 1M

U1 MIC5317-3.3 MIC5317 SOT23-5

U2 DMG6601LVT DMG6601LVT SOT23-6

Displej LCD 2řádkový HD44780. Není třeba kupovat modul i2c.

Senzory:

2x vysílač OP140A

2x přijímač OPL530

Enkodér: PEC11R-4215K-S0024 *Nezapomeňte přidat 4x 10k odpory a 2x 0,01uf k vytvoření filtru kodéru. viz obrázek níže

Krok 4: Soubor Gerber PCB

Soubor PCB Gerber
Soubor PCB Gerber
Soubor PCB Gerber
Soubor PCB Gerber
Soubor PCB Gerber
Soubor PCB Gerber
Soubor PCB Gerber
Soubor PCB Gerber

Zde jsou soubory Gerber

Krok 5: Pájejte svůj Pcb

Pájecí Pcb
Pájecí Pcb
Pájecí Pcb
Pájecí Pcb
Pájecí Pcb
Pájecí Pcb

Se schematickou pomocí připájejte všechny své součásti na desku plošných spojů. Každý díl nebo napsaný na PCB, R1, R2 … a tak dále.

Nemám nainstalovanou D1. Toto je pro podsvícení LCD. Je to krásné, ale výdrž baterie je ovlivněna. Rozhodl jsem se proto nechat podsvícení LCD vypnuté.

Krok 6: Programování Atmega328p

Programování Atmega328p
Programování Atmega328p

Zde v kroku 12 zkontrolujte program atmega328p. Zde poskytuji soubor.hex.

Zde je program avrdude připraven k naprogramování dávkového souboru. Stačí kliknout na program usbasp.bat a váš usbasp se správně nainstaluje. Vše bude provedeno automaticky včetně pojistkového bitu.

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

V tomto projektu sdílím také zdrojový kód C. Uvědomte si, že některé poznámky v něm mohou být ve francouzštině. Https: //1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…

Krok 7: LCD displej

LCD displej
LCD displej
LCD displej
LCD displej

Nainstalujte pásku a spojte desky plošných spojů a LCD dohromady

Krok 8: Soubor STL

STL soubor
STL soubor
Soubor STL
Soubor STL
STL soubor
STL soubor

stl soubor

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

Podpora je nutná pro pouzdro, trubku senzoru a držák pušky.

Všechny jsem vytiskl na výšku 0,2 mm.

Krok 9: OTOČNÝ KÓDOVAČ

OTOČNÝ KÓD
OTOČNÝ KÓD
OTOČNÝ KÓD
OTOČNÝ KÓD
OTOČNÝ KÓD
OTOČNÝ KÓD

Tento rotační kodér je připojen ke konektoru isp. slouží ke změně hmotnosti pelet a k zapnutí a vypnutí zařízení.

vcc isp pin 2 (pull up odpor)

Terminál A (žlutý) přejděte na pin ISP 1

Terminál B (zelený) přejděte na pin 3 poskytovatele

Svorka C (GND) isp pin 6

Přidávám 2 obrázky, abych viděl rozdíl mezi filtrem a žádným filtrem. Rozdíl mezi oběma můžete snadno vidět.

Tlačítko přejde do konektoru SW desky plošných spojů.

Krok 10: Senzorová trubka

Senzorová trubka
Senzorová trubka
Senzorová trubka
Senzorová trubka
Senzorová trubka
Senzorová trubka

DŮLEŽITÉ:

Senzorová trubka musí být černá a přijímač senzoru musí být skrytý

Moje první pokusy byly mít krásnou červenou dýmku. Ale to je ošidné! Vůbec to nefungovalo. Přišel jsem na to, že venkovní světlo dopadalo a plastový senzor přijímače byl vždy zapnutý.

Abych měl dobrý výsledek, neměl jsem na výběr změnit barvu na černou.

Nainstalujte přijímač nahoře. A skryjte čirý plast černou barvou, páskou nebo gumou, černým silikonem.

Nainstalujte vysílač na spodní část. Zkontrolujte perem, zda senzory reagují dobře. Možná bude potřeba díru vysílače trochu zvětšit. bude to záviset na kalibraci vaší tiskárny.

Také mám lepší výsledek ve stínu. Vyhněte se přímému slunečnímu světlu.

Krok 11: Alternativa potrubí snímače

Alternativní potrubí snímače
Alternativní potrubí snímače
Alternativní potrubí snímače
Alternativní potrubí snímače

Pokud nemáte 3D tiskárnu, můžete to samé udělat s měděnou trubkou. Bude to fungovat velmi dobře. Těžká věc je otvor přesně 3 palce a přijímač a vysílač musí být vyrovnány.

Krok 12: Peleta na osciloskopu a kalibrace

Peleta na osciloskopu a kalibrace
Peleta na osciloskopu a kalibrace

Jedná se o skutečnou peletu, která prochází trubkou. Sonda 1 žlutá je senzor 1. Sonda 2 fialová je senzor 2.

Čas/div je 50 us.

Můžeme napočítat 6 divizí po 50us. 50 us x 6 = 300 us (pro 3 palce). 300 us x 4 = 1,2 ms na 1 stopu

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

Můžeme také vidět, že senzor je normálně na 5V. A můžeme zablokovat světlo vysílače, senzor spadne na 0.

Je to způsob, jakým uC začíná a zastavuje jeho vysílač (timer1)

Ale abych přesně věděl, jestli je rychlost přesná, potřeboval jsem způsob, jak to změřit.

K provedení softwarové kalibrace a testování přesnosti tohoto zařízení jsem použil referenční oscilátor 10 MHz. Podívejte se na můj GPSDO na jiné instrukční.

Tímto 10 MHz napájím další atmega328. A naprogramujte tento v assembleru, aby mi poslal 2 impulzy pokaždé, když stisknu tlačítko pro simulaci pelety. Přesně jako jsme viděli na obrázku, ale místo toho, abychom měli skutečnou peletu, to bylo další uC, které mi poslalo 2 impulsy.

Při každém stisknutí tlačítka byl odeslán 1 impuls a přesně 4 ms po odeslání dalšího impulsu.

Tímto způsobem mohu vyvážit softwarový kompilátor tak, aby byl vždy zobrazen 1000 ft/s.

Krok 13: Více…

Více…
Více…
Více…
Více…

Toto je můj první prototyp roku 2010.

V případě jakýchkoli dotazů nebo hlášení chyb mi můžete poslat e -mail. Anglicky nebo francouzsky. Udělám vše, abych pomohl.

Doporučuje: