Sadržaj:

Hronograf vazdušne puške, hronoskop. 3D štampano: 13 koraka
Hronograf vazdušne puške, hronoskop. 3D štampano: 13 koraka

Video: Hronograf vazdušne puške, hronoskop. 3D štampano: 13 koraka

Video: Hronograf vazdušne puške, hronoskop. 3D štampano: 13 koraka
Video: Имитация выстрела из РСР 2024, Novembar
Anonim
Image
Image
Feature
Feature

Zdravo svima, danas ćemo ponovo pogledati projekat koji sam uradio 2010. godine. Hronograf sa vazdušnom puškom. Ovaj uređaj će vam reći brzinu projektila. Pelet, BB ili čak zračna mekana BB plastična kugla.

2010. sam kupio zračnu pušku za zabavu. Udarao je u limenke, boce, ciljao. Znam da je brzina ovog pištolja bila maksimalno 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. Ali kratka priča, isti pištolj bio je dostupan SAD -u pri brzini od 1000 stopa/s. ŠTA!? 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 uradio sa lemljenjem. Sljedeća stvar koju ste trebali učiniti je naručiti zamjensku oprugu. Ali čekaj … kolika je trenutna brzina moje nove igračke? Je li proljeće zaista potrebno? Ne znam i želim znati. Želim znati sada, ali kako?

Zato sam napravio ovaj projekat. Trebala su mi samo 2 senzora, uC i ekran i mi smo u poslu.

Prošle sedmice sam na polici ugledao svoj stari plavi hronograf i razgovarao sam sa sobom: "Zašto ovo ne podijeliš i ne uradiš instrukcije s tim?" Usput, mogli bismo povećati točnost i dodati indikator baterije. Za uključivanje/isključivanje stavite 1 dugme umjesto 2. Svi se montiraju na površinu. Sad smo 2020. godine!

Pa evo ga … počnimo!

Korak 1: Funkcija

-Brzina peleta

-Velocity

-20 mhz trčanje, velika preciznost

-Automatski isključeno

-Prikazan napon baterije

-shematski dostupan

-pcb dostupan

-dostupna lista dijelova

-STL dostupan

-C kod dostupan

Korak 2: Teorija rada i tačnosti

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

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

-Projektil je pogodio prvi senzor. uC start counting (timer1)

-Projektil je pogodio drugi senzor. uC prestati brojati.

-uC provjerite vrijednost timera1, izračunajte brzinu i brzinu prikaza.

Koristim 16 -bitni timer1 + preljevna zastavica tov1. Ukupno 17 bita 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 interne 8 MHz ili čak kristal?

Moj prvi uređaj je koristio unutrašnji oscilator. Radilo je, ali ovo nije bilo dovoljno precizno. Varijacija je prevelika. Kristal je bolji, ali temperatura ima različitu frekvenciju. S tim ne možemo napraviti precizan mjerni uređaj. Takođe, što je frekvencija veća, više tikova će se računati za istu brzinu. Uzorkovanje će biti bolje da ima vrlo dobru preciznost. 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 precizno 50 ns za projektil pri 38 ft/s.

38,1472637 ft/s podijeljeno sa 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 ft/s imamo tač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? Saznajmo…

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 taktova 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.999875 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 ft/s

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

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

250 us / 50 ns = 5000 tika.

Tajmer 1 će biti na 5000

uC uradite matematiku i prikazuje se 1000 ft/s. Zasada je dobro

Za 900 stopa/s

900 ft/s je 10800 /s

3x1/10800 = 277,77 us

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

Tajmer 1 će biti na 5555

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

Zašto? jer je tajmer 1 na 5555 i 0, 5555 je izgubljen. Tajmer na tajmeru se ne može dijeliti.

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

0, 09/900x100 = samo 0,01% greš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 matematiku 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 će biti na 555 i 4/(1/555x50ns) će biti prikazano 9009, 00 će biti prikazano

Ovdje je greš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 tačnost nije linearna. Pri 10000 ft/s to je 0,1 %. Dobra novost je što nikada ne testiramo pelet od 10 000 ft/s.

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

asembler:

petlja:

rjmp petlja

U C:

dok (1) {}

U stvari, C kompajler koristi rjmp instrukciju. 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 instrukciji. Dobro smo. Ako se to dogodi u drugom ciklusu rjmp upute, dobro smo. Ali ako se to dogodi u prvom ciklusu rjmp instrukcija, izgubit ćemo jedan tik. 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 instrukcija. Sada sam prilično siguran da će prekid pasti na nop instrukciju. Ako dodam 2000 nop, 0,05% će pasti na rjmp upute.

Još jedna stvar koju treba imati na umu. Kada dođe do prekida. Kompajler radi mnogo push and pull. Ali to je uvijek isti broj. Dakle, sada možemo izvršiti softversku korekciju.

Da zaključim o ovome:

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

100 puta preciznije od ostalih 1% na tržištu. Učestalost je veća i sa TCXO -om preciznija

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

Korak 3: Shema i lista dijelova

Shema i lista dijelova
Shema i lista dijelova

Ovdje sam implementirao svoj krug uključivanja/isključivanja s jednim gumbom. (vidi moje zadnje uputstvo) Ovo kolo je vrlo zgodno i radi vrlo dobro.

Koristim atmega328p. Ovaj je programiran na C.

Ekran je kompatibilan sa standardnim 2 -rednim LCD HD44780. Koristi se 4 bitni način rada.

Regulator 3.3v koristi se za napajanje TCXO 20mhz.

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

Svi otpornici i kape su 0805 pakovanja

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.2k

R5 160

R6 160

R7 1M

R8 1M

U1 MIC5317-3.3 MIC5317 SOT23-5

U2 DMG6601LVT DMG6601LVT SOT23-6

Ekran LCD 2 reda HD44780. Nema potrebe za kupovinom 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

Evo gerber datoteka

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 pcb, r1, r2 … itd.

Nemam instaliran D1. Ovo je za pozadinsko osvetljenje LCD ekrana. Prelijepo je, ali to utječe na trajanje baterije. Zato odlučujem da LCD pozadinsko svjetlo bude isključeno.

Korak 6: Programiranje Atmega328p

Programiranje Atmega328p
Programiranje Atmega328p

Provjerite ovdje u koraku 12 da biste programirali atmega328p. Ovdje dostavljam.hex datoteku za ovo.

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

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

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

Korak 7: LCD ekran

LCD ekran
LCD ekran
LCD ekran
LCD ekran

Instalirajte malo trake i povežite PCB i LCD zajedno

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…

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

Sve sam štampao na 0,2 mm visine.

Korak 9: ROTAJANSKI KODIR

ROTARY ENCODER
ROTARY ENCODER
ROTARY ENCODER
ROTARY ENCODER
ROTARY ENCODER
ROTARY ENCODER

Ovaj okretni davač spojen je na isp konektor. koristi se za promjenu težine peleta i 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.

Taster prelazi na pcb SW konektor.

Korak 10: Senzorska cijev

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

BITAN:

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

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

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

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

Postavite odašiljač na dno. Provjerite olovkom da li senzori dobro reagiraju. Možda će se otvor emitera morati malo povećati. to će zavisiti od kalibracije vašeg štampača.

Takođe imam bolji rezultat u hladu. Izbegavajte direktnu sunčevu svetlost.

Korak 11: Alternativa cijevi senzora

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

Ako nemate 3d štampač, to možete učiniti i s bakrenom cijevi. To će jako dobro funkcionirati. Teško je učiniti rupu na tač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 divizija po 50us. 50 us x 6 = 300 us (za 3 inča). 300 us x 4 = 1,2 ms za 1 stopa

1/1,2ms = 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 uređaj (timer1)

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

Za kalibraciju softvera i provjeru tač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 dugme 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 kada je pritisnuto dugme, poslat je 1 impuls i tačno 4 ms nakon slanja drugog impulsa.

Na ovaj način, moći ću uravnotežiti softverski kompajler tako da uvijek ima prikazanih 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 -poštu. Engleski ili francuski. Potrudit ću se pomoći.

Preporučuje se: