فهرست مطالب:

کرونوگراف تفنگ بادی ، کرونوسکوپ. چاپ سه بعدی: 13 مرحله
کرونوگراف تفنگ بادی ، کرونوسکوپ. چاپ سه بعدی: 13 مرحله

تصویری: کرونوگراف تفنگ بادی ، کرونوسکوپ. چاپ سه بعدی: 13 مرحله

تصویری: کرونوگراف تفنگ بادی ، کرونوسکوپ. چاپ سه بعدی: 13 مرحله
تصویری: تفنگ بادی PCP FX ایمپکت MK3 برنز اسنایپر 2024, جولای
Anonim
Image
Image
ویژگی
ویژگی

سلام به همه ، امروز ما دوباره به پروژه ای که در سال 2010 انجام داده ام ، می پردازیم. Chronograph تفنگ بادی. این دستگاه سرعت پرتابه را به شما می گوید. گلوله ، BB یا حتی توپ پلاستیکی نرم BB را با هوا نرم کنید.

در سال 2010 برای تفریح تفنگ بادی خریدم. ضربه زدن به قوطی ، بطری ، هدف بود. من می دانم که سرعت این اسلحه حداکثر 500 فوت در ثانیه بود. زیرا این قانون کانادا است. برخی از تفنگ های بادی قوی تر در دسترس هستند ، اما شما باید مجوز داشته باشید و نمی توانید آن را در Walmart خریداری کنید.

حالا من این مجوز را داشتم ، می توانستم یکی دیگر بخرم. اما داستان کوتاه ، همان تفنگ با سرعت 1000 پا در ثانیه در دسترس ایالات متحده بود. چی!؟ همون تفنگ؟ بله … در کانادا ، سکته مغزی یک سوراخ دارد و فنر نرم تر است.

اولین کاری که باید انجام دهید پر کردن حفره است. این همان کاری است که من با لحیم انجام دادم. کار بعدی سفارش فنر جایگزین بود. اما صبر کنید … سرعت فعلی اسباب بازی جدید من چقدر است؟ آیا واقعا بهار لازم است؟ من نمی دانم و می خواهم بدانم. من الان می خواهم بدانم اما چگونه؟

به همین دلیل این پروژه را انجام دادم. تنها چیزی که نیاز داشتم 2 سنسور ، یک uC و یک صفحه نمایش بود و ما در حال کار هستیم.

هفته گذشته ، کرونوگراف آبی رنگ قدیمی خود را روی قفسه ای دیدم و با خودم صحبت می کنم: "چرا این را به اشتراک نگذارید و با آن دستورالعمل انجام دهید؟" و به هر حال ، ما می توانیم دقت را افزایش دهیم و نشانگر باتری را اضافه کنیم. برای روشن/خاموش 1 دکمه را به جای 2 قرار دهید. تمام سطح نصب. ما اکنون در سال 2020 هستیم!

بنابراین وجود دارد … بیایید شروع کنیم!

مرحله 1: ویژگی

-سرعت پلت

-سرعت

-20 مگاهرتز در حال اجرا ، دقت بسیار زیاد

-خاموش شدن به صورت خودکار

ولتاژ باتری نمایش داده می شود

-سیستماتیک موجود است

-pcb موجود است

لیست قطعات موجود است

-STL موجود است

-C کد موجود است

مرحله 2: نظریه عملیات و دقت

-ما یک uC با سرعت 20 مگاهرتز داریم. نوسان ساز مورد استفاده TCX0 +-2.5 ppm است

-ما 2 سنسور در فاصله 3 اینچی از یکدیگر داریم.

پرتابه به اولین سنسور برخورد کرد. شروع شمارش uC (timer1)

پرتابه به سنسور دوم برخورد کرد. uC شمارش را متوقف کنید

-uC مقدار timer1 را بررسی کنید ، سرعت و سرعت را محاسبه کرده و نمایش دهید.

من از تایمر 16 بیتی + پرچم سرریز tov1 استفاده می کنم. مجموع 17 بیت برای 131071 "تیک" برای شمارش کامل.

1/20 مگاهرتز = 50 نانوس ثانیه هر تیک 50 نانوس است

131071 x 50 ns = 6.55355 میلی ثانیه برای انجام 3 اینچ.

6.55355 میلی ثانیه x 4 = 26.21 ثانیه برای انجام 12 اینچ.

1/26.21 میلی ثانیه = 38.1472637 فوت/ثانیه

این کندترین سرعتی است که دستگاه می تواند اندازه گیری کند.

چرا 20 مگاهرتز؟ چرا از 8 مگاهرتز داخلی یا حتی کریستال استفاده نمی کنید؟

اولین دستگاه من از نوسان ساز داخلی استفاده می کرد. کار می کرد اما این یکی به اندازه کافی دقیق نبود تنوع بسیار زیاد است. کریستال بهتر است اما دما فرکانس متغیری دارد. ما نمی توانیم یک دستگاه اندازه گیری دقیق با آن انجام دهیم. همچنین ، فرکانس بیشتر زیاد است ، تیک بیشتری برای همان سرعت محاسبه می شود. نمونه برداری با دقت بسیار خوب بهتر خواهد بود. از آنجا که یک تیک قابل تقسیم نیست ، اگر چرخه کار سریع باشد ، ضرر کمی دارد.

در 20 مگاهرتز مراحل 50 نانوس را داریم. آیا می دانیم 50 ns برای پرتابه با سرعت 38 فوت/ثانیه چقدر دقیق است.

38.1472637 فوت بر ثانیه بر 131071 = 0 ، 000291042 فوت تقسیم می شود

0 ، 0003880569939956207 پا x 12 = 0 ، 003492512 اینچ

1/0 ، 003492512 = 286.37 ". به عبارت دیگر. در 50 فوت/ثانیه ما دارای دقت +- 1/286" یا +- 0 ، 003492512 اینچ هستیم

اما اگر نوسان ساز من بدترین باشد و با سرعت 20 مگاهرتز +2.5 ppm کار کند ، خوب است؟ بیایید دریابیم…

2.5 ppm 20 000 000 برابر است با: (20000000/1000000) x 2.5 = 20000050 هرتز

بدترین حالت ، ما 50 ساعت دیگر در 20 مگاهرتز داریم. ساعت 50 در 1 ثانیه است. اگر گلوله با همان سرعت (38.1472637 فوت/ثانیه یا 6.55 میلی ثانیه) چند تایک بیشتر در تایمر 1 دارد؟

1/20000050 = 49.999875 ثانیه

49.999875 ns x 131071 = 6 ، 553533616 میلی ثانیه

6 ، 553533616 میلی ثانیه x 4 = 26.21413446 میلی ثانیه

1/26.21413446 ms = 38.14735907 فوت/ثانیه

بنابراین ما به جای 38.1472637 فوت/ثانیه 38.14735907 پا بر ثانیه داریم

اکنون می دانیم که 2.5 ppm بر نتیجه تأثیر نمی گذارد.

در اینجا نمونه ای از سرعت متفاوت است

برای 1000 فوت/ثانیه

1000 فوت در ثانیه در 12 12000 اینچ در ثانیه است

1 ثانیه برای 12000 "چند زمان برای انجام 3"؟ 3x1/12000 = 250 us ثانیه

250 us / 50 ns = 5000 تیک.

تایمر 1 در 5000 خواهد بود

uC ریاضی را انجام دهید و 1000 ft/s نمایش داده می شود. تا کنون خیلی خوب

برای 900 فوت/ثانیه

900 فوت بر ثانیه 10800 اینچ بر ثانیه است

3x1/10800 = 277.77 ما

277 ، 77 ns / 50 ns = 5555 ، 5555 تیک

تایمر 1 در 5555 خواهد بود

uC ریاضی را انجام دهید و 900 ، 09 به جای 900 نمایش داده می شود

چرا ؟ چون تایمر 1 در 5555 و 0 است ، 5555 از بین می رود. تیک تایمر قابل تقسیم نیست

ما خطایی برای 0 ، 09 در 900 فوت/ثانیه داریم

0 ، 09/900x100 = 0 ، فقط خطای 01٪

برای 1500 فوت/ثانیه 1500 فوت/ثانیه 18000 اینچ بر ثانیه 3x1/10800 = 166.66 ما است

166.66 us / 50 ns = 3333.333 تیک تایمر 1 در 3333 خواهد بود

uC ریاضی را انجام دهید و 1500.15 به جای 1500 نمایش داده می شود.15/1500x100 = 0 ، 01٪

برای 9000 فوت/ثانیه

12000 * 9000 = 180000 اینچ / ثانیه

3x1/180000 = 27.7777 ما

27.77 us / 50 ns = 555 ، 555

تایمر 1 در 555 و 4/(1/555x50ns) 9009 ، 00 نمایش داده می شود

در اینجا خطا 9 فوت در ثانیه در 9000 = 0 ، 1 است

همانطور که می بینید٪ خطا در صورت افزایش سرعت افزایش می یابد. اما <0.1 stay بمانید

آن نتایج بسیار خوب است.

اما دقت خطی نیست با سرعت 10000 فوت بر ثانیه 0 ، 1 است. نکته خوب این است که ما هرگز یک گلوله 10،000 فوت/ثانیه را آزمایش نمی کنیم.

نکته دیگری که باید در نظر داشته باشید. وقتی وقفه ای رخ می دهد ، uC همیشه آخرین دستورالعمل را قبل از وارد کردن وقفه به پایان می رساند. این طبیعی است و همه uC این کار را انجام می دهند. اگر آردوینو را به زبان C یا حتی اسمبلر کد می کنید. بیشتر اوقات شما در یک حلقه برای همیشه منتظر خواهید ماند … منتظر بمانید. مشکل این است که ما در یک حلقه 2 چرخه را صرف می کنیم. به طور معمول این مهم نیست اما در مورد ما بله ، هر تیک مهم است. بیایید به یک حلقه بی نهایت نگاه کنیم:

مونتاژ کننده:

حلقه:

حلقه rjmp

در C:

در حالی که (1) {}

در واقع C کامپایلر از دستور rjmp استفاده می کند. RJMP 2 چرخه است.

این بدان معنی است که اگر وقفه در چرخه اول اتفاق بیفتد ، ما یک چرخه (tic) (50nns) را از دست می دهیم.

راه من برای رفع این مشکل این است که دستورالعمل های زیادی را در حلقه اضافه کنم. NOP 1 چرخه است.

حلقه:

خیر

خیر

خیر

خیر

خیر

حلقه rjmp

اگر وقفه در یک دستورالعمل خیر اتفاق بیفتد. ما خوبیم اگر در چرخه دوم آموزش rjmp اتفاق بیفتد ، مشکلی نداریم. اما اگر در اولین چرخه آموزش rjmp اتفاق بیفتد ، ما یک تیک را از دست می دهیم. بله فقط 50 ns است ، اما همانطور که در بالا مشاهده می کنید ، 50 ns در 3 اینچ چیزی نیست. ما نمی توانیم این را با نرم افزار تصحیح کنیم زیرا نمی دانیم دقیقاً چه زمانی وقفه رخ می دهد. به همین دلیل است که در کد شما دستورالعمل های زیادی را مشاهده خواهید کرد. در حال حاضر من کاملاً مطمئن هستم که وقفه در یک دستورالعمل خالی قرار می گیرد. اگر 2000 nop اضافه کنم ، 0 ، 05 have در دستور rjmp قرار دارد.

نکته دیگری که باید در نظر داشته باشید. وقتی وقفه اتفاق می افتد. کامپایلر فشار و کشش زیادی انجام می دهد. اما همیشه یک عدد است. بنابراین اکنون می توانیم یک اصلاح نرم افزاری انجام دهیم.

برای نتیجه گیری در این باره:

دقت برای یک گلوله متوسط 1000 فوت بر ثانیه 0 ، 01 است

100 برابر دقیق تر از 1 درصد دیگر موجود در بازار. فرکانس بالاتر است و با TCXO ، دقیق تر

برای مثال ، 1٪ از 1000 فوت بر ثانیه بیشتر یا کمتر 10 فوت بر ثانیه است. این تفاوت بزرگی است.

مرحله 3: شماتیک و لیست قطعات

فهرست شماتیک و قطعات
فهرست شماتیک و قطعات

در اینجا من یک دکمه روشن/خاموش را فشار دادم. (آخرین دستورالعمل من را ببینید) این مدار بسیار مفید است و بسیار خوب کار می کند.

من از atmega328p استفاده می کنم. این مورد به زبان C برنامه ریزی شده است.

صفحه نمایش استاندارد LCD 2 خطی HD44780 LCD است. حالت 4 بیتی استفاده می شود.

برای تنظیم ولتاژ TCXO 20 مگاهرتز از رگولاتور 3.3 ولت استفاده می شود.

D1 برای نور پس زمینه LCD است. اختیاری. اگر D1 را نصب نکنید ، باتری بیشتر دوام می آورد.

همه مقاومت ها و درپوش ها بسته 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

نمایش ال سی دی 2 خط HD44780. نیازی به خرید ماژول i2c نیست.

سنسورها:

2 برابر Emitter OP140A

گیرنده 2x OPL530

رمزگذار: PEC11R-4215K-S0024 *فراموش نکنید که برای انجام فیلتر رمزگذار ، 4x مقاومت 10k و 2x.01uf اضافه کنید. تصویر زیر را مشاهده کنید

مرحله 4: فایل PCB Gerber

فایل PCB Gerber
فایل PCB Gerber
فایل PCB Gerber
فایل PCB Gerber
فایل PCB Gerber
فایل PCB Gerber
فایل PCB Gerber
فایل PCB Gerber

در اینجا فایل های gerber وجود دارد

مرحله 5: PCB خود را لحیم کنید

PCB خود را لحیم کنید
PCB خود را لحیم کنید
PCB خود را لحیم کنید
PCB خود را لحیم کنید
PCB خود را لحیم کنید
PCB خود را لحیم کنید

با کمک شماتیک ، تمام اجزای خود را روی pcb لحیم کنید. هر قسمت یا نوشته شده بر روی pcb ، r1 ، r2 … و غیره.

من D1 رو نصب نکردم. این برای نور پس زمینه LCD است. زیباست اما عمر باتری تحت تأثیر قرار می گیرد. بنابراین من انتخاب می کنم که نور پس زمینه LCD خاموش باشد.

مرحله 6: برنامه نویسی Atmega328p

برنامه نویسی Atmega328p
برنامه نویسی Atmega328p

برای برنامه نویسی atmega328p در مرحله 12 اینجا را بررسی کنید. من فایل hex را برای این کار در اینجا ارائه می دهم.

در اینجا برنامه avrdude آماده برنامه نویسی فایل دسته ای است. فقط روی برنامه usbasp.bat کلیک کنید و usbasp شما به درستی نصب شده است. همه انجام می شود به طور خودکار از جمله بیت فیوز.

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

در این پروژه من همچنین کد منبع C را به اشتراک می گذارم. توجه داشته باشید که برخی از یادداشت های موجود در آن می تواند به زبان فرانسوی باشد. https://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx؟ e…

مرحله 7: نمایشگر LCD

صفحه نمایش ال سی دی
صفحه نمایش ال سی دی
صفحه نمایش ال سی دی
صفحه نمایش ال سی دی

چند نوار نصب کنید و pcb و lcd را با هم وصل کنید

مرحله 8: فایل STL

فایل STL
فایل STL
فایل STL
فایل STL
فایل STL
فایل STL

فایل stl

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

پشتیبانی از محفظه ، لوله سنسور و نگهدارنده تفنگ مورد نیاز است.

من همه را با ارتفاع.2 میلی متر چاپ کرده ام.

مرحله 9: رمزگذار روتاری

رمزگذار روتاری
رمزگذار روتاری
رمزگذار روتاری
رمزگذار روتاری
رمزگذار روتاری
رمزگذار روتاری

این رمزگذار دوار به اتصال isp متصل است. از آن برای تغییر وزن گلوله و روشن و خاموش کردن دستگاه استفاده می شود.

vcc isp pin 2 (مقاومت را بکشید بالا)

پایانه A (زرد) به پین 1 ISP بروید

پایانه B (سبز) به پین 3 ISP بروید

ترمینال C (gnd) isp pin 6

من 2 عکس اضافه می کنم تا تفاوت بین داشتن فیلتر و بدون فیلتر را مشاهده کنم. به راحتی می توانید تفاوت بین هر دو را مشاهده کنید.

دکمه فشاری به اتصال PCB SW بروید.

مرحله 10: لوله سنسور

لوله سنسور
لوله سنسور
لوله سنسور
لوله سنسور
لوله سنسور
لوله سنسور

مهم:

لوله سنسور باید سیاه باشد و گیرنده سنسور باید مخفی باشد

اولین تلاش من این بود که یک لوله قرمز زیبا داشته باشم. اما این مشکل است! اصلا کار نمی کرد متوجه شدم که نور بیرونی وارد می شود پلاستیک را پرتاب کرده و سنسور گیرنده همیشه روشن است.

برای نتیجه خوب ، چاره ای نداشتم که رنگ را به سیاه تغییر دهم.

گیرنده را در بالا نصب کنید. و پلاستیک شفاف را با رنگ سیاه ، نوار یا آدامس ، سیلیکون سیاه مخفی کنید.

امیتر را در پایین نصب کنید.. اگر سنسورها خوب جواب می دهند با قلم بررسی کنید. شاید لازم باشد سوراخ ساطع کننده کمی بزرگ شود. بستگی به کالیبراسیون چاپگر شما دارد.

در سایه نیز نتیجه بهتری دارم. از تابش مستقیم نور خورشید خودداری کنید.

مرحله 11: لوله سنسور جایگزین

لوله سنسور جایگزین
لوله سنسور جایگزین
لوله سنسور جایگزین
لوله سنسور جایگزین

اگر چاپگر سه بعدی ندارید ، می توانید همین کار را با لوله مسی انجام دهید. بسیار خوب کار خواهد کرد تا. کار سخت این است که سوراخ دقیقاً 3 اینچ باشد و گیرنده و امیتر باید تراز شوند.

مرحله 12: گلوله ای در اسیلوسکوپ و کالیبراسیون

گلوله ای روی اسیلوسکوپ و کالیبراسیون
گلوله ای روی اسیلوسکوپ و کالیبراسیون

این یک گلوله واقعی است که از لوله عبور می کند. پروب 1 زرد سنسور 1. پروب 2 بنفش سنسور 2 است.

زمان/تقسیم 50 ما است.

ما می توانیم 6 تقسیم 50us را شمارش کنیم. 50 us x 6 = 300 us (برای 3 اینچ). 300 us x 4 = 1.2 ms برای 1 فوت

1/1.2 میلی ثانیه = 833.33 فوت/ثانیه

ما همچنین می توانیم ببینیم که سنسور به طور معمول در 5 ولت است. و آیا می توانیم نور ساطع کننده را مسدود کنیم ، سنسور به 0 کاهش می یابد.

این راهی است که کنترل uC شروع و متوقف می کند (timer1)

اما برای اینکه دقیقاً بدانم سرعت دقیق است یا خیر ، به راهی برای اندازه گیری آن نیاز داشتم.

برای انجام کالیبراسیون نرم افزار و آزمایش صحت این دستگاه ، از یک نوسانگر مرجع 10 مگاهرتز استفاده کردم. GPSDO من را در موارد دیگر مشاهده کنید.

من atmega328 دیگری را با این 10 مگاهرتز تغذیه می کنم. و این را در اسمبلر برنامه ریزی کنید تا هر بار که یک دکمه را شبیه سازی می کنم ، 2 پالس برای من ارسال کند. دقیقاً همانطور که در تصویر دیدیم ، اما در عوض داشتن یک گلوله واقعی ، یک uC دیگر برای من 2 پالس ارسال کرد.

هر بار که دکمه فشار داده می شد 1 پالس ارسال می شد و دقیقاً 4 میلی ثانیه پس از ارسال یک پالس دیگر.

به این ترتیب ، می توانم کامپایلر نرم افزار را که همیشه 1000 فوت بر ثانیه نمایش داده می شود ، متعادل کنم.

مرحله 13: بیشتر…

بیشتر…
بیشتر…
بیشتر…
بیشتر…

این اولین نمونه اولیه من در سال 2010 است.

برای هر گونه سوال یا گزارش خطا می توانید به من ایمیل بزنید. انگلیسی یا فرانسوی. تمام تلاشم را می کنم تا کمک کنم.

توصیه شده: