INHOUDSOPGAWE:

Luggeweer chronograaf, chronoskoop. 3D -gedruk: 13 stappe
Luggeweer chronograaf, chronoskoop. 3D -gedruk: 13 stappe

Video: Luggeweer chronograaf, chronoskoop. 3D -gedruk: 13 stappe

Video: Luggeweer chronograaf, chronoskoop. 3D -gedruk: 13 stappe
Video: Part 2- Air Gun Weed Trimming- Vegetarian Special | .22 Hatsan/Gamo by Repsol13 2024, November
Anonim
Image
Image
Kenmerk
Kenmerk

Hallo almal, vandag sal ons weer kyk na 'n projek wat ek in 2010 gedoen het. 'N Air Rifle Chronograph. Hierdie toestel sal u die snelheid van 'n projektiel vertel. Pellet, BB of selfs lugsagte BB -plastiekbal.

In 2010 het ek 'n windbuks vir die pret gekoop. Was blikkies, bottels slaan, mik. Ek weet dat die spoed van hierdie geweer maksimum 500 voet/s was. Omdat dit die wet van Kanada is. 'N Sterker luggeweer is beskikbaar, maar u moet 'n lisensie hê en u kan dit nie by Walmart koop nie.

Toe ek hierdie lisensie gehad het, kon ek nog een koop. Maar kortverhaal, dieselfde geweer was teen 1000 voet/s beskikbaar vir die VSA. WAT!? Dieselfde geweer? ja … In Kanada het die slag 'n gat daarin en die veer is sagter.

Die eerste ding om te doen is om die gat vol te maak. Dit is wat ek met soldeer gedoen het. Die volgende ding om te doen was om 'n vervangingsveer te bestel. Maar wag … wat is die huidige spoed van my nuwe speelding? Is die lente werklik nodig? Ek weet nie en ek wil weet. Ek wil nou weet, maar hoe?

Daarom het ek hierdie projek gedoen. Al wat ek nodig gehad het, was 2 sensors, 'n uC en 'n skerm, en ons is besig.

Verlede week sien ek my ou blou chronograaf op 'n rak en ek praat met myself: "Hoekom deel jy dit nie en doen 'n instruksie daarmee?" En terloops, ons kan die akkuraatheid verhoog en 'n battery -aanwyser byvoeg. Sit 1 knoppie in plaas van 2 vir aan/af. Alles op die oppervlak. Ons is nou in 2020!

So daar is dit … laat ons begin!

Stap 1: funksie

-Pellet spoed

-Snelheid

-20 mhz hardloop, groot akkuraatheid

-Auto af

-Batteryspanning vertoon

-skematiese beskikbaar

-pcb beskikbaar

-afdelingslys beskikbaar

-STL beskikbaar

-C -kode beskikbaar

Stap 2: Teorie van werking en akkuraatheid

-Ons het 'n uC op 20Mhz. Die ossillator wat gebruik word, is 'n TCX0 +-2,5 dpm

-Ons het 2 sensors op 3 duim ver van mekaar.

-Die projektiel het die eerste sensor getref. uC begin tel (timer 1)

-Die projektiel het die tweede sensor getref. uC hou op met tel.

-uC kontroleer die timer1 -waarde, doen die wiskunde en vertoon die snelheid en snelheid.

Ek gebruik 16 bit timer1 + die overloop vlag tov1. 17 bis totaal vir 131071 "tic" vir 'n volledige telling.

1/20 mhz = 50 ns. Elke tic is 50 ns

131071 x 50 ns = 6.55355 ms om 3 duim te doen.

6,55355 ms x 4 = 26,21 ms om 12 duim te doen.

1/26,21 ms = 38.1472637 voet/s

Dit is die stadigste snelheid wat die toestel kan meet.

Waarom 20 mhz? Waarom nie die interne 8 mhz of selfs 'n kristal gebruik nie?

My eerste toestel het die interne ossillator gebruik. Werk, maar hierdie een was nie akkuraat genoeg nie. Die variasie is te groot. 'N Kristal is beter, maar die temperatuur wissel van frekwensie. Ons kan nie 'n akkurate meettoestel daarmee doen nie. Ook, hoe meer die frekwensie hoog is, meer tic word vir dieselfde snelheid getel. Die monsterneming sal beter wees om 'n baie goeie akkuraatheid te hê. Omdat 'n tik nie deelbaar is nie, is die verlies min as die dienssiklus vinnig is.

By 20 MHz het ons stappe van 50 ns. Weet ons hoeveel akkuraat dit 50 ns is vir 'n projektiel by 38 ft/s.

38.1472637 ft/s deel deur 131071 = 0, 000291042 voet

0, 0003880569939956207 voet x 12 = 0, 003492512 duim

1/0, 003492512 = 286.37 ". Met ander woorde. By 50 ft/s het ons 'n akkuraatheid van +- 1/286" of +- 0, 003492512 duim

Maar as my ossillator die ergste is en met 20 mhz +2,5 ppm werk, is dit goed? Kom ons vind uit…

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

In die ergste geval het ons nog 50 horlosies op 20 MHz. Dit is 50 uur op 1 sekonde. Hoeveel tik meer op timer1 as die korrel dieselfde snelheid doen (38,1472637 voet/s of 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 voet/s

Ons het dus 38.14735907 voet/s in plaas van 38.1472637 voet/s

Nou weet ons dat 2.5 ppm nie die resultaat beïnvloed nie.

Hier is 'n voorbeeld van verskillende spoed

Vir 1000 voet/sek

1000 ft/s x 12 is 12000 duim/s

1 sekonde vir 12000 "hoeveel tyd om 3" te doen? 3x1/12000 = 250 us sekondes

250 us / 50 ns = 5000 tic.

Timer1 sal op 5000 wees

uC doen die wiskunde en 1000 ft/s word vertoon. So ver so goed

Vir 900 voet/sek

900 voet/s is 10800 /s

3x1/10800 = 277,77 ons

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

Timer 1 sal op 5555 wees

uC doen die wiskunde en 900, 09 sal in plaas van 900 vertoon word

Hoekom? Omdat timer 1 by 5555 en 0 is, gaan 5555 verlore. Tic on timer is nie deelbaar nie.

Ons het 'n fout van 0, 09 by 900 voet/s

0, 09/900x100 = 0, slegs 01% fout

1500 ft/s 1500 ft/s is 18000 /s 3x1/10800 = 166,66 ons

166.66 us / 50 ns = 3333.333 tic Timer 1 sal op 3333 wees

uC doen die wiskunde en 1500.15 sal vertoon word in plaas van 1500, dit is.15/1500x100 = 0, 01%

Vir 9000 voet/sek

9000 x 12 = 180000 duim / s

3x1/180000 = 27.7777 ons

27,77 ons / 50 ns = 555, 555

Tydteller 1 sal op 555 wees en 4/(1/555x50ns) sal 9009 vertoon word, 00 sal vertoon word

Hier is die fout 9 voet/s op 9000 = 0, 1%

Soos u kan sien, neem die fout toe as die snelheid hoër is. Maar bly <0.1%

Die resultate is baie goed.

Maar akkuraatheid is nie lineêr nie. By 10000 ft/s is dit 0, 1 %. 'N Goeie nuut is dat ons nooit 'n korrel van 10 000 voet/s toets nie.

Nog 'n ding om in gedagte te hou. As 'n onderbreking plaasvind, voltooi uC altyd die laaste instruksie voordat u in die onderbreking begin. Dit is normaal en almal doen dit. As u arduino, in C of selfs assembler, kodeer. Meestal sal u in 'n ewige lus wag … om te wag. Die probleem is dat ons twee siklusse in 'n lus deurbring. Normaalweg is dit nie belangrik nie. Maar in ons geval. JA, elke tic is belangrik. Kom ons kyk na 'n oneindige lus:

samesteller:

lus:

rjmp lus

In C:

terwyl (1) {}

In werklikheid gebruik C -samesteller rjmp -instruksie. RJMP is 2 siklusse.

Dit beteken dat as die onderbreking met die eerste siklus gebeur, ons een siklus (tic) (50ns) verloor.

My manier om dit op te los, is om baie instruksies in die lus by te voeg. NOP is 1 siklus.

lus:

geen P

geen P

geen P

geen P

geen P

rjmp lus

As die onderbreking plaasvind op 'n nop instruksie. Ons is ok. As dit op die tweede siklus van rjmp -instruksie gebeur, is dit goed. Maar as dit gebeur tydens die eerste siklus van rjmp -instruksies, sal ons een tiek verloor. Ja, dit is net 50 ns, maar soos u hierbo kan sien, is 50 ns op 3 duim niks. Ons kan dit nie deur sagteware regstel nie, want ons weet nie presies wanneer die onderbreking plaasvind nie. Daarom sien u baie instruksies in die kode. Nou is ek redelik seker dat die onderbreking op 'n nop instruksie sal val. As ek 2000 byvoeg, het ek 0, 05% om op die rjmp -instruksie te val.

Nog 'n ding om in gedagte te hou. Wanneer onderbreking plaasvind. Die samesteller druk en trek baie. Maar dit is altyd dieselfde getal. Nou kan ons 'n sagtewarekorreksie doen.

Om hieroor af te sluit:

Die akkuraatheid van 'n gemiddelde korrel van 1000 voet/s is 0, 01%

100x meer akkuraat as ander 1% op die mark. Die frekwensie is hoër en met TCXO meer akkuraat

Byvoorbeeld, 1% van 1000 ft/s is min of meer 10 ft/s. Dit is 'n groot verskil.

Stap 3: Skematiese en onderdele lys

Skematiese en onderdele lys
Skematiese en onderdele lys

Hier het ek my een -drukknoppie aan/af -kring geïmplementeer. (sien my laaste instruksie) Hierdie kring is baie handig en werk baie goed.

Ek gebruik 'n atmega328p. Hierdie een is geprogrammeer in C.

Die skerm is 'n standaard HD44780 -LCD met 2 reëls wat verenigbaar is. 4 bis -modus word gebruik.

'N 3.3v -reguleerder word gebruik om spanning aan die TCXO 20mhz te verskaf.

D1 is vir lcd -agtergrond. Opsioneel. Die battery sal langer hou as u nie D1 installeer nie.

Alle weerstande en kappies is 0805 pakket

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 miljoen

R2 1 miljoen

R4 2,2k

R5 160

R6 160

R7 1 miljoen

R8 1 miljoen

U1 MIC5317-3.3 MIC5317 SOT23-5

U2 DMG6601LVT DMG6601LVT SOT23-6

Vertoon lcd 2 -reël HD44780. U hoef nie die i2c -module te koop nie.

Sensors:

2x Emitter OP140A

2x Ontvanger OPL530

Encoder: PEC11R-4215K-S0024 *Moenie vergeet om 4x 10k resistors en 2x.01uf by te voeg om die encoder filter te maak nie. sien prentjie hieronder

Stap 4: PCB Gerber -lêer

PCB Gerber lêer
PCB Gerber lêer
PCB Gerber lêer
PCB Gerber lêer
PCB Gerber lêer
PCB Gerber lêer
PCB Gerber lêer
PCB Gerber lêer

Hier is gerber -lêers

Stap 5: Soldeer u rekenaar

Soldeer u pc
Soldeer u pc
Soldeer u pc
Soldeer u pc
Soldeer u pc
Soldeer u pc

Met skematiese hulp, soldeer al u komponente op die PCB. Elke deel of geskryf op pcb, r1, r2 … ensovoorts.

Ek het nie D1 geïnstalleer nie. Dit is vir die lcd-agterlig. Dit is pragtig, maar die batterylewe word beïnvloed. Ek kies dus om die LCD-agterlig af te hou.

Stap 6: Programmering van die Atmega328p

Die programmering van die Atmega328p
Die programmering van die Atmega328p

Kyk hier by stap 12 om die atmega328p te programmeer. Ek verskaf hier die.hex -lêer hiervoor.

Hier is die avrdude -program wat gereed is om bondellêer te programmeer. Klik slegs op die program usbasp.bat en u usbasp is korrek geïnstalleer. Alles word outomaties gedoen, insluitend 'n lont.

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

In hierdie projek deel ek ook die C -bronkode. Hou in gedagte dat 'n nota daarin in Frans kan wees. Https://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E …

Stap 7: LCD -skerm

Lcd -skerm
Lcd -skerm
LCD -skerm
LCD -skerm

Installeer 'n band en koppel die PCB en lcd aanmekaar

Stap 8: STL -lêer

STL lêer
STL lêer
STL lêer
STL lêer
STL lêer
STL lêer

stl lêer

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

Ondersteuning is nodig vir omhulsel, sensorpyp en geweerhouer.

Ek het almal op.2 mm hoog gedruk.

Stap 9: ROTERE ENCODER

ROTERE ENCODER
ROTERE ENCODER
ROTERE ENCODER
ROTERE ENCODER
ROTERE ENCODER
ROTERE ENCODER

Hierdie roterende enkodeerder is gekoppel aan die ISP -aansluiting. dit word gebruik om die gewig van die korrels te verander en om die toestel aan en uit te skakel.

vcc isp pen 2 (optrekweerstand)

Terminal A (geel) gaan na die ISP -pen 1

Terminal B (groen) gaan na ISP pin 3

Terminal C (gnd) ISP pen 6

Ek voeg 2 foto's by om die verskil te sien tussen 'n filter en geen filter. U kan maklik die verskil tussen albei sien.

Die drukknoppie gaan na die PCB SW -aansluiting.

Stap 10: Sensorpyp

Sensorpyp
Sensorpyp
Sensorpyp
Sensorpyp
Sensorpyp
Sensorpyp

BELANGRIK:

Sensorpyp moet swart wees en sensorontvanger moet weggesteek word

My eerste pogings was om 'n pragtige rooi pyp te hê. Maar dit is lastig! Dit werk glad nie. Ek het agtergekom dat daar buite lig kom, maar die plastiek en die ontvanger se sensor is altyd aan.

Om 'n goeie resultaat te kry, het ek geen keuse gehad om die kleur na swart te verander nie.

Installeer ontvanger bo -op. En steek die deursigtige plastiek weg met swart verf, band of tandvleis, swart silikoon.

Installeer emitter onderaan. Kontroleer met 'n pen of sensors goed reageer. Miskien moet die gat van die emitter 'n bietjie vergroot word. Dit hang af van die kalibrasie van u drukker.

Ek het ook 'n beter resultaat in die skaduwee. Vermy direkte sonlig.

Stap 11: Sensorpyp -alternatief

Sensorpyp alternatief
Sensorpyp alternatief
Sensorpyp alternatief
Sensorpyp alternatief

As u nie 'n 3D -drukker het nie, kan u dieselfde doen met 'n koperpyp. Dit sal baie goed werk. Die moeilike ding om te doen is die gat van presies 3 duim en die ontvanger en die sender moet in lyn wees.

Stap 12: 'n Pellet oor oscilloskoop en kalibrasie

'N Pellet oor oscilloskoop en kalibrasie
'N Pellet oor oscilloskoop en kalibrasie

Dit is 'n regte korrel wat die pyp verbygaan. Probe 1 geel is sensor 1. Probe 2 pers is sensor 2.

Tyd/div is 50 ons.

Ons kan 6 afdelings van 50us tel. 50 us x 6 = 300 us (vir 3 duim). 300 us x 4 = 1,2 ms vir 1 voet

1/1.2ms = 833.33 ft/s

Ons kan ook sien dat die sensor gewoonlik op 5v is. En kan ons die emitterlig blokkeer, sensor val tot 0.

Dit is die manier waarop u sy kontoer kan begin en stop (timer 1)

Maar om presies te weet of die snelheid akkuraat was, het ek 'n manier nodig om dit te meet.

Om sagtewarekalibrasie te doen en die akkuraatheid van hierdie toestel te toets, het ek 'n 10 mhz verwysings ossillator gebruik. Sien my GPSDO op ander instruksies.

Ek voed nog 'n atmega328 met hierdie 10 mhz. En programmeer hierdie in assembler om vir my 2 pulse te stuur elke keer as ek op 'n knoppie druk om 'n korrel te simuleer. Presies soos ons op die foto gesien het, maar in plaas daarvan om 'n regte korrel te hê, was dit nog 'n uC wat my twee polse stuur.

Elke keer as die drukknop ingedruk is, is 1 pols gestuur en presies 4 ms nadat 'n ander pols gestuur is.

Op hierdie manier kan ek die sagteware -samesteller balanseer om altyd 1000 ft/s te vertoon.

Stap 13: Meer …

Meer…
Meer…
Meer…
Meer…

Dit is my eerste prototipe van 2010.

Vir enige vrae of foutverslag kan u my 'n e -pos stuur. Engels of Frans. Ek sal my bes doen om te help.

Aanbeveel: