Daftar Isi:
- Langkah 1: Fitur
- Langkah 2: Teori Operasi dan Akurasi
- Langkah 3: Skema dan Daftar Bagian
- Langkah 4: File Gerber PCB
- Langkah 5: Solder Pcb Anda
- Langkah 6: Memprogram Atmega328p
- Langkah 7: Layar LCD
- Langkah 8: File STL
- Langkah 9: ROTARY ENCODER
- Langkah 10: Pipa Sensor
- Langkah 11: Alternatif Pipa Sensor
- Langkah 12: Pelet pada Osiloskop dan Kalibrasi
- Langkah 13: Selengkapnya…
Video: Kronograf Senapan Angin, Kronoskop. Dicetak 3D: 13 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
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
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
Berikut adalah file gerber
Langkah 5: 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
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
Pasang beberapa pita dan sambungkan pcb dan lcd bersama-sama
Langkah 8: 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
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
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
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
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…
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:
Senapan Cahaya IR Bertenaga Arduino DIY: 12 Langkah
DIY Arduino Powered IR Light Gun: SAMCO adalah Namco GunCon dengan bagian dalamnya diganti dengan pengontrol mikro Arduino dan kamera pemosisian IR Robot DF dan berfungsi sebagai mouse HID pada TV/monitor LCD (layar datar). Saat ini Gun bekerja dengan Mame di RetroPie (untuk Raspberry Pi), PSX Beetl
Stasiun Angin untuk Selancar Angin Berbasis MQTT& AWS: 3 Langkah (dengan Gambar)
Stasiun Angin untuk Selancar Angin Berdasarkan MQTT& AWS: Di Shenzhen, ada banyak pantai yang indah. Di musim panas, olahraga yang paling saya sukai adalah berlayar. Untuk olahraga berlayar, saya masih pemula, saya suka perasaan air laut yang menyentuh wajah saya, dan lebih banyak lagi, saya mendapat banyak teman baru dengan olahraga ini
Senapan Knex: 12 Langkah
Knex Rifle: ini adalah knex rifle yang saya tunjukkan sebagai forum. itu terutama dirancang untuk penampilan dan memiliki jangkauan OK. larasnya dapat dilepas dan mengurangi jangkauan saat dipasang. Ia memiliki pegangan pembawa yang juga dapat dilepas, dan bipod. ia menggunakan hopper dasar untuk memuat sebagai
Senapan Knex "XFN Snowflak3": 9 Langkah
"XFN Snowflak3" Knex Rifle: XFN Snowflak3: Pistol yang memiliki konsep umum yang sama selama dua tahun. Senjata tabung dan tongkat sederhana dengan sistem trigonometri blok.Pro:Sangat akuratKuat (dapat menembus 6- 8 lembar karton bergelombang)Cukup mudah membuatnya
Senapan Mesin Sub-mesin Marshmallow Bertenaga Udara: 8 Langkah
Senapan Mesin Sub-mesin Marshmallow Bertenaga Udara: Dalam instruksi ini, saya akan menunjukkan kepada Anda cara membuat senapan mesin ringan bertenaga udara. Ini cepat dan mudah dibuat