Tartalomjegyzék:
- 1. lépés: Funkció
- 2. lépés: A működés elmélete és a pontosság
- 3. lépés: Vázlatos és alkatrészlista
- 4. lépés: NYÁK Gerber fájl
- 5. lépés: Forrasztja a számítógépét
- 6. lépés: Az Atmega328p programozása
- 7. lépés: LCD kijelző
- 8. lépés: STL fájl
- 9. lépés: FORGÓKÓDER
- 10. lépés: Érzékelő cső
- 11. lépés: Az érzékelőcső alternatívája
- 12. lépés: Pellet oszcilloszkópon és kalibrálás
- 13. lépés: Továbbiak…
Videó: Légpuska kronográf, kronoszkóp. 3D nyomtatás: 13 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Sziasztok, ma újra meglátogatunk egy projektet, amit 2010 -ben csináltam. Légpuska kronográf. Ez az eszköz megmondja a lövedék sebességét. Pellet, BB vagy akár légpuha BB műanyag golyó.
2010 -ben vettem egy légpuskát szórakozásból. Dobozokat, üvegeket ütött, célzott. Tudom, hogy ennek a fegyvernek a sebessége legfeljebb 500 láb/s volt. Mert ez a kanadai törvény. Néhány erősebb légpuska elérhető, de engedélyre van szüksége, és nem vásárolhatja meg ezeket a Walmartban.
Most megvolt ez a jogosítványom, vehettem másikat. De rövid történet: ugyanaz a fegyver az Egyesült Államok rendelkezésére állt 1000 láb/s sebességgel. MIT!? Ugyanaz a fegyver? igen… Kanadában a löketben lyuk van, és a rugó lágyabb.
Az első dolog, amit fel kell tölteni. Ezt csináltam a forrasztással. Következő lépésként csererugót kellett rendelni. De várj… mi az új játékom jelenlegi sebessége? Valóban szükség van a tavaszra? Nem tudom és szeretném tudni. Most szeretném tudni, de hogyan?
Ezért csináltam ezt a projektet. Csak 2 érzékelőre, egy UC -re és egy kijelzőre volt szükségem, és üzletelünk.
Múlt héten láttam a régi kék kronográfomat a polcon, és magamban azt beszéltem: "Miért nem osztod meg ezt, és nem teszel vele tanulságosat?" És mellesleg növelhetjük a pontosságot, és hozzáadhatunk egy akkumulátor -jelzőt. A ki/bekapcsoláshoz tegyen 2 gombot 1 helyett. Minden felületre szerelhető. Most 2020 -ban vagyunk!
Szóval itt van … kezdjük!
1. lépés: Funkció
-Pellet sebesség
-Sebesség
-20 mhz futás, óriási pontosság
-Automatikus kikapcsolás
-Az akkumulátor feszültsége megjelenik
-rendelkezésre áll sematikus
-pcb kapható
-alkatrész lista elérhető
-STL elérhető
-C kód elérhető
2. lépés: A működés elmélete és a pontosság
-Van egy uC, amely 20Mhz -en fut. Az alkalmazott oszcillátor TCX0 +-2,5 ppm
-2 érzékelőnk van egymástól 3 hüvelyk távolságban.
-A lövedék eltalálta az első érzékelőt. uC kezdi a számlálást (időzítő1)
-A lövedék eltalálta a második érzékelőt. uC hagyja abba a számolást.
-uC ellenőrizze az időzítő1 értékét, végezze el a számítást és a kijelző sebességét és sebességét.
16 bites időzítőt1 használok + tov1 túlcsordulás jelzőt. 17 bit összesen 131071 "tic" esetén a teljes számláláshoz.
1/20 mhz = 50 ns. Minden tics 50ns
131071 x 50 ns = 6,55355 ms - 3 hüvelyk.
6,55355 ms x 4 = 26,21 ms - 12 hüvelyk.
1/26,21 ms = 38,1472637 láb/s
Ez a legalacsonyabb sebesség, amelyet az eszköz képes mérni.
Miért 20 mhz? Miért nem használja a belső 8 MHz -es vagy akár egy cristalt?
Az első eszközöm a belső oszcillátort használta. Működött, de ez nem volt elég pontos. A variáció túl nagy. A kristály jobb, de a hőmérséklet változó frekvenciájú. Ezzel nem tudunk pontos mérőműszert készíteni. Továbbá, minél magasabb a frekvencia, annál több pontot számolnak ugyanazon sebességnél. A mintavétel jobb lesz, ha nagyon jó a pontossága. Mivel a tic nem osztható, a veszteség kicsi, ha a működési ciklus gyors.
20 MHz -en 50 ns lépésekkel rendelkezünk. Tudjuk -e, hogy mennyi pontosságú 50 ns lövedék esetén 38 láb/s sebességnél.
38,1472637 láb/s osztás 131071 -gyel = 0, 000291042 láb
0 0003880569939956207 láb x 12 = 0, 003492512 hüvelyk
1/0, 003492512 = 286,37 ". Más szóval. 50 láb/s sebességnél +- 1/286" vagy +- 0, 003492512 hüvelyk pontossággal rendelkezünk
De ha az oszcillátorom a legrosszabb és 20 mhz +2,5 ppm sebességgel működik, akkor rendben van? Találjuk ki…
2,5 ppm 20 000 000: (20000000/1000000) x 2,5 = 20000050 Hz
Tehát a legrosszabb esetben további 50 óra van 20 MHz -en. 50 óra 1 másodperc alatt. Hány tic még az időzítő1 -en, ha a pellet ugyanazt a sebességet végzi (38,1472637 láb/s vagy 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 láb/s
Tehát 38,147235907 láb/s van a 38,1472637 láb/s helyett
Most már tudjuk, hogy a 2,5 ppm nem befolyásolja az eredményt.
Íme néhány példa a különböző sebességre
1000 ft/s -ra
1000 láb/s x 12 12000 hüvelyk/s
1 másodperc 12000 "mennyi idő alatt 3"? 3x1/12000 = 250 us másodperc
250 us / 50 ns = 5000 tic.
Az 1. időzítő 5000 lesz
uC do the math és 1000 ft/s jelenik meg. Eddig jó
900 ft/s sebességgel
A 900 láb/s 10800 /s
3x1/10800 = 277,77 nekünk
277, 77 ns / 50 ns = 5555, 5555 tic
Az 1. időzítő 5555 -nél lesz
uC do the math, és 900, 09 jelenik meg 900 helyett
Miért ? mert az 1. időzítő 5555 és 0, 5555 elveszett. A tic on timer nem osztható.
Hiba van a 0, 09, 900 ft/s sebességgel
0, 09/900x100 = 0, 01% hiba csak
1500 láb/s esetén 1500 láb/s 18000 /s 3x1/10800 = 166,66 nekünk
166,66 us / 50 ns = 3333,3333 tic Az 1. időzítő 3333 -nál lesz
uC do the math, és 1500.15 jelenik meg 1500 helyett.15/1500x100 = 0, 01%
9000 ft/s sebességgel
9000 x 12 = 180000 hüvelyk / s
3x1/180000 = 27.7777 minket
27,77 us / 50 ns = 555, 555
Az 1. időzítő 555, a 4/(1/555x50ns) pedig 9009, 00 jelenik meg
Itt a hiba 9 láb/s 9000 = 0, 1%
Mint látható, a % -os hiba növekszik, ha a sebesség nagyobb. De maradjon <0,1%
Ezek az eredmények nagyon jók.
De a pontosság nem lineáris. 10000 ft/s -nál 0, 1 %. Jó új, hogy soha nem tesztelünk 10 000 láb/s pelletet.
Egy másik dolog, amit szem előtt kell tartani. Megszakítás esetén az uC mindig fejezze be az utolsó utasítást, mielőtt belépne a megszakításba. Ez normális, és minden uC ezt teszi. Ha arduino -t kódol, C -ben vagy akár assemblerben. Legtöbbször örökké tartó ciklusban fog várakozni… várni. A probléma az, hogy egy ciklusban 2 ciklust töltünk. Általában ez nem fontos. De a mi esetünkben. IGEN, minden pont fontos. Nézzünk egy végtelen hurkot:
szerelő:
hurok:
rjmp hurok
C -ben:
míg (1) {}
Valójában a C fordító rjmp utasításokat használ. Az RJMP 2 ciklus.
Ez azt jelenti, hogy ha a megszakítás az első ciklusnál történik, akkor elveszítünk egy ciklust (tic) (50ns).
A megoldásom az, ha sok nop utasítást adok hozzá a hurokhoz. A NOP 1 ciklus.
hurok:
nop
nop
nop
nop
nop
rjmp hurok
Ha a megszakítás nop utasításra történik. Rendben vagyunk. Ha ez megtörténik az rjmp utasítás második ciklusában, rendben vagyunk. De ha ez az rjmp utasítás első ciklusában történik, akkor elveszítünk egy pontot. Igen, ez csak 50 ns, de mint fentebb látható, az 50 ns 3 hüvelyknél nem semmi. Ezt szoftveresen nem tudjuk kijavítani, mert nem tudjuk, hogy pontosan mikor történik megszakítás. Ezért a kódban sok nop utasítást fog látni. Most már biztos vagyok benne, hogy a megszakítás egy nop utasításra fog esni. Ha 2000 nop -ot adok hozzá, akkor 0, 05% van az rjmp utasításra.
Egy másik dolog, amit szem előtt kell tartani. Amikor megszakítás történik. A fordító sok lökést és húzást végez. De ez mindig ugyanaz a szám. Tehát most megtehetjük a szoftver korrekcióját.
Befejezésül erre:
Pontosság 1000 láb/s átlagos pellet esetén 0,01%
100 -szor pontosabb, mint a piacon elérhető többi 1%. A frekvencia magasabb, és a TCXO -val pontosabb
Például 1000 láb/s 1% -a többé -kevésbé 10 láb/s. Óriási különbség.
3. lépés: Vázlatos és alkatrészlista
Itt megvalósítottam az egy nyomógombos ki/be kapcsolást. (lásd az utolsó utasítást) Ez az áramkör nagyon praktikus és nagyon jól működik.
Atmega328p -t használok. Ez C -be van programozva.
A kijelző szabványos 2 soros LCD HD44780 kompatibilis. 4 bites módot használnak.
3.3 V -os szabályozót használnak a feszültség biztosítására a TCXO 20mhz -re.
A D1 az LCD háttérvilágításhoz használható. Választható. Az akkumulátor tovább tart, ha nem telepíti a D1 -et.
Minden ellenállás és sapka 0805 csomagolású
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
Kijelző LCD 2 soros HD44780. Nem kell megvenni az i2c modult.
Érzékelők:
2x kibocsátó OP140A
2x vevő OPL530
Kódoló: PEC11R-4215K-S0024 *Ne felejtse el hozzáadni a 4x 10k ellenállást és a 2x.01uf értéket a kódoló szűrő elvégzéséhez. lásd az alábbi képet
4. lépés: NYÁK Gerber fájl
Itt vannak a gerber fájlok
5. lépés: Forrasztja a számítógépét
Vázlatos segítséggel forrasztja össze az összes alkatrészét a NYÁK -on. Minden rész vagy PCB -re írva, r1, r2… és így tovább.
Nem telepítettem a D1 -et. Ez az LCD háttérvilágításra vonatkozik. Gyönyörű, de befolyásolja az akkumulátor élettartamát. Tehát úgy döntök, hogy nem kapcsolom ki az LCD háttérvilágítást.
6. lépés: Az Atmega328p programozása
Itt ellenőrizheti a 12. lépést az atmega328p programozásához. Itt adom meg a.hex fájlt.
Itt található az avrdude program kötegelt fájl programozására. Csak kattintson az usbasp.bat programra, és az usbasp helyesen van telepítve. Minden automatikusan megtörténik, beleértve a biztosítékot is.
1drv.ms/u/s!AnKLPDy3pII_vXaGPIZKMXxaXDul?e…
Ebben a projektben a C forráskódot is megosztom. Ne feledje, hogy néhány megjegyzés francia nyelvű lehet. Http://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…
7. lépés: LCD kijelző
Telepítsen egy szalagot, és csatlakoztassa a PCB -t és az LCD -t
8. lépés: STL fájl
stl fájl
1drv.ms/u/s!AnKLPDy3pII_vgezy0i0Aw3nD-xr?e…
Támaszra van szükség a burkolathoz, az érzékelőcsőhöz és a puskatartóhoz.
Mindent kinyomtattam.2 mm magasan.
9. lépés: FORGÓKÓDER
Ez a forgó kódoló az isp csatlakozóhoz van csatlakoztatva. a pellet súlyának megváltoztatására, valamint a készülék be- és kikapcsolására szolgál.
vcc ISP 2 pin (felhúzó ellenállás)
Az A terminál (sárga) menjen az internetszolgáltató 1 -es érintkezőjéhez
A B terminál (zöld) lépjen az ISP 3 -as érintkezőjére
C terminál (gnd) isp pin 6
Két képet adok hozzá, hogy lássam a különbséget a szűrő és a szűrő nélkül. Könnyen láthatja a különbséget a kettő között.
A nyomógomb a NYÁK SW csatlakozójához megy.
10. lépés: Érzékelő cső
FONTOS:
Az érzékelőcsőnek fekete színűnek kell lennie, az érzékelő vevőnek pedig rejtettnek kell lennie
Az első próbálkozásom az volt, hogy legyen egy gyönyörű piros pipám. De ez trükkös! Egyáltalán nem működött. Rájöttem, hogy külső fény érkezik, a műanyag és a vevő érzékelője mindig be volt kapcsolva.
A jó eredmény érdekében nem volt más választásom, hogy a színt feketére változtassam.
Szerelje fel a vevőt a tetejére. És rejtse el az átlátszó műanyagot fekete festékkel, szalaggal vagy gumival, fekete szilikonnal.
Telepítse az emittert az aljára. Tollal ellenőrizze, hogy az érzékelők jól reagálnak -e. Lehet, hogy egy kicsit ki kell növelni az emitter lyukat. ez a nyomtató kalibrálásától függ.
Az árnyékban is jobb eredményt érhetek el. Kerülje a közvetlen napfényt.
11. lépés: Az érzékelőcső alternatívája
Ha nincs 3D nyomtatója, ugyanezt megteheti rézcsővel is. Nagyon jól fog működni. Nehéz dolog az, hogy a lyuk pontosan 3 hüvelyk, és a vevőt és az adót igazítani kell.
12. lépés: Pellet oszcilloszkópon és kalibrálás
Ez egy igazi pellet passzolás. Az 1. szonda sárga az 1. érzékelő. A 2. szonda lila a 2. érzékelő.
Az idő/osztás 50 nekünk.
6 db 50us osztást számolhatunk. 50 us x 6 = 300 us (3 hüvelyk esetén). 300 us x 4 = 1,2 ms 1 lábnál
1/1,2 ms = 833,33 láb/s
Azt is láthatjuk, hogy az érzékelő normál esetben 5V -on van. És blokkolhatjuk -e a kibocsátó fényt, az érzékelőt 0 -ra.
Így kezdi és állítja le az uC a számlálóját (időzítő1)
De ahhoz, hogy pontosan megtudjam, hogy a sebesség pontos volt -e, szükségem volt arra, hogy ezt mérjem.
A szoftver kalibrálásához és az eszköz pontosságának teszteléséhez 10 mhz referencia oszcillátort használtam. Lásd a GPSDO -t más oktatható eszközön.
Egy másik atmega328 -at etetek ezzel a 10 mhz -el. És programozza be ezt az assemblerben, hogy küldjön nekem 2 impulzust minden egyes gombnyomásra, hogy szimulálja a pelletet. Pontosan olyan, mint a képen láttuk, de valódi pellet helyett egy másik uC küldött nekem 2 impulzust.
A nyomógomb minden egyes megnyomásakor 1 impulzust küldtek, és pontosan 4 ms -ot egy másik impulzus elküldése után.
Így képes leszek kiegyensúlyozni a szoftver fordítót, hogy mindig 1000 ft/s legyen megjelenítve.
13. lépés: Továbbiak…
Ez az első prototípusom 2010 -ben.
Bármilyen kérdésre vagy hibajelentésre e -mailt küldhet nekem. Angolul vagy franciául. Mindent megteszek, hogy segítsek.
Ajánlott:
Készíts EASY Infinity Mirror kockát - NEM 3D nyomtatás és NEM programozás: 15 lépés (képekkel)
Készíts EASY Infinity Mirror kockát | NINCS 3D nyomtatás és NEM programozás: Mindenki szereti a jó végtelen kockát, de úgy néz ki, mintha nehéz lenne elkészíteni. Ennek az utasításnak a célja az, hogy lépésről lépésre megmutassam, hogyan kell elkészíteni. Nem csak ezt, de az utasításokkal, amelyeket adok neked, elkészíthetsz egyet
Power Bank 10 dollár alatt! - DIY - 3D nyomtatás: 6 lépés (képekkel)
Power Bank 10 dollár alatt! | DIY | 3D nyomtatás: A mai okostelefon -ipar túlságosan erőteljes telefont gyárt, mint amire a 90 -es években számítottunk, de egyetlen dolog hiányzik belőlük, vagyis az akkumulátor, ezek a legrosszabbak. És az egyetlen megoldás, amellyel most rendelkezünk, egy energiabank. Ebben a videóban megmutatom, hogyan
Sürgősségi USB áramforrás (3D nyomtatás): 4 lépés (képekkel)
Sürgősségi USB áramforrás (3D nyomtatás): Ez a projekt 12 V -os akkumulátort használ, mint a járművekhez, USB -eszközök töltésére áramkimaradás vagy kempingezés esetén. Ez olyan egyszerű, mint egy USB autós töltő csatlakoztatása az akkumulátorhoz. A Sandy hurrikán után áram nélkül maradtam
Nerf kronográf és tűzgyorsaság: 7 lépés
Nerf kronográf és tűzgyorsaság: hordó Sokan módosítottuk korábban a Nerf fegyvereket, és ki nem szereti habos darabokat dobni a házon 100 kép / mp felett? Sok Nerf g módosítása után
Arduino for Nerf: Kronográf és lövésszámláló: 28 lépés (képekkel)
Arduino a Nerf számára: Kronográf és lövésszámláló: Az előző Instructable -om a dart sebességének észlelését alapozta meg infravörös sugárzó és detektor segítségével. Ez a projekt egy lépéssel továbbviszi, nyomtatott áramkör, kijelző és akkumulátorok segítségével hordozható lőszer számlálót és kronográfot készít