Innholdsfortegnelse:
- Trinn 1: Funksjon
- Trinn 2: Teori om drift og nøyaktighet
- Trinn 3: Skjematisk og deleliste
- Trinn 4: PCB Gerber File
- Trinn 5: Lodd PC -en
- Trinn 6: Programmering av Atmega328p
- Trinn 7: LCD -skjerm
- Trinn 8: STL -fil
- Trinn 9: ROTÆRKODER
- Trinn 10: Sensorrør
- Trinn 11: Sensorrøralternativ
- Trinn 12: En pellet om oscilloskop og kalibrering
- Trinn 13: Mer …
Video: Air Rifle Chronograph, Chronoscope. 3D -trykt: 13 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Hei alle sammen, i dag skal vi gå tilbake til et prosjekt jeg har gjort i 2010. En luftrifle -kronograf. Denne enheten forteller deg hastigheten på et prosjektil. Pellet, BB eller til og med luftmyk BB -plastkule.
I 2010 kjøpte jeg et luftgevær for moro skyld. Slo bokser, flasker, sikte. Jeg vet at hastigheten på denne pistolen var maks 500 fot/s. Fordi det er Canadas lov. Noen sterkere luftgevær er tilgjengelige, men du må ha lisens og du kan ikke kjøpe den på Walmart.
Nå hadde jeg denne lisensen, jeg kunne kjøpe en til. Men kort fortalt, den samme pistolen var tilgjengelig for USA på 1000 fot/s. HVA!? Samme pistol? ja … I Canada har slaget et hull i det og fjæren er mykere.
Det første du må gjøre er å fylle hullet. Det er det jeg gjorde med loddetinn. Neste ting å gjøre var å bestille en erstatningsfjær. Men vent … hva er nåværende hastighet på det nye leketøyet mitt? Er våren virkelig nødvendig? Jeg vet ikke, og jeg vil vite det. Jeg vil vite det nå, men hvordan?
Derfor gjorde jeg dette prosjektet. Alt jeg trengte var 2 sensorer, en uC og en skjerm, og vi er i gang.
I forrige uke så jeg min gamle blå kronograf på en hylle, og jeg snakker med meg selv: "Hvorfor ikke dele dette og gjøre en instruks med det?" Og forresten, vi kan øke nøyaktigheten og legge til en batteriindikator. Sett 1 knapp i stedet for 2 for på/av. Alt overflatemontering. Vi er nå i 2020!
Så det er det … la oss begynne!
Trinn 1: Funksjon
-Pellets hastighet
-Hastighet
-20 mhz kjøring, enorm nøyaktighet
-Auto av
-Batterispenning vises
-skjematisk tilgjengelig
-pcb tilgjengelig
-deliste tilgjengelig
-STL tilgjengelig
-C -kode tilgjengelig
Trinn 2: Teori om drift og nøyaktighet
-Vi har en uC som kjører på 20Mhz. Oscillatoren som brukes er en TCX0 +-2,5 ppm
-Vi har 2 sensorer på 3 tommer langt fra hverandre.
-Prosjektilet traff den første sensoren. uC begynne å telle (timer1)
-Prosjektilet traff den andre sensoren. uC slutte å telle.
-uC sjekk timer1 -verdien, beregne og vise hastighet og hastighet.
Jeg bruker 16 biters timer1 + overløpsflagget tov1. 17 bits totalt for 131071 "tic" for en full telling.
1/20 mhz = 50 ns. Hver tic er 50ns
131071 x 50 ns = 6,55355 ms for å gjøre 3 tommer.
6,55355 ms x 4 = 26,21 ms for å gjøre 12 tommer.
1/26.21 ms = 38.1472637 fot/s
Dette er den tregeste hastigheten enheten kan måle.
Hvorfor 20 mhz? Hvorfor ikke bruke den interne 8 mhz eller en cristal?
Min første enhet brukte den interne oscillatoren. Fungerte, men denne var ikke nøyaktig nok. Variasjonen er for stor. En cristal er bedre, men temperaturen varierer ofte. Vi kan ikke gjøre en nøyaktig måleenhet med det. Dessuten, jo mer frekvensen er høy, vil mer tic telle for den samme hastigheten. Prøvetaking vil være bedre for å ha en veldig god nøyaktighet. Fordi en tic ikke kan deles, er tapet lite hvis arbeidssyklusen er rask.
Ved 20 MHz har vi trinn på 50 ns. Vet vi hvor nøyaktig det er 50 ns for et prosjektil ved 38 ft/s.
38.1472637 ft/s divider med 131071 = 0, 000291042 fot
0, 0003880569939956207 fot x 12 = 0, 003492512 tommer
1/0, 003492512 = 286,37 ". Med andre ord. Ved 50 fot/s har vi en nøyaktighet på +- 1/286" eller +- 0, 003492512 tommer
Men hvis oscillatoren min er den verste og kjører på 20 mhz +2,5 ppm, er det ok? La oss finne det ut…
2,5 ppm på 20 000 000 er: (20000000/1000000) x 2,5 = 20000050 Hz
Så i verste fall har vi 50 flere klokker på 20 MHz. Klokken er 50 på 1 sekund. Hvor mange tic mer på timer1 hvis pelleten har samme hastighet (38,1472637 fot/s eller 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 fot/s
Så vi har 38.14735907 fot/s i stedet for 38.1472637 fot/s
Nå vet vi at 2,5 ppm ikke påvirker resultatet.
Her er et eksempel på forskjellig hastighet
For 1000 ft/s
1000 ft/s x 12 er 12000 inches/s
1 sekund for 12000 "hvor mange ganger skal jeg gjøre 3"? 3x1/12000 = 250 us sekunder
250 us / 50 ns = 5000 tic.
Tidsur 1 er på 5000
uC gjør regnestykket og 1000 ft/s vises. Så langt så bra
For 900 fot/s
900 ft/s er 10800 /s
3x1/10800 = 277,77 oss
277, 77 ns / 50 ns = 5555, 5555 tic
Timer 1 vil være på 5555
uC gjør regnestykket og 900, 09 vises i stedet for 900
Hvorfor ? fordi tidtaker 1 er på 5555 og 0, går 5555 tapt. Tic on timer kan ikke deles.
Vi har en feil for 0, 09 på 900 ft/s
0, 09/900x100 = 0, bare 01% feil
For 1500 ft/s 1500 ft/s er 18000 /s 3x1/10800 = 166,66 us
166,66 us / 50 ns = 3333,333 tic Timer 1 vil være 3333
uC gjør regnestykket og 1500.15 vises i stedet for 1500, det er.15/1500x100 = 0, 01%
For 9000 fot/s
9000 x 12 = 180000 tommer / s
3x1/180000 = 27.7777 oss
27,77 oss / 50 ns = 555, 555
Timer1 vil være på 555 og 4/(1/555x50ns) vil bli vist 9009, 00 vil bli vist
Her er feilen 9 fot/s på 9000 = 0, 1%
Som du kan se % stiger feilen når hastigheten er høyere. Men hold deg <0,1%
Disse resultatene er veldig gode.
Men nøyaktigheten er ikke lineær. Ved 10000 ft/s er det 0, 1 %. Godt nytt er at vi aldri tester en pellets på 10 000 ft/s.
En annen ting å huske på. Når et avbrudd skjer, fullfører uC alltid siste instruksjon før du går i interrupt. Dette er normalt og alle uC gjør dette. Hvis du koder arduino, i C eller til og med assembler. Mesteparten av tiden vil du vente i en evig sløyfe … å vente. Problemet er at i en løkke bruker vi 2 sykluser. Normalt er ikke dette viktig. Men i vårt tilfelle. JA, hver tic er viktig. La oss se på en uendelig sløyfe:
montør:
Løkke:
rjmp loop
I C:
mens (1) {}
Faktisk bruker C -kompilatoren rjmp -instruksjon. RJMP er 2 sykluser.
Det betyr at hvis avbruddet skjer med den første syklusen, mister vi en syklus (tic) (50ns).
Min måte å fikse det på er å legge til mange instruksjoner i loopen. NOP er 1 syklus.
Løkke:
nei
nei
nei
nei
nei
rjmp loop
Hvis avbruddet skjer uten instruksjoner. Vi er ok. Hvis det skjer i den andre syklusen av rjmp -instruksjoner, er vi ok. Men hvis det skjer i den første syklusen med rjmp -instruksjon, vil vi miste en tic. Ja, det er bare 50 ns, men som du kan se ovenfor, er 50 ns på 3 inches ikke ingenting. Vi kan ikke korrigere dette med programvare fordi vi ikke vet når avbruddet skjer. Det er derfor i koden du vil se mye nop -instruksjon. Nå er jeg ganske sikker på at avbruddet faller på ingen instruksjoner. Hvis jeg legger til 2000 nop har jeg 0, 05% til å falle på rjmp -instruksjonen.
En annen ting å huske på. Når avbrudd skjer. Kompilatoren gjør mange skyve og trekke. Men det er alltid det samme tallet. Så nå kan vi gjøre en programvarekorreksjon.
For å konkludere med dette:
Nøyaktigheten for en gjennomsnittlig pellet på 1000 ft/s er 0, 01%
100x mer nøyaktig enn andre 1% på markedet. Frekvensen er høyere og med TCXO, mer nøyaktig
For eksempel er 1% av 1000 ft/s mer eller mindre 10 ft/s. Det er en stor forskjell.
Trinn 3: Skjematisk og deleliste
Her implementerte jeg min én knapp på/av krets. (se min siste instruks) Denne kretsen er veldig praktisk og fungerer veldig bra.
Jeg bruker en atmega328p. Denne er programmert i C.
Skjermen er en standard 2 linjer LCD HD44780 -kompatibel. 4 -bits modus brukes.
En 3.3v regulator brukes til å gi spenning til TCXO 20mhz.
D1 er for lcd -bakgrunnsbelysning. Valgfri. Batteriet varer lenger hvis du ikke installerer D1.
Alle motstander og hetter er 0805 pakke
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
Skjerm lcd 2 line HD44780. Du trenger ikke å kjøpe i2c -modulen.
Sensorer:
2x sender OP140A
2x mottaker OPL530
Koder: PEC11R-4215K-S0024 *Ikke glem å legge til 4x 10k motstander og 2x.01uf for å lage koderfilteret. se bildet under
Trinn 4: PCB Gerber File
Her er gerber -filer
Trinn 5: Lodd PC -en
Med skjematisk hjelp, lodd hele komponenten din på kretskortet. Hver del eller skrevet på PCB, r1, r2 … og så videre.
Jeg har ikke installert D1. Dette er for LCD-bakgrunnslyset. Det er vakkert, men batterilevetiden påvirkes. Så jeg velger å holde LCD-bakgrunnslyset av.
Trinn 6: Programmering av Atmega328p
Sjekk her på trinn 12 for å programmere atmega328p. Jeg gir her.hex -filen for dette.
Her er avrdude -programmet som er klart til å programmere batchfil. Bare klikk på programmet usbasp.bat og din usbasp er installert riktig. Alt vil skje automatisk, inkludert sikringsbit.
1drv.ms/u/s!AnKLPDy3pII_vXaGPIZKMXxaXDul?e…
I dette prosjektet deler jeg også C -kildekoden. Vær oppmerksom på at noen notater i den kan være på fransk. Https: //1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E …
Trinn 7: LCD -skjerm
Installer litt tape og koble PCB og LCD sammen
Trinn 8: STL -fil
stl -fil
1drv.ms/u/s!AnKLPDy3pII_vgezy0i0Aw3nD-xr?e…
Støtte er nødvendig for kabinett, sensorrør og rifleholder.
Jeg har skrevet ut på.2 mm høy.
Trinn 9: ROTÆRKODER
Denne roterende koderen er koblet til isp -kontakten. den brukes til å endre pelletvekt og til å slå enheten på og av.
vcc isp pin 2 (trekk opp motstand)
Terminal A (gul) går til ISP -pinnen 1
Terminal B (grønn) går til ISP pin 3
Terminal C (gnd) isp pin 6
Jeg legger til 2 bilder for å se forskjellen mellom å ha et filter og ikke noe filter. Du kan lett se forskjellen mellom begge.
Trykknappen går til PCB SW -kontakten.
Trinn 10: Sensorrør
VIKTIG:
Sensorrøret må være svart og sensormottakeren må være skjult
Mitt første forsøk var å ha et vakkert rødt rør. Men dette er vanskelig! Det fungerte ikke i det hele tatt. Jeg fant ut at det kom innvendig lys, plast- og mottakersensoren var alltid på.
For å få et godt resultat hadde jeg ikke noe valg om å endre fargen til svart.
Installer mottakeren på toppen. Og skjul den klare plasten med svart maling, tape eller tyggegummi, svart silikon.
Installer emitter på undersiden. Kontroller med en penn om sensorene reagerer godt. Kanskje hullet i emitteren må forstørres litt. Det vil avhenge av skriverkalibreringen.
Jeg har også bedre resultat i skyggen. Unngå direkte sollys.
Trinn 11: Sensorrøralternativ
Hvis du ikke har en 3d -skriver, kan du gjøre det samme med et kobberrør. Det vil fungere veldig bra for. Vanskelig å gjøre er hullet på nøyaktig 3 tommer og mottaker og sender må justeres.
Trinn 12: En pellet om oscilloskop og kalibrering
Dette er en ekte pellet passerer kaste røret. Probe 1 gul er sensor 1. Probe 2 lilla er sensor 2.
Tid/div er 50 oss.
Vi kan telle 6 divisjoner på 50us. 50 us x 6 = 300 us (for 3 inches). 300 us x 4 = 1,2 ms for 1 fot
1/1.2ms = 833.33 ft/s
Vi kan også se at sensoren normalt er på 5v. Og kan vi blokkere emitterlyset, sensoren faller til 0.
Det er måten uC starter og stopper kontakten på (timer1)
Men for å vite nøyaktig om hastigheten var nøyaktig, trengte jeg en måte å måle dette på.
For å gjøre programvarekalibrering og teste nøyaktigheten til denne enheten, brukte jeg en 10 mhz referanseoscillator. Se min GPSDO på andre instruerbare.
Jeg mater en annen atmega328 med denne 10 mhz. Og programmer denne i assembler til å sende meg 2 pulser hver gang jeg trykker på en knapp for å simulere en pellet. Akkurat som vi så på bildet, men i stedet for å ha en ekte pellet var det en annen uC som sendte meg 2 pulser.
Hver gang trykknappen ble trykket ble det sendt 1 puls og nøyaktig 4 ms etter at en annen puls ble sendt.
På denne måten kan jeg balansere programvarekompilatoren slik at alltid 1000 ft/s vises.
Trinn 13: Mer …
Dette er min første prototype av 2010.
For spørsmål eller feilrapporter kan du sende meg en e -post. Engelsk eller fransk. Jeg skal gjøre mitt beste for å hjelpe.
Anbefalt:
Nerf Chronograph and Rate of Fire Barrel: 7 trinn
Nerf Chronograph and Rate of Fire Barrel: Introduksjon Som tinkerer er det alltid veldig tilfredsstillende å se de numeriske resultatene av tinkeringen din. Mange av oss har modifisert Nerf -kanoner før, og hvem liker ikke å kaste skumstykker over huset med over 100 fps? Etter å ha endret mange Nerf g
Knex Rifle: 12 trinn
Knex Rifle: dette er knex -riflet jeg viste som et forum. den var hovedsakelig designet for utseende og har OK rekkevidde. fatet er avtagbart og reduserer rekkevidden når det er festet. det har et bærehåndtak som også er avtagbart og en bipod. den bruker en grunnleggende beholder for å laste som
Storm 220 V1.7 Knex Bolt Action Rifle .: 10 trinn
Storm 220 V1.7 Knex Bolt Action Rifle .: Dette er min splitter nye knex -pistol, stormen 220. Den var designet for hovedsakelig utseende, men den fungerer godt og har anstendig rekkevidde. Jeg kommer ikke til å si vær hyggelig, selv om dette er min første instruks, fordi jeg tror folk har rett til sin mening
Storm 222 V1.1 Knex Pseudo Semi Auto Rifle: 6 trinn
Storm 222 V1.1 Knex Pseudo Semi Auto Rifle: Hei folkens, dette er min tredje instruerbare, og den tredje av fem i stormserien. Jeg tror at dette riflet er det første i sitt slag. Den bruker en mekanisme som jeg oppfant, og en lignende til denne ble utgitt av bananoppfinner, men den bruker sa
"XFN Snowflak3" Knex Rifle: 9 trinn
"XFN Snowflak3" Knex Rifle: XFN Snowflak3: Pistolen som har hatt det samme generelle konseptet i to år. En enkel tube og stick rifle med et block trig system.Pros: Svært nøyaktigKraftig (kan stikke hull i 6- 8 ark bølgepapp) Ganske enkelt å lage, enkelt