Sisukord:

Õhupüsside kronograaf, kronoskoop. 3D -trükitud: 13 sammu
Õhupüsside kronograaf, kronoskoop. 3D -trükitud: 13 sammu

Video: Õhupüsside kronograaf, kronoskoop. 3D -trükitud: 13 sammu

Video: Õhupüsside kronograaf, kronoskoop. 3D -trükitud: 13 sammu
Video: Hatsan AT44 .177 Ühekorraga osaline demonteerimine ja ohutu eemaldamine 2024, Juuli
Anonim
Image
Image
Tunnusjoon
Tunnusjoon

Tere kõigile, täna vaatame uuesti läbi projekti, mille tegin 2010. aastal. Õhupüsside kronograaf. See seade ütleb teile mürsu kiiruse. Pellet, BB või isegi õhk pehme BB plastpall.

2010. aastal ostsin lõbuks õhupüssi. Lööb purke, pudeleid, sihib. Ma tean, et selle relva kiirus oli maksimaalselt 500 jalga/s. Sest see on Kanada seadus. Saadaval on mõni tugevam õhupüss, kuid teil peab olema litsents ja te ei saa neid asju Walmartist osta.

Nüüd oli mul see litsents olemas, võin teise osta. Kuid lühike lugu oli sama relv USA -le saadaval kiirusega 1000 jalga/s. MIDA!? Sama relv? jah… Kanadas on löögil auk ja vedru on pehmem.

Esimene asi, mida teha, on auk täita. Seda ma jootmisega tegin. Järgmisena tuli tellida asendusvedru. Aga oota … milline on minu uue mänguasja praegune kiirus? Kas kevad on tõesti vajalik? Ma ei tea ja tahan teada. Tahan nüüd teada, aga kuidas?

Sellepärast ma selle projekti tegin. Vaja oli vaid 2 sensorit, uC -d ja kuvarit ning oleme äris.

Eelmisel nädalal nägin riiulil oma vana sinist kronograafi ja räägin endaga: "Miks mitte jagada seda ja teha sellega õpetatavat?" Ja muide, me võiksime tõsta täpsust ja lisada aku indikaatori. Sisse-/väljalülitamiseks pange 1 nupp 2 asemel. Kogu pinnakinnitus. Oleme praegu aastal 2020!

Nii see on… alustame!

1. samm: funktsioon

-Pelletite kiirus

-Tugevus

-20 mhz töötab, tohutu täpsus

-Automaatne välja

-Aku pinge kuvatakse

-saadaval on skeem

-PCB saadaval

-osade nimekiri on saadaval

-STL saadaval

-C -kood saadaval

2. samm: toimimise teooria ja täpsus

-Meil töötab uC 20Mhz. Kasutatav ostsillaator on TCX0 +-2,5 ppm

-Meil on 2 andurit üksteisest 3 tolli kaugusel.

-Mürsk tabas esimest andurit. uC alusta loendamist (taimer1)

-Mürsk tabas teist andurit. uC lõpetage lugemine.

-uC kontrollige taimer1 väärtust, tehke matemaatika ja kuvamise kiirus ja kiirus.

Ma kasutan 16 -bitist taimerit 1 + ülevoolu lipp tov1. 17 bitti kokku 131071 "tic" jaoks.

1/20 MHz = 50 ns. Iga tic on 50ns

131071 x 50 ns = 6,55355 ms kuni 3 tolli.

6,55355 ms x 4 = 26,21 ms kuni 12 tolli.

1/26,21 ms = 38,1472637 jalga/s

See on aeglaseim kiirus, mida seade suudab mõõta.

Miks 20 mhz? Miks mitte kasutada sisemist 8 MHz või isegi cristalit?

Minu esimene seade kasutas sisemist ostsillaatorit. Töötas, kuid see ei olnud piisavalt täpne. Variatsioon on liiga suur. Kristall on parem, kuid temperatuur varieerub. Me ei saa sellega täpset mõõteseadet teha. Samuti on sagedus kõrgem, sama kiiruse korral arvestatakse rohkem tici. Proovivõtt on parem, kui see on väga hea täpsusega. Kuna tikk ei ole jagatav, on kaotus väike, kui töötsükkel on kiire.

20 MHz juures on meil sammu 50 ns. Kas me teame, kui täpne on mürsu 50 ns kiirusel 38 jalga/s.

38,1472637 jalga/s jagage 131071 -ga = 0, 000291042 jalga

0 0003880569939956207 jalga x 12 = 0, 003492512 tolli

1/0, 003492512 = 286,37 ". Teisisõnu. 50 jalga/s on meil täpsus +- 1/286" või +- 0, 003492512 tolli

Aga kui mu ostsillaator on halvim ja töötab kiirusel 20 mhz +2,5 ppm, kas see on korras? Uurime välja…

2,5 ppm 20 000 000 on: (20000000/1000000) x 2,5 = 20000050 Hz

Nii et halvimal juhul on meil 20 MHz sagedusel veel 50 tundi. Kell on 50 sekundit sekundis. Kui palju taimeril 1 on rohkem tici, kui pellet teeb sama kiiruse (38,1472637 jalga/s või 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 jalga/s

Seega on meil 38,1472637 jala/s asemel 38,143535907 jalga/s

Nüüd teame, et 2,5 ppm tulemust ei mõjuta.

Siin on näide erineva kiirusega

1000 jalga/s

1000 jalga/s x 12 on 12000 tolli/s

1 sekund 12000 "mitu aega teha 3"? 3x1/12000 = 250 USA sekundit

250 USA / 50 ns = 5000 tic.

Taimer1 on 5000

uC do the math ja kuvatakse 1000 jalga/s. Siiamaani on kõik korras

900 jalga/s

900 jalga/s on 10800 tolli sekundis

3x1/10800 = 277,77 meid

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

Taimer 1 on 5555 juures

uC do the math ja 900 asemel kuvatakse 900, 09

Miks? kuna taimer 1 on 5555 ja 0, 5555 on kadunud. Taimeri märgistus ei ole jagatav.

Meil on viga 0, 09 kiirusel 900 jalga/s

0, 09/900x100 = 0, 01% viga ainult

1500 jalga/s 1500 jalga/s on 18000 /s 3x1/10800 = 166,66 USA

166,66 us / 50 ns = 3333,3333 tic Taimer 1 on 3333 juures

uC do the math ja 1500.15 kuvatakse 1500 asemel, see on.15/1500x100 = 0, 01%

9000 jalga/s

9000 x 12 = 180000 tolli / s

3x1/180000 = 27,77777 meile

27,77 meid / 50 ns = 555, 555

Taimer1 on 555 ja 4/(1/555x50ns) kuvatakse 9009, 00

Siin on viga 9000/s 9000 = 0, 1%

Nagu näete, tõuseb % viga, kui kiirus on suurem. Kuid jääge alla 0,1%

Need tulemused on väga head.

Kuid täpsus pole lineaarne. 10000 jalga/s on 0, 1 %. Hea uus on see, et me ei testi kunagi 10 000 jalga/s graanuleid.

Teine asi, mida meeles pidada. Katkestuse korral lõpetab uC alati viimase käsu enne katkestuse sisestamist. See on normaalne ja kõik uC -d teevad seda. Kui kodeerite arduino, siis C -s või isegi assembleris. Enamiku ajast ootate igaveses ringis … ootama. Probleem on selles, et silmusena kulutame 2 tsüklit. Tavaliselt pole see oluline. Aga meie puhul. JAH, iga tikk on oluline. Vaatame lõpmatut silmust:

kokkupanija:

silmus:

rjmp silmus

C -s:

samas (1) {}

Tegelikult kasutab C kompilaator rjmp käske. RJMP on 2 tsüklit.

See tähendab, et kui katkestus juhtub esimese tsükliga, kaotame ühe tsükli (tic) (50ns).

Minu viis selle parandamiseks on lisada tsüklisse palju nop -juhiseid. NOP on 1 tsükkel.

silmus:

nop

nop

nop

nop

nop

rjmp silmus

Kui katkestus toimub nop -käsul. Meil on kõik korras. Kui see juhtub rjmp -i käsu teisel tsüklil, on meil kõik korras. Aga kui see juhtub rjmp -i juhendamise esimesel tsüklis, kaotame ühe tici. Jah, see on vaid 50 ns, kuid nagu näete ülal, pole 50 ns 3 tolli kohta midagi. Me ei saa seda tarkvara abil parandada, sest me ei tea, millal täpselt katkestus toimub. Sellepärast näete koodis palju nop -juhiseid. Nüüd olen üsna kindel, et katkestus langeb nop -käsu peale. Kui lisan 2000 nopi, on mul 0, 05% rjmp -i juhiste täitmiseks.

Teine asi, mida meeles pidada. Kui katkestus juhtub. Koostaja teeb palju tõukeid ja tõmbeid. Kuid see on alati sama number. Nüüd saame tarkvara parandada.

Selle lõpetuseks:

Täpsus keskmise pelleti 1000 jalga/s kohta on 0,01%

100x täpsem kui turul olev 1%. Sagedus on suurem ja TCXO puhul täpsem

Näiteks 1% 1000 jalga/s on enam -vähem 10 jalga/s. See on tohutu vahe.

Samm: skemaatiline ja osade loend

Skeem ja osade loend
Skeem ja osade loend

Siin rakendasin oma ühe nupuvajutusega sisse/välja lülitamist. (vt minu viimast juhendit) See vooluring on väga mugav ja töötab väga hästi.

Ma kasutan atmega328p. See on programmeeritud C -s.

Ekraan on standardne 2 -realine LCD HD44780 ühilduv. Kasutatakse 4 -bitist režiimi.

TCXO 20mhz pinge varustamiseks kasutatakse 3,3 V regulaatorit.

D1 on mõeldud LCD taustvalgustuseks. Valikuline. Aku peab kauem vastu, kui te D1 installimata jätate.

Kõik takistid ja mütsid on pakendis 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 1 miljon

R2 1 miljon

R4 2.2k

R5 160

R6 160

R7 1M

R8 1M

U1 MIC5317-3,3 MIC5317 SOT23-5

U2 DMG6601LVT DMG6601LVT SOT23-6

Ekraan lcd 2 rida HD44780. Pole vaja i2c moodulit osta.

Andurid:

2x emitter OP140A

2x vastuvõtja OPL530

Kooder: PEC11R-4215K-S0024 *Ärge unustage lisada kodeerimisfiltri tegemiseks 4x 10k takistit ja 2x.01uf. vaata allolevat pilti

4. samm: PCB Gerberi fail

PCB Gerberi fail
PCB Gerberi fail
PCB Gerberi fail
PCB Gerberi fail
PCB Gerberi fail
PCB Gerberi fail
PCB Gerberi fail
PCB Gerberi fail

Siin on gerberi failid

Samm: jootke oma arvuti

Jootke oma arvuti
Jootke oma arvuti
Jootke oma arvuti
Jootke oma arvuti
Jootke oma arvuti
Jootke oma arvuti

Skeemilise abiga jootke kogu oma komponent trükkplaadile. Iga osa või kirjutatud trükkplaadile, r1, r2… ja nii edasi.

Mul pole D1 installitud. See on mõeldud LCD taustvalgustuse jaoks. See on ilus, kuid see mõjutab aku kasutusaega. Nii et ma otsustan LCD taustvalgustuse välja lülitada.

6. samm: Atmega328p programmeerimine

Atmega328p programmeerimine
Atmega328p programmeerimine

Atmega328p programmeerimiseks vaadake siin 12. sammu. Pakun siin selle jaoks.hex -faili.

Siin on partiifaili programmeerimiseks valmis programm avrdude. Klõpsake ainult programmi usbasp.bat ja teie usbasp on õigesti installitud. Kõik tehakse automaatselt, kaasa arvatud kaitsmebitt.

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

Selles projektis jagan ka C lähtekoodi. Pidage meeles, et mõni märkus võib olla prantsuse keeles. Http://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…

Samm: LCD -ekraan

LCD ekraan
LCD ekraan
LCD ekraan
LCD ekraan

Paigaldage lint ja ühendage PCB ja LCD

Samm: STL -fail

STL -fail
STL -fail
STL -fail
STL -fail
STL -fail
STL -fail

stl fail

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

Korpuse, anduritoru ja vintpüssihoidja jaoks on vaja tuge.

Mul on kõik trükitud 0,2 mm kõrgusele.

9. samm: PÖÖRDEKOODER

PÖÖRDEKOODER
PÖÖRDEKOODER
PÖÖRDEKOODER
PÖÖRDEKOODER
PÖÖRDEKOODER
PÖÖRDEKOODER

See pöörlev kodeerija on ühendatud isp -pistikuga. seda kasutatakse pelleti kaalu muutmiseks ning seadme sisse- ja väljalülitamiseks.

vcc isp pin 2 (tõmmake takisti üles)

Terminal A (kollane) minge Interneti -teenuse pakkuja kontaktile 1

Terminal B (roheline) minge Interneti -teenuse pakkuja pin 3 -le

Klemm C (gnd) isp pin 6

Lisan 2 pilti, et näha erinevust filtri ja filtri puudumise vahel. Näete hõlpsalt nende kahe erinevust.

Nupp läheb trükkplaadi SW -pistiku juurde.

Samm: anduri toru

Anduri toru
Anduri toru
Anduri toru
Anduri toru
Anduri toru
Anduri toru

TÄHTIS:

Anduritoru peab olema must ja vastuvõtja peidetud

Minu esimesed katsed olid ilus punane piip. Aga see on keeruline! See ei töötanud üldse. Ma arvasin, et välisvalgus tuli, visake plast- ja vastuvõtjaandur alati sisse.

Hea tulemuse saamiseks ei olnud mul muud valikut värvi mustaks muuta.

Paigaldage vastuvõtja ülaosale. Ja peita läbipaistev plastik musta värvi, teibi või kummiga, musta silikooniga.

Paigaldage emitter põhjale. Kontrollige pliiatsiga, kas andurid reageerivad hästi. Võib -olla tuleb kiirguri auk veidi suurendada. see sõltub teie printeri kalibreerimisest.

Mul on ka varjus parem tulemus. Vältige otsest päikesevalgust.

11. samm: alternatiivne anduritoru

Anduritoru alternatiiv
Anduritoru alternatiiv
Anduritoru alternatiiv
Anduritoru alternatiiv

Kui teil pole 3D -printerit, saate seda teha vasktoruga. See töötab väga hästi. Raske on teha auk täpselt 3 tolli kaugusel ning vastuvõtja ja kiirgur peavad olema joondatud.

12. samm: pellet ostsilloskoopil ja kalibreerimine

Pellet ostsilloskoopil ja kalibreerimine
Pellet ostsilloskoopil ja kalibreerimine

See on tõeline pelletite viskamine. Sond 1 kollane on andur 1. Sond 2 lilla on andur 2.

Aeg/div on 50 meid.

Saame kokku lugeda 50i 50 jaotust. 50 USA x 6 = 300 USA (3 tolli kohta). 300 us x 4 = 1,2 ms 1 jala jaoks

1/1,2 ms = 833,33 jalga/s

Samuti näeme, et andur on tavaliselt 5 V juures. Ja kas me saame kiirgava valguse blokeerida, andur langeb 0 -ni.

See on viis, kuidas uC tema loenduri käivitab ja peatab (taimer1)

Kuid selleks, et täpselt teada saada, kas kiirus oli täpne, vajasin ma viisi selle mõõtmiseks.

Tarkvara kalibreerimiseks ja selle seadme täpsuse testimiseks kasutasin 10 mhz võrdlusostsillaatorit. Vaadake minu GPSDO -d muul juhendamisel.

Toidan selle 10 mhz -ga teist atmega328. Ja programmeerige see kokkupanekus, et see saadaks mulle 2 impulssi iga kord, kui vajutan pelleti simuleerimiseks nuppu. Täpselt selline, nagu nägime pildil, kuid selle asemel, et saada tõeline pellet, oli see teine uC, kes saatis mulle 2 impulssi.

Iga kord, kui vajutati nuppu, saadeti 1 impulss ja täpselt 4 ms pärast teise impulsi saatmist.

Sel moel suudan tasakaalustada tarkvara koostaja nii, et kuvatakse alati 1000 jalga/s.

13. samm: rohkem…

Veel…
Veel…
Veel…
Veel…

See on minu esimene prototüüp 2010.

Kui teil on küsimusi või veateateid, võite mulle meili saata. Inglise või prantsuse keeles. Annan endast parima, et aidata.

Soovitan: