Sadržaj:

Kronograf zračne puške, kronoskop. 3D ispis: 13 koraka
Kronograf zračne puške, kronoskop. 3D ispis: 13 koraka

Video: Kronograf zračne puške, kronoskop. 3D ispis: 13 koraka

Video: Kronograf zračne puške, kronoskop. 3D ispis: 13 koraka
Video: How CP1 CO2 Pistol works, full video with sound on channel page #pcp #airgun #airsoft #shorts 2024, Studeni
Anonim
Image
Image
Značajka
Značajka

Pozdrav svima, danas ćemo ponovno pogledati projekt koji sam napravio 2010. godine. Kronograf zračne puške. Ovaj uređaj će vam reći brzinu projektila. Pelet, BB ili čak zračna mekana BB plastična kugla.

Za zabavu sam 2010. kupio zračnu pušku. Udarao je u limenke, boce, ciljao. Znam da je brzina ovog pištolja bila najveća 500 stopa/s. Zato što je to kanadski zakon. Dostupne su neke jače zračne puške, ali za to morate imati dozvolu, a te stvari ne možete kupiti u Walmartu.

Sad kad sam imao ovu dozvolu, mogao sam kupiti drugu. No, kratka priča, isti je pištolj bio dostupan SAD -u pri brzini od 1000 stopa/s. ŠTO!? Isti pištolj? da … U Kanadi, udar ima rupu u sebi i opruga je mekša.

Prvo što treba učiniti je popuniti rupu. To sam i učinio s lemljenjem. Sljedeća stvar koju trebate učiniti je naručiti zamjensku oprugu. Ali čekaj … kolika je trenutna brzina moje nove igračke? Je li proljeće doista potrebno? Ne znam i želim znati. Želim znati sada, ali kako?

Zato sam napravio ovaj projekt. Trebala su mi samo 2 senzora, uC i zaslon, a mi smo u poslu.

Prošli tjedan sam na polici ugledao svoj stari plavi kronograf i razgovarao sam sa sobom: "Zašto ovo ne podijeliš i ne učiniš pouku s njim?" Usput, mogli bismo povećati točnost i dodati indikator baterije. Za uključivanje/isključivanje stavite 1 gumb umjesto 2. Svi se postavljaju na površinu. Sad smo 2020.!

Pa evo ga … počnimo!

Korak 1: Značajka

-Brzina peleta

-Brzina

-20 mhz trčanje, velika točnost

-Automatski isključeno

-Prikazan napon baterije

-shematski dostupan

-pcb dostupan

-dostupan popis dijelova

-STL dostupan

-C kod dostupan

Korak 2: Teorija rada i točnosti

-UC radi na 20Mhz. Koristi se oscilator TCX0 +-2,5 ppm

-Imamo 2 senzora udaljena 3 inča jedan od drugog.

-Promet je pogodio prvi senzor. uC početak brojanja (timer1)

-Promet je pogodio drugi senzor. uC prestati brojati.

-uC provjerite timer1 vrijednost, izračunajte i prikažite brzinu i brzinu.

Koristim 16 -bitni timer1 + preljevna zastavica tov1. 17 bita ukupno za 131071 "tic" za potpuni broj.

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

131071 x 50 ns = 6,55355 ms do 3 inča.

6,55355 ms x 4 = 26,21 ms do 12 inča.

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

Ovo je najsporija brzina koju uređaj može mjeriti.

Zašto 20 mhz? Zašto ne koristite unutarnje 8 MHz ili čak kristal?

Moj prvi uređaj je koristio unutarnji oscilator. Radio je, ali ovaj nije bio dovoljno precizan. Varijacija je prevelika. Kristal je bolji, ali temperatura ima različitu učestalost. S tim ne možemo napraviti točan mjerni uređaj. Također, što je frekvencija veća, više će se tikova računati za istu brzinu. Uzorkovanje će biti bolje da ima vrlo dobru točnost. Budući da se tik ne može podijeliti, gubitak je mali ako je radni ciklus brz.

Na 20 MHz imamo korake od 50 ns. Znamo li koliko je točno 50 ns za projektil pri 38 ft/s.

38,1472637 ft/s podijeljeno s 131071 = 0, 000291042 stopa

0, 0003880569939956207 stopa x 12 = 0, 003492512 inča

1/0, 003492512 = 286.37 ". Drugim riječima. Pri brzini od 50 stopa/s imamo točnost od +- 1/286" ili +- 0, 003492512 inča

Ali ako je moj oscilator najgori i radi na 20 mhz +2,5 ppm, je li to u redu? Hajde da vidimo…

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

U najgorem slučaju imamo još 50 takta na 20 Mhz. To je 50 sati u sekundi. Koliko tikova više na timeru 1 ako pelet radi istom brzinom (38,1472637 stopa/s ili 6,55ms)?

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 stopa/s

Dakle imamo 38.14735907 stopa/s umjesto 38.1472637 stopa/s

Sada znamo da 2,5 ppm ne utječe na rezultat.

Evo nekoliko primjera različite brzine

Za 1000 stopa/s

1000 ft/s x 12 je 12000 inča/s

1 sekunda za 12000 "koliko vremena napraviti 3"? 3x1/12000 = 250 us sekundi

250 us / 50 ns = 5000 tika.

Tajmer 1 bit će na 5000

uC učinite matematiku i prikazuje se 1000 ft/s. Zasada je dobro

Za 900 stopa/s

900 ft/s je 10800 /s

3x1/10800 = 277,77 nas

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

Tajmer 1 bit će na 5555

uC matematiku i umjesto 900 prikazat će se 900, 09

Zašto? jer je mjerač vremena 1 na 5555 i 0, 5555 je izgubljen. Tajmer za uključivanje i isključivanje se ne može dijeliti.

Imamo pogrešku za 0, 09 na 900 ft/s

0, 09/900x100 = samo 0,01% pogreške

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

166,66 us / 50 ns = 3333,333 tic Timer 1 bit će na 3333

uC do matematike i 1500.15 će se prikazati umjesto 1500 to je.15/1500x100 = 0, 01%

Za 9000 stopa/s

9000 x 12 = 180000 inča / s

3x1/180000 = 27,7777 nas

27,77 us / 50 ns = 555, 555

Tajmer 1 bit će na 555, a 4/(1/555x50ns) će se prikazati 9009, 00 će se prikazati

Ovdje je pogreška 9 stopa/s na 9000 = 0,1%

Kao što vidite, % greška raste kada je brzina veća. Ali ostanite <0,1%

Ti su rezultati vrlo dobri.

Ali točnost nije linearna. Pri 10000 stopa/s to je 0,1 %. Dobro je to što nikada ne testiramo pelet od 10 000 ft/s.

Još jedna stvar koju treba imati na umu. Kad dođe do prekida, uC uvijek završi zadnju instrukciju prije nego unese u prekid. To je normalno i svi uC to rade. Ako kodirate arduino, u C -u ili čak asembleru. Većinu vremena ćete čekati u vječnoj petlji … čekati. Problem je u tome što u petlji provodimo 2 ciklusa. Obično to nije važno. Ali u našem slučaju. DA, svaki je tik važan. Pogledajmo beskonačnu petlju:

asembler:

petlja:

rjmp petlja

U C:

dok (1) {}

Zapravo C kompajler koristi rjmp upute. RJMP je 2 ciklusa.

To znači da ako se prekid dogodi prvom ciklusu, gubimo jedan ciklus (tic) (50ns).

Moj način da to ispravim je da u petlju dodam mnogo nop instrukcija. NOP je 1 ciklus.

petlja:

nop

nop

nop

nop

nop

rjmp petlja

Ako se prekid dogodi na nop uputi. Mi smo ok Ako se to dogodi u drugom ciklusu rjmp upute, u redu smo. Ali ako se to dogodi u prvom ciklusu rjmp upute, izgubit ćemo jedan tic. Da, to je samo 50 ns, ali kao što vidite gore, 50 ns na 3 inča nije ništa. Ne možemo to ispraviti softverom jer ne znamo kada se točno dogodio prekid. Zato ćete u kodu vidjeti mnogo nop uputa. Sada sam prilično siguran da će prekid pasti na nop upute. Ako dodam 2000 nop, 0, 05% će pasti na rjmp upute.

Još jedna stvar koju treba imati na umu. Kad dođe do prekida. Kompilator radi mnoge push and pull. Ali to je uvijek isti broj. Dakle, sada možemo napraviti softversku korekciju.

Da zaključim o ovome:

Točnost za prosječni pelet od 1000 ft/s je 0,01%

100x točnije od ostalih 1% na tržištu. Učestalost je veća i s TCXO -om točnija

Na primjer, 1% od 1000 ft/s je manje -više 10 ft/s. Ogromna je razlika.

Korak 3: Shema i popis dijelova

Shema i popis dijelova
Shema i popis dijelova

Ovdje sam implementirao svoj krug uključivanja/isključivanja s jednim gumbom. (vidi moju zadnju uputu) Ovaj sklop je vrlo zgodan i radi vrlo dobro.

Koristim atmega328p. Ovaj je programiran u C.

Zaslon je standardno kompatibilan sa 2 reda i LCD -om HD44780. Koristi se 4 bitni način rada.

Regulator od 3,3 V koristi se za osiguravanje napona na TCXO 20 mhz.

D1 služi za pozadinsko osvjetljenje LCD -a. Izborno. Baterija će trajati dulje ako ne instalirate D1.

Svi otpornici i kape su 0805 pakiranja

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

LCD zaslon 2 reda HD44780. Nema potrebe za kupnjom i2c modula.

Senzori:

2x odašiljač OP140A

2x prijemnik OPL530

Enkoder: PEC11R-4215K-S0024 *Ne zaboravite dodati 4x 10k otpornika i 2x.01uf za filtriranje davača. pogledajte sliku ispod

Korak 4: Gerber datoteka PCB -a

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

Ovdje su gerber datoteke

Korak 5: Lemite svoj PCB

Lemite svoj PCB
Lemite svoj PCB
Lemite svoj PCB
Lemite svoj PCB
Lemite svoj PCB
Lemite svoj PCB

Uz shematsku pomoć, lemite sve svoje komponente na tiskanu ploču. Svaki dio ili napisan na tiskanoj ploči, r1, r2 … i tako dalje.

Nemam instaliran D1. Ovo je za pozadinsko osvjetljenje LCD-a. Lijepo je, ali to utječe na trajanje baterije. Zato sam odlučio isključiti pozadinsko osvjetljenje LCD-a.

Korak 6: Programiranje Atmega328p

Programiranje Atmega328p
Programiranje Atmega328p

Provjerite ovdje u koraku 12 da biste programirali atmega328p. Ovdje dajem.hex datoteku za to.

Ovdje je program avrdude spreman za programiranje batch datoteke. Samo kliknite na program usbasp.bat i vaš usbasp je ispravno instaliran. Sve će se učiniti automatski, uključujući bit osigurača.

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

U ovom projektu dijelim i izvorni kod C. Imajte na umu da neke bilješke u njemu mogu biti na francuskom. Https: //1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…

Korak 7: LCD zaslon

LCD zaslon
LCD zaslon
LCD zaslon
LCD zaslon

Instalirajte traku i spojite PCB i LCD

Korak 8: STL datoteka

STL datoteka
STL datoteka
STL datoteka
STL datoteka
STL datoteka
STL datoteka

stl datoteku

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

Potrebna je podrška za kućište, cijev senzora i držač puške.

Sve sam tiskao na 0,2 mm visine.

Korak 9: ROTAJANSKI KODIR

ROTAJANSKI KODIR
ROTAJANSKI KODIR
ROTAJANSKI KODIR
ROTAJANSKI KODIR
ROTAJANSKI KODIR
ROTAJANSKI KODIR

Ovaj okretni davač spojen je na isp konektor. koristi se za promjenu težine peleta te za uključivanje i isključivanje uređaja.

vcc isp pin 2 (povucite otpornik)

Stezaljka A (žuta) idite na pin 1 ISP -a

Stezaljka B (zelena) idite na pin 3 ISP -a

Stezaljka C (gnd) isp pin 6

Dodajem 2 slike da vidim razliku između filtera i filtera bez filtera. Lako možete vidjeti razliku između oboje.

Gumb ide na SW priključnicu za PCB.

Korak 10: Cijev osjetnika

Senzorska cijev
Senzorska cijev
Senzorska cijev
Senzorska cijev
Senzorska cijev
Senzorska cijev

VAŽNO:

Senzorska cijev mora biti crna, a prijemnik osjetnika mora biti sakriven

Moji prvi pokušaji bili su imati prekrasnu crvenu lulu. Ali ovo je lukavo! Uopće nije radilo. Shvatio sam da dolazi vanjsko svjetlo. Plastika i senzor prijemnika su uvijek uključeni.

Kako bih postigao dobre rezultate, nisam imao izbora promijeniti boju u crnu.

Instalirajte prijemnik odozgo. Čistu plastiku sakrijte crnom bojom, trakom ili žvakom, crnim silikonom.

Postavite odašiljač na dno. Provjerite olovkom odgovaraju li senzori. Možda će se otvor emitera morati malo povećati. ovisit će o kalibraciji vašeg pisača.

Također imam bolji rezultat u hladu. Izbjegavajte izravnu sunčevu svjetlost.

Korak 11: Alternativa cijevi senzora

Alternativa cijevi senzora
Alternativa cijevi senzora
Alternativa cijevi senzora
Alternativa cijevi senzora

Ako nemate 3d pisač, to možete učiniti i s bakrenom cijevi. To će jako dobro funkcionirati. Teško je učiniti rupu na točno 3 inča, a prijemnik i odašiljač moraju biti poravnati.

Korak 12: Pelet na osciloskopu i kalibraciji

Pelet na osciloskopu i kalibraciji
Pelet na osciloskopu i kalibraciji

Ovo je pravi pelet koji prolazi kroz cijev. Sonda 1 žuta je senzor 1. Sonda 2 ljubičasta je senzor 2.

Vrijeme/div je 50 USD.

Možemo nabrojati 6 podjela po 50us. 50 us x 6 = 300 us (za 3 inča). 300 us x 4 = 1,2 ms za 1 stopa

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

Također možemo vidjeti da je senzor normalno na 5v. Možemo li blokirati svjetlo emitera, senzor pasti na 0.

To je način na koji uC pokreće i zaustavlja njegov regulator (timer1)

Ali da bih točno znao je li brzina točna, trebao mi je način da to izmjerim.

Za kalibraciju softvera i ispitivanje točnosti ovog uređaja upotrijebio sam referentni oscilator od 10 mhz. Pogledajte moj GPSDO na drugim uputama.

Hranim drugu atmega328 sa ovih 10 mhz. I programirajte ovaj u asembleru da mi šalje 2 impulsa svaki put kad pritisnem gumb za simulaciju peleta. Upravo onako kako smo vidjeli na slici, ali umjesto toga da imam pravi pelet, to je bio drugi uC koji mi je poslao 2 impulsa.

Svaki put kad je pritisnuta tipka, poslan je 1 impuls i točno 4 ms nakon slanja drugog impulsa.

Na ovaj način, moći ću uravnotežiti softverski prevoditelj tako da uvijek ima prikaz 1000 ft/s.

Korak 13: Više …

Više…
Više…
Više…
Više…

Ovo je moj prvi prototip 2010.

Za sva pitanja ili prijavu greške možete mi poslati e -poruku. Engleski ili francuski. Potrudit ću se pomoći.

Preporučeni: