Table des matières:

Chronographe carabine à air comprimé, chronoscope. Imprimé en 3D : 13 étapes
Chronographe carabine à air comprimé, chronoscope. Imprimé en 3D : 13 étapes

Vidéo: Chronographe carabine à air comprimé, chronoscope. Imprimé en 3D : 13 étapes

Vidéo: Chronographe carabine à air comprimé, chronoscope. Imprimé en 3D : 13 étapes
Vidéo: How I repaired The Setra Air Rifle + Resulting Chronoscope Tests 2024, Novembre
Anonim
Image
Image
Caractéristique
Caractéristique

Bonjour à tous, aujourd'hui nous allons revisiter un projet que j'ai réalisé en 2010. Un chronographe à carabine à air comprimé. Cet appareil vous indiquera la vitesse d'un projectile. Bille en plastique à pellets, BB ou même air soft BB.

En 2010, j'ai acheté une carabine à air comprimé pour le plaisir. Frappait des canettes, des bouteilles, visait. Je sais que la vitesse de ce canon était au maximum de 500 pieds/s. Parce que c'est la loi canadienne. Des carabines à air comprimé plus puissantes sont disponibles, mais vous devez avoir une licence et vous ne pouvez pas acheter ces choses chez Walmart.

Maintenant que j'avais cette licence, je pouvais en acheter une autre. Mais pour faire court, le même canon était disponible aux États-Unis à 1000 pieds/s. QUEL!? La même arme ? oui… Au Canada, la course a un trou et le ressort est plus doux.

La première chose à faire est de combler le trou. C'est ce que j'ai fait avec la soudure. La prochaine chose à faire était de commander un ressort de remplacement. Mais attendez… quelle est la vitesse actuelle de mon nouveau jouet ? Le ressort est-il vraiment nécessaire ? Je ne sais pas et je veux savoir. Je veux savoir maintenant mais comment ?

C'est pourquoi j'ai fait ce projet. Tout ce dont j'avais besoin, c'était de 2 capteurs, d'un uC et d'un écran et nous sommes en affaires.

La semaine dernière, j'ai vu mon vieux chronographe bleu sur une étagère et je me suis dit: "Pourquoi ne pas partager ça et faire une instructable avec ?" Et au fait, nous pourrions augmenter la précision et ajouter un indicateur de batterie. Mettez 1 bouton au lieu de 2 pour on/off. Tout montage en surface. Nous sommes maintenant en 2020 !

Alors ça y est… commençons !

Étape 1: Fonctionnalité

-Vitesse des granulés

-Rapidité

-20 mhz en cours d'exécution, précision énorme

-Auto off

-Tension de la batterie affichée

-schéma disponible

-pcb disponible

-liste des pièces disponible

-STL disponible

-Code C disponible

Étape 2: Théorie de fonctionnement et précision

-Nous avons un uC fonctionnant à 20Mhz. L'oscillateur utilisé est un TCX0 +-2,5 ppm

-Nous avons 2 capteurs à 3 pouces l'un de l'autre.

-Le projectile a touché le premier capteur. uC commencer à compter (timer1)

-Le projectile a touché le deuxième capteur. uC arrête de compter.

-uC vérifier la valeur de timer1, faire le calcul et afficher la vitesse et la vitesse.

J'utilise 16 bits timer1 + l'indicateur de débordement tov1. 17 bits au total pour 131071 "tic" pour un compte complet.

1/20 mhz = 50 ns. Chaque tic est de 50ns

131071 x 50 ns = 6,55355 ms pour faire 3 pouces.

6,55355 ms x 4 = 26,21 ms pour faire 12 pouces.

1/26.21 ms = 38.1472637 pieds/s

C'est la vitesse la plus lente que l'appareil peut mesurer.

Pourquoi 20 mhz ? Pourquoi ne pas utiliser le 8 mhz interne ou même un cristal ?

Mon premier appareil utilisait l'oscillateur interne. Fonctionnait mais celui-ci n'était pas assez précis. La variation est trop grande. Un cristal c'est mieux mais la température varie en fréquence. Nous ne pouvons pas faire un appareil de mesure précis avec ça. Aussi, plus la fréquence est élevée, plus le tic sera compté pour une même vitesse. L'échantillonnage sera préférable pour avoir une très bonne précision. Parce qu'un tic n'est pas divisible, la perte est faible si le cycle de service est rapide.

A 20 MHz nous avons des pas de 50 ns. Savons-nous à quel point il est précis à 50 ns pour un projectile à 38 ft/s.

38,1472637 pi/s divisé par 131071 = 0, 000291042 pieds

0, 0003880569939956207 pieds x 12 = 0, 003492512 pouces

1/0, 003492512 = 286,37 ". Autrement dit. A 50 ft/s nous avons une précision de +- 1/286 " ou +- 0, 003492512 pouces

Mais si mon oscillateur est le pire et tourne à 20 mhz +2,5 ppm, est-ce que ça va ? Découvrons-le…

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

Dans le pire des cas, nous avons 50 horloges de plus sur 20 MHz. Il est 50 heures sur 1 seconde. Combien de tic de plus sur la minuterie1 si le plomb fait la même vitesse (38.1472637 pieds/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 pieds/s

Nous avons donc 38.14735907 pieds/s au lieu de 38.1472637 pieds/s

Nous savons maintenant que 2,5 ppm n'affecte pas le résultat.

Voici un exemple de vitesse différente

Pour 1000 pi/s

1000 pi/s x 12 est 12000 pouces/s

1 seconde pour 12000" combien de temps pour faire 3" ? 3x1/12000 = 250 us secondes

250 us / 50 ns = 5000 tic.

Timer1 sera à 5000

uC fait le calcul et 1000 ft/s s'affiche. Jusqu'ici tout va bien

Pour 900 pi/s

900 pi/s est 10800 /s

3x1/10800 = 277,77 us

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

La minuterie 1 sera à 5555

uC fais le calcul et 900, 09 s'affichera au lieu de 900

Pourquoi ? car le temporisateur 1 est à 5555 et 0, 5555 est perdu. Les tic sur la minuterie ne sont pas divisibles.

Nous avons une erreur pour 0, 09 sur 900 ft/s

0, 09/900x100 = 0, 01% d'erreur uniquement

Pour 1500 ft/s1500 ft/s soit 18000 /s 3x1/10800 =166.66 us

166.66 us / 50 ns = 3333.333 tic Timer 1 sera à 3333

uC fait le calcul et 1500.15 s'affichera au lieu de 1500 c'est.15/1500x100= 0, 01%

Pour 9000 pi/s

9000 x 12 = 180000 pouces/s

3x1/180000 = 27.7777 us

27,77 us / 50 ns = 555, 555

Timer1 sera à 555 et 4/(1/555x50ns) sera affiché 9009, 00 sera affiché

Ici l'erreur est de 9 pieds/s sur 9000 = 0, 1%

Comme vous pouvez le voir, le % d'erreur augmente lorsque la vitesse est plus élevée. Mais reste < 0,1%

Ces résultats sont très bons.

Mais la précision n'est pas linéaire. A 10000 ft/s c'est 0, 1 %. La bonne nouvelle, c'est que nous ne testons jamais une pastille de 10 000 pi/s.

Une autre chose à garder à l'esprit. Lorsqu'une interruption se produit, uC termine toujours la dernière instruction avant d'entrer dans l'interruption. C'est normal et tous les uC le font. Si vous codez arduino, en C ou même en assembleur. La plupart du temps, vous attendrez dans une boucle éternelle… pour attendre. Le problème c'est que dans une boucle on passe 2 cycles. Normalement, ce n'est pas important. Mais dans notre cas. OUI, chaque tic est important. Regardons une boucle infinie:

assembleur:

boucle:

boucle rjmp

En C:

tandis que (1){}

En fait, le compilateur C utilise l'instruction rjmp. RJMP est de 2 cycles.

Cela signifie que si l'interruption se produit au premier cycle, nous perdons un cycle (tic) (50ns).

Ma façon de résoudre ce problème consiste à ajouter de nombreuses instructions nop dans la boucle. NOP est 1 cycle.

boucle:

non

non

non

non

non

boucle rjmp

Si l'interruption se produit sur une instruction nop. On va bien. Si cela se produit au deuxième cycle de l'instruction rjmp, tout va bien. Mais si cela se produit lors du premier cycle de l'instruction rjmp, nous perdrons un tic. Oui, c'est juste 50 ns mais comme vous pouvez le voir ci-dessus, 50 ns sur 3 pouces n'est pas rien. Nous ne pouvons pas corriger cela par logiciel car nous ne savons pas quand exactement l'interruption se produit. C'est pourquoi dans le code, vous verrez beaucoup d'instructions nop. Maintenant, je suis presque sûr que l'interruption tombera sur une instruction nop. Si j'ajoute 2000 nop, j'ai 0, 05% à tomber sur l'instruction rjmp.

Une autre chose à garder à l'esprit. Lorsque l'interruption se produit. Le compilateur fait beaucoup de push et pull. Mais c'est toujours le même numéro. Alors maintenant, nous pouvons faire une correction logicielle.

Pour conclure là-dessus:

La précision pour un plomb moyen de 1000 ft/s est de 0, 01%

100 fois plus précis que les autres 1% du marché. La fréquence est plus élevée et avec TCXO, plus précise

Par exemple, 1% de 1000 ft/s est plus ou moins 10 ft/s. C'est une énorme différence.

Étape 3: Schéma et liste de pièces

Schéma et liste de pièces
Schéma et liste de pièces

Ici, j'ai implémenté mon circuit marche/arrêt à un bouton-poussoir. (voir mon dernier instructable) Ce circuit est très pratique et fonctionne très bien.

J'utilise un atmega328p. Celui-ci est programmé en C.

L'affichage est un lcd standard 2 lignes compatible HD44780. Le mode 4 bits est utilisé.

Un régulateur 3.3v est utilisé pour fournir une tension au TCXO 20mhz.

D1 est pour le rétroéclairage LCD. Optionnel. La batterie durera plus longtemps si vous n'installez pas D1.

Toutes les résistances et capuchons sont en 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

Afficheur lcd 2 lignes HD44780. Pas besoin d'acheter le module i2c.

Capteurs:

2x émetteur OP140A

2x récepteur OPL530

Encodeur: PEC11R-4215K-S0024 *N'oubliez pas d'ajouter 4x 10k résistances et 2x.01uf pour faire le filtre de l'encodeur. voir photo ci-dessous

Étape 4: Fichier Gerber PCB

Fichier Gerber PCB
Fichier Gerber PCB
Fichier Gerber PCB
Fichier Gerber PCB
Fichier Gerber PCB
Fichier Gerber PCB
Fichier Gerber PCB
Fichier Gerber PCB

Voici les fichiers gerber

Étape 5: soudez votre circuit imprimé

Soudez votre PCB
Soudez votre PCB
Soudez votre PCB
Soudez votre PCB
Soudez votre PCB
Soudez votre PCB

Avec l'aide du schéma, soudez tous vos composants sur le PCB. Chaque partie ou écrite sur pcb, r1, r2… et ainsi de suite.

Je n'ai pas installé D1. C'est pour le rétro-éclairage LCD. C'est beau mais la durée de vie de la batterie est affectée. J'ai donc choisi de garder le rétro-éclairage LCD éteint.

Étape 6: Programmation de l'Atmega328p

Programmation de l'Atmega328p
Programmation de l'Atmega328p

Vérifiez ici à l'étape 12 pour programmer l'atmega328p. Je fournis ici le fichier.hex pour cela.

Voici le programme avrdude prêt à programmer le fichier batch. Cliquez uniquement sur le programme usbasp.bat et votre usbasp s'installera correctement. Tout se fera automatiquement, y compris le fusible.

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

Dans ce projet, je partage également le code source C. Sachez que certaines notes peuvent être en français.https://1drv.ms/u/s!AnKLPDy3pII_vXUMXHdxajwGRFJx?e…

Étape 7: écran LCD

Affichage LCD
Affichage LCD
Affichage LCD
Affichage LCD

Installez du ruban adhésif et connectez le pcb et l'écran LCD ensemble

Étape 8: Fichier STL

Fichier STL
Fichier STL
Fichier STL
Fichier STL
Fichier STL
Fichier STL

fichier stl

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

Un support est nécessaire pour l'enceinte, le tube du capteur et le support de fusil.

J'ai tout imprimé à.2 mm de haut.

Étape 9: ENCODEUR ROTATIF

CODEUR ROT-t.webp
CODEUR ROT-t.webp
CODEUR ROT-t.webp
CODEUR ROT-t.webp
CODEUR ROT-t.webp
CODEUR ROT-t.webp

Cet encodeur rotatif est connecté au connecteur ISP. il est utilisé pour changer le poids des granulés et pour allumer et éteindre l'appareil.

vcc isp pin 2 (résistance de tirage)

La borne A (jaune) va à la broche 1 du FAI

La borne B (verte) va à la broche 3 du FAI

Borne C (terre) ISP broche 6

J'ajoute 2 images pour voir la différence entre avoir un filtre et pas de filtre. Vous pouvez facilement voir la différence entre les deux.

Le bouton poussoir va au connecteur pcb SW.

Étape 10: Tuyau de capteur

Tuyau de capteur
Tuyau de capteur
Tuyau de capteur
Tuyau de capteur
Tuyau de capteur
Tuyau de capteur

IMPORTANT:

Le tuyau du capteur doit être noir et le récepteur du capteur doit être masqué

Mes premières tentatives ont été d'avoir une belle pipe rouge. Mais c'est délicat ! Cela ne fonctionnait pas du tout. J'ai compris que la lumière extérieure était entrante, le plastique et le capteur du récepteur étaient toujours allumés.

Pour avoir un bon résultat, je n'avais pas le choix de changer la couleur en noir.

Installez le récepteur sur le dessus. Et cachez le plastique transparent avec de la peinture noire, du ruban adhésif ou de la gomme, du silicone noir.

Installez l'émetteur en bas. Vérifiez avec un stylo si les capteurs répondent bien. Peut-être faudra-t-il agrandir un peu le trou de l'émetteur. cela dépendra de l'étalonnage de votre imprimante.

J'ai aussi un meilleur résultat à l'ombre. Évitez la lumière directe du soleil.

Étape 11: Alternative au tuyau de capteur

Alternative au tuyau de capteur
Alternative au tuyau de capteur
Alternative au tuyau de capteur
Alternative au tuyau de capteur

Si vous n'avez pas d'imprimante 3D, vous pouvez faire de même avec un tuyau en cuivre. Cela fonctionnera très bien. La chose difficile à faire est le trou à exactement 3 pouces et le récepteur et l'émetteur doivent être alignés.

Étape 12: Une pastille sur l'oscilloscope et l'étalonnage

Une pastille sur l'oscilloscope et l'étalonnage
Une pastille sur l'oscilloscope et l'étalonnage

Il s'agit d'une vraie pastille qui passe jeter le tuyau. La sonde 1 jaune correspond au capteur 1. La sonde 2 violette correspond au capteur 2.

Le temps/div est de 50 us.

On peut compter 6 divisions de 50us. 50 us x 6 = 300 us (pour 3 pouces). 300 us x 4 = 1,2 ms pour 1 pied

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

Nous pouvons également voir que le capteur est normalement à 5v. Et pouvons-nous bloquer la lumière de l'émetteur, le capteur tombe à 0.

C'est la façon dont uC démarre et arrête son compteur (minuterie1)

Mais pour savoir exactement si la vitesse était précise, j'avais besoin d'un moyen de la mesurer.

Pour effectuer un étalonnage logiciel et tester la précision de cet appareil, j'ai utilisé un oscillateur de référence de 10 MHz. Voir mon GPSDO sur d'autres instructable.

J'alimente un autre atmega328 avec ce 10 mhz. Et programmez celui-ci en assembleur pour qu'il m'envoie 2 impulsions à chaque fois que j'appuie sur un bouton pour simuler une pastille. Exactement comme nous l'avons vu sur la photo, mais au lieu d'avoir une vraie pastille, c'était un autre UC qui m'envoyait 2 impulsions.

Chaque fois que le bouton-poussoir a été enfoncé, 1 impulsion a été envoyée et exactement 4 ms après une autre impulsion a été envoyée.

De cette façon, je suis capable d'équilibrer le compilateur logiciel pour avoir toujours 1000 ft/s affichés.

Étape 13: Plus…

Suite…
Suite…
Suite…
Suite…

C'est mon premier prototype de 2010.

Pour toute question ou rapport d'erreur vous pouvez m'envoyer un email. Anglais ou français. Je ferai de mon mieux pour aider.

Conseillé: