Sisukord:
- 1. samm: funktsioon
- 2. samm: toimimise teooria ja täpsus
- Samm: skemaatiline ja osade loend
- 4. samm: PCB Gerberi fail
- Samm: jootke oma arvuti
- 6. samm: Atmega328p programmeerimine
- Samm: LCD -ekraan
- Samm: STL -fail
- 9. samm: PÖÖRDEKOODER
- Samm: anduri toru
- 11. samm: alternatiivne anduritoru
- 12. samm: pellet ostsilloskoopil ja kalibreerimine
- 13. samm: rohkem…
Video: Õhupüsside kronograaf, kronoskoop. 3D -trükitud: 13 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
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
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
Siin on gerberi failid
Samm: 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 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
Paigaldage lint ja ühendage PCB ja LCD
Samm: 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
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
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
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
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…
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:
Nerfi kronograaf ja tulekahju kiirus: 7 sammu
Nerfi kronograaf ja tulekahju kiirus: sissejuhatus Paljud meist on Nerfi relvi varem modifitseerinud ja kellele ei meeldiks vahutükke üle maja kiirustada üle 100 kaadri sekundis? Pärast paljude Nerf g -de muutmist
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Arduino Nerfi jaoks: kronograaf ja võtte loendur: 28 sammu (piltidega)
Arduino Nerfi jaoks: kronograaf ja laskude loendur: minu eelmine juhendatav käsitles noolemängu kiiruse tuvastamise põhitõdesid infrapunakiirguri ja detektori abil. See projekt viib sammu edasi, kasutades trükkplaati, ekraani ja akusid, et valmistada kaasaskantav laskemoona loendur ja kronograaf