Taula de continguts:

Cronògraf Rifle Air, Cronoscopi. Imprès en 3D: 13 passos
Cronògraf Rifle Air, Cronoscopi. Imprès en 3D: 13 passos

Vídeo: Cronògraf Rifle Air, Cronoscopi. Imprès en 3D: 13 passos

Vídeo: Cronògraf Rifle Air, Cronoscopi. Imprès en 3D: 13 passos
Vídeo: Walther Rotex air rifle power test with FX chronograph #airgun #pcpairgun 2024, De novembre
Anonim
Image
Image
Funció
Funció

Hola a tothom, avui tornarem a revisar un projecte que he fet el 2010. Un cronògraf Rifle Air. Aquest dispositiu us indicarà la velocitat d’un projectil. Bola de plàstic de pellets, BB o fins i tot air soft BB.

El 2010 vaig comprar un rifle pneumàtic per diversió. Estava colpejant llaunes, ampolles, punteria. Sé que la velocitat d'aquesta pistola va ser màxima de 500 peus / s. Perquè és la llei del Canadà. Hi ha disponibles uns rifles d’aire més forts, però cal tenir una llicència i no es poden comprar a Walmart.

Ara tenia aquesta llicència i en podia comprar una altra. Però, breu, la mateixa arma estava disponible per als Estats Units a 1000 peus / s. QUÈ!? La mateixa arma? Sí … Al Canadà, el traç té un forat i la molla és més suau.

El primer que cal fer és omplir el forat. Això és el que he fet amb la soldadura. El següent que cal fer era demanar una molla de recanvi. Però espereu … quina és la velocitat actual de la meva nova joguina? És realment necessària la primavera? No ho sé i vull saber-ho. Vull saber-ho ara, però com?

Per això vaig fer aquest projecte. Tot el que necessitava era de 2 sensors, una uC i una pantalla i estem al negoci.

La setmana passada vaig veure el meu vell cronògraf blau en un prestatge i em vaig parlar: "Per què no comparteixo això i en faig una instrucció?" I, per cert, podríem augmentar la precisió i afegir un indicador de bateria. Poseu 1 botó en lloc de 2 per activar / desactivar. Muntatge de tota la superfície. Ara som al 2020!

Així que aquí està … comencem!

Pas 1: funció

-Velocitat del pellet

-Velocitat

-20 MHz funcionant, una precisió enorme

-Auto off

-Tensió de la bateria mostrada

-esquemàtic disponible

-pcb disponible

-lista de parts disponible

-STL disponible

-Codi disponible

Pas 2: teoria del funcionament i precisió

-Tenim un uC funcionant a 20Mhz. L'oscil·lador utilitzat és un TCX0 + -2,5 ppm

-Tenim 2 sensors a 3 polzades l'un de l'altre.

-El projectil va tocar el primer sensor. uC comença a comptar (temporitzador1)

-El projectil va tocar el segon sensor. uC deixar de comptar.

-Comproveu el valor del temporitzador 1, feu les matemàtiques i visualitzeu la velocitat i la velocitat.

Estic fent servir el temporitzador de 16 bits + el senyal de desbordament tov1. 17 bits en total per 131071 "tic" per a un recompte complet.

1/20 mhz = 50 ns. Cada tic és 50ns

131071 x 50 ns = 6.55355 ms per fer 3 polzades.

6,55355 ms x 4 = 26,21 ms per fer 12 polzades.

1 / 26,21 ms = 38,14472637 peus / s

Aquesta és la velocitat més baixa que pot mesurar el dispositiu.

Per què 20 mhz? Per què no utilitzeu els 8 mhz interns ni tan sols un cristal?

El meu primer dispositiu feia servir l’oscil·lador intern. Funcionava però aquest no era prou precís. La variació és massa gran. Un vidre és millor, però la temperatura varia amb freqüència. No podem fer un dispositiu de mesura precís amb això. A més, com més freqüència sigui alta, es comptaran més tic per a la mateixa velocitat. El mostreig serà millor per tenir una precisió molt bona. Com que un tic no es pot dividir, la pèrdua és petita si el cicle de treball és ràpid.

A 20 MHz tenim passos de 50 ns. Sabem quina precisió té 50 ns per a un projectil a 38 ft / s.

38.1472637 peus / s divideixen per 131071 = 0, 000291042 peus

0, 0003880569939956207 peus x 12 = 0, 003492512 polzades

1/0, 003492512 = 286,37 ". En altres paraules. A 50 ft / s tenim una precisió de + - 1/286" o + - 0, 003492512 polzades

Però si el meu oscil·lador és el pitjor i funciona a 20 mhz +2,5 ppm, està bé? Anem a esbrinar…

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

En el pitjor dels casos, tenim 50 rellotges més a 20 mhz. Fa 50 rellotges en 1 segon. Quants tic més en el temporitzador 1 si el pellet fa la mateixa velocitat (38,14472637 peus / s o 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 peus / s

Per tant, tenim 38.14735907 peus / s en lloc de 38.1472637 peus / s

Ara sabem que 2,5 ppm no afecta el resultat.

Aquí hi ha alguns exemples de velocitat diferent

Per a 1000 peus / s

1000 ft / s x 12 fa 12000 polzades / s

1 segon per 12.000 "quants temps per fer-ne 3"? 3x1 / 12000 = 250 us segons

250 us / 50 ns = 5000 tic.

El temporitzador 1 serà a 5.000

uC feu les matemàtiques i es mostra 1000 ft / s. Fins ara, tot bé

Per a 900 ft / s

900 ft / s és 10800 / s

3x1 / 10800 = 277,77 nosaltres

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

El temporitzador 1 serà a 5555

uC feu les matemàtiques i es mostrarà 900, 09 en lloc de 900

Per què ? perquè el temporitzador 1 és a 5555 i es perd 0, 5555. Els tic on temporitzador no es poden dividir.

Tenim un error de 0, 09 en 900 ft / s

0, 09 / 900x100 = 0, només un 01% d'error

Per a 1500 ft / s1500 ft / s és 18000 / s 3x1 / 10800 = 166,66 nosaltres

166,66 us / 50 ns = 3333,333 tic El temporitzador 1 serà a 3333

uC feu les matemàtiques i es mostrarà 1500.15 en lloc de 1500, 0,15 / 1500x100 = 0, 01%

Per a 9000 peus / s

9000 x 12 = 180000 polzades / s

3x1 / 180000 = 27.7777 nosaltres

27,77 us / 50 ns = 555, 555

El temporitzador 1 serà a 555 i es mostrarà 4 / (1 / 555x50ns) 9009, es mostrarà 00

Aquí l'error és de 9 peus / s a 9000 = 0, 1%

Com podeu veure,% error augmenta quan la velocitat és més alta. Però mantingueu-vos <0,1%

Aquests resultats són molt bons.

Però la precisió no és lineal. A 10000 ft / s és el 0,1%. Una bona novetat és que mai no provem un pellet de 10.000 ft / s.

Una altra cosa a tenir en compte. Quan es produeix una interrupció, uC sempre finalitza la darrera instrucció abans d'entrar a la interrupció. Això és normal i tots els uC ho fan. Si codifiqueu arduino, en C o fins i tot ensamblador. La majoria de les vegades esperareu en un bucle per sempre … esperar. El problema és que en un bucle passem 2 cicles. Normalment, això no és important. Però en el nostre cas. SÍ, cada tic és important. Vegem un bucle infinit:

muntador:

bucle:

bucle rjmp

En Do:

mentre que (1) {}

De fet, el compilador C utilitza instruccions rjmp. RJMP és de 2 cicles.

Això significa que si la interrupció passa al primer cicle, perdem un cicle (tic) (50ns).

La meva manera de solucionar-ho és afegir moltes instruccions nop al bucle. NOP és 1 cicle.

bucle:

nop

nop

nop

nop

nop

bucle rjmp

Si la interrupció ocorre en una instrucció nop. Estem bé. Si passa al segon cicle d’instruccions rjmp, estem bé. Però si passa al primer cicle d’instruccions rjmp, perdrem un tic. Sí, només són 50 ns, però com podeu veure més amunt, 50 ns a 3 polzades no són res. No podem corregir-ho mitjançant el programari perquè no sabem quan es produeix exactament la interrupció. És per això que al codi veureu moltes instruccions de nop. Ara estic bastant segur que la interrupció recaurà en una instrucció nop. Si afegeixo 2000 nop tinc un 0, 05% per caure en la instrucció rjmp.

Una altra cosa a tenir en compte. Quan es produeix una interrupció. El compilador fa molts push and pull. Però sempre és el mateix nombre. Per tant, ara podem fer una correcció de programari.

Per concloure sobre això:

La precisió d'un grànul mitjà de 1000 ft / s és de 0, 01%

100 vegades més precís que l’altre 1% del mercat. La freqüència és més alta i amb TCXO, més precisa

Per exemple, l'1% de 1000 ft / s és més o menys 10 ft / s. És una gran diferència.

Pas 3: Esquema i llista de peces

Esquema i llista de peces
Esquema i llista de peces

Aquí he implementat el meu circuit d'encès / apagat d'un polsador. (vegeu la meva última instrucció) Aquest circuit és molt útil i funciona molt bé.

Estic fent servir un atmega328p. Aquest està programat en C.

La pantalla és compatible amb lcd HD44780 de 2 línies estàndard. S'utilitza el mode de 4 bits.

S’utilitza un regulador de 3,3 V per proporcionar tensió al TCXO 20 MHz.

D1 és per a retroil·luminació lcd. Opcional. La bateria durarà més si no instal·leu D1.

Totes les resistències i taps són paquet 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

Pantalla LCD 2 línies HD44780. No cal comprar el mòdul i2c.

Sensors:

2x Emissor OP140A

2x receptor OPL530

Codificador: PEC11R-4215K-S0024 * No oblideu afegir 4x resistències de 10k i 2x.01uf per fer el filtre del codificador. vegeu la imatge següent

Pas 4: PCB Gerber File

Arxiu PCB Gerber
Arxiu PCB Gerber
Arxiu PCB Gerber
Arxiu PCB Gerber
Arxiu PCB Gerber
Arxiu PCB Gerber
Arxiu PCB Gerber
Arxiu PCB Gerber

Aquí teniu fitxers gerber

Pas 5: soldeu el vostre Pcb

Soldeu el vostre Pcb
Soldeu el vostre Pcb
Soldeu el vostre Pcb
Soldeu el vostre Pcb
Soldeu el vostre Pcb
Soldeu el vostre Pcb

Amb ajuda esquemàtica, soldeu tots els components del PCB. Cada part o escrit a pcb, r1, r2 … i així successivament.

No tinc instal·lat D1. Això és per a la retroiluminació lcd. És bonic, però la durada de la bateria es veu afectada. Així que decideixo mantenir la llum de fons lcd apagada.

Pas 6: programació de l'Atmega328p

Programació de l'Atmega328p
Programació de l'Atmega328p

Consulteu aquí al pas 12 per programar l'atmega328p. Aquí proporciono el fitxer.hex per a això.

Aquí teniu el programa avrdude llest per programar el fitxer per lots. Feu clic només al programa usbasp.bat i el vostre usbasp s’instal·larà correctament. Totes es faran automàticament, inclòs el bit de fusible.

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

En aquest projecte també comparteixo el codi font C. Tingueu en compte que algunes notes poden estar en francès.https://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E …

Pas 7: pantalla LCD

Pantalla LCD
Pantalla LCD
Pantalla LCD
Pantalla LCD

Instal·leu una mica de cinta i connecteu PCB i LCD junts

Pas 8: fitxer STL

Fitxer STL
Fitxer STL
Fitxer STL
Fitxer STL
Fitxer STL
Fitxer STL

fitxer stl

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

Es necessita suport per al recinte, la canonada del sensor i el portafusells.

Tinc tot imprès a 0,2 mm d'alçada.

Pas 9: codificador rotatiu

CODIFICADOR ROTATIU
CODIFICADOR ROTATIU
CODIFICADOR ROTATIU
CODIFICADOR ROTATIU
CODIFICADOR ROTATIU
CODIFICADOR ROTATIU

Aquest codificador rotatiu està connectat al connector isp. s’utilitza per canviar el pes de la pastilla i encendre i apagar el dispositiu.

pin 2 d'ISP vcc (resistència de pujar)

La terminal A (groga) aneu al pin 1 de l’ISP

La terminal B (verda) aneu al pin 3 de l’ISP

Terminal C (gnd) isp pin 6

Afegeixo 2 imatges per veure la diferència entre tenir un filtre o no tenir filtre. Podeu veure fàcilment la diferència entre tots dos.

El polsador anirà al connector SW de la placa base.

Pas 10: canonada del sensor

Tub de sensor
Tub de sensor
Tub de sensor
Tub de sensor
Tub de sensor
Tub de sensor

IMPORTANT:

La canonada del sensor ha de ser negra i el receptor del sensor ha d’estar amagat

Els meus primers intents van ser tenir una bella pipa vermella. Però això és complicat. No funcionava gens. Em vaig adonar que entrava llum exterior, ja que el sensor de plàstic i el receptor sempre estaven engegats.

Per tenir un bon resultat, no vaig tenir opció de canviar el color a negre.

Instal·leu el receptor a la part superior. I amagueu el plàstic transparent amb pintura negra, cinta adhesiva o xiclet, silicona negra.

Instal·leu l'emissor a la part inferior. Comproveu amb un llapis si els sensors responen bé. Potser caldrà ampliar una mica el forat de l'emissor. dependrà del calibratge de la impressora.

També tinc millors resultats a l’ombra. Eviteu la llum solar directa.

Pas 11: alternativa a la canonada del sensor

Alternativa de canonada del sensor
Alternativa de canonada del sensor
Alternativa de canonada del sensor
Alternativa de canonada del sensor

Si no teniu una impressora 3D, podeu fer el mateix amb una canonada de coure. Ho funcionarà molt bé. El més difícil de fer és el forat a exactament 3 polzades i el receptor i l'emissor han d'estar alineats.

Pas 12: Un grànul en oscil·loscopi i calibració

Un pellet en oscil·loscopi i calibració
Un pellet en oscil·loscopi i calibració

Es tracta d’un veritable pellet que passa per la canonada. La sonda 1 de color groc és el sensor 1. La sonda 2 de color porpra és el sensor 2.

El temps / div és de 50 nosaltres.

Podem comptar 6 divisions de 50us. 50 us x 6 = 300 us (per 3 polzades). 300 us x 4 = 1,2 ms durant 1 peus

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

També podem veure que el sensor normalment està a 5v. I podem bloquejar la llum de l’emissor si el sensor cau a 0.

És la manera com comença i atura el seu comandament (timer1)

Però per saber exactament si la velocitat era exacta, necessitava una manera de mesurar-ho.

Per fer el calibratge de programari i provar la precisió d’aquest dispositiu, he utilitzat un oscil·lador de referència de 10 mhz. Vegeu el meu GPSDO en altres instruccions.

Alimento un altre atmega328 amb aquest 10 mhz. I programa aquest en assemblador perquè m’enviï 2 pulsacions cada vegada que prenc un botó per simular un pellet. Exactament com hem vist a la imatge, però en lloc de tenir un pellet real, era un altre uC que m'enviava 2 polsos.

Cada vegada que es premia el botó, s’enviava 1 pols i exactament 4 ms després d’enviar un altre pols.

D'aquesta manera, puc equilibrar el compilador de programari perquè sempre es mostrin 1000 ft / s.

Pas 13: Més …

Més …
Més …
Més …
Més …

Aquest és el meu primer prototipus del 2010.

Per a qualsevol pregunta o informe d’errors, podeu enviar-me un correu electrònic. Anglès o francès. Faré tot el possible per ajudar-vos.

Recomanat: