Sisällysluettelo:
- Vaihe 1: Ominaisuus
- Vaihe 2: Toimintateoria ja tarkkuus
- Vaihe 3: Kaavio ja osaluettelo
- Vaihe 4: PCB Gerber -tiedosto
- Vaihe 5: Juottaa tietokoneesi
- Vaihe 6: Atmega328p: n ohjelmointi
- Vaihe 7: LCD -näyttö
- Vaihe 8: STL -tiedosto
- Vaihe 9: PYÖRIVÄ KOODERI
- Vaihe 10: Anturiputki
- Vaihe 11: Vaihtoehtoinen anturiputki
- Vaihe 12: Pelletti oskilloskoopilla ja kalibrointi
- Vaihe 13: Lisää…
Video: Ilmakivääri Chronograph, Chronoscope. 3D -tulostettu: 13 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Hei kaikki, tänään palaamme uudelleen projektiin, jonka olen tehnyt vuonna 2010. Ilmakiväärikello. Tämä laite kertoo ammuksen nopeuden. Pelletti, BB tai jopa ilmapehmeä BB -muovipallo.
Vuonna 2010 ostin ilmakiväärin huvin vuoksi. Osui tölkkeihin, pulloihin, tavoite. Tiedän, että tämän aseen nopeus oli enintään 500 jalkaa/s. Koska se on Kanadan laki. Jotkut vahvemmat ilmakiväärit ovat saatavilla, mutta sinulla on oltava lisenssi, etkä voi ostaa niitä Walmartista.
Nyt minulla oli tämä lisenssi, voisin ostaa toisen. Mutta lyhyt tarina, sama ase oli Yhdysvaltojen käytettävissä nopeudella 1000 jalkaa/s. MITÄ!? Sama ase? kyllä… Kanadassa iskussa on reikä ja jousi on pehmeämpi.
Ensimmäinen asia on täyttää reikä. Näin tein juotoksella. Seuraava asia oli tilata uusi jousi. Mutta odota … mikä on uuden leluni nykyinen nopeus? Onko kevät todella tarpeellinen? En tiedä ja haluan tietää. Haluan tietää nyt, mutta miten?
Siksi tein tämän projektin. Tarvitsin vain 2 anturia, uC: n ja näytön, ja olemme liiketoiminnassa.
Viime viikolla näin vanhan sinisen kronografiini hyllyllä ja puhun itselleni: "Miksi et jaa tätä ja tee opettavaista sen kanssa?" Ja muuten, voimme lisätä tarkkuutta ja lisätä akun ilmaisimen. Laita päälle/pois päältä asettamalla 1 painike 2 sijasta. Kaikki pinta -asennukset. Olemme nyt vuonna 2020!
Joten siinä se on … aloitetaan!
Vaihe 1: Ominaisuus
-Pelletin nopeus
-Nopeus
-20 mhz käynnissä, valtava tarkkuus
-Automaattinen pois päältä
-Akkujännite näkyy
-kaavamainen saatavilla
-kpl saatavilla
-varaosaluettelo saatavilla
-STL saatavilla
-C -koodi saatavilla
Vaihe 2: Toimintateoria ja tarkkuus
-Meillä on uC 20Mhz. Käytetty oskillaattori on TCX0 +-2,5 ppm
-Meillä on 2 anturia 3 tuuman päässä toisistaan.
-Ammus osui ensimmäiseen anturiin. uC -aloituslaskenta (ajastin1)
-Ammus osui toiseen anturiin. uC lopeta laskeminen.
-uC tarkista ajastimen1 arvo, tee laskutoimitus ja näytön nopeus ja nopeus.
Käytän 16 -bittistä ajastinta1 + ylivuotolippua tov1. 17 bittiä yhteensä 131071 "tic": lle täydelle laskulle.
1/20 mhz = 50 ns. Jokainen tikti on 50ns
131071 x 50 ns = 6,55355 ms - 3 tuumaa.
6,55355 ms x 4 = 26,21 ms - 12 tuumaa.
1/26,21 ms = 38,1472637 jalkaa/s
Tämä on hitain nopeus, jonka laite voi mitata.
Miksi 20 mhz? Miksi et käytä sisäistä 8 MHz: n tai jopa cristalin?
Ensimmäinen laitteeni käytti sisäistä oskillaattoria. Toimi, mutta tämä ei ollut tarpeeksi tarkka. Vaihtelu on liian suuri. Cristal on parempi, mutta lämpötila vaihtelee taajuudella. Emme voi tehdä tarkkaa mittauslaitetta sen kanssa. Lisäksi mitä enemmän taajuus on korkea, sitä enemmän lasketaan samaa nopeutta. Näytteenotto on parempi, jos se on erittäin hyvä. Koska tikti ei ole jaettavissa, tappio on pieni, jos käyttöjakso on nopea.
Taajuudella 20 MHz on 50 ns askel. Tiedämmekö kuinka tarkkaa se on 50 ns ammukselle nopeudella 38 ft/s.
38,1472637 jalkaa/s jaa 131071 = 0, 000291042 jalkaa
0, 0003880569939956207 jalkaa x 12 = 0, 003492512 tuumaa
1/0, 003492512 = 286,37 ". Toisin sanoen nopeudella 50 jalkaa/s tarkkuus on +- 1/286" tai +- 0, 003492512 tuumaa
Mutta jos oskillaattorini on huonoin ja toimii 20 MHz +2,5 ppm: llä, onko se ok? Otetaan selvää…
2,5 ppm 20000000 on: (20000000/1000000) x 2,5 = 20000050 Hz
Joten pahimmassa tapauksessa meillä on vielä 50 kelloa 20 MHz: llä. Kello on 50 sekuntia. Kuinka monta tikkiä enemmän ajastimella 1, jos pelletti ajaa samaa nopeutta (38,1472637 jalkaa/s tai 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 jalkaa/s
Joten meillä on 38,143535907 jalkaa/s 38,1472637 jalkaa/s sijaan
Nyt tiedämme, että 2,5 ppm ei vaikuta tulokseen.
Tässä on esimerkki eri nopeudesta
1000 ft/s
1000 jalkaa/s x 12 on 12000 tuumaa/s
1 sekunti 12000 "kuinka monta aikaa tehdä 3"? 3x1/12000 = 250 us sekuntia
250 us / 50 ns = 5000 tic.
Ajastin1 on 5000
uC do the math ja 1000 ft/s tulee näkyviin. Toistaiseksi niin hyvin
900 jalkaa/s
900 jalkaa/s on 10800 tuumaa/s
3x1/10800 = 277,77 meitä
277, 77 ns / 50 ns = 5555, 5555 tic
Ajastin 1 on 5555
uC do the math ja 900, 09 näytetään 900: n sijasta
Miksi ? koska ajastin 1 on 5555 ja 0, 5555 häviää. Ajastimen tikkiä ei voi jakaa.
Meillä on virhe 0, 09 900 ft/s
0, 09/900x100 = 0, 01% vain virhe
1500 jalkaa/s 1500 jalkaa/s on 18000 tuumaa/s 3x1/10800 = 166,66 meitä
166.66 us / 50 ns = 3333.333 tic Ajastin 1 on 3333
uC do the math ja 1500.15 näytetään 1500: n sijasta.15/1500x100 = 0, 01%
9000 jalkaa/s
9000 x 12 = 180000 tuumaa / s
3x1/180000 = 27.7777 meille
27,77 us / 50 ns = 555, 555
Ajastin1 on 555 ja 4/(1/555x50ns) näytetään 9009, 00 näkyy
Tässä virhe on 9 jalkaa/s 9000 = 0, 1%
Kuten näette % virhe kasvaa, kun nopeus on suurempi. Mutta pysy <0,1%
Nuo tulokset ovat erittäin hyviä.
Mutta tarkkuus ei ole lineaarinen. Nopeudella 10000 ft/s se on 0, 1 %. Hyvä uutinen on, ettemme koskaan testaa 10 000 ft/s pellettiä.
Toinen asia pitää mielessä. Kun keskeytys tapahtuu, uC suorittaa aina viimeisen ohjeen ennen keskeytyksen aloittamista. Tämä on normaalia ja kaikki uC: t tekevät tämän. Jos koodit arduino, C: ssä tai jopa assemblerissa. Suurimman osan ajasta odotat ikuisesti silmukassa… odottamaan. Ongelma on, että silmukassa vietämme 2 sykliä. Normaalisti tämä ei ole tärkeää. Mutta meidän tapauksessamme. KYLLÄ, jokainen tikki on tärkeä. Katsotaan loputonta silmukkaa:
kokoonpanija:
silmukka:
rjmp -silmukka
C: ssä:
samalla (1) {}
Itse asiassa C -kääntäjä käyttää rjmp -käskyä. RJMP on 2 sykliä.
Tämä tarkoittaa, että jos keskeytys tapahtuu ensimmäiselle jaksolle, menetämme yhden syklin (tic) (50ns).
Minun tapa korjata se on lisätä monia nop -ohjeita silmukkaan. NOP on 1 sykli.
silmukka:
nop
nop
nop
nop
nop
rjmp -silmukka
Jos keskeytys tapahtuu nop -käskystä. Olemme kunnossa. Jos se tapahtuu rjmp -käskyn toisella jaksolla, olemme kunnossa. Mutta jos se tapahtuu rjmp -opetuksen ensimmäisellä kierroksella, menetämme yhden tikin. Kyllä, se on vain 50 ns, mutta kuten yllä näet, 50 ns 3 tuumaa ei ole mitään. Emme voi korjata tätä ohjelmistolla, koska emme tiedä milloin keskeytys tapahtuu. Siksi koodissa näet paljon nop -ohjeita. Nyt olen melko varma, että keskeytys kuuluu nop -käskyyn. Jos lisään 2000 nop, minulla on 0, 05% rjmp -käskystä.
Toinen asia pitää mielessä. Kun keskeytys tapahtuu. Kääntäjä tekee monia työntöjä ja vetoja. Mutta se on aina sama numero. Joten nyt voimme tehdä ohjelmistokorjauksen.
Lopuksi tähän:
Tarkkuus keskimäärin 1000 ft/s pelletille on 0, 01%
100x tarkempi kuin muut 1% markkinoilla. Taajuus on korkeampi ja TCXO: lla tarkempi
Esimerkiksi 1% 1000 ft/s on enemmän tai vähemmän 10 ft/s. Se on valtava ero.
Vaihe 3: Kaavio ja osaluettelo
Tässä toteutin yhden painikkeen päälle/pois -piirin. (katso viimeinen ohjeeni) Tämä piiri on erittäin kätevä ja toimii erittäin hyvin.
Käytän atmega328p: tä. Tämä on ohjelmoitu C.
Näyttö on vakiona 2 -rivinen lcd HD44780 -yhteensopiva. 4 -bittistä tilaa käytetään.
3.3 V: n säätimellä syötetään jännitettä TCXO 20 MHz: lle.
D1 on lcd -taustavalo. Valinnainen. Akku kestää kauemmin, jos et asenna D1: tä.
Kaikki vastukset ja korkit ovat paketissa 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
Näyttö lcd 2 -rivinen HD44780. Ei tarvitse ostaa i2c -moduulia.
Anturit:
2x lähetin OP140A
2x vastaanotin OPL530
Kooderi: PEC11R-4215K-S0024 *Muista lisätä 4x 10k vastukset ja 2x.01uf anturisuodattimen tekemiseen. katso alla oleva kuva
Vaihe 4: PCB Gerber -tiedosto
Tässä ovat gerber -tiedostot
Vaihe 5: Juottaa tietokoneesi
Kaavion avulla voit juottaa kaikki komponentit piirilevylle. Jokainen osa tai kirjoitettu piirilevylle, r1, r2… ja niin edelleen.
En ole asentanut D1: tä. Tämä koskee LCD-taustavaloa. Se on kaunis, mutta akun kesto vaikuttaa. Joten päätän pitää LCD-taustavalon sammutettuna.
Vaihe 6: Atmega328p: n ohjelmointi
Tarkista täältä vaiheessa 12 ohjelmoidaksesi atmega328p. Annan tässä.hex -tiedoston tätä varten.
Tässä on avrdude -ohjelma valmis ohjelmoimaan erätiedosto. Napsauta vain ohjelmaa usbasp.bat ja usbasp on asennettu oikein. Kaikki tehdään automaattisesti, mukaan lukien sulake.
1drv.ms/u/s!AnKLPDy3pII_vXaGPIZKMXxaXDul?e…
Tässä projektissa jaan myös C -lähdekoodin. Huomaa, että jokin huomautus voi olla ranskaksi. Http://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…
Vaihe 7: LCD -näyttö
Asenna teippi ja liitä piirilevy ja LCD -näyttö yhteen
Vaihe 8: STL -tiedosto
stl -tiedosto
1drv.ms/u/s!AnKLPDy3pII_vgezy0i0Aw3nD-xr?e…
Tukea tarvitaan kotelolle, anturiputkelle ja kivääripidikkeelle.
Olen tulostanut kaikki.2 mm korkeat.
Vaihe 9: PYÖRIVÄ KOODERI
Tämä pyörivä anturi on kytketty isp -liittimeen. sitä käytetään pelletin painon muuttamiseen sekä laitteen käynnistämiseen ja sammuttamiseen.
vcc isp pin 2 (vedä vastus)
Liitin A (keltainen) siirry Internet -palveluntarjoajan nastaan 1
Liitin B (vihreä) siirry Internet -palveluntarjoajan nastaan 3
Liitin C (gnd) isp -nasta 6
Lisään 2 kuvaa nähdäkseni eron suodattimen ja suodattimen välillä. Näet helposti eron molempien välillä.
Painike siirtyy piirilevyn SW -liittimeen.
Vaihe 10: Anturiputki
TÄRKEÄ:
Anturiputken on oltava musta ja anturivastaanottimen on oltava piilossa
Ensimmäiset yritykseni oli saada kaunis punainen putki. Mutta tämä on hankalaa! Se ei toiminut ollenkaan. Tajusin, että ulkopuolinen valo tuli, heittäen muovi- ja vastaanottimen anturin aina päälle.
Hyvän tuloksen saavuttamiseksi minulla ei ollut vaihtoehtoa vaihtaa väriä mustaksi.
Asenna vastaanotin päälle. Ja piilota kirkas muovi mustalla maalilla, teipillä tai kumilla, mustalla silikonilla.
Asenna säteilijä pohjaan.. Tarkista kynällä, anturit reagoivat hyvin. Ehkä lähettimen reikää on suurennettava hieman. se riippuu tulostimen kalibroinnista.
Minulla on myös parempi tulos varjossa. Vältä suoraa auringonvaloa.
Vaihe 11: Vaihtoehtoinen anturiputki
Jos sinulla ei ole 3D -tulostinta, voit tehdä saman kupariputken kanssa. Se tulee toimimaan erittäin hyvin. Vaikea asia on, että reikä on täsmälleen 3 tuumaa ja vastaanotin ja lähetin on kohdistettava.
Vaihe 12: Pelletti oskilloskoopilla ja kalibrointi
Tämä on todellinen pelletin ohitus putkeen. Mittapää 1 keltainen on anturi 1. Anturi 2 violetti on anturi 2.
Aika/div on 50 meitä.
Voimme laskea 6 50us -divisioonaa. 50 us x 6 = 300 us (3 tuumaa). 300 us x 4 = 1,2 ms yhdelle jalalle
1/1,2 ms = 833,33 jalkaa/s
Voimme myös nähdä, että anturi on normaalisti 5 voltin jännitteellä. Ja voimmeko estää emitterivalon, anturin putoamisen 0: een.
Se on tapa, jolla uC aloittaa ja pysäyttää hänen laskurinsa (ajastin1)
Mutta tietääkseni tarkasti, onko nopeus tarkka, tarvitsin keinon mitata tämä.
Ohjelmiston kalibrointiin ja tämän laitteen tarkkuuden testaamiseen käytin 10 mhz: n vertailuoskillaattoria. Katso GPSDOni muista ohjeista.
Syön toista atmega328: ta tällä 10 MHz: llä. Ja ohjelmoi tämä kokoonpanossa lähettämään minulle 2 pulssia joka kerta, kun painan painiketta simuloidaksesi pellettiä. Täsmälleen kuten näimme kuvassa, mutta todellisen pelletin sijaan se oli toinen uC, joka lähetti minulle 2 pulssia.
Joka kerta, kun painiketta painettiin, lähetettiin 1 pulssi ja tarkalleen 4 ms toisen pulssin lähettämisen jälkeen.
Tällä tavalla pystyn tasapainottamaan ohjelmiston kääntäjän niin, että näytössä on aina 1000 jalkaa/s.
Vaihe 13: Lisää…
Tämä on ensimmäinen prototyyppini vuonna 2010.
Jos sinulla on kysyttävää tai virheraporttia, voit lähettää minulle sähköpostia. Englanti tai ranska. Teen parhaani auttaakseni.
Suositeltava:
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen
Arduino for Nerf: Chronograph ja Shot Counter: 28 vaihetta (kuvilla)
Arduino for Nerf: Chronograph ja Shot Counter: Edellinen Instructableni kattoi perusasiat dart -nopeuden havaitsemiseksi infrapunasäteilijän ja ilmaisimen avulla. Tämä projekti vie askeleen pidemmälle käyttämällä painettua piirilevyä, näyttöä ja akkuja kannettavan ammusten laskurin ja kronografin tekemiseen