Isi kandungan:

Kronograf Senapang Udara, Kronoskop. 3D Dicetak: 13 Langkah
Kronograf Senapang Udara, Kronoskop. 3D Dicetak: 13 Langkah

Video: Kronograf Senapang Udara, Kronoskop. 3D Dicetak: 13 Langkah

Video: Kronograf Senapang Udara, Kronoskop. 3D Dicetak: 13 Langkah
Video: Как работает дробовик 2024, November
Anonim
Image
Image
Ciri
Ciri

Hai semua, hari ini kita akan melihat semula projek yang telah saya lakukan pada tahun 2010. Kronograf Air Rifle. Peranti ini akan memberitahu anda kelajuan sebuah proyektil. Pelet, BB atau bola plastik BB lembut udara.

Pada tahun 2010 saya membeli senapang udara untuk bersenang-senang. Adakah memukul tin, botol, tujuan. Saya tahu bahawa kelajuan senjata ini maksimum 500 kaki / s. Kerana itu undang-undang kanada. Beberapa senapang udara lebih kuat ada tetapi anda perlu mempunyai lesen dan anda tidak boleh membeli barang itu di Walmart.

Sekarang saya mempunyai lesen ini, saya dapat membeli yang lain. Tetapi cerita pendek, senjata yang sama tersedia untuk A. S. dengan jarak 1000 kaki / s. APA!? Pistol yang sama? ya … Di kanada, stroke mempunyai lubang di dalamnya dan mata airnya lebih lembut.

Perkara pertama yang perlu dilakukan adalah mengisi lubang. Itulah yang saya buat dengan solder. Perkara seterusnya yang perlu dilakukan ialah memesan spring pengganti. Tetapi tunggu … berapakah kelajuan mainan baru saya sekarang? Adakah musim bunga benar-benar diperlukan? Saya tidak tahu dan saya mahu tahu. Saya ingin tahu sekarang tetapi bagaimana?

Itulah sebabnya saya melakukan projek ini. Yang saya perlukan hanyalah 2 sensor, uC dan paparan dan kami berniaga.

Minggu lalu, saya melihat kronograf biru tua saya di rak dan saya bercakap dengan diri sendiri: "Mengapa tidak membagikannya dan melakukan arahan dengannya?" Kita boleh meningkatkan ketepatan dan menambahkan penunjuk bateri. Letakkan 1 butang dan bukannya 2 untuk hidup / mati. Semua permukaan dipasang. Kita sekarang pada tahun 2020!

Oleh itu, mari kita mulakan!

Langkah 1: Ciri

-Kelajuan pelet

-Kelajuan

-20 mhz berjalan, ketepatan besar

- Matikan secara automatik

- Voltan bateri dipaparkan

- skematik ada

-pcb ada

- senarai bahagian ada

-STL ada

-C code ada

Langkah 2: Teori Operasi dan Ketepatan

-Kami mempunyai uC berjalan pada 20Mhz. Pengayun yang digunakan ialah TCX0 + -2,5 ppm

-Kami mempunyai 2 sensor pada jarak 3 inci antara satu sama lain.

Proyektil memukul sensor pertama. uC mula mengira (pemasa1)

Proyektil memukul sensor kedua. uC berhenti mengira.

-uC periksa nilai pemasa1, lakukan matematik dan paparkan kelajuan dan halaju.

Saya menggunakan pemasa 16 bit1 + bendera limpahan tov1. Jumlah 17 bit untuk 131071 "tic" untuk kiraan penuh.

1/20 mhz = 50 ns. Setiap tic adalah 50ns

131071 x 50 ns = 6.55355 ms untuk melakukan 3 inci.

6.55355 ms x 4 = 26.21 ms untuk melakukan 12 inci.

1 / 26.21 ms = 38.1472637 kaki / s

Ini adalah kelajuan paling perlahan yang dapat dipastikan oleh peranti.

Mengapa 20 mhz? Mengapa tidak menggunakan 8 mhz dalaman atau bahkan kristal?

Peranti pertama saya menggunakan pengayun dalaman. Berfungsi tetapi yang satu ini tidak cukup tepat. Variasinya terlalu besar. Kristal lebih baik tetapi suhu berbeza frekuensi. Kami tidak dapat melakukan alat pengukuran yang tepat dengan itu. Juga, semakin banyak frekuensi tinggi, lebih banyak tic akan dikira untuk kelajuan yang sama. Persampelan akan lebih baik untuk mempunyai ketepatan yang sangat baik. Kerana tic tidak dapat dibahagi, kerugiannya sedikit jika kitaran tugas cepat.

Pada 20 MHz kita mempunyai langkah 50 ns. Adakah kita tahu sejauh mana tepatnya 50 ns untuk proyektil pada 38 kaki / s.

38.1472637 kaki / s dibahagi dengan 131071 = 0, 000291042 kaki

0, 0003880569939956207 kaki x 12 = 0, 003492512 inci

1/0, 003492512 = 286.37 ". Dengan kata lain. Pada 50 kaki / s kita mempunyai ketepatan + - 1/286" atau + - 0, 003492512 inci

Tetapi jika pengayun saya paling teruk dan berjalan pada 20 mhz +2.5 ppm adakah ia baik? Mari cari…

2.5 ppm 20 000 000 ialah: (20000000/1000000) x 2.5 = 20000050 Hz

Jadi senario terburuk kami mempunyai 50 jam lagi pada 20 mhz. Jam 50 pada 1 saat. Berapa banyak lagi pada pemasa1 jika pelet melakukan kelajuan yang sama (38.1472637 kaki / s atau 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 kaki / s

Oleh itu, kita mempunyai 38.14735907 kaki / s dan bukannya 38.1472637 kaki / s

Sekarang kita tahu bahawa 2.5 ppm tidak mempengaruhi hasilnya.

Berikut adalah contoh kelajuan yang berbeza

Untuk 1000 kaki / s

1000 kaki / s x 12 ialah 12000 inci / s

1 saat untuk 12000 "berapa masa untuk melakukan 3"? 3x1 / 12000 = 250 saat kita

250 us / 50 ns = 5000 tic.

Pemasa1 akan berada pada 5000

uC melakukan matematik dan 1000 kaki / s ditunjukkan. Setakat ini begitu baik

Untuk 900 kaki / s

900 kaki / s ialah 10800 / s

3x1 / 10800 = 277.77 kita

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

Pemasa 1 akan berada di 5555

uC melakukan matematik dan 900, 09 akan dipaparkan dan bukannya 900

Kenapa? kerana pemasa 1 pada 5555 dan 0, 5555 hilang. Tic pada pemasa tidak boleh dibahagi.

Kami mempunyai ralat untuk 0, 09 pada 900 kaki / s

Kesalahan 0, 09 / 900x100 = 0, 01% sahaja

Untuk 1500 kaki / s1500 kaki / s adalah 18000 / s 3x1 / 10800 = 166.66 kita

166.66 us / 50 ns = 3333.333 tic Pemasa 1 akan berada di 3333

uC lakukan matematik dan 1500.15 akan dipaparkan dan bukannya 1500 itu.15 / 1500x100 = 0, 01%

Untuk 9000 kaki / s

9000 x 12 = 180000 inci / s

3x1 / 180000 = 27.7777 kita

27.77 kita / 50 ns = 555, 555

Pemasa1 akan berada di 555 dan 4 / (1 / 555x50ns) akan dipaparkan 9009, 00 akan dipaparkan

Kesalahan di sini adalah 9 kaki / s pada 9000 = 0, 1%

Seperti yang anda lihat% ralat meningkat apabila kelajuan lebih tinggi. Tetapi tinggal <0.1%

Hasilnya sangat baik.

Tetapi ketepatan tidak linear. Pada 10000 kaki / s adalah 0, 1%. Yang baru adalah kita tidak pernah menguji pelet 10, 000 kaki / s.

Perkara lain yang perlu diingat. Apabila gangguan berlaku, uC selalu menyelesaikan arahan terakhir sebelum memasukkan gangguan. Ini adalah perkara biasa dan semua uC melakukan ini. Sekiranya anda kod arduino, dalam C atau bahkan assembler. Sebilangan besar masa anda akan menunggu dalam lingkaran selamanya … untuk menunggu. Masalahnya, dalam satu gelung kita menghabiskan 2 kitaran. Biasanya ini tidak penting. Tetapi dalam kes kami. YA, setiap tic itu penting. Mari lihat gelung yang tidak terhingga:

penghimpun:

gelung:

gelung rjmp

Dalam C:

semasa (1) {}

Sebenarnya penyusun C menggunakan arahan rjmp. RJMP adalah 2 kitaran.

Ini bermaksud jika gangguan berlaku pada kitaran pertama, kita kehilangan satu kitaran (tic) (50ns).

Cara saya memperbaikinya adalah dengan menambahkan banyak arahan nop dalam gelung. NOP adalah 1 kitaran.

gelung:

nop

nop

nop

nop

nop

gelung rjmp

Sekiranya gangguan berlaku pada arahan nop. Kami ok. Sekiranya ia berlaku pada kitaran kedua arahan rjmp, kami baik-baik saja. Tetapi jika ia berlaku pada kitaran pertama arahan rjmp, kita akan kehilangan satu tic. Ya itu hanya 50 ns tetapi seperti yang anda lihat di atas, 50 ns pada 3 inci bukanlah apa-apa. Kami tidak dapat membetulkannya dengan perisian kerana kami tidak tahu bila sebenarnya gangguan itu berlaku. Itulah sebabnya dalam kod anda akan melihat banyak arahan nop. Sekarang saya cukup yakin bahawa gangguan akan jatuh pada arahan nop. Sekiranya saya menambah 2000 nop saya mempunyai 0, 05% untuk jatuh pada arahan rjmp.

Perkara lain yang perlu diingat. Apabila gangguan berlaku. Penyusun melakukan banyak tolakan dan tarikan. Tetapi bilangannya selalu sama. Jadi sekarang kita boleh melakukan pembetulan perisian.

Untuk membuat kesimpulan mengenai perkara ini:

Ketepatan untuk pelet purata 1000 kaki / s adalah 0, 01%

100x lebih tepat daripada 1% lain di pasaran. Kekerapan lebih tinggi dan dengan TCXO, lebih tepat

Sebagai contoh, 1% daripada 1000 kaki / s lebih kurang 10 kaki / s. Ini perbezaan yang sangat besar.

Langkah 3: Skema dan Senarai Bahagian

Skema dan Senarai Bahagian
Skema dan Senarai Bahagian

Di sini saya melaksanakan litar hidup / mati satu butang tekan saya. (lihat arahan terakhir saya) Litar ini sangat berguna dan berfungsi dengan baik.

Saya menggunakan atmega328p. Yang ini diprogramkan dalam C.

Paparan adalah serasi 2 baris lcd HD44780 standard. Mod 4 bit digunakan.

Pengatur 3.3v digunakan untuk memberikan voltan ke TCXO 20mhz.

D1 adalah untuk lampu latar lcd. Pilihan. Bateri akan bertahan lebih lama jika anda tidak memasang D1.

Semua perintang dan penutup adalah pakej 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.2k

R5 160

R6 160

R7 1M

R8 1M

U1 MIC5317-3.3 MIC5317 SOT23-5

U2 DMG6601LVT DMG6601LVT SOT23-6

Paparkan lcd 2 baris HD44780. Tidak perlu membeli modul i2c.

Sensor:

2x Emitter OP140A

2x Penerima OPL530

Encoder: PEC11R-4215K-S0024 * Jangan lupa untuk menambah perintang 4x 10k dan 2x.01uf untuk melakukan penapis pengekod. lihat gambar di bawah

Langkah 4: Fail Gerber PCB

Fail Gerber PCB
Fail Gerber PCB
Fail Gerber PCB
Fail Gerber PCB
Fail Gerber PCB
Fail Gerber PCB
Fail Gerber PCB
Fail Gerber PCB

Berikut adalah fail gerber

Langkah 5: Selesaikan Pcb Anda

Selesaikan Pcb Anda
Selesaikan Pcb Anda
Selesaikan Pcb Anda
Selesaikan Pcb Anda
Selesaikan Pcb Anda
Selesaikan Pcb Anda

Dengan bantuan skematik, pateri semua komponen anda di pcb. Setiap bahagian atau ditulis pada pcb, r1, r2 … dan sebagainya.

Saya tidak memasang D1. Ini untuk lampu belakang lcd. Ia cantik tetapi jangka hayat bateri terjejas. Oleh itu, saya memilih untuk mematikan lampu belakang lcd.

Langkah 6: Memprogram Atmega328p

Mengaturcara Atmega328p
Mengaturcara Atmega328p

Lihat di sini pada langkah 12 untuk memprogram atmega328p. Saya sediakan di sini fail.hex untuk ini.

Inilah program avrdude yang siap diprogramkan dalam kumpulan fail. Cuma klik pada program usbasp.bat dan usbasp anda dipasang dengan betul. Semua akan dilakukan secara automatik termasuk fuse bit.

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

Dalam projek ini saya berkongsi juga kod sumber C. Ketahuilah bahawa beberapa catatan di dalamnya boleh dalam bahasa Perancis.https://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…

Langkah 7: Paparan Lcd

Paparan Lcd
Paparan Lcd
Paparan Lcd
Paparan Lcd

Pasang sedikit pita dan sambungkan pcb dan lcd bersama

Langkah 8: Fail STL

Fail STL
Fail STL
Fail STL
Fail STL
Fail STL
Fail STL

fail stl

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

Sokongan diperlukan untuk penutup, paip sensor dan pemegang senapang.

Saya semua telah dicetak pada ketinggian.2 mm.

Langkah 9: PENGENALAN ROTARY

PENGENALAN ROTARI
PENGENALAN ROTARI
PENGENALAN ROTARI
PENGENALAN ROTARI
PENGENALAN ROTARI
PENGENALAN ROTARI

Pengekod putar ini disambungkan ke penyambung isp. ia digunakan untuk menukar berat pelet dan menghidupkan dan mematikan peranti.

pin isip vcc 2 (tarik ke atas perintang)

Terminal A (kuning) menuju ke pin 1 ISP

Terminal B (hijau) pergi ke pin 3 ISP

Pin CP Terminal C (gnd) 6

Saya menambah 2 gambar untuk melihat perbezaan antara mempunyai penapis berbanding tanpa penapis. Anda dapat melihat perbezaan antara keduanya dengan mudah.

Butang tekan pergi ke penyambung SW pcb.

Langkah 10: Paip Sensor

Paip Sensor
Paip Sensor
Paip Sensor
Paip Sensor
Paip Sensor
Paip Sensor

PENTING:

Paip sensor mestilah Hitam dan penerima sensor mesti disembunyikan

Percubaan pertama saya adalah mempunyai paip merah yang cantik. Tetapi ini sukar! Itu sama sekali tidak berfungsi. Saya tahu bahawa cahaya luar masuk membuang plastik dan sensor penerima sentiasa menyala.

Untuk mendapat hasil yang baik saya tidak mempunyai pilihan untuk menukar warna menjadi hitam.

Pasang penerima di bahagian atas. Dan sembunyikan plastik jernih dengan cat hitam, pita atau gusi, silikon hitam.

Pasang pemancar di bahagian bawah.. Periksa dengan pen jika sensor bertindak balas dengan baik. Mungkin lubang pemancar perlu diperbesarkan sedikit. ia bergantung pada penentukuran pencetak anda.

Saya juga memperoleh hasil yang lebih baik. Elakkan cahaya matahari langsung.

Langkah 11: Alternatif Paip Sensor

Alternatif Paip Sensor
Alternatif Paip Sensor
Alternatif Paip Sensor
Alternatif Paip Sensor

Sekiranya anda tidak mempunyai pencetak 3d, anda boleh melakukan perkara yang sama dengan paip tembaga. Ia akan berfungsi dengan baik. Perkara yang sukar dilakukan ialah lubang tepat 3 inci dan penerima dan pemancar mesti sejajar.

Langkah 12: Pelet pada Osiloskop dan Penentukuran

Pelet pada Osiloskop dan Penentukuran
Pelet pada Osiloskop dan Penentukuran

Ini adalah pelet sebenar yang melempar paip. Probe 1 kuning adalah sensor 1. Probe 2 ungu adalah sensor 2.

Masa / div adalah 50 kita.

Kita boleh mengira 6 pembahagian 50us. 50 kita x 6 = 300 kita (untuk 3 inci). 300 us x 4 = 1.2 ms untuk 1 kaki

1 / 1.2ms = 833.33 kaki / dtk

Kita juga dapat melihat bahawa sensor biasanya pada 5v. Dan bolehkah kita menyekat cahaya pemancar, sensor jatuh ke 0.

Ini cara anda memulakan dan menghentikan konternya (pemasa1)

Tetapi untuk mengetahui sama ada kelajuannya tepat, saya memerlukan kaedah untuk mengatasi ini.

Untuk melakukan penentukuran perisian dan menguji ketepatan peranti ini, saya menggunakan pengayun rujukan 10 mhz. Lihat GPSDO saya pada arahan lain.

Saya memberi makan atmega328 lain dengan 10 mhz ini. Dan atur satu ini dalam assembler untuk menghantar saya 2 denyutan setiap kali saya menekan butang untuk mensimulasikan pelet. Sama seperti yang kita lihat dalam gambar tetapi sebagai gantinya mempunyai pelet sebenar, ia adalah satu lagi uC yang menghantar saya 2 denyutan.

Setiap kali butang tekan ditekan 1 denyut dihantar dan tepat 4 ms setelah denyutan lain dihantar.

Dengan cara ini, saya dapat mengimbangi penyusun perisian agar sentiasa ditampilkan 1000 kaki / saat.

Langkah 13: Lagi …

Lagi …
Lagi …
Lagi …
Lagi …

Ini adalah prototaip pertama saya pada tahun 2010.

Untuk sebarang pertanyaan atau laporan ralat, anda boleh menghantar e-mel kepada saya. Inggeris atau perancis. Saya akan melakukan yang terbaik untuk membantu.

Disyorkan: