Índice:
- Etapa 1: recurso
- Etapa 2: Teoria de Operação e Precisão
- Etapa 3: esquema e lista de peças
- Etapa 4: Arquivo Gerber PCB
- Etapa 5: Solde seu PCB
- Etapa 6: Programando o Atmega328p
- Etapa 7: display LCD
- Etapa 8: Arquivo STL
- Etapa 9: CODIFICADOR ROTATIVO
- Etapa 10: tubo sensor
- Etapa 11: Alternativa de tubo sensor
- Etapa 12: Um Pellet no Osciloscópio e Calibração
- Etapa 13: Mais …
Vídeo: Cronógrafo de rifle de ar, cronoscópio. Impresso em 3D: 13 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Olá a todos, hoje revisitaremos um projeto que realizei em 2010. Um cronógrafo de rifle de ar. Este dispositivo irá lhe dizer a velocidade de um projétil. Pellet, BB ou mesmo bola de plástico BB macio de ar.
Em 2010 comprei uma espingarda de ar comprimido para me divertir. Estava batendo em latas, garrafas, pontaria. Eu sei que a velocidade desta arma era de no máximo 500 pés / s. Porque é a lei do Canadá. Um rifle de ar mais forte está disponível, mas você precisa ter uma licença e não pode comprá-lo no Walmart.
Agora que eu tinha essa licença, poderia comprar outra. Mas, resumindo, a mesma arma estava disponível para os EUA a 1000 pés / s. O QUE!? A mesma arma? sim… No Canadá, o curso tem um buraco e a mola é mais macia.
A primeira coisa a fazer é preencher o buraco. Foi o que fiz com a solda. A próxima coisa a fazer foi pedir uma mola de reposição. Mas espere … qual é a velocidade atual do meu novo brinquedo? A mola é realmente necessária? Não sei e quero saber. Eu quero saber agora, mas como?
É por isso que fiz este projeto. Tudo que eu precisava era de 2 sensores, um uC e um display e estamos no negócio.
Semana passada, vi meu velho cronógrafo azul em uma prateleira e falei comigo mesmo: "Por que não compartilho isso e faço um instrutivo com ele?" E, a propósito, poderíamos aumentar a precisão e adicionar um indicador de bateria. Coloque 1 botão em vez de 2 para ligar / desligar. Toda montagem em superfície. Estamos agora em 2020!
Então aí está … vamos começar!
Etapa 1: recurso
- Velocidade da pelota
-Velocidade
-20 mhz em execução, grande precisão
-Auto off
- Tensão da bateria exibida
- esquemático disponível
-pcb disponível
-lista de peças disponível
-STL disponível
-C código disponível
Etapa 2: Teoria de Operação e Precisão
-Temos um uC rodando a 20Mhz. O oscilador usado é um TCX0 + -2,5 ppm
-Temos 2 sensores a 3 polegadas de distância um do outro.
-O projétil atingiu o primeiro sensor. uC começar a contar (cronômetro1)
-O projétil atingiu o segundo sensor. uC pare de contar.
-uC verifique o valor do timer1, faça as contas e exiba a velocidade e a velocidade.
Estou usando o timer1 de 16 bits + o sinalizador de estouro tov1. Total de 17 bits para 131071 "tique" para uma contagem completa.
1/20 MHz = 50 ns. Cada tique é de 50 ns
131071 x 50 ns = 6,55355 ms para fazer 3 polegadas.
6,55355 ms x 4 = 26,21 ms para fazer 12 polegadas.
1 / 26,21 ms = 38,1472637 pés / s
Esta é a velocidade mais lenta que o dispositivo pode medir.
Por que 20 MHz? Por que não usar 8 MHz interno ou mesmo um cristal?
Meu primeiro dispositivo estava usando o oscilador interno. Estava funcionando, mas este não era preciso o suficiente. A variação é muito grande. Um cristal é melhor, mas a temperatura varia com a freqüência. Não podemos fazer um dispositivo de medição preciso com isso. Além disso, quanto mais alta a frequência, mais tiques serão contados para a mesma velocidade. A amostragem será melhor se tiver uma precisão muito boa. Como um tique não é divisível, a perda é pequena se o ciclo de trabalho for rápido.
Em 20 MHz, temos etapas de 50 ns. Nós sabemos o quão preciso é 50 ns para um projétil a 38 pés / s.
38,1472637 pés / s dividido por 131071 = 0, 000291042 pés
0, 0003880569939956207 pés x 12 = 0, 003492512 polegadas
1/0, 003492512 = 286,37 ". Em outras palavras. A 50 pés / s, temos uma precisão de + - 1/286" ou + - 0, 003492512 polegadas
Mas se meu oscilador for o pior e rodar a 20 MHz +2,5 ppm, está tudo bem? Vamos descobrir…
2,5 ppm de 20 000 000 é: (20000000/1000000) x 2,5 = 20000050 Hz
Portanto, na pior das hipóteses, temos mais 50 relógios em 20 MHz. São 50 horas em 1 segundo. Quantos tiques a mais no timer1 se o chumbo estiver na mesma velocidade (38,1472637 pés / s ou 6,55ms)?
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 pés / s
Portanto, temos 38,14735907 pés / s em vez de 38,1472637 pés / s
Agora sabemos que 2,5 ppm não afeta o resultado.
Aqui está um exemplo de velocidade diferente
Para 1000 pés / s
1000 pés / s x 12 é 12000 polegadas / s
1 segundo para 12000 "quanto tempo para fazer 3"? 3x1 / 12000 = 250 us segundos
250 us / 50 ns = 5000 tique.
Timer1 estará em 5000
uC faça as contas e 1000 pés / s é exibido. Até agora tudo bem
Para 900 pés / s
900 pés / s é 10800 / s
3x1 / 10800 = 277,77 us
277, 77 ns / 50 ns = 5555, 5555 tique
O cronômetro 1 estará em 5555
uC faça as contas e 900, 09 será exibido em vez de 900
Porque ? porque o temporizador 1 está em 5555 e 0, 5555 está perdido. Tic on timer não é divisível.
Temos um erro de 0, 09 em 900 pés / s
0, 09 / 900x100 = 0, 01% de erro apenas
Para 1.500 pés / s 1.500 pés / s é 18.000 / s 3x1 / 10800 = 166,66 us
166,66 us / 50 ns = 3333,333 tic Timer 1 estará em 3333
uC faça as contas e 1500,15 será exibido em vez de 1500 é 0,15 / 1500x100 = 0, 01%
Para 9000 pés / s
9000 x 12 = 180000 polegadas / s
3x1 / 180000 = 27,7777 us
27,77 us / 50 ns = 555, 555
Timer1 estará em 555 e 4 / (1 / 555x50ns) será exibido 9009, 00 será exibido
Aqui o erro é de 9 pés / s em 9.000 = 0, 1%
Como você pode ver, a porcentagem de erro aumenta quando a velocidade é maior. Mas fique <0,1%
Esses resultados são muito bons.
Mas a precisão não é linear. A 10.000 pés / s, é 0, 1%. A boa notícia é que nunca testamos uma pelota de 10.000 pés / s.
Outra coisa a ter em mente. Quando uma interrupção acontece, uC sempre termina a última instrução antes de entrar na interrupção. Isso é normal e todos os uC fazem isso. Se você codificar arduino, em C ou mesmo em assembler. Na maioria das vezes você vai esperar em um loop eterno … para esperar. O problema é que em um loop passamos 2 ciclos. Normalmente, isso não é importante. Mas no nosso caso. SIM, cada tique é importante. Vejamos um loop infinito:
montador:
ciclo:
loop rjmp
Em C:
enquanto (1) {}
Na verdade, o compilador C usa a instrução rjmp. RJMP é de 2 ciclos.
Isso significa que se a interrupção acontecer no primeiro ciclo, perdemos um ciclo (tic) (50ns).
Minha maneira de consertar isso é adicionar muitas instruções nop no loop. NOP é 1 ciclo.
ciclo:
nop
nop
nop
nop
nop
loop rjmp
Se a interrupção acontecer em uma instrução nop. Nós estamos bem. Se isso acontecer no segundo ciclo da instrução rjmp, tudo bem. Mas se acontecer no primeiro ciclo da instrução rjmp, perderemos um tique. Sim, são apenas 50 ns, mas como você pode ver acima, 50 ns em 3 polegadas não é nada. Não podemos corrigir isso por software porque não sabemos exatamente quando a interrupção aconteceu. É por isso que no código você verá muitas instruções nop. Agora tenho quase certeza de que a interrupção cairá em uma instrução nop. Se eu adicionar 2000 nop, tenho 0, 05% para cair na instrução rjmp.
Outra coisa a ter em mente. Quando a interrupção acontecer. O compilador faz muitos push e pull. Mas é sempre o mesmo número. Agora podemos fazer uma correção de software.
Para concluir:
A precisão para uma pelota média de 1000 pés / s é 0, 01%
100x mais preciso do que outro 1% do mercado. A frequência é maior e com TCXO, mais precisa
Por exemplo, 1% de 1000 pés / s é mais ou menos 10 pés / s. É uma grande diferença.
Etapa 3: esquema e lista de peças
Aqui eu implementei meu circuito de um botão liga / desliga. (veja meu último instrutível) Este circuito é muito prático e funciona muito bem.
Estou usando um atmega328p. Este é programado em C.
A tela é compatível com lcd HD44780 padrão de 2 linhas. O modo de 4 bits é usado.
Um regulador de 3,3 V é usado para fornecer tensão ao TCXO 20mhz.
D1 é para luz de fundo do LCD. Opcional. A bateria vai durar mais se você não instalar o D1.
Todos os resistores e tampas são pacote 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
Display LCD de 2 linhas HD44780. Não há necessidade de comprar o módulo i2c.
Sensores:
2x Emissor OP140A
2x Reciever OPL530
Codificador: PEC11R-4215K-S0024 * Não se esqueça de adicionar 4 resistores de 10k e 2x.01uf para fazer o filtro do codificador. veja a foto abaixo
Etapa 4: Arquivo Gerber PCB
Aqui estão os arquivos gerber
Etapa 5: Solde seu PCB
Com ajuda esquemática, solde todos os seus componentes na pcb. Cada parte ou escrita em pcb, r1, r2 … e assim por diante.
Eu não instalei o D1. Isso é para a luz de fundo do LCD. É lindo, mas a vida da bateria é afetada. Então, eu escolho manter a luz de fundo do LCD desligada.
Etapa 6: Programando o Atmega328p
Verifique aqui na etapa 12 para programar o atmega328p. Eu forneço aqui o arquivo.hex para isso.
Aqui está o programa avrdude pronto para programar o arquivo em lote. Apenas clique no programa usbasp.bat e o seu usbasp será instalado corretamente. Tudo será feito automaticamente, incluindo o bit de fusível.
1drv.ms/u/s!AnKLPDy3pII_vXaGPIZKMXxaXDul?e…
Neste projeto estou compartilhando também o código-fonte C. Esteja ciente de que algumas notas nele podem estar em french.https://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…
Etapa 7: display LCD
Instale um pouco de fita e conecte pcb e lcd juntos
Etapa 8: Arquivo STL
arquivo stl
1drv.ms/u/s!AnKLPDy3pII_vgezy0i0Aw3nD-xr?e…
O suporte é necessário para o invólucro, o tubo do sensor e o porta-rifle.
Todos imprimi com 0,2 mm de altura.
Etapa 9: CODIFICADOR ROTATIVO
Este codificador rotativo é conectado ao conector ISP. é usado para alterar o peso do pellet e para ligar e desligar o dispositivo.
vcc isp pino 2 (resistor pull up)
Terminal A (amarelo) vá para o pino 1 do ISP
Terminal B (verde) vá para o pino 3 do ISP
Terminal C (gnd) ISP pino 6
Estou adicionando 2 fotos para ver a diferença entre ter um filtro e nenhum filtro. Você pode ver facilmente a diferença entre os dois.
O botão de pressão vai para o conector PCB SW.
Etapa 10: tubo sensor
IMPORTANTE:
O tubo do sensor deve ser preto e o receptor do sensor deve ser escondido
Minhas primeiras tentativas foram fazer um lindo cachimbo vermelho. Mas isso é complicado! Não estava funcionando de jeito nenhum. Eu descobri que a luz externa estava entrando pelo plástico e o sensor do receptor estava sempre ligado.
Para ter um bom resultado não tive escolha de mudar a cor para preto.
Instale o receptor na parte superior. E esconda o plástico transparente com tinta preta, fita ou goma de silicone preto.
Instale o emissor na parte inferior. Verifique com uma caneta se os sensores estão respondendo bem. Talvez o orifício do emissor precise ser um pouco alargado. dependerá da calibração da sua impressora.
Também tenho melhor resultado na sombra. Evite luz solar direta.
Etapa 11: Alternativa de tubo sensor
Se você não tiver uma impressora 3D, pode fazer o mesmo com um tubo de cobre. Vai funcionar muito bem para. A coisa difícil de fazer é o orifício com exatamente 3 polegadas e o receptor e o emissor devem estar alinhados.
Etapa 12: Um Pellet no Osciloscópio e Calibração
Esta é uma pelota real passando pelo cano. A sonda 1 amarela é o sensor 1. A sonda 2 roxa é o sensor 2.
Tempo / div é 50 us.
Podemos contar 6 divisões de 50us. 50 us x 6 = 300 us (para 3 polegadas). 300 us x 4 = 1,2 ms para 1 pé
1 / 1,2ms = 833,33 pés / s
Também podemos ver que o sensor está normalmente em 5v. E podemos bloquear a luz emissora, o sensor cai para 0.
É a maneira como você inicia e interrompe seu contador (temporizador1)
Mas, para saber exatamente se a velocidade era exata, eu precisava encontrar uma maneira de medir isso.
Para fazer a calibração do software e testar a precisão deste dispositivo, usei um oscilador de referência de 10 MHz. Veja meu GPSDO em outro instrutível.
Eu alimento outro atmega328 com esse 10 mhz. E programe este aqui no assembler para me enviar 2 pulsos cada vez que eu apertar um botão para simular um chumbinho. Exatamente como vimos na foto, mas em vez de ter uma pelota real, foi outro uC me enviando 2 pulsos.
Cada vez que o botão era pressionado, 1 pulso era enviado e exatamente 4 ms após o envio de outro pulso.
Dessa forma, posso balancear o compilador de software para ter sempre 1000 pés / s exibidos.
Etapa 13: Mais …
Este é meu primeiro protótipo de 2010.
Para qualquer dúvida ou relatório de erro, você pode me enviar um e-mail. Inglês ou francês. Vou fazer o meu melhor para ajudar.
Recomendado:
Cronógrafo Nerf e cadência do tambor: 7 etapas
Cronógrafo Nerf e Barril de Taxa de Fogo: IntroduçãoComo um consertador, é sempre muito gratificante ver os resultados numéricos de seus consertos. Muitos de nós já modificamos as armas Nerf antes e quem não ama jogar pedaços de espuma pela casa a mais de 100 fps? Depois de modificar muitos g
Arduino para Nerf: cronógrafo e contador de disparos: 28 etapas (com imagens)
Arduino para Nerf: Cronógrafo e contador de disparos: Meu Instructable anterior abordou os fundamentos da detecção de velocidade de dardo usando um detector e emissor infravermelho. Este projeto dá um passo adiante, usando uma placa de circuito impresso, visor e baterias para fazer um contador de munição portátil e cronógrafo
O rifle de ação Storm 220 V1.7 Knex: 10 etapas
O rifle Storm 220 V1.7 Knex Bolt Action: Esta é minha nova arma Knex, a Storm 220. Ela foi projetada principalmente para a aparência, mas funciona bem e tem um alcance decente. Não vou dizer para ser bonzinho, embora este seja meu primeiro Instructable, porque acho que as pessoas têm direito à sua opini
The Storm 222 V1.1 Knex Pseudo Semi Auto Rifle: 6 etapas
The Storm 222 V1.1 Knex Pseudo Semi Auto Rifle: Olá pessoal, este é o meu terceiro instrutível e o terceiro de cinco na série Storm. Eu acredito que este rifle é o primeiro de seu tipo. Ele usa um mecanismo que eu inventei, e um semelhante a este foi lançado pelo inventor da banana, mas usa o sa
Rifle Knex "XFN Snowflak3": 9 etapas
Rifle Knex "XFN Snowflak3": O XFN Snowflak3: a arma que teve o mesmo conceito geral por dois anos. Um rifle simples de tubo e vara com um sistema de bloqueio trigonométrico.Pros: Muito precisoPoderoso (pode perfurar 6- 8 folhas de papelão ondulado) Bastante fácil de fazer, simpl