Daftar Isi:

Kronograf Senapan Angin, Kronoskop. Dicetak 3D: 13 Langkah
Kronograf Senapan Angin, Kronoskop. Dicetak 3D: 13 Langkah

Video: Kronograf Senapan Angin, Kronoskop. Dicetak 3D: 13 Langkah

Video: Kronograf Senapan Angin, Kronoskop. Dicetak 3D: 13 Langkah
Video: Конверсия Diana Stormrider "Tactical": установка 2024, November
Anonim
Image
Image
Fitur
Fitur

Hai semuanya, hari ini kita akan meninjau kembali sebuah proyek yang telah saya lakukan pada tahun 2010. Sebuah Chronograph Senapan Angin. Perangkat ini akan memberi tahu Anda kecepatan proyektil. Pellet, BB atau bahkan bola plastik BB lembut.

Pada tahun 2010 saya membeli senapan angin untuk bersenang-senang. Apakah memukul kaleng, botol, tujuan. Saya tahu bahwa kecepatan senjata ini maksimum 500 kaki/s. Karena itu hukum kanada. Beberapa senapan angin yang lebih kuat tersedia tetapi Anda harus memiliki lisensi dan Anda tidak dapat membelinya di Walmart.

Sekarang saya punya lisensi ini, saya bisa membeli satu lagi. Tapi singkatnya, senjata yang sama tersedia untuk AS dengan kecepatan 1000 kaki/s. APA!? Senjata yang sama? ya… Di kanada, pukulannya berlubang dan pegasnya lebih lembut.

Hal pertama yang harus dilakukan adalah mengisi lubang. Itulah yang saya lakukan dengan solder. Hal berikutnya yang harus dilakukan adalah memesan pegas pengganti. Tapi tunggu… berapa kecepatan mainan baru saya saat ini? Apakah musim semi benar-benar diperlukan? Saya tidak tahu dan saya ingin tahu. Aku ingin tahu sekarang tapi bagaimana?

Itu sebabnya saya melakukan proyek ini. Yang saya butuhkan hanyalah 2 sensor, UC dan layar dan kami dalam bisnis.

Minggu lalu, saya melihat kronograf biru tua saya di rak dan saya berbicara pada diri sendiri: "Mengapa tidak membagikan ini dan melakukan instruksi dengannya?" Dan omong-omong, kita bisa meningkatkan akurasi dan menambahkan indikator baterai. Letakkan 1 tombol alih-alih 2 untuk on/off. Semua permukaan dipasang. Kita sekarang di tahun 2020!

Jadi begitulah… mari kita mulai!

Langkah 1: Fitur

-Kecepatan pelet

-Kecepatan

-20 mhz berjalan, akurasi besar

-Mati otomatis

-Tegangan baterai ditampilkan

-skema tersedia

-pcb tersedia

-daftar suku cadang tersedia

-STL tersedia

-Kode C tersedia

Langkah 2: Teori Operasi dan Akurasi

-Kami memiliki UC yang berjalan pada 20Mhz. Osilator yang digunakan adalah TCX0 +-2,5 ppm

-Kami memiliki 2 sensor pada jarak 3 inci dari satu sama lain.

-Proyektil mengenai sensor pertama. UC mulai menghitung (timer1)

-Proyektil mengenai sensor kedua. UC berhenti menghitung.

-UC periksa nilai timer1, lakukan matematika dan tampilkan kecepatan dan kecepatan.

Saya menggunakan timer1 16 bit + flag overflow tov1. Total 17 bit untuk 131071 "tic" untuk hitungan penuh.

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

131071 x 50 ns = 6,55355 ms untuk mengerjakan 3 inci.

6,55355 md x 4 = 26,21 md untuk melakukan 12 inci.

1/26.21 mdtk = 38.1472637 kaki/dtk

Ini adalah kecepatan paling lambat yang dapat diukur perangkat.

Kenapa 20MHz? Mengapa tidak menggunakan internal 8 mhz atau bahkan kristal?

Perangkat pertama saya menggunakan osilator internal. Berfungsi tetapi yang ini tidak cukup akurat. Variasinya terlalu besar. Sebuah kristal lebih baik tetapi suhu bervariasi frekuensi. Kami tidak dapat melakukan perangkat pengukuran yang akurat dengan itu. Juga, semakin tinggi frekuensinya, semakin banyak tic yang akan dihitung untuk kecepatan yang sama. Pengambilan sampel akan lebih baik untuk memiliki akurasi yang sangat baik. Karena tic tidak dapat dibagi, kerugiannya kecil jika siklus kerjanya cepat.

Pada 20 MHz kami memiliki langkah 50 ns. Apakah kita tahu seberapa akuratnya 50 ns untuk proyektil dengan kecepatan 38 kaki/s.

38.1472637 ft/s dibagi 131071 = 0, 000291042 kaki

0, 0003880569939956207 kaki x 12 = 0, 003492512 inci

1/0, 003492512 = 286,37 ". Dengan kata lain. Pada 50 ft/s kami memiliki akurasi +- 1/286 " atau +- 0, 003492512 inci

Tetapi jika osilator saya adalah yang terburuk dan berjalan pada 20 mhz +2,5 ppm, bolehkah? Mari kita cari tahu…

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

Jadi skenario terburuk kami memiliki 50 jam lagi pada 20 mhz. Ini 50 jam dalam 1 detik. Berapa tic lebih banyak pada timer1 jika pelet melakukan kecepatan yang sama (38.1472637 kaki/s atau 6.55ms) ?

1/20000050 = 49.999875 ns

49.999875 ns x 131071 = 6, 553533616 md

6, 553533616 md x 4 = 26.21413446 md

1/26.21413446 md = 38.14735907 kaki/dtk

Jadi kita memiliki 38.14735907 kaki/s bukannya 38.1472637 kaki/s

Sekarang kita tahu bahwa 2,5 ppm tidak mempengaruhi hasil.

Berikut adalah beberapa contoh kecepatan yang berbeda

Untuk 1000 kaki/s

1000 kaki/dtk x 12 adalah 12000 inci/dtk

1 detik untuk 12000" berapa banyak waktu untuk melakukan 3" ? 3x1/12000 = 250 kita detik

250 us / 50 ns = 5000 tic.

Timer1 akan berada di 5000

UC melakukan matematika dan 1000 ft/s ditampilkan. Sejauh ini baik

Untuk 900 kaki/s

900 kaki/dtk adalah 10800 /dtk

3x1/10800 = 277,77 kita

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

Timer 1 akan berada di 5555

UC melakukan matematika dan 900, 09 akan ditampilkan, bukan 900

Mengapa ? karena timer 1 di 5555 dan 0, 5555 hilang. Tic pada timer tidak dapat dibagi.

Kami memiliki kesalahan untuk 0, 09 pada 900 ft/s

0, 09/900x100 = 0, 01% saja kesalahan

Untuk 1500 ft/s1500 ft/s adalah 18000 /s 3x1/10800 =166,66 us

166,66 us / 50 ns = 3333.333 tic Timer 1 akan berada di 3333

UC melakukan matematika dan 1500.15 akan ditampilkan alih-alih 1500 itu.15/1500x100= 0, 01%

Untuk 9000 kaki/s

9000 x 12 = 180000 inci / s

3x1/180000 = 27,7777 us

27,77 us / 50 ns = 555, 555

Timer1 akan berada di 555 dan 4/(1/555x50ns) akan ditampilkan 9009, 00 akan ditampilkan

Di sini kesalahan adalah 9 kaki/s pada 9000 = 0, 1%

Seperti yang Anda lihat, % kesalahan meningkat saat kecepatan lebih tinggi. Tapi tetap < 0,1%

Hasil tersebut sangat bagus.

Tapi akurasi tidak linier. Pada 10.000 ft/s itu adalah 0, 1%. Hal baru yang baik adalah kami tidak pernah menguji pelet 10.000 ft/s.

Hal lain yang perlu diingat. Ketika terjadi interupsi, UC selalu menyelesaikan instruksi terakhir sebelum masuk ke interupsi. Ini normal dan semua UC melakukan ini. Jika Anda membuat kode arduino, dalam C atau bahkan assembler. Sebagian besar waktu Anda akan menunggu dalam lingkaran selamanya … untuk menunggu. Masalahnya adalah, dalam satu lingkaran kami menghabiskan 2 siklus. Biasanya ini tidak penting. Tapi dalam kasus kami. YA, setiap tic itu penting. Mari kita lihat loop tak terbatas:

perakit:

lingkaran:

putaran rjmp

Di C:

sementara (1){}

Sebenarnya compiler C menggunakan instruksi rjmp. RJMP adalah 2 siklus.

Itu berarti jika interupsi terjadi pada siklus pertama, kita kehilangan satu siklus (tic)(50ns).

Cara saya untuk memperbaikinya adalah dengan menambahkan banyak instruksi nop di loop. NOP adalah 1 siklus.

lingkaran:

tidak

tidak

tidak

tidak

tidak

putaran rjmp

Jika interupsi terjadi pada instruksi nop. Kami baik-baik saja. Jika itu terjadi pada siklus kedua instruksi rjmp, kami baik-baik saja. Tetapi jika itu terjadi pada siklus pertama instruksi 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 memperbaiki ini dengan perangkat lunak karena kami tidak tahu kapan tepatnya interupsi terjadi. Itu sebabnya dalam kode Anda akan melihat banyak instruksi nop. Sekarang saya cukup yakin bahwa interupsi akan jatuh pada instruksi nop. Jika saya menambahkan 2000 nop saya memiliki 0, 05% untuk jatuh pada instruksi rjmp.

Hal lain yang perlu diingat. Ketika interupsi terjadi. Compiler melakukan banyak push dan pull. Tapi nomornya selalu sama. Jadi sekarang kita bisa melakukan koreksi perangkat lunak.

Untuk menyimpulkan ini:

Akurasi untuk pelet rata-rata 1000 ft/s adalah 0,01%

100x lebih akurat daripada 1% lainnya di pasar. Frekuensi lebih tinggi dan dengan TCXO, lebih akurat

Sebagai contoh, 1% dari 1000 ft/s kurang lebih 10 ft/s. Ini adalah perbedaan besar.

Langkah 3: Skema dan Daftar Bagian

Skema dan Daftar Bagian
Skema dan Daftar Bagian

Di sini saya menerapkan satu tombol on / off sirkuit. (lihat instruksi terakhir saya) Sirkuit ini sangat berguna dan bekerja dengan sangat baik.

Saya menggunakan atmega328p. Yang ini diprogram dalam C.

Tampilan standar 2 baris lcd HD44780 kompatibel. Mode 4 bit digunakan.

Regulator 3.3v digunakan untuk memberikan tegangan ke TCXO 20mhz.

D1 adalah untuk lampu latar lcd. Opsional. Baterai akan bertahan lebih lama jika Anda tidak menginstal D1.

Semua resistor dan tutup adalah paket 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

H1 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

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

Sensor:

2x Pemancar OP140A

2x Penerima OPL530

Encoder: PEC11R-4215K-S0024 *Jangan lupa tambahkan resistor 4x 10k dan 2x.01uf untuk melakukan filter encoder. lihat gambar di bawah

Langkah 4: File Gerber PCB

File Gerber PCB
File Gerber PCB
File Gerber PCB
File Gerber PCB
File Gerber PCB
File Gerber PCB
File Gerber PCB
File Gerber PCB

Berikut adalah file gerber

Langkah 5: Solder Pcb Anda

Solder Pcb Anda
Solder Pcb Anda
Solder Pcb Anda
Solder Pcb Anda
Solder Pcb Anda
Solder Pcb Anda

Dengan bantuan skema, solder semua komponen Anda di PCB. Setiap bagian atau ditulis di pcb, r1, r2… dan seterusnya.

Saya belum menginstal D1. Ini untuk lampu belakang lcd. Itu indah tetapi masa pakai baterai terpengaruh. Jadi saya memilih untuk mematikan lampu belakang lcd.

Langkah 6: Memprogram Atmega328p

Memprogram Atmega328p
Memprogram Atmega328p

Periksa di sini pada langkah 12 untuk memprogram atmega328p. Saya menyediakan di sini file.hex untuk ini.

Berikut adalah program avrdude yang siap memprogram file batch. Hanya klik pada program usbasp.bat dan usbasp Anda terinstal dengan benar. Semua akan dilakukan secara otomatis termasuk bit sekering.

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

Dalam proyek ini saya juga membagikan kode sumber C. Ketahuilah bahwa beberapa catatan di dalamnya bisa dalam bahasa Prancis.https://1drv.ms/u/s!AnKLPDy3pII_vXUMXHdxajwGRFJx?e…

Langkah 7: Layar LCD

Layar LCD
Layar LCD
Layar LCD
Layar LCD

Pasang beberapa pita dan sambungkan pcb dan lcd bersama-sama

Langkah 8: File STL

File STL
File STL
File STL
File STL
File STL
File STL

file.stl

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

Dukungan diperlukan untuk selungkup, pipa sensor dan dudukan senapan.

Saya telah mencetak semua dengan tinggi.2 mm.

Langkah 9: ROTARY ENCODER

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

Rotary encoder ini terhubung ke konektor ISP. itu digunakan untuk mengubah berat pelet dan untuk menghidupkan dan mematikan perangkat.

vcc ISP pin 2 (resistor tarik)

Terminal A (kuning) masuk ke pin ISP 1

Terminal B (hijau) masuk ke ISP pin 3

Terminal C (gnd) ISP pin 6

Saya menambahkan 2 gambar untuk melihat perbedaan antara memiliki filter vs tanpa filter. Anda dapat dengan mudah melihat perbedaan antara keduanya.

Tombol tekan pergi ke konektor pcb SW.

Langkah 10: Pipa Sensor

Pipa Sensor
Pipa Sensor
Pipa Sensor
Pipa Sensor
Pipa Sensor
Pipa Sensor

PENTING:

Pipa sensor harus Hitam dan penerima sensor harus disembunyikan

Upaya pertama saya adalah memiliki pipa merah yang indah. Tapi ini rumit! Itu tidak bekerja sama sekali. Saya menemukan bahwa cahaya luar masuk membuang plastik dan sensor penerima selalu menyala.

Untuk mendapatkan hasil yang baik saya tidak punya pilihan untuk mengubah warna menjadi hitam.

Pasang penerima di atas. Dan sembunyikan plastik bening dengan cat hitam, selotip atau karet, silikon hitam.

Pasang emitor di bagian bawah.. Periksa dengan pena apakah sensor merespons dengan baik. Mungkin lubang emitor perlu diperbesar sedikit. itu akan tergantung dari kalibrasi printer Anda.

Saya juga memiliki hasil yang lebih baik di tempat teduh. Hindari sinar matahari langsung.

Langkah 11: Alternatif Pipa Sensor

Alternatif Pipa Sensor
Alternatif Pipa Sensor
Alternatif Pipa Sensor
Alternatif Pipa Sensor

Jika Anda tidak memiliki printer 3d, Anda dapat melakukan hal yang sama dengan pipa tembaga. Ini akan bekerja sangat baik untuk. Hal yang sulit dilakukan adalah lubang pada tepat 3 inci dan penerima dan emitor harus sejajar.

Langkah 12: Pelet pada Osiloskop dan Kalibrasi

Pellet pada Osiloskop dan Kalibrasi
Pellet pada Osiloskop dan Kalibrasi

Ini adalah pelet yang nyata lewat lempar pipa. Probe 1 kuning adalah sensor 1. Probe 2 ungu adalah sensor 2.

Waktu/div adalah 50 kita.

Kita dapat menghitung 6 divisi dari 50us. 50 us x 6 = 300 us (untuk 3 inci). 300 us x 4 = 1,2 mdtk untuk 1 kaki

1-1,2 md = 833,33 kaki/dtk

Kita juga dapat melihat bahwa sensor biasanya pada 5v. Dan bisakah kita memblokir cahaya emitor, sensor jatuh ke 0.

Begitulah cara UC memulai dan menghentikan conternya (timer1)

Tetapi untuk mengetahui dengan tepat apakah kecepatannya akurat, saya membutuhkan cara untuk mengukurnya.

Untuk melakukan kalibrasi perangkat lunak dan menguji keakuratan perangkat ini, saya menggunakan osilator referensi 10 mhz. Lihat GPSDO saya di instruksi lainnya.

Saya memberi makan atmega328 lain dengan 10 mhz ini. Dan program ini di assembler untuk mengirim saya 2 pulsa setiap kali saya menekan tombol untuk mensimulasikan pelet. Persis seperti yang kita lihat di gambar, tetapi untuk memiliki pelet nyata, itu adalah UC lain yang mengirimi saya 2 pulsa.

Setiap kali tombol ditekan, 1 pulsa dikirim dan tepat 4 ms setelah pulsa lain dikirim.

Dengan cara ini, saya dapat menyeimbangkan kompiler perangkat lunak agar selalu 1000 ft/s ditampilkan.

Langkah 13: Selengkapnya…

Lagi…
Lagi…
Lagi…
Lagi…

Ini adalah prototipe pertama saya tahun 2010.

Untuk pertanyaan atau laporan kesalahan, Anda dapat mengirim email kepada saya. Inggris atau Prancis. Saya akan melakukan yang terbaik untuk membantu.

Direkomendasikan: