Kazalo:

Kronograf zračne puške, kronoskop. 3D natisnjeno: 13 korakov
Kronograf zračne puške, kronoskop. 3D natisnjeno: 13 korakov

Video: Kronograf zračne puške, kronoskop. 3D natisnjeno: 13 korakov

Video: Kronograf zračne puške, kronoskop. 3D natisnjeno: 13 korakov
Video: How CP1 CO2 Pistol works, full video with sound on channel page #pcp #airgun #airsoft #shorts 2024, Julij
Anonim
Image
Image
Lastnost
Lastnost

Pozdravljeni vsi, danes bomo ponovno pregledali projekt, ki sem ga naredil leta 2010. Kronograf z zračno puško. Ta naprava vam bo povedala hitrost izstrelka. Plastična kroglica iz peletov, BB ali celo z zrakom mehka BB.

Leta 2010 sem za zabavo kupil zračno puško. Udaril je v pločevinke, steklenice, cilj. Vem, da je bila hitrost te pištole največ 500 čevljev/s. Ker je to kanadski zakon. Na voljo je nekaj močnejših zračnih pušk, vendar morate imeti licenco za to in teh stvari ne morete kupiti v Walmartu.

Zdaj, ko sem imel to licenco, sem lahko kupil drugo. Toda kratka zgodba, ista pištola je bila na voljo ZDA pri hitrosti 1000 čevljev na sekundo. KAJ!? Ista pištola? da … V Kanadi imajo udarci luknjo in vzmet je mehkejša.

Najprej morate zapolniti luknjo. To sem naredil s spajkanjem. Naslednja stvar, ki jo je bilo treba narediti, je bila naročiti nadomestno vzmet. Ampak počakaj … kolikšna je trenutno hitrost moje nove igrače? Je pomlad res potrebna? Ne vem in želim vedeti. Zdaj želim vedeti, ampak kako?

Zato sem naredil ta projekt. Potrebovala sem le 2 senzorja, uC in zaslon. Smo v poslu.

Prejšnji teden sem na polici videl svoj stari modri kronograf in se pogovarjal sam s sabo: "Zakaj tega ne delite in z njim naredite navodila?" Mimogrede, lahko bi povečali natančnost in dodali indikator baterije. Za vklop/izklop postavite gumb 1 namesto 2. Vse na površinsko montažo. Zdaj smo v letu 2020!

Torej, tukaj je … začnimo!

1. korak: funkcija

-Hitrost peletov

-Hitrost

-20 mhz teče, velika natančnost

-Samodejno izklopljeno

-Prikazana napetost baterije

-shematično na voljo

-pcb na voljo

-na voljo seznam delov

-STL na voljo

-Koda na voljo

2. korak: Teorija delovanja in natančnost

-UC deluje pri 20 Mhz. Uporabljeni oscilator je TCX0 +-2,5 ppm

-Imamo 2 senzorja na razdalji 3 cm drug od drugega.

-Projektil je zadel prvi senzor. uC začetek štetja (timer1)

-Izstrelek je zadel drugi senzor. uC nehaj šteti.

-uC check timer1 vrednost, naredite matematiko in prikaz hitrosti in hitrosti.

Uporabljam 16 -bitni timer1 + zastavico za prelivanje tov1. 17 bit skupaj za 131071 "tic" za popolno štetje.

1/20 mhz = 50 ns Vsak tic je 50ns

131071 x 50 ns = 6,55355 ms do 3 palcev.

6,55355 ms x 4 = 26,21 ms do 12 palcev.

1/26,21 ms = 38,1472637 čevljev/s

To je najhitrejša hitrost, ki jo naprava lahko meri.

Zakaj 20 mhz? Zakaj ne uporabite notranjih 8 mhz ali celo kristala?

Moja prva naprava je uporabljala notranji oscilator. Deloval je, vendar ta ni bil dovolj natančen. Razlika je prevelika. Kristal je boljši, vendar je temperatura različno pogosta. S tem ne moremo narediti natančne merilne naprave. Poleg tega, bolj ko je frekvenca visoka, se bo pri isti hitrosti štelo več tikov. Vzorčenje bo bolje, če bo zelo natančno. Ker tik ni deljiv, je izguba majhna, če je delovni cikel hiter.

Pri 20 MHz imamo korake 50 ns. Ali vemo, kako natančno je 50 ns za izstrelek pri 38 ft/s.

38,1472637 ft/s, deljeno s 131071 = 0, 000291042 čevljev

0, 0003880569939956207 čevljev x 12 = 0, 003492512 palcev

1/0, 003492512 = 286.37 ". Z drugimi besedami. Pri 50 ft/s imamo natančnost +- 1/286" ali +- 0, 003492512 palcev

Ampak, če je moj oscilator najslabši in deluje pri 20 mhz +2,5 ppm, je v redu? Pa ugotovimo…

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

Najslabši scenarij imamo torej še 50 taktov na 20 Mhz. 50 ur na 1 sekundo. Koliko tikov več na merilniku časa 1, če pelet deluje z enako hitrostjo (38,1472637 čevljev/s ali 6,55 ms)?

1/20000050 = 49,9999875 ns

49,9999875 ns x 131071 = 6, 553533616 ms

6, 553533616 ms x 4 = 26,21413446 ms

1/26,21413446 ms = 38,14735907 čevljev/s

Torej imamo 38,14735907 čevljev/s namesto 38,1472637 čevljev/s

Zdaj vemo, da 2,5 ppm ne vpliva na rezultat.

Tu je nekaj primerov različne hitrosti

Za 1000 čevljev/s

1000 ft/s x 12 je 12000 palcev/s

1 sekunda za 12000 "koliko časa narediti 3"? 3x1/12000 = 250 us sekund

250 us / 50 ns = 5000 tikov.

Časovnik 1 bo pri 5000

uC do matematike in prikaže se 1000 ft/s. Zaenkrat dobro

Za 900 čevljev/s

900 ft/s je 10800 /s

3x1/10800 = 277,77 us

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

Časovnik 1 bo na 5555

uC do matematike in namesto 900 bo prikazano 900, 09

Zakaj? ker je časovnik 1 na 5555 in 0, je 5555 izgubljen. Časovnik za nastavitev kljukice ni deljiv.

Napaka je 0, 09 pri 900 ft/s

0, 09/900x100 = samo 0,01% napaka

Za 1500 ft/s1500 ft/s je 18000 /s 3x1/10800 = 166,66 us

166,66 us / 50 ns = 3333,333 tic Timer 1 bo na 3333

uC do matematike in 1500.15 bo prikazano namesto 1500 je 0,15/1500x100 = 0, 01%

Za 9000 ft/s

9000 x 12 = 180000 palcev / s

3x1/180000 = 27,7777 us

27,77 us / 50 ns = 555, 555

Časovnik 1 bo pri 555 in prikazano bo 4/(1/555x50ns) 9009, 00 bo prikazano

Tu je napaka 9 čevljev/s pri 9000 = 0,1%

Kot lahko vidite, % napake narašča, ko je hitrost večja. Ostanite pa <0,1%

Ti rezultati so zelo dobri.

Toda natančnost ni linearna. Pri 10000 ft/s je 0,1 %. Dobra novost je, da nikoli ne preizkusimo 10.000 ft/s peletov.

Še nekaj, kar morate imeti v mislih. Ko pride do prekinitve, uC vedno zaključi zadnje navodilo, preden vnese prekinitev. To je normalno in vsi uC to počnejo. Če kodirate arduino, v C ali celo asembler. Večino časa boste čakali v večni zanki … čakati. Problem je, da v zanki preživimo 2 cikla. Običajno to ni pomembno. Toda v našem primeru. DA, vsak tik je pomemben. Poglejmo neskončno zanko:

sestavljalec:

zanka:

rjmp zanka

V C:

medtem ko (1) {}

Pravzaprav prevajalnik C uporablja navodila rjmp. RJMP je 2 cikla.

To pomeni, da če se prekinitev zgodi v prvem ciklu, izgubimo en cikel (tic) (50ns).

Moj način, da to popravim, je, da v zanko dodam veliko navodil nop. NOP je 1 cikel.

zanka:

nop

nop

nop

nop

nop

rjmp zanka

Če se prekinitev zgodi po navodilih nop. Sva v redu Če se to zgodi v drugem ciklu navodil rjmp, smo v redu. Če pa se to zgodi v prvem ciklu navodil rjmp, bomo izgubili en tik. Da, to je le 50 ns, vendar kot vidite zgoraj, 50 ns na 3 palcih ni nič. S programsko opremo tega ne moremo popraviti, ker ne vemo, kdaj točno pride do prekinitve. Zato boste v kodi videli veliko navodil nop. Zdaj sem precej prepričan, da bo prekinitev padla na nop navodila. Če dodam 2000 nop, imam 0,05% na ukazu rjmp.

Še nekaj, kar morate imeti v mislih. Ko pride do prekinitve. Prevajalnik naredi veliko push and pull. Je pa vedno ista številka. Tako lahko zdaj popravimo programsko opremo.

Za zaključek o tem:

Natančnost za povprečni pelet 1000 ft/s je 0,01%

100x natančnejši od ostalih 1% na trgu. Frekvenca je višja in s TCXO natančnejša

Na primer, 1% 1000 ft/s je več ali manj 10 ft/s. To je velika razlika.

3. korak: Shema in seznam delov

Shema in seznam delov
Shema in seznam delov

Tukaj sem uvedel svoj krog za vklop/izklop z enim gumbom. (glej moje zadnje navodilo) To vezje je zelo priročno in deluje zelo dobro.

Uporabljam atmega328p. Ta je programiran v C.

Zaslon je standardno združljiv z 2 vrsticami LCD HD44780. Uporablja se 4 -bitni način.

Za napajanje napetosti TCXO 20mhz se uporablja regulator 3.3v.

D1 je za osvetlitev LCD zaslona. Neobvezno. Če ne namestite D1, bo baterija zdržala dlje.

Vsi upori in pokrovi so v paketu 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 k

R5 160

R6 160

R7 1M

R8 1M

U1 MIC5317-3.3 MIC5317 SOT23-5

U2 DMG6601LVT DMG6601LVT SOT23-6

Zaslon LCD 2 vrstica HD44780. Modula i2c ni treba kupiti.

Senzorji:

2x oddajnik OP140A

2x sprejemnik OPL530

Dajalnik: PEC11R-4215K-S0024 *Ne pozabite dodati 4x 10k uporov in 2x.01uf, da naredite filter dajalnika. glej sliko spodaj

Korak: Datoteka Gerber PCB

PCB Gerber datoteka
PCB Gerber datoteka
PCB Gerber datoteka
PCB Gerber datoteka
PCB Gerber datoteka
PCB Gerber datoteka
PCB Gerber datoteka
PCB Gerber datoteka

Tu so datoteke Gerber

5. korak: Spajkajte svoj PCB

Spajkajte svoj PCB
Spajkajte svoj PCB
Spajkajte svoj PCB
Spajkajte svoj PCB
Spajkajte svoj PCB
Spajkajte svoj PCB

S shematsko pomočjo spajite vso svojo komponento na tiskano vezje. Vsak del ali napisan na pcb, r1, r2 … itd.

Nimam nameščenega D1. To je za osvetlitev LCD zaslona. Lepo je, vendar vpliva na življenjsko dobo baterije. Zato se odločim, da osvetlitev LCD-ja ne bo izklopljena.

6. korak: Programiranje Atmega328p

Programiranje Atmega328p
Programiranje Atmega328p

Preverite tukaj v 12. koraku, da programirate atmega328p. Za to podajam datoteko.hex.

Tukaj je program avrdude, pripravljen za programiranje paketne datoteke. Samo kliknite program usbasp.bat in vaš usbasp je pravilno nameščen. Vse bo izvedeno samodejno, vključno z varovalko.

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

V tem projektu delim tudi izvorno kodo C. Zavedajte se, da je nekaj opomb v njem lahko v francoščini. Https: //1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…

7. korak: LCD zaslon

LCD zaslon
LCD zaslon
LCD zaslon
LCD zaslon

Namestite trak in povežite PCB in LCD

8. korak: Datoteka STL

Datoteka STL
Datoteka STL
Datoteka STL
Datoteka STL
Datoteka STL
Datoteka STL

stl datoteko

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

Podpora je potrebna za ohišje, senzorsko cev in držalo za puško.

Vse sem natisnil na 0,2 mm visoko.

9. korak: ROTAJALNI KODIRALNIK

ROTAJALNI KODIRALNIK
ROTAJALNI KODIRALNIK
ROTAJALNI KODIRALNIK
ROTAJALNI KODIRALNIK
ROTAJALNI KODIRALNIK
ROTAJALNI KODIRALNIK

Ta rotacijski dajalnik je priključen na priključek isp. uporablja se za spreminjanje teže peletov ter za vklop in izklop naprave.

vcc isp pin 2 (izvlecite upor navzgor)

Priključek A (rumen) pojdite na pin 1 ponudnika internetnih storitev

Sponka B (zelena) pojdite na pin 3 ponudnika internetnih storitev

Sponka C (gnd) isp pin 6

Dodajam 2 sliki, da vidim razliko med filtrom in brez filtra. Z lahkoto lahko vidite razliko med obema.

Potisni gumb gre do priključka pcb SW.

10. korak: Senzorska cev

Senzorska cev
Senzorska cev
Senzorska cev
Senzorska cev
Senzorska cev
Senzorska cev

POMEMBNO:

Senzorska cev mora biti črna, sprejemnik senzorja pa skrit

Moji prvi poskusi so bili lepa rdeča cev. Ampak to je težavno! Sploh ni delovalo. Ugotovil sem, da prihaja zunanja svetloba, plastika in senzor sprejemnika sta vedno prižgana.

Za dober rezultat nisem imel izbire, da barvo spremenim v črno.

Namestite sprejemnik na vrhu. Čisto plastiko skrijte s črno barvo, trakom ali gumi, črnim silikonom.

Oddajnik namestite na dno. Preverite, ali se senzorji dobro odzivajo. Morda bo treba luknjo oddajnika nekoliko povečati. to bo odvisno od kalibracije tiskalnika.

Tudi v senci imam boljši rezultat. Izogibajte se neposredni sončni svetlobi.

Korak: Alternativa senzorskih cevi

Alternativa senzorskih cevi
Alternativa senzorskih cevi
Alternativa senzorskih cevi
Alternativa senzorskih cevi

Če nimate 3D tiskalnika, lahko enako storite z bakreno cevjo. To bo zelo dobro delovalo. Težko je narediti luknjo na natanko 3 cm in sprejemnik in oddajnik morata biti poravnana.

Korak 12: Pelet na osciloskopu in kalibraciji

Pelet na osciloskopu in kalibraciji
Pelet na osciloskopu in kalibraciji

To je pravi pelet, ki gre skozi cev. Sonda 1 rumena je senzor 1. Sonda 2 vijolična je senzor 2.

Čas/div je 50 us.

Lahko štejemo 6 divizij po 50us. 50 us x 6 = 300 us (za 3 palce). 300 us x 4 = 1,2 ms za 1 čevelj

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

Vidimo lahko tudi, da je senzor običajno pri 5v. Ali lahko blokiramo oddajno svetlobo, senzor pade na 0.

To je način, kako uC zažene in ustavi svoj vmesnik (timer1)

Ampak, da bi natančno vedel, ali je hitrost natančna, sem potreboval način, da to izmerim.

Za umerjanje programske opreme in preverjanje natančnosti te naprave sem uporabil referenčni oscilator 10 MHz. Oglejte si moj GPSDO na drugih navodilih.

S temi 10 mhz napajam drugo atmega328. In programiraj tega v asemblerju, da mi pošlje 2 impulza vsakič, ko pritisnem gumb za simulacijo peleta. Točno tako, kot smo videli na sliki, namesto da bi imel pravi pelet, mi je drugi UC poslal 2 impulza.

Vsakič, ko ste pritisnili gumb, je bil poslan 1 impulz in točno 4 ms po drugem.

Na ta način bom lahko uravnotežil prevajalnik programske opreme, da bo vedno prikazanih 1000 ft/s.

Korak: Več …

Več…
Več…
Več…
Več…

To je moj prvi prototip leta 2010.

Za vsa vprašanja ali poročilo o napakah mi lahko pišete po e -pošti. Angleščina ali francoščina. Po svojih najboljših močeh bom pomagal.

Priporočena: