Mục lục:
- Bước 1: Tính năng
- Bước 2: Lý thuyết về hoạt động và độ chính xác
- Bước 3: Sơ đồ và Danh sách các bộ phận
- Bước 4: Tập tin PCB Gerber
- Bước 5: Hàn Pcb của bạn
- Bước 6: Lập trình Atmega328p
- Bước 7: Màn hình LCD
- Bước 8: Tệp STL
- Bước 9: BỘ MÔI GIỚI XOAY CHIỀU
- Bước 10: Ống cảm biến
- Bước 11: Thay thế ống cảm biến
- Bước 12: Một viên thuốc trên Máy hiện sóng và Hiệu chuẩn
- Bước 13: Thêm…
Video: Air Rifle Chronograph, Chronoscope. In 3D: 13 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Xin chào tất cả các bạn, hôm nay chúng ta sẽ cùng nhau thăm lại một chiếc projet mà tôi đã thực hiện vào năm 2010. Một chiếc Air Rifle Chronograph. Thiết bị này sẽ cho bạn biết tốc độ của đường đạn. Pellet, BB hoặc thậm chí là bóng BB mềm không khí.
Năm 2010, tôi mua một khẩu súng hơi để mua vui. Đang đánh lon, chai, nhắm. Tôi biết rằng tốc độ của khẩu súng này tối đa là 500 feet / s. Bởi vì đó là luật của Canada. Một số súng trường hơi mạnh hơn có sẵn nhưng bạn cần phải có giấy phép và bạn không thể mua những thứ đó tại Walmart.
Bây giờ tôi đã có giấy phép này, tôi có thể mua một cái khác. Nhưng một câu chuyện ngắn, khẩu súng tương tự đã được cung cấp cho Hoa Kỳ với tốc độ 1000 feet / giây. CÁI GÌ!? Cùng một khẩu súng? vâng… Ở canada, đột quỵ có một lỗ trong đó và lò xo mềm hơn.
Điều đầu tiên cần làm là lấp đầy lỗ. Đó là những gì tôi đã làm với chất hàn. Điều tiếp theo cần làm là đặt mua một lò xo thay thế. Nhưng chờ đã… tốc độ hiện tại của món đồ chơi mới của tôi là bao nhiêu? Thanh xuân có thực sự cần thiết? Tôi không biết và tôi muốn biết. Tôi muốn biết bây giờ nhưng làm thế nào?
Đó là lý do tại sao tôi thực hiện dự án này. Tất cả những gì tôi cần là 2 cảm biến, một uC và một màn hình và chúng tôi đang kinh doanh.
Tuần trước, tôi nhìn thấy chiếc đồng hồ chronograph màu xanh lam cũ của mình trên kệ và tôi tự nhủ: "Tại sao không chia sẻ cái này và làm một bài có hướng dẫn với nó?" Và nhân tiện, chúng tôi có thể tăng độ chính xác và thêm chỉ báo pin. Đặt 1 nút thay vì 2 để bật / tắt. Tất cả các bề mặt gắn kết. Chúng tôi hiện đang ở năm 2020!
Vì vậy, nó là … chúng ta hãy bắt đầu!
Bước 1: Tính năng
-Tốc độ viên nén
-Vận tốc
-20 mhz đang chạy, độ chính xác lớn
-Tự động tắt
- Điện áp pin hiển thị
-schematic có sẵn
-pcb có sẵn
danh sách -parts có sẵn
-STL có sẵn
Mã -C có sẵn
Bước 2: Lý thuyết về hoạt động và độ chính xác
-Chúng tôi có một uC chạy ở 20Mhz. Bộ dao động được sử dụng là TCX0 + -2,5 ppm
-Chúng tôi có 2 cảm biến ở cách xa nhau 3 inch.
-Đạn bắn trúng cảm biến đầu tiên. uC bắt đầu đếm (timer1)
-Đạn bắn trúng cảm biến thứ hai. uC ngừng đếm.
-uC kiểm tra giá trị timer1, làm phép toán và hiển thị tốc độ và vận tốc.
Tôi đang sử dụng timer1 16 bit + cờ tràn tov1. Tổng số 17 bit cho 131071 "tic" để đếm đầy đủ.
1/20 mhz = 50 ns. Mỗi tic là 50ns
131071 x 50 ns = 6,55355 ms để làm 3 inch.
6,55355 ms x 4 = 26,21 ms để thực hiện 12 inch.
1 / 26,21 ms = 38,1472637 bộ / s
Đây là tốc độ chậm nhất mà thiết bị có thể đạt được.
Tại sao 20 mhz? Tại sao không sử dụng nội bộ 8 mhz hoặc thậm chí là một cristal?
Thiết bị đầu tiên của tôi đang sử dụng bộ dao động bên trong. Đang hoạt động nhưng cái này không đủ chính xác. Sự khác biệt là quá lớn. Một cristal tốt hơn nhưng nhiệt độ là tần số thay đổi. Chúng tôi không thể làm một thiết bị đo lường chính xác với điều đó. Ngoài ra, tần số càng cao, càng nhiều tic sẽ được tính cho cùng một tốc độ. Việc lấy mẫu sẽ tốt hơn để có độ chính xác rất tốt. Bởi vì một tic không phải là phân chia, tổn thất sẽ nhỏ nếu chu kỳ nhiệm vụ nhanh chóng.
Ở 20 MHz, chúng ta có các bước là 50 ns. Chúng ta có biết độ chính xác của một viên đạn là 50 ns với tốc độ 38 ft / s.
38.1472637 ft / s chia cho 131071 = 0, 000291042 feet
0, 0003880569939956207 feet x 12 = 0, 003492512 inch
1/0, 003492512 = 286,37 ". Nói cách khác. Ở 50 ft / s, chúng tôi có độ chính xác là + - 1/286" hoặc + - 0, 003492512 inch
Nhưng nếu bộ dao động của tôi là tồi tệ nhất và chạy ở 20 mhz + 2,5 ppm thì có ổn không? Hãy cùng tìm hiểu…
2,5 ppm của 20 000 000 là: (20000000/1000000) x 2,5 = 20000050 Hz
Vì vậy, trường hợp xấu nhất chúng ta có thêm 50 đồng hồ trên 20 mhz. Đó là 50 đồng hồ trên 1 giây. Còn bao nhiêu tic nữa trên timer1 nếu viên đang hoạt động cùng tốc độ (38.1472637 feet / s hoặc 6.55ms)?
1/20000050 = 49,999875 ns
49,999875 ns x 131071 = 6, 553533616 ms
6, 553533616 mili giây x 4 = 26.21413446 mili giây
1 / 26.21413446 ms = 38.14735907 feet / s
Vì vậy, chúng ta có 38.14735907 feet / s thay vì 38.1472637 feet / s
Bây giờ chúng ta biết rằng 2,5 ppm không ảnh hưởng đến kết quả.
Đây là một số ví dụ về tốc độ khác nhau
Đối với 1000 ft / s
1000 ft / s x 12 là 12000 inch / s
1 giây cho 12000 "bao nhiêu thời gian để làm 3"? 3x1 / 12000 = 250 chúng tôi giây
250 us / 50 ns = 5000 tic.
Timer1 sẽ ở mức 5000
uC làm phép toán và 1000 ft / s được hiển thị. Càng xa càng tốt
Đối với 900 ft / s
900 ft / s là 10800 / s
3x1 / 10800 = 277,77 chúng tôi
277, 77 ns / 50 ns = 5555, 5555 tic
Hẹn giờ 1 sẽ là 5555
uC làm phép toán và 900, 09 sẽ được hiển thị thay vì 900
Tại sao ? bởi vì bộ định thời 1 ở 5555 và 0, 5555 bị mất. Tic trên bộ đếm thời gian không có gì khác biệt.
Chúng tôi gặp lỗi đối với 0, 09 trên 900 ft / s
0, 09 / 900x100 = 0, 01% chỉ lỗi
Đối với 1500 ft / s1500 ft / s là 18000 / s 3x1 / 10800 = 166,66 us
166,66 us / 50 ns = 3333,333 tic Timer 1 sẽ ở mức 3333
uC làm phép toán và 1500,15 sẽ được hiển thị thay vì 1500, nó là.15 / 1500x100 = 0, 01%
Đối với 9000 ft / s
9000 x 12 = 180000 inch / s
3x1 / 180000 = 27,7777 chúng tôi
27,77 us / 50 ns = 555, 555
Timer1 sẽ ở 555 và 4 / (1 / 555x50ns) sẽ được hiển thị 9009, 00 sẽ được hiển thị
Ở đây lỗi là 9 feet / s trên 9000 = 0, 1%
Như bạn có thể thấy% lỗi đang tăng lên khi tốc độ cao hơn. Nhưng ở lại <0,1%
Những kết quả đó là rất tốt.
Nhưng độ chính xác không phải là tuyến tính. Ở 10000 ft / s, nó là 0, 1%. Điều tốt mới là chúng tôi không bao giờ thử nghiệm viên nén 10, 000 ft / s.
Một điều khác cần ghi nhớ. Khi một ngắt xảy ra, uC luôn kết thúc lệnh cuối cùng trước khi nhập vào ngắt. Điều này là bình thường và tất cả các uC đều làm điều này. Nếu bạn viết mã arduino, bằng C hoặc thậm chí là trình hợp dịch. Hầu hết thời gian, bạn sẽ đợi trong một vòng lặp mãi mãi… đợi. Vấn đề là, trong một vòng lặp, chúng ta sử dụng 2 chu kỳ. Thông thường, điều này không quan trọng. Nhưng trong trường hợp của chúng tôi. CÓ, mỗi tic đều quan trọng. Hãy xem một vòng lặp vô hạn:
người lắp ráp:
vòng:
vòng lặp rjmp
Trong C:
trong khi (1) {}
Trong thực tế trình biên dịch C sử dụng lệnh rjmp. RJMP là 2 chu kỳ.
Điều đó có nghĩa là nếu sự gián đoạn xảy ra với chu kỳ đầu tiên, chúng ta sẽ mất một chu kỳ (tic) (50ns).
Cách của tôi để khắc phục điều đó là thêm nhiều lệnh nop trong vòng lặp. NOP là 1 chu kỳ.
vòng:
nop
nop
nop
nop
nop
vòng lặp rjmp
Nếu ngắt xảy ra trên một lệnh nop. Chúng tôi ổn. Nếu nó xảy ra vào chu kỳ thứ hai của lệnh rjmp thì chúng ta vẫn ổn. Nhưng nếu nó xảy ra trong chu kỳ đầu tiên của lệnh rjmp, chúng ta sẽ mất một tic. Có chỉ là 50 ns nhưng như bạn có thể thấy ở trên, 50 ns trên 3 inch không phải là không có gì. Chúng tôi không thể sửa lỗi này bằng phần mềm vì chúng tôi không biết chính xác thời điểm xảy ra ngắt. Đó là lý do tại sao trong mã, bạn sẽ thấy rất nhiều hướng dẫn nop. Bây giờ tôi khá chắc chắn rằng ngắt sẽ rơi vào một lệnh nop. Nếu tôi thêm 2000 nop, tôi có 0, 05% rơi vào lệnh rjmp.
Một điều khác cần ghi nhớ. Khi ngắt xảy ra. Trình biên dịch thực hiện nhiều thao tác đẩy và kéo. Nhưng nó luôn luôn là cùng một con số. Vì vậy, bây giờ chúng tôi có thể thực hiện sửa chữa phần mềm.
Để kết luận về điều này:
Độ chính xác của viên trung bình 1000 ft / s là 0, 01%
Chính xác hơn 100 lần so với 1% khác trên thị trường. Tần số cao hơn và với TCXO, chính xác hơn
Ví dụ, 1% của 1000 ft / s lớn hơn hoặc ít hơn 10 ft / s. Đó là một sự khác biệt rất lớn.
Bước 3: Sơ đồ và Danh sách các bộ phận
Ở đây tôi đã thực hiện một nút bật / tắt mạch của mình. (xem hướng dẫn cuối cùng của tôi) Mạch này rất tiện dụng và hoạt động rất tốt.
Tôi đang sử dụng atmega328p. Cái này được lập trình bằng C.
Màn hình là chuẩn 2 dòng LCD HD44780 tương thích. Chế độ 4 bit được sử dụng.
Bộ điều chỉnh 3.3v được sử dụng để cung cấp điện áp cho TCXO 20mhz.
D1 dành cho đèn nền LCD. Không bắt buộc. Pin sẽ lâu hơn nếu bạn không cài đặt D1.
Tất cả các điện trở và nắp là gói 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 1 triệu
R8 1 triệu
U1 MIC5317-3.3 MIC5317 SOT23-5
U2 DMG6601LVT DMG6601LVT SOT23-6
Hiển thị lcd 2 dòng HD44780. Không cần mua mô-đun i2c.
Cảm biến:
Bộ phát 2x OP140A
2x Reciever OPL530
Bộ mã hóa: PEC11R-4215K-S0024 * Đừng quên thêm điện trở 4x 10k và 2x.01uf để thực hiện bộ lọc bộ mã hóa. nhìn bức ảnh bên dưới
Bước 4: Tập tin PCB Gerber
Đây là các tệp tin về mầm non
Bước 5: Hàn Pcb của bạn
Với sự trợ giúp của sơ đồ, hãy hàn tất cả các thành phần của bạn trên pcb. Mỗi phần hoặc viết trên pcb, r1, r2… và như vậy.
Tôi chưa cài đặt D1. Điều này dành cho đèn nền LCD. Nó đẹp nhưng thời lượng pin bị ảnh hưởng. Vì vậy, tôi chọn tắt đèn nền LCD.
Bước 6: Lập trình Atmega328p
Kiểm tra ở đây ở bước 12 để lập trình atmega328p. Tôi cung cấp ở đây tệp.hex cho việc này.
Đây là chương trình avrdude đã sẵn sàng để lập trình tập tin hàng loạt. Chỉ nhấp vào chương trình usbasp.bat và usbasp của bạn được cài đặt chính xác. Tất cả sẽ được thực hiện tự động bao gồm cả bit cầu chì.
1drv.ms/u/s!AnKLPDy3pII_vXaGPIZKMXxaXDul?e…
Trong dự án này, tôi cũng chia sẻ mã nguồn C. Xin lưu ý rằng một số ghi chú trong đó có thể bằng tiếng Pháp. Https://ttps: //1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…
Bước 7: Màn hình LCD
Cài đặt một số băng và kết nối pcb và LCD với nhau
Bước 8: Tệp STL
tập tin stl
1drv.ms/u/s!AnKLPDy3pII_vgezy0i0Aw3nD-xr?e…
Cần hỗ trợ cho bao vây, ống cảm biến và giá đỡ súng trường.
Tôi đã in tất cả ở cao.2 mm.
Bước 9: BỘ MÔI GIỚI XOAY CHIỀU
Bộ mã hóa quay này được kết nối với đầu nối isp. nó được sử dụng để thay đổi trọng lượng viên và để bật và tắt thiết bị.
vcc isp pin 2 (kéo điện trở lên)
Đầu cuối A (màu vàng) đi tới chân ISP 1
Đầu cuối B (màu xanh lá cây) đi đến ISP pin 3
Đầu cuối C (gnd) isp pin 6
Tôi đang thêm 2 hình ảnh để xem sự khác biệt giữa có bộ lọc và không có bộ lọc. Bạn có thể dễ dàng nhận thấy sự khác biệt giữa cả hai.
Nút nhấn đi đến đầu nối pcb SW.
Bước 10: Ống cảm biến
QUAN TRỌNG:
Ống cảm biến phải có màu Đen và bộ thu cảm biến phải được giấu
Những nỗ lực đầu tiên của tôi là có được một chiếc tẩu màu đỏ đẹp. Nhưng điều này là khó khăn! Nó không hoạt động chút nào. Tôi phát hiện ra rằng ánh sáng bên ngoài đang chiếu vào thì tấm nhựa và cảm biến bộ thu luôn bật.
Để có kết quả tốt, tôi không có lựa chọn nào khác là thay đổi màu thành đen.
Cài đặt đầu thu trên đầu trang. Và giấu phần nhựa trong bằng sơn đen, băng dính hoặc gôm, silicone đen.
Cài đặt emitter ở phía dưới.. Kiểm tra bằng bút xem các cảm biến có phản hồi tốt không. Có lẽ lỗ của bộ phát sẽ cần phải được mở rộng một chút. nó sẽ phụ thuộc vào hiệu chuẩn máy in của bạn.
Tôi cũng có kết quả tốt hơn trong bóng râm. Tránh ánh nắng trực tiếp.
Bước 11: Thay thế ống cảm biến
Nếu bạn không có máy in 3d, bạn có thể làm tương tự với ống đồng. Nó sẽ hoạt động rất tốt. Điều khó làm là lỗ chính xác 3 inch và bộ thu và bộ phát phải thẳng hàng.
Bước 12: Một viên thuốc trên Máy hiện sóng và Hiệu chuẩn
Đây là một viên thực sự đi qua ném đường ống. Đầu dò 1 màu vàng là cảm biến 1. Đầu dò 2 màu tím là cảm biến 2.
Thời gian / div là 50 us.
Chúng ta có thể đếm được 6 lần chia 50us. 50 us x 6 = 300 us (cho 3 inch). 300 us x 4 = 1,2 ms cho 1 feet
1 / 1,2ms = 833,33 ft / s
Chúng ta cũng có thể thấy rằng cảm biến bình thường ở mức 5v. Và chúng ta có thể chặn ánh sáng phát ra, cảm biến giảm xuống 0.
Đó là cách uC bắt đầu và ngăn chặn kẻ thù của mình (timer1)
Nhưng để biết chính xác tốc độ có chính xác hay không, tôi cần một cách để xác định điều này.
Để hiệu chỉnh phần mềm và kiểm tra độ chính xác của thiết bị này, tôi đã sử dụng bộ dao động tham chiếu 10 mhz. Xem GPSDO của tôi trên hướng dẫn khác.
Tôi nuôi một atmega328 khác với 10 mhz này. Và lập trình cái này trong trình hợp dịch để gửi cho tôi 2 xung mỗi khi tôi nhấn một nút để mô phỏng một viên. Chính xác như chúng ta đã thấy trong hình nhưng thay vì có một viên thực, nó là một uC khác gửi cho tôi 2 xung.
Mỗi lần nhấn nút nhấn, 1 xung được gửi đi và chính xác là 4 ms sau khi một xung khác được gửi đi.
Bằng cách này, tôi có thể cân bằng trình biên dịch phần mềm để luôn hiển thị 1000 ft / s.
Bước 13: Thêm…
Đây là nguyên mẫu đầu tiên của tôi trong năm 2010.
Đối với bất kỳ câu hỏi hoặc báo cáo lỗi, bạn có thể gửi email cho tôi. Tiếng anh hay tiếng pháp. Tôi sẽ cố gắng hết sức để giúp đỡ.
Đề xuất:
Nerf Chronograph và Rate of Fire Barrel: 7 bước
Nerf Chronograph và Rate of Fire Barrel: Giới thiệu Là một người thích mày mò, bạn luôn cảm thấy rất hài lòng khi xem các kết quả số của quá trình mày mò của mình. Nhiều người trong chúng ta đã từng sửa đổi súng Nerf và ai lại không thích ném những mảnh bọt khắp nhà với tốc độ hơn 100 khung hình / giây? Sau khi sửa đổi nhiều khẩu súng Nerf g
Arduino for Nerf: Chronograph và Shot Counter: 28 bước (có Hình ảnh)
Arduino for Nerf: Chronograph và Shot Counter: Tài liệu hướng dẫn trước của tôi đã đề cập đến những kiến thức cơ bản về phát hiện tốc độ phi tiêu bằng cách sử dụng bộ phát và dò hồng ngoại. Dự án này tiến thêm một bước nữa, sử dụng bảng mạch in, màn hình và pin để tạo ra một bộ đếm đạn di động và đồng hồ bấm giờ.
Knex Rifle: 12 bước
Knex Rifle: đây là khẩu súng trường mà tôi đã giới thiệu dưới dạng diễn đàn. nó chủ yếu được thiết kế cho ngoại hình và có phạm vi OK. thùng của nó có thể tháo rời và giảm phạm vi khi gắn vào. nó có một tay cầm cũng có thể tháo rời và một chân máy hai chân. nó sử dụng một phễu cơ bản để tải dưới dạng
The Storm 220 V1.7 Knex Bolt Action Rifle: 10 bước
Storm 220 V1.7 Knex Bolt Action Rifle: Đây là khẩu súng hoàn toàn mới của tôi, cơn bão 220. Nó được thiết kế chủ yếu về ngoại hình, nhưng nó hoạt động tốt và có tầm bắn khá. Tôi sẽ không nói là hay đâu, mặc dù đây là Tài liệu hướng dẫn đầu tiên của tôi, bởi vì tôi nghĩ mọi người có quyền theo ý kiến của họ
The Storm 222 V1.1 Knex Pseudo Semi Auto Rifle: 6 bước
Storm 222 V1.1 Knex Pseudo Semi Auto Rifle: Xin chào các bạn, đây là khẩu thứ ba của tôi có thể hướng dẫn, và là thứ ba trong số năm trong loạt game về cơn bão. Tôi tin rằng khẩu súng trường này là khẩu đầu tiên của loại hình này. Nó sử dụng một cơ chế mà tôi đã phát minh ra và một cơ chế tương tự như thế này đã được phát hành bởi nhà phát minh chuối, nhưng nó sử dụng