Satura rādītājs:
- 1. darbība: iezīme
- 2. darbība: darbības teorija un precizitāte
- 3. darbība: shematisks un detaļu saraksts
- 4. solis: PCB Gerber fails
- 5. solis: Pcb lodēšana
- 6. darbība: Atmega328p programmēšana
- 7. darbība: LCD displejs
- 8. solis: STL fails
- 9. solis: Rotējošais kodētājs
- 10. solis: sensora caurule
- 11. solis: Sensora caurules alternatīva
- 12. solis: granulas osciloskopā un kalibrēšana
- 13. darbība: vairāk…
Video: Gaisa šautenes hronogrāfs, hronoskops. 3D drukāts: 13 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Sveiki visiem, šodien mēs atkārtoti apmeklēsim 2010. gadā veikto projetu. Gaisa šautenes hronogrāfs. Šī ierīce jums pateiks šāviņa ātrumu. Granulu, BB vai pat gaisa mīksta BB plastmasas bumba.
2010. gadā jautrībai nopirku gaisa šauteni. Sita ar kārbām, pudelēm, mērķēja. Es zinu, ka šī lielgabala ātrums bija maksimums 500 pēdas/s. Jo tas ir Kanādas likums. Ir pieejamas dažas spēcīgākas gaisa šautenes, taču jums ir nepieciešama licence, un jūs nevarat tās iegādāties Walmart.
Tagad man bija šī licence, es varētu nopirkt citu. Bet īss stāsts, tas pats lielgabals bija pieejams ASV ar ātrumu 1000 pēdas/s. KAS!? Tas pats lielgabals? jā… Kanādā triecienam ir caurums, un atspere ir mīkstāka.
Pirmais, kas jādara, ir aizpildīt caurumu. To es darīju ar lodmetālu. Nākamā lieta bija pasūtīt rezerves atsperi. Bet pagaidiet … kāds ir manas jaunās rotaļlietas pašreizējais ātrums? Vai pavasaris tiešām ir vajadzīgs? Nezinu un gribu zināt. Es gribu zināt tagad, bet kā?
Tāpēc es veicu šo projektu. Viss, kas man bija vajadzīgs, bija 2 sensori, uC un displejs, un mēs strādājam.
Pagājušajā nedēļā es plauktā ieraudzīju savu veco zilo hronogrāfu un runāju ar sevi: "Kāpēc nedalīties ar šo un nedarīt ar to pamācību?" Un, starp citu, mēs varētu palielināt precizitāti un pievienot akumulatora indikatoru. Lai ieslēgtu/izslēgtu, ievietojiet 1 pogu 2 vietā. Visas virsmas stiprinājums. Tagad esam 2020. gadā!
Tātad tas ir … sāksim!
1. darbība: iezīme
-granulu ātrums
-Tuvums
-20 mhz skriešana, milzīga precizitāte
-Automātiski izslēgts
-Tiek parādīts akumulatora spriegums
-pieejama shematiska
-pcb pieejams
-pieejams rezerves daļu saraksts
-STL pieejams
-C kods pieejams
2. darbība: darbības teorija un precizitāte
-Mums ir uC darbojas 20Mhz. Izmantotais oscilators ir TCX0 +-2,5 ppm
-Mums ir 2 sensori 3 collu attālumā viens no otra.
-Šāviņš trāpīja pirmajā sensorā. uC sākt skaitīšanu (taimeris1)
-Šāviņš trāpīja otrajā sensorā. uC beidz skaitīt.
-uC pārbaudiet taimera1 vērtību, veiciet matemātisko un displeja ātrumu un ātrumu.
Es izmantoju 16 bitu taimeri1 + pārpildes karodziņu tov1. 17 biti kopā par 131071 "tic" pilnam skaitīšanai.
1/20 mhz = 50 ns. Katrs tic ir 50ns
131071 x 50 ns = 6,55355 ms līdz 3 collām.
6,55355 ms x 4 = 26,21 ms līdz 12 collām.
1/26,21 ms = 38,1472637 pēdas/s
Šis ir lēnākais ātrums, ko ierīce var izmērīt.
Kāpēc 20 mhz? Kāpēc neizmantot iekšējo 8 MHz vai pat kristālu?
Mana pirmā ierīce izmantoja iekšējo oscilatoru. Darbojās, bet šis nebija pietiekami precīzs. Atšķirība ir pārāk liela. Kristāls ir labāks, bet temperatūra mainās. Ar to mēs nevaram izveidot precīzu mērīšanas ierīci. Turklāt, jo lielāka frekvence ir augsta, jo vairāk ticamības tiks skaitīts ar tādu pašu ātrumu. Paraugu ņemšana būs labāka, lai iegūtu ļoti labu precizitāti. Tā kā tic nav sadalāms, zaudējumi ir nelieli, ja darba cikls ir ātrs.
Pie 20 MHz mums ir soļi 50 ns. Vai mēs zinām, cik precīzs ir 50 ns šāviņam ar ātrumu 38 pēdas/s.
38,1472637 pēdas/s daliet ar 131071 = 0, 000291042 pēdas
0 0003880569939956207 pēdas x 12 = 0, 003492512 collas
1/0, 003492512 = 286,37 ". Citiem vārdiem sakot. Ar ātrumu 50 pēdas/s mums ir precizitāte +- 1/286" vai +- 0, 003492512 collas
Bet, ja mans oscilators ir vissliktākais un darbojas ar ātrumu 20 mhz +2,5 ppm, vai tas ir labi? Noskaidrosim…
2,5 ppm no 20 000 000 ir: (20000000/1000000) x 2,5 = 20000050 Hz
Tātad sliktākajā gadījumā mums ir vēl 50 pulksteņi 20 MHz. Tas ir 50 pulkstenis 1 sekundē. Cik daudz tic vairāk par taimeri1, ja granulas veic tādu pašu ātrumu (38,1472637 pēdas/s vai 6,55 ms)?
1/20000050 = 49,999875 ns
49.999875 ns x 131071 = 6, 553533616 ms
6, 553533616 ms x 4 = 26,21413446 ms
1/26.21413446 ms = 38.14735907 pēdas/s
Tātad mums ir 38,143535907 pēdas/s, nevis 38,1472637 pēdas/s
Tagad mēs zinām, ka 2,5 ppm neietekmē rezultātu.
Šeit ir dažāda ātruma piemērs
Par 1000 pēdām/s
1000 pēdas/s x 12 ir 12000 collas/s
1 sekunde uz 12000 "cik daudz laika darīt 3"? 3x1/12000 = 250 ASV sekundes
250 ASV dolāri / 50 ns = 5000 tic.
Taimeris 1 būs pie 5000
uC do the math, un tiek parādīts 1000 pēdas/s. Tik tālu, labi
Par 900 pēdām/s
900 pēdas/s ir 10800 collas/s
3x1/10800 = 277,77 mums
277, 77 ns / 50 ns = 5555, 5555 tic
Taimeris 1 būs pie 5555
uC do the math un 900, tiks parādīts 09, nevis 900
Kāpēc? jo taimeris 1 ir pie 5555 un 0, 5555 ir zaudēts. Taimera atzīmes nav sadalāmas.
Mums ir kļūda 0, 09 par 900 pēdām/s
0, 09/900x100 = 0, 01% tikai kļūda
1500 pēdām/s 1500 pēdas/s ir 18000 collas/s 3x1/10800 = 166,66 ASV
166,66 mums / 50 ns = 3333,3333 tic 1. taimeris būs pie 3333
uC veic matemātiku un 1500.15 tiks parādīts 1500 vietā, tas ir.15/1500x100 = 0, 01%
Par 9000 pēdām/s
9000 x 12 = 180000 collas / s
3x1/180000 = 27,77777 mums
27,77 mums / 50 ns = 555, 555
Taimeris 1 būs pie 555 un tiks parādīts 4/(1/555x50ns) 9009, 00
Šeit kļūda ir 9 pēdas/s uz 9000 = 0, 1%
Kā redzat, kļūda palielinās, kad ātrums ir lielāks. Bet palieciet <0,1%
Šie rezultāti ir ļoti labi.
Bet precizitāte nav lineāra. Pie 10000 pēdām/s tas ir 0, 1 %. Jauns ir tas, ka mēs nekad nepārbaudām 10 000 pēdu/s granulu.
Vēl viena lieta, kas jāpatur prātā. Kad notiek pārtraukums, uC vienmēr pabeidz pēdējo norādījumu pirms pārtraukuma ievadīšanas. Tas ir normāli, un visi UC to dara. Ja kodējat arduino, C vai pat montētājā. Lielāko daļu laika jūs gaidīsit mūžīgā ciklā… gaidīt. Problēma ir tāda, ka ciklā mēs pavadām 2 ciklus. Parasti tas nav svarīgi. Bet mūsu gadījumā. JĀ, katrs tic ir svarīgs. Apskatīsim bezgalīgu cilpu:
montētājs:
cilpa:
rjmp cilpa
C:
kamēr (1) {}
Faktiski C kompilators izmanto rjmp instrukciju. RJMP ir 2 cikli.
Tas nozīmē, ka, ja pārtraukums notiek pirmajā ciklā, mēs zaudējam vienu ciklu (tic) (50ns).
Mans veids, kā to novērst, ir ciklam pievienot daudzas nop instrukcijas. NOP ir 1 cikls.
cilpa:
nop
nop
nop
nop
nop
rjmp cilpa
Ja pārtraukums notiek pēc nop instrukcijas. Mums viss kārtībā. Ja tas notiek rjmp instrukciju otrajā ciklā, mums viss ir kārtībā. Bet, ja tas notiks pirmajā rjmp instrukciju ciklā, mēs zaudēsim vienu tic. Jā, tas ir tikai 50 ns, bet, kā redzat iepriekš, 50 ns uz 3 collām nav nekas. Mēs nevaram to labot ar programmatūru, jo mēs nezinām, kad tieši notiek pārtraukums. Tāpēc kodā redzēsit daudz nop instrukciju. Tagad es esmu diezgan pārliecināts, ka pārtraukums būs saistīts ar nop instrukciju. Ja es pievienoju 2000 nop man ir 0, 05%, lai nokristu uz rjmp instrukciju.
Vēl viena lieta, kas jāpatur prātā. Kad notiek pārtraukums. Sastādītājs daudz spied un velk. Bet tas vienmēr ir viens un tas pats numurs. Tātad tagad mēs varam veikt programmatūras korekciju.
Lai nobeigtu šo:
Vidējās granulas 1000 pēdu/s precizitāte ir 0,01%
100x precīzāk nekā citi 1% tirgū. Frekvence ir augstāka un ar TCXO precīzāka
Piemēram, 1% no 1000 pēdām/s ir vairāk vai mazāk 10 pēdas/s. Tā ir milzīga atšķirība.
3. darbība: shematisks un detaļu saraksts
Šeit es ieviesu savu vienas pogas ieslēgšanas/izslēgšanas ķēdi. (skatiet manu pēdējo pamācību) Šī shēma ir ļoti ērta un darbojas ļoti labi.
Es izmantoju atmega328p. Šis ir ieprogrammēts C.
Displejs ir standarta 2 rindu LCD HD44780 saderīgs. Tiek izmantots 4 bitu režīms.
Lai nodrošinātu spriegumu TCXO 20mhz, tiek izmantots 3.3v regulators.
D1 ir paredzēts LCD fona apgaismojumam. Neobligāti. Ja neinstalēsit D1, akumulators darbosies ilgāk.
Visi rezistori un vāciņi ir 0805 iepakojumā
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 1 milj
R2 1 milj
R4 2.2k
R5 160
R6 160
R7 1 milj
R8 1 milj
U1 MIC5317-3,3 MIC5317 SOT23-5
U2 DMG6601LVT DMG6601LVT SOT23-6
Displejs LCD 2 rindas HD44780. Nav nepieciešams iegādāties i2c moduli.
Sensori:
2x emitētājs OP140A
2x uztvērējs OPL530
Kodētājs: PEC11R-4215K-S0024 *Neaizmirstiet pievienot 4x 10k rezistorus un 2x.01uf, lai veiktu kodētāja filtru. skatiet attēlu zemāk
4. solis: PCB Gerber fails
Šeit ir gerber faili
5. solis: Pcb lodēšana
Ar shematisku palīdzību lodējiet visu savu komponentu uz PCB. Katra daļa vai rakstīta uz PCB, r1, r2 … un tā tālāk.
Man nav instalēts D1. Tas ir paredzēts LCD fona apgaismojumam. Tas ir skaisti, bet ietekmē akumulatora darbības laiku. Tāpēc es izvēlos izslēgt LCD fona apgaismojumu.
6. darbība: Atmega328p programmēšana
Pārbaudiet šeit 12. solī, lai ieprogrammētu atmega328p. Šeit es sniedzu.hex failu.
Šeit ir avrdude programma, kas ir gatava programmēt partijas failu. Noklikšķiniet tikai uz programmas usbasp.bat, un jūsu usbasp ir instalēts pareizi. Viss tiks darīts automātiski, ieskaitot drošinātāja bitu.
1drv.ms/u/s!AnKLPDy3pII_vXaGPIZKMXxaXDul?e…
Šajā projektā es koplietoju arī C avota kodu. Ņemiet vērā, ka dažas piezīmes tajā var būt franču valodā. Https://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…
7. darbība: LCD displejs
Instalējiet lenti un savienojiet kopā PCB un LCD
8. solis: STL fails
stl failu
1drv.ms/u/s!AnKLPDy3pII_vgezy0i0Aw3nD-xr?e…
Nepieciešams atbalsts korpusam, sensora caurulei un šautenes turētājam.
Es esmu drukājis 0,2 mm augstumā.
9. solis: Rotējošais kodētājs
Šis rotējošais kodētājs ir pievienots ISP savienotājam. to izmanto, lai mainītu granulu svaru un ieslēgtu un izslēgtu ierīci.
vcc isp pin 2 (uzvilkt rezistoru)
Terminālis A (dzeltens) dodieties uz ISP 1. tapu
Terminālis B (zaļš) dodieties uz ISP 3. tapu
Termināļa C (gnd) isp pin 6
Es pievienoju 2 attēlus, lai redzētu atšķirību starp filtru un bez filtra. Jūs varat viegli redzēt atšķirību starp abiem.
Spiedpoga iet uz PCB SW savienotāju.
10. solis: sensora caurule
SVARĪGS:
Sensora caurulei jābūt melnai, un sensora uztvērējam jābūt paslēptam
Mani pirmie mēģinājumi bija iegūt skaistu sarkanu pīpi. Bet tas ir grūts! Tas vispār nedarbojās. Es sapratu, ka ienāca ārējā gaisma, un plastmasas un uztvērēja sensors vienmēr bija ieslēgts.
Lai iegūtu labu rezultātu, man nebija izvēles mainīt krāsu uz melnu.
Uzstādiet uztvērēju augšpusē. Un paslēpiet caurspīdīgo plastmasu ar melnu krāsu, lenti vai gumiju, melnu silikonu.
Uzstādiet emitētāju apakšā.. Pārbaudiet ar pildspalvu, vai sensori labi reaģē. Varbūt emitera atveri vajadzēs nedaudz palielināt. tas būs atkarīgs no printera kalibrēšanas.
Man ir arī labāks rezultāts ēnā. Izvairieties no tiešiem saules stariem.
11. solis: Sensora caurules alternatīva
Ja jums nav 3D printera, varat to darīt ar vara cauruli. Tas darbosies ļoti labi, lai. Grūti darīt, ir caurums tieši 3 collas un uztvērējs un emitētājs ir jāsaskaņo.
12. solis: granulas osciloskopā un kalibrēšana
Šī ir īsta granulu izmešana. Zonde 1 dzeltenais ir sensors 1. Zonde 2 violeta ir 2. sensors.
Laiks/div ir 50 ASV.
Mēs varam saskaitīt 6 50u nodaļas. 50 ASV x 6 = 300 ASV (3 collas). 300 us x 4 = 1,2 ms 1 pēdai
1/1,2 ms = 833,33 pēdas/s
Mēs varam arī redzēt, ka sensors parasti ir pie 5 V. Un vai mēs varam bloķēt izstarotāja gaismu, sensora kritumu līdz 0.
Tas ir veids, kā uC sāk un pārtrauc viņa skaitītāju (taimeris1)
Bet, lai precīzi zinātu, vai ātrums bija precīzs, man vajadzēja veidu, kā to izmērīt.
Lai veiktu programmatūras kalibrēšanu un pārbaudītu šīs ierīces precizitāti, es izmantoju 10 mhz atsauces oscilatoru. Skatiet manu GPSDO citu pamācību.
Es baroju citu atmega328 ar šo 10 mhz. Un ieprogrammējiet šo komplektu montētājā, lai man katru reizi, nospiežot pogu, tiktu nosūtīti 2 impulsi, lai simulētu granulu. Tieši tā, kā mēs redzējām attēlā, bet tā vietā, lai iegūtu īstu granulu, tas bija cits uC, kas man nosūtīja 2 impulsus.
Katru reizi nospiežot pogu, tika nosūtīts 1 impulss un tieši 4 ms pēc cita impulsa nosūtīšanas.
Tādā veidā es varu līdzsvarot programmatūras kompilatoru, lai vienmēr tiktu parādīts 1000 pēdas/s.
13. darbība: vairāk…
Šis ir mans pirmais 2010. gada prototips.
Uz visiem jautājumiem vai ziņojumu par kļūdām varat rakstīt man pa e -pastu. Angļu vai franču. Es darīšu visu iespējamo, lai palīdzētu.
Ieteicams:
Nerf hronogrāfs un ugunsbremzes ātrums: 7 soļi
Nerf hronogrāfs un ugunsgrēka mucas ātrums: Ievads Kā lāpītājam vienmēr ir ļoti patīkami redzēt jūsu izveicības skaitliskos rezultātus. Daudzi no mums jau ir modificējuši Nerf ieročus un kam nepatīk putu gabalu mētāšana pa māju ar ātrumu virs 100 kadriem sekundē? Pēc daudzu Nerf g modifikāciju
Gaisa piesārņojuma noteikšana + gaisa filtrēšana: 4 soļi
Gaisa piesārņojuma noteikšana + gaisa filtrēšana: Vācijas Šveices Starptautiskās skolas studenti (Aristobulus Lam, Victor Sim, Nathan Rosenzweig un Declan Loges) sadarbojās ar MakerBay darbiniekiem, lai izveidotu integrētu gaisa piesārņojuma mērīšanas un gaisa filtrēšanas efektivitātes sistēmu. Šī
Arduino for Nerf: hronogrāfs un šāvienu skaitītājs: 28 soļi (ar attēliem)
Arduino for Nerf: hronogrāfs un šāvienu skaitītājs: Mans iepriekšējais Instructable aptvēra šautriņu ātruma noteikšanas pamatus, izmantojot infrasarkano staru izstarotāju un detektoru. Šis projekts paver soli tālāk, izmantojot iespiedshēmas plati, displeju un baterijas, lai izveidotu pārnēsājamu munīcijas skaitītāju un hronogrāfu
DIY gaisa kvalitātes sensors + 3D drukāts korpuss: 6 soļi
DIY gaisa kvalitātes sensors + 3D drukāts korpuss: šajā rokasgrāmatā ir visa informācija, kas nepieciešama, lai izveidotu ļoti spējīgu kabatas izmēra sensoru
HRV (mājas gaisa apmaiņas ierīce) Arduino kontrolieris ar gaisa ekonomizētāju: 7 soļi (ar attēliem)
HRV (mājas gaisa apmaiņas ierīce) Arduino kontrolieris ar gaisa ekonomizētāju: HRV Arduino kontrolieris ar gaisa ekonomizētāju Es negribēju maksāt 200 ASV dolārus par jaunu. Es vienmēr gribēju kaut ko ar gaisa taupīšanas līdzekli