Kazalo:
- 1. korak: funkcija
- 2. korak: Teorija delovanja in natančnost
- 3. korak: Shema in seznam delov
- Korak: Datoteka Gerber PCB
- 5. korak: Spajkajte svoj PCB
- 6. korak: Programiranje Atmega328p
- 7. korak: LCD zaslon
- 8. korak: Datoteka STL
- 9. korak: ROTAJALNI KODIRALNIK
- 10. korak: Senzorska cev
- Korak: Alternativa senzorskih cevi
- Korak 12: Pelet na osciloskopu in kalibraciji
- Korak: Več …
Video: Kronograf zračne puške, kronoskop. 3D natisnjeno: 13 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
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
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
Tu so datoteke Gerber
5. korak: 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
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
Namestite trak in povežite PCB in LCD
8. korak: 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
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
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
Č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
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č …
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:
Power Bank pod 10 USD! - Naredi sam - 3D natisnjeno: 6 korakov (s slikami)
Power Bank pod 10 USD! | Naredi sam | 3D Printed: Današnja industrija pametnih telefonov proizvaja preveč zmogljiv telefon, kot smo ga pričakovali v 90. letih, vendar jim manjka le ena stvar, to je baterija, najslabša. In edina rešitev, ki jo imamo zdaj, je banka moči. V tem videu vam bom pokazal, kako
Ura črtnega grafikona IOT (ESP8266 + 3D natisnjeno ohišje): 5 korakov (s slikami)
Ura s črtnim grafikonom IOT (ESP8266 + 3D natisnjeno ohišje): Pozdravljeni, V tem navodilu vam bom razložil, kako sestaviti uro z grafičnim grafikonom IOT 256. Ta ura ni zelo težka za izdelavo, ni pa zelo draga, vendar jo boste morali potrpežljivo povej čas ^^ vendar je prijetno narediti in polno poučevanja
Električno drsno stikalo, natisnjeno s 3D (samo s sponko za papir): 7 korakov (s slikami)
Električno drsno stikalo s 3D-tiskanjem (samo s sponko za papir): skozi leta sem se lotil povezovanja svojih malih električnih projektov, večinoma v obliki sponk, aluminijaste folije in kartona, tlakovanih z vročim lepilom. Pred kratkim sem kupil 3D tiskalnik (Creality Ender 3) in šel iskat
3D natisnjeno - nizkocenovni svetlobni meč!: 12 korakov
3D natisnjeno - nizkocenovni svetlobni meč!: Nizkocenovni, 3D tiskan in zložljiv svetlobni meč. RGB LED omogoča izbiro med rdečo, zeleno in modro gredjo, ki jo lahko izberete z vrtljivim stikalom, ki se nahaja v ročaju svetlobnega meča. Zaradi zložljive narave gredi je e
Ohišje puške USB!: 7 korakov
USB za ohišje strelne puške!: Želite hitri USB? Pa ste prišli na pravo mesto! Ta navodila vam bodo pokazala, kako narediti najbolj kul modul USB ohišja na planetu! To je res zelo preprost projekt, ki sploh ne traja dolgo, upam, da vam bo všeč