Мазмұны:

Пневматикалық винтовка хронографы, хроноскоп. 3D басып шығару: 13 қадам
Пневматикалық винтовка хронографы, хроноскоп. 3D басып шығару: 13 қадам

Бейне: Пневматикалық винтовка хронографы, хроноскоп. 3D басып шығару: 13 қадам

Бейне: Пневматикалық винтовка хронографы, хроноскоп. 3D басып шығару: 13 қадам
Бейне: Стрельба из пневматической винтовки 2024, Қараша
Anonim
Image
Image
Ерекшелігі
Ерекшелігі

Сәлем баршаңызға, бүгін біз 2010 жылы жасаған жобаны қайталаймыз. Әуе атқыштар хронографы. Бұл құрылғы снарядтың жылдамдығын көрсетеді. Пеллет, ВВ немесе тіпті ауа жұмсақ ВВ пластикалық шар.

2010 жылы көңіл көтеру үшін пневматикалық мылтық сатып алдым. Банкаларға, бөтелкелерге, нысанаға тиді. Мен білемін, бұл қарудың жылдамдығы максимум 500 фут/с. Өйткені бұл Канада заңы. Кейбір күшті пневматикалық винтовкалар бар, бірақ сізде лицензия болуы керек және сіз оларды Walmart -те сатып ала алмайсыз.

Енді менде бұл лицензия болды, мен басқасын сатып аламын. Бірақ қысқа әңгіме, сол тапанша АҚШ -та 1000 фут/с жылдамдықта қол жетімді болды. НЕ!? Сол мылтық? иә … Канадада инсультта тесік бар, ал бұлақ жұмсақ.

Бірінші нәрсе - шұңқырды толтыру. Мен дәнекерлеу арқылы осылай жасадым. Келесі нәрсе ауыстырылатын серіппеге тапсырыс беру болды. Бірақ күте тұрыңыз … менің жаңа ойыншығымның қазіргі жылдамдығы қандай? Көктем шынымен қажет пе? Мен білмеймін және білгім келеді. Мен қазір білгім келеді, бірақ қалай?

Сондықтан мен бұл жобаны жасадым. Маған тек 2 сенсор, UC және дисплей қажет болды, біз бизнестеміз.

Өткен аптада мен сөреде ескі көк хронографымды көрдім және өзіммен сөйлесемін: «Неге онымен бөліспейсіз және онымен нұсқаулық жасамайсыз?» Айтпақшы, біз дәлдікті жоғарылатып, батарея индикаторын қосамыз. Қосу/өшіру үшін 2 емес, 1 түймені қойыңыз. Барлық беткі бекіту. Біз қазір 2020 жылдамыз!

Міне, бар … бастайық!

1 -қадам: ерекшелігі

-Пеллет жылдамдығы

-Жылдамдық

-20 МГц жұмыс істейді, үлкен дәлдік

-Автоматты түрде өшіру

-Батарея кернеуі көрсетіледі

-қол жетімді схема

-pcb қол жетімді

-бөлімдер тізімі бар

-STL қол жетімді

-С коды қол жетімді

2 -қадам: Операция мен дәлдік теориясы

-Бізде 20 МГц жиілікте жұмыс істейтін UC бар. Қолданылатын осциллятор-TCX0 +-2,5 ppm

-Бізде бір -бірінен 3 дюйм қашықтықта 2 сенсор бар.

-Снаряд бірінші сенсорға тиді. uC санауды бастау (таймер1)

-Снаряд екінші сенсорға тиді. uC санауды тоқтатады.

-uC timer1 мәнін тексеріңіз, математиканы көрсетіңіз және жылдамдық пен жылдамдықты көрсетіңіз.

Мен 16 биттік таймер1 + tov1 толып кету жалаушасын қолданамын. Толық санау үшін 131071 «tic» үшін 17 биттік жиынтық.

1/20 мГц = 50 нс. Әр тик 50нс

3 дюйм жасау үшін 131071 x 50 ns = 6.55355 мс.

12 дюйм жасау үшін 6.55355 мс х 4 = 26.21 мс.

1/26,21 мс = 38,1472637 фут/с

Бұл құрылғы өлшей алатын ең баяу жылдамдық.

Неліктен 20 МГц? Неліктен ішкі 8 МГц немесе тіпті кристалды қолданбайсыз?

Менің бірінші құрылғым ішкі осцилляторды қолданды. Жұмыс істеді, бірақ бұл жеткілікті дәл емес. Айырмашылық тым үлкен. Кристал жақсы, бірақ температура әр түрлі жиілікте. Біз дәл өлшеу құрылғысын жасай алмаймыз. Сонымен қатар, жиілік неғұрлым жоғары болса, соғұрлым жылдамдық бірдей жылдамдықта есептеледі. Таңдау өте жақсы дәлдікке ие болады. Тик бөлінбейтіндіктен, егер жұмыс циклы жылдам болса, шығын аз болады.

20 МГц жиілігінде бізде 50 нс қадамдар бар. 38 ф/с снаряд үшін 50 нс қаншалықты дәл екенін білеміз бе?

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 болса, бұл жақсы ма? Білейік…

20 000 000 2,5 ppm - бұл: (20000000/1000000) x 2,5 = 20000050 Гц

Ең нашар сценарийде бізде 20 МГц тағы 50 сағат бар. 1 секундта 50 сағат. Егер түйіршіктер бірдей жылдамдықпен (38.1472637 фут/с немесе 6.55 мс) жұмыс жасаса, таймер1 -де қанша тауар бар?

1/20000050 = 49.999875 нс

49.999875 ns x 131071 = 6, 553533616 мс

6, 553533616 мс х 4 = 26.21413446 мс

1/26.21413446 мс = 38.14735907 фут/с

Сонымен, бізде 38.1472637 фут/с орнына 38.14735907 фут/с

Енді біз 2,5 ppm нәтижеге әсер етпейтінін білеміз.

Міне, әр түрлі жылдамдықтағы мысалдар

1000 фут/с үшін

1000 фут/с x 12 - 12000 дюйм/с

1 секунд 12000 «қанша уақыт 3 жасау керек»? 3x1/12000 = 250 АҚШ секунд

250 us / 50 ns = 5000 tic.

Таймер1 5000 болады

uC математиканы жасайды және 1000 фут/с көрсетіледі. Әзірше бәрі жақсы

900 фут/с үшін

900 фут/с - 10800 дюйм/с

3x1/10800 = 277,77 АҚШ доллары

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

Таймер 1 5555 болады

uC математиканы жасайды және 900 орнына 09, 900 көрсетіледі

Неге? себебі таймер 1 5555 және 0, 5555 жоғалған. Таймердегі таймер бөлінбейді.

Бізде 900 фут/с 0, 09 қатесі бар

0, 09/900x100 = 0, 01% қате

1500 фут/с1500 фут/с үшін 18000 дюйм/с 3x1/10800 = 166,66 АҚШ

166.66 us / 50 ns = 3333.333 tic Timer 1 3333 -те болады

uC математиканы жасайды және 1500.15 1500 орнына көрсетіледі.15/1500x100 = 0, 01%

9000 фут/с үшін

9000 x 12 = 180000 дюйм / с

3x1/180000 = 27.7777 бізге

27,77 us / 50 ns = 555, 555

Таймер1 555 болады және 4/(1/555x50нс) 9009 көрсетіледі, 00 көрсетіледі

Бұл жерде 9000 = 0, 1% бойынша 9 фут/с.

Көріп отырғаныңыздай, жылдамдық жоғары болған кезде % қате жоғарылайды. Бірақ <0,1% қалу

Бұл нәтижелер өте жақсы.

Бірақ дәлдік сызықтық емес. 10000 фут/с жылдамдықта ол 0,1 %құрайды. Жақсы жаңалық - біз 10 000 фут/с түйіршікті ешқашан сынамаймыз.

Есте сақтау керек тағы бір нәрсе. Үзіліс болған кезде, uC үзіліс енгізбес бұрын әрқашан соңғы нұсқауды аяқтайды. Бұл қалыпты жағдай және барлық UC мұны жасайды. Егер сіз arduino кодын C немесе тіпті ассемблерде жазсаңыз. Көбінесе сіз мәңгілік циклде күтесіз … күту үшін. Мәселе мынада, біз 2 цикл өткіземіз. Әдетте бұл маңызды емес. Бірақ біздің жағдайда. ИӘ, әр сауда маңызды. Шексіз циклды қарастырайық:

құрастырушы:

цикл:

rjmp циклы

С тілінде:

уақыт (1) {}

Шын мәнінде C компиляторы rjmp нұсқауын пайдаланады. RJMP - 2 цикл.

Бұл егер үзіліс бірінші циклде орын алса, біз бір циклды (tic) (50ns) жоғалтып аламыз.

Менің түзету әдісім - бұл циклге көптеген nop нұсқауларын қосу. NOP - 1 цикл.

цикл:

жоқ

жоқ

жоқ

жоқ

жоқ

rjmp циклы

Егер үзіліс nop нұсқауымен орын алса. Бізде бәрі жақсы. Егер бұл rjmp нұсқауының екінші циклінде орын алса, бізде бәрі жақсы. Бірақ егер бұл rjmp нұсқауының бірінші циклінде орын алса, біз бір сауда жоғалтып аламыз. Иә, бұл тек 50 нс, бірақ жоғарыда көріп тұрғандай, 3 дюймдегі 50 нс ештеңе емес. Біз мұны бағдарламалық қамтамасыз ету арқылы түзете алмаймыз, себебі үзілістің нақты қашан болатынын білмейміз. Сондықтан кодта сіз көптеген нұсқауларды көресіз. Енді үзіліс жоқ нұсқаулыққа түсетініне сенімдімін. Егер мен 2000 nop қоссам, rjmp нұсқаулығына түсу үшін менде 0, 05% болады.

Есте сақтау керек тағы бір нәрсе. Үзіліс болған кезде. Компилятор көптеген итеру мен тартуды жасайды. Бірақ бұл әрқашан бірдей сан. Енді біз бағдарламалық жасақтаманы түзете аламыз.

Бұл туралы қорытынды жасау үшін:

Орташа түйіршіктің 1000 фут/с дәлдігі - 0,1%

Нарықтағы басқа 1% -ға қарағанда 100 есе дәл. Жиілік жоғары және TCXO кезінде дәлірек

Мысалы, 1000 фт/с -тың 1% -ы 10 фут/с -қа тең. Бұл үлкен айырмашылық.

3 -қадам: схемалық және бөлшектер тізімі

Схемалық және бөлшектер тізімі
Схемалық және бөлшектер тізімі

Мұнда мен бір басу түймесін қосу/өшіру схемасын енгіздім. (менің соңғы нұсқаулықты қараңыз) Бұл схема өте ыңғайлы және өте жақсы жұмыс істейді.

Мен atmega328p қолданамын. Бұл C тілінде бағдарламаланған.

Дисплей HD44780 стандартты LCD 2 жолды үйлесімді. 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.1в 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

HD44780 2 жолақты дисплей. I2c модулін сатып алудың қажеті жоқ.

Датчиктер:

2x 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, r1, r2… және т.б. бойынша жазылған әрбір бөлік.

Менде D1 орнатылған жоқ. Бұл LCD артқы жарыққа арналған. Бұл әдемі, бірақ батареяның қызмет ету мерзімі әсер етеді. Сондықтан мен LCD артқы жарығын өшіруді шештім.

6 -қадам: Atmega328p бағдарламалау

Atmega328p бағдарламалау
Atmega328p бағдарламалау

Atmega328p бағдарламалау үшін 12 -қадамда осында тексеріңіз. Мен бұл үшін.hex файлын ұсынамын.

Міне пакеттік файлды бағдарламалауға дайын avrdude бағдарламасы. Usbasp.bat бағдарламасын нұқыңыз, ал сіздің usbasp дұрыс орнатылған. Барлығы автоматты түрде сақтандырғышты қосады.

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

Бұл жобада мен C бастапқы кодын бөлісемін. Ондағы кейбір ескертулер француз тілінде болуы мүмкін екенін біліңіз.

7 -қадам: Lcd дисплейі

Lcd дисплейі
Lcd дисплейі
Lcd дисплейі
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 (резисторды көтеріңіз)

А терминалы (сары) провайдердің 1 түйреуішіне өтеді

В терминалы (жасыл) 3 провайдер түйреуішіне өтіңіз

C терминалы (gnd) isp pin 6

Мен сүзгі мен сүзгісіз арасындағы айырмашылықты көру үшін 2 сурет қосамын. Сіз екеуінің арасындағы айырмашылықты оңай көре аласыз.

Басу түймесі pcb SW қосқышына өтеді.

10 -қадам: сенсорлық құбыр

Сенсорлық құбыр
Сенсорлық құбыр
Сенсорлық құбыр
Сенсорлық құбыр
Сенсорлық құбыр
Сенсорлық құбыр

МАҢЫЗДЫ:

Сенсорлық құбыр қара болуы керек, ал сенсор қабылдағышы жасырын болуы керек

Менің бірінші талпынысым әдемі қызыл құбыр болды. Бірақ бұл қиын! Бұл мүлде жұмыс істемеді. Мен пластмассадан сырттан жарық түсетінін және қабылдағыш сенсоры үнемі қосылып тұрғанын білдім.

Жақсы нәтижеге жету үшін түсімді қара түске өзгертуге еш мүмкіндік болмады.

Қабылдағышты үстіне орнатыңыз. Ал мөлдір пластикті қара бояумен, таспамен немесе сағызмен, қара силиконмен жасырыңыз.

Эмитентті төменгі жағына орнатыңыз. Сенсорлар жақсы жауап беретінін қаламмен тексеріңіз. Мүмкін, эмитенттің тесігін сәл ұлғайту қажет болуы мүмкін. Бұл принтердің калибрлеуіне байланысты болады.

Менде көлеңкеде жақсы нәтиже бар. Тікелей күн сәулесінен аулақ болыңыз.

11 -қадам: сенсорлық құбырдың баламасы

Сенсорлық құбырдың баламасы
Сенсорлық құбырдың баламасы
Сенсорлық құбырдың баламасы
Сенсорлық құбырдың баламасы

Егер сізде 3D принтері болмаса, сіз мұны мыс құбырмен жасай аласыз. Бұл өте жақсы жұмыс істейтін болады. Қиын нәрсе - дәл 3 дюймдік тесік және қабылдағыш пен эмитент туралануы керек.

12 -қадам: осциллограф пен калибрлеуге арналған түйіршік

Осциллограф пен калибрлеуге арналған түйіршік
Осциллограф пен калибрлеуге арналған түйіршік

Бұл нағыз түйіршіктер құбырды лақтырады. Зонд 1 сары - сенсор 1. Зонд 2 күлгін - сенсор 2.

Уақыт/div - 50 бізге.

Біз 50us -тың 6 бөлімін санауға болады. 50 us x 6 = 300 us (3 дюйм үшін). 300 фунт х 4 = 1,2 фут 1 футқа

1/1,2 мс = 833,33 фут/с

Сондай -ақ, сенсордың әдетте 5 вольтінде екенін көре аламыз. Біз эмитент жарығын бөгей аламыз ба, сенсор 0 -ге түседі.

Дәл осылай uC оның есептегішін бастайды және тоқтатады (таймер1)

Бірақ жылдамдық дәл болғанын білу үшін маған мұны өлшеу әдісі қажет болды.

Бағдарламалық қамтамасыз етуді калибрлеу және осы құрылғының дәлдігін тексеру үшін мен 10 МГц анықтамалық осцилляторды қолдандым. Басқа нұсқаулықта менің GPSDO -ны қараңыз.

Мен осы 10 МГц -пен басқа atmega328 беремін. Және бұл түйіршікті модельдеуге арналған түймені басқан сайын маған 2 импульс жіберетін ассемблерде бағдарламалау. Дәл біз суретте көргендей болдық, бірақ нағыз түйіршікті алудың орнына бұл маған басқа импульсті жіберді.

Түймені басқан сайын 1 импульс жіберіледі және басқа импульсті жібергеннен кейін дәл 4 мс.

Осылайша, мен бағдарламалық жасақтама компиляторын әрқашан 1000 фут/с дисплейде теңестіре аламын.

13 -қадам: Толығырақ…

Көбірек…
Көбірек…
Көбірек…
Көбірек…

Бұл менің 2010 жылғы алғашқы прототипім.

Кез келген сұрақтар мен қателер туралы маған электрондық хат жібере аласыз. Ағылшын немесе француз. Мен қолымнан келгенше көмектесемін.

Ұсынылған: