Taula de continguts:
- Pas 1: funció
- Pas 2: teoria del funcionament i precisió
- Pas 3: Esquema i llista de peces
- Pas 4: PCB Gerber File
- Pas 5: soldeu el vostre Pcb
- Pas 6: programació de l'Atmega328p
- Pas 7: pantalla LCD
- Pas 8: fitxer STL
- Pas 9: codificador rotatiu
- Pas 10: canonada del sensor
- Pas 11: alternativa a la canonada del sensor
- Pas 12: Un grànul en oscil·loscopi i calibració
- Pas 13: Més …
Vídeo: Cronògraf Rifle Air, Cronoscopi. Imprès en 3D: 13 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
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
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
Aquí teniu fitxers gerber
Pas 5: 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
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
Instal·leu una mica de cinta i connecteu PCB i LCD junts
Pas 8: 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
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
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
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ó
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 …
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:
Cronògraf Nerf i caixa de foc: 7 passos
Nerf Chronograph and Rate of Fire Barrel: Introducció Com a manipulador, sempre és molt satisfactori veure els resultats numèrics de la vostra manipulació. Molts de nosaltres hem modificat les armes Nerf abans i a qui no li agrada llançar trossos d’escuma per tota la casa a més de 100 fps? Després de modificar molts Nerf g
Arduino per a Nerf: Cronògraf i comptador de trets: 28 passos (amb imatges)
Arduino per a Nerf: cronògraf i comptador de trets: el meu anterior instructable tractava els conceptes bàsics de la detecció de la velocitat dels dards mitjançant un emissor i un detector d'infrarojos. Aquest projecte fa un pas més, fent servir una placa de circuit imprès, pantalla i bateries per fabricar un comptador de municions portàtil i un cronògraf
Rifle Knex: 12 passos
Knex Rifle: aquest és el rifle knex que vaig mostrar com a fòrum. va ser dissenyat principalment per a aparença i té un rang OK. el seu canó és desmuntable i redueix l’abast quan s’uneix. té un mànec de transport que també es desmunta i un bípode. utilitza una tremuja bàsica per carregar-se com
El rifle semi automàtic Pseudo Semi Storm 222 V1.1: 6 passos
El rifle semi automàtic Pseudo Semi Storm 222 V1.1: Hola nois, aquest és el meu tercer instructable i el tercer de cinc de la sèrie Storm. Crec que aquest fusell és el primer d’aquest tipus. Utilitza un mecanisme que vaig inventar, i un inventor similar a aquest va ser llançat per l'inventor de plàtans, però utilitza el sa
Rifle Knex "XFN Snowflak3": 9 passos
Rifle Knex "XFN Snowflak3": el XFN Snowflak3: L'arma que ha tingut el mateix concepte general des de fa dos anys. Un simple rifle de tub i pal amb un sistema de bloqueig. Pro: Molt precís Potent (pot perforar 6-) 8 fulls de cartró ondulat) Bastant fàcil de fer, senzill