Spisu treści:
- Krok 1: funkcja
- Krok 2: Teoria działania i dokładności
- Krok 3: Schemat i lista części
- Krok 4: Plik Gerber PCB
- Krok 5: Przylutuj swoją płytkę drukowaną
- Krok 6: Programowanie Atmega328p
- Krok 7: Wyświetlacz LCD
- Krok 8: Plik STL
- Krok 9: KODER OBROTOWY
- Krok 10: Rurka czujnika
- Krok 11: Alternatywa dla rury czujnika
- Krok 12: Pellet na oscyloskopie i kalibracja
- Krok 13: Więcej…
Wideo: Chronograf karabinu pneumatycznego, chronoskop. Druk 3D: 13 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Cześć wszystkim, dzisiaj powrócimy do projektu, który wykonałem w 2010 roku. Chronograf karabinu pneumatycznego. To urządzenie powie ci prędkość pocisku. Pellet, BB lub nawet miękka plastikowa kulka BB.
W 2010 roku dla zabawy kupiłem wiatrówkę. Uderzał w puszki, butelki, celował. Wiem, że prędkość tego działa wynosiła maksymalnie 500 stóp/s. Ponieważ takie jest prawo kanadyjskie. Dostępne są mocniejsze wiatrówki, ale musisz mieć licencję i nie możesz ich kupić w Walmart.
Teraz miałem tę licencję, mogłem kupić kolejną. Krótko mówiąc, ta sama broń była dostępna w USA z prędkością 1000 stóp/s. CO!? Ten sam pistolet ? tak… W Kanadzie uderzenie ma dziurę, a sprężyna jest bardziej miękka.
Pierwszą rzeczą do zrobienia jest wypełnienie dziury. To właśnie zrobiłem z lutem. Następną rzeczą do zrobienia było zamówienie sprężyny zastępczej. Ale czekaj… jaka jest obecna prędkość mojej nowej zabawki? Czy wiosna jest naprawdę potrzebna? Nie wiem i chcę wiedzieć. Chcę wiedzieć teraz, ale jak?
Dlatego zrobiłem ten projekt. Wszystko, czego potrzebowałem, to 2 czujniki, uC i wyświetlacz i jesteśmy w biznesie.
W zeszłym tygodniu zobaczyłem mój stary niebieski chronograf na półce i mówię do siebie: „Dlaczego się tym nie podzielisz i nie zrobisz z nim instrukcji?” A tak przy okazji, moglibyśmy zwiększyć dokładność i dodać wskaźnik baterii. Umieść 1 przycisk zamiast 2, aby włączyć/wyłączyć. Wszystko do montażu powierzchniowego. Jesteśmy teraz w 2020 roku!
A więc jest… zacznijmy!
Krok 1: funkcja
-Prędkość pelletu
-Prędkość
-20 mhz działa, ogromna dokładność
-Autowyłączanie
-Wyświetlane napięcie akumulatora
-dostępny schemat
-płyta dostępna
-Dostępna lista części
-Dostępne STL
-Dostępny kod C
Krok 2: Teoria działania i dokładności
- Mamy uC działający na 20 MHz. Zastosowany oscylator to TCX0 +-2,5 ppm
-Mamy 2 czujniki oddalone od siebie o 3 cale.
- Pocisk trafił w pierwszy czujnik. uC rozpocząć liczenie (timer1)
- Pocisk trafił w drugi czujnik. uC przestań liczyć.
-uC sprawdź wartość timera1, wykonaj obliczenia i wyświetl prędkość i prędkość.
Używam 16-bitowego timera1 + flaga przepełnienia tov1. Łącznie 17 bitów dla 131071 „tic” dla pełnej liczby.
1/20 MHz = 50 ns. Każdy tik to 50ns
131071 x 50 ns = 6,55355 ms, aby zrobić 3 cale.
6,55355 ms x 4 = 26,21 ms do wykonania 12 cali.
1/26.21 ms = 38.1472637 stóp/s
Jest to najwolniejsza prędkość, jaką urządzenie może zmierzyć.
Dlaczego 20 MHz? Dlaczego nie używać wewnętrznego 8 MHz lub nawet kryształu?
Moje pierwsze urządzenie korzystało z wewnętrznego oscylatora. Działał, ale ten nie był wystarczająco dokładny. Zróżnicowanie jest zbyt duże. Kryształ jest lepszy, ale temperatura ma różną częstotliwość. Nie możemy z tym zrobić dokładnego urządzenia pomiarowego. Ponadto im większa częstotliwość, tym więcej tików będzie liczonych dla tej samej prędkości. Próbkowanie będzie lepsze, aby mieć bardzo dobrą dokładność. Ponieważ tik nie jest podzielny, strata jest niewielka, jeśli cykl pracy jest szybki.
Przy 20 MHz mamy kroki co 50 ns. Czy wiemy, jaka jest dokładność 50 ns dla pocisku przy 38 ft/s.
38,1472637 stóp/s podzielić przez 131071 = 0,000291042 stóp
0,0003880569939956207 stóp x 12 = 0,003492512 cali
1/0, 003492512 = 286,37". Innymi słowy. Przy 50 ft/s mamy dokładność +- 1/286" lub +- 0, 003492512 cali
Ale jeśli mój oscylator jest najgorszy i działa z prędkością 20 mhz + 2,5 ppm to jest ok ? Dowiedzmy Się…
2,5 ppm z 20 000 000 to: (20000000/1000000) x 2,5 = 20000050 Hz
W najgorszym przypadku mamy 50 zegarów więcej na 20 MHz. To 50 zegar na 1 sekundę. Ile więcej tików na timerze1, jeśli śrut porusza się z tą samą prędkością (38,1472637 stóp/s lub 6,55ms)?
1/200050 = 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 stóp/s
Mamy więc 38.14735907 stóp/s zamiast 38.1472637 stóp/s
Teraz wiemy, że 2,5 ppm nie wpływa na wynik.
Oto kilka przykładów różnych prędkości
Dla 1000 stóp/s
1000 stóp/s x 12 to 12000 cali/s
1 sekunda na 12000" ile czasu zrobić 3" ? 3x1/12000 = 250 us sekund
250 us / 50 ns = 5000 tik.
Timer1 będzie na 5000
uC wykonaj matematykę i wyświetli się 1000 ft/s. Jak na razie dobrze
Dla 900 stóp/s
900 ft/s to 10800 /s
3x1/10800 = 277,77 nas
277, 77 ns / 50 ns = 5555, 5555 tik
Zegar 1 będzie na 5555
uC zrób matematykę, a 900, 09 zostanie wyświetlony zamiast 900
Czemu ? ponieważ zegar 1 ma wartość 5555, a 0, 5555 jest stracone. Tic na zegarze nie można podzielić.
Mamy błąd 0, 09 na 900 ft/s
0, 09/900x100 = 0, 01% tylko błąd
Dla 1500 ft/s 1500 ft/s to 18000 /s 3x1/10800 = 166,66 us
166,66 us / 50 ns = 3333,333 tik Timer 1 będzie na 3333
uC zrób matematykę, a zamiast 1500 wyświetli się 1500,15 to.15/1500x100= 0, 01%
Dla 9000 stóp/s
9000 x 12 = 180000 cali / s
3x1/180000 = 27,7777 nas
27,77 nas / 50 ns = 555, 555
Timer1 będzie ustawiony na 555 i 4/(1/555x50ns) zostanie wyświetlony 9009, zostanie wyświetlony 00
Tutaj błąd wynosi 9 stóp/s na 9000 = 0, 1%
Jak widać błąd % rośnie, gdy prędkość jest wyższa. Ale pozostań < 0,1%
To bardzo dobre wyniki.
Ale dokładność nie jest liniowa. Przy 10000 ft/s jest to 0, 1%. Dobra nowość jest taka, że nigdy nie testujemy śrutu o prędkości 10 000 ft/s.
Kolejna rzecz, o której należy pamiętać. Gdy wystąpi przerwanie, uC zawsze kończy ostatnią instrukcję przed wejściem w przerwanie. Jest to normalne i wszystkie uC to robią. Jeśli kodujesz arduino, w C lub nawet asemblerze. Przez większość czasu będziesz czekać w nieskończonej pętli… czekać. Problem w tym, że w pętli spędzamy 2 cykle. Zwykle to nie jest ważne. Ale w naszym przypadku. TAK, każdy tik jest ważny. Spójrzmy na nieskończoną pętlę:
monter:
pętla:
pętla rjmp
W C:
podczas gdy (1){}
W rzeczywistości kompilator C używa instrukcji rjmp. RJMP to 2 cykle.
Oznacza to, że jeśli przerwanie nastąpi w pierwszym cyklu, tracimy jeden cykl(tic) (50ns).
Moim sposobem, aby to naprawić, jest dodanie wielu instrukcji nop w pętli. NOP to 1 cykl.
pętla:
nop
nop
nop
nop
nop
pętla rjmp
Jeśli przerwanie nastąpi w instrukcji nop. Jesteśmy OK. Jeśli zdarzy się to w drugim cyklu instrukcji rjmp, wszystko jest w porządku. Ale jeśli zdarzy się to w pierwszym cyklu instrukcji rjmp, stracimy jeden tik. Tak, to tylko 50 ns, ale jak widać powyżej, 50 ns na 3 cale to nic. Nie możemy tego poprawić programowo, ponieważ nie wiemy, kiedy dokładnie nastąpi przerwanie. Dlatego w kodzie zobaczysz dużo instrukcji nop. Teraz jestem prawie pewien, że przerwanie padnie na instrukcję nop. Jeśli dodam 2000 nop, mam 0, 05%, aby spaść na instrukcję rjmp.
Kolejna rzecz, o której należy pamiętać. Kiedy zdarzy się przerwa. Kompilator robi wiele push i pull. Ale to zawsze ta sama liczba. Więc teraz możemy dokonać korekty oprogramowania.
Podsumowując:
Dokładność dla średniej wielkości śrutu 1000 ft/s wynosi 0,01%
100x dokładniejsze niż inne 1% na rynku. Częstotliwość jest wyższa, a dzięki TCXO dokładniejsza
Na przykład 1% z 1000 ft/s to mniej więcej 10 ft/s. To ogromna różnica.
Krok 3: Schemat i lista części
Tutaj zaimplementowałem mój obwód włączania / wyłączania jednego przycisku. (patrz moja ostatnia instrukcja) Ten obwód jest bardzo poręczny i działa bardzo dobrze.
Używam atmega328p. Ten jest zaprogramowany w C.
Wyświetlacz jest zgodny ze standardowym 2 liniami lcd HD44780. Używany jest tryb 4-bitowy.
Do dostarczania napięcia do TCXO 20mhz służy regulator 3.3v.
D1 służy do podświetlenia lcd. Opcjonalny. Bateria będzie działać dłużej, jeśli nie zainstalujesz D1.
Wszystkie rezystory i czapki są w opakowaniu 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
Wyświetlacz LCD 2-liniowy HD44780. Nie ma potrzeby kupowania modułu i2c.
Czujniki:
2x emiter OP140A
2x odbiornik OPL530
Enkoder: PEC11R-4215K-S0024 *Nie zapomnij dodać 4x 10k rezystorów i 2x.01uf, aby zrobić filtr enkodera. patrz zdjęcie poniżej
Krok 4: Plik Gerber PCB
Oto pliki gerber
Krok 5: Przylutuj swoją płytkę drukowaną
Za pomocą schematu przylutuj wszystkie komponenty do płytki drukowanej. Każda część lub napisana na pcb, r1, r2… i tak dalej.
Nie mam zainstalowanego D1. To jest dla podświetlenia lcd. Jest piękny, ale ma to wpływ na żywotność baterii. Więc zdecydowałem się wyłączyć podświetlenie lcd.
Krok 6: Programowanie Atmega328p
Sprawdź tutaj w kroku 12, aby zaprogramować atmega328p. Podaję tutaj plik.hex do tego.
Oto program avrdude gotowy do zaprogramowania pliku wsadowego. Wystarczy kliknąć na program usbasp.bat i twój usbasp zainstaluje się poprawnie. Wszystko zostanie wykonane automatycznie, łącznie z bitem bezpiecznika.
1drv.ms/u/s!AnKLPDy3pII_vXaGPIZKMXxaXDul?e…
W tym projekcie udostępniam również kod źródłowy C. Pamiętaj, że niektóre notatki mogą być w języku francuskim.https://1drv.ms/u/s!AnKLPDy3pII_vXUMXHdxajwGRFJx?e…
Krok 7: Wyświetlacz LCD
Zainstaluj taśmę i połącz ze sobą pcb i lcd
Krok 8: Plik STL
plik stl
1drv.ms/u/s!AnKLPDy3pII_vgezy0i0Aw3nD-xr?e…
Potrzebne jest wsparcie dla obudowy, rurki czujnika i uchwytu karabinu.
Wszystkie wydrukowałem na wysokości 0,2 mm.
Krok 9: KODER OBROTOWY
Ten enkoder obrotowy jest podłączony do złącza isp. służy do zmiany wagi pelletu oraz do włączania i wyłączania urządzenia.
vcc isp pin 2 (rezystor podciągający)
Terminal A (żółty) przejdź do pinu 1 ISP
Terminal B (zielony) idź do pinu 3 ISP
Terminal C (gnd) isp pin 6
Dodaję 2 zdjęcia, aby zobaczyć różnicę między posiadaniem filtra a brakiem filtra. Widać łatwo różnicę między nimi.
Przycisk przejść do złącza SW PCB.
Krok 10: Rurka czujnika
WAŻNY:
Rurka czujnika musi być czarna, a odbiornik czujnika musi być ukryty
Moje pierwsze próby polegały na posiadaniu pięknej czerwonej fajki. Ale to jest trudne! To w ogóle nie działało. Zorientowałem się, że światło zewnętrzne wpadało, a czujnik plastiku i odbiornika był zawsze włączony.
Aby uzyskać dobry wynik, nie miałem wyboru, aby zmienić kolor na czarny.
Zainstaluj odbiornik na górze. I ukryj przezroczysty plastik czarną farbą, taśmą lub gumą, czarnym silikonem.
Zainstaluj emiter na spodzie. Sprawdź długopisem, czy czujniki działają prawidłowo. Może trzeba będzie trochę powiększyć otwór emitera. będzie to zależeć od kalibracji drukarki.
Lepszy wynik mam też w cieniu. Unikaj bezpośredniego światła słonecznego.
Krok 11: Alternatywa dla rury czujnika
Jeśli nie masz drukarki 3D, możesz zrobić to samo z rurą miedzianą. Będzie działać bardzo dobrze. Trudną rzeczą do zrobienia jest otwór dokładnie 3 cale, a odbiornik i nadajnik muszą być ustawione w jednej linii.
Krok 12: Pellet na oscyloskopie i kalibracja
To prawdziwy śrut przechodzący przez rurę. Sonda 1 żółta to czujnik 1. Sonda 2 fioletowa to czujnik 2.
Czas na działkę to 50 nas.
Możemy liczyć 6 dywizji po 50us. 50 us x 6 = 300 us (dla 3 cali). 300 us x 4 = 1,2 ms na 1 stopę
1/1,2 ms = 833,33 stopy/s
Widzimy również, że czujnik jest normalnie na 5v. I czy możemy zablokować światło emitera, czujnik spadnie do 0.
To sposób, w jaki uC zaczyna i zatrzymuje swój licznik (timer1)
Ale żeby dokładnie wiedzieć, czy prędkość była dokładna, potrzebowałem sposobu, aby to zmierzyć.
Aby wykonać kalibrację oprogramowania i przetestować dokładność tego urządzenia, użyłem oscylatora odniesienia 10 MHz. Zobacz moje GPSDO na innych instrukcjach.
Zasilam kolejny atmega328 tym 10 mhz. I zaprogramuj ten w asemblerze, aby wysyłał mi 2 impulsy za każdym razem, gdy naciskam przycisk, aby symulować śrut. Dokładnie tak, jak widzieliśmy na zdjęciu, ale zamiast tego, aby mieć prawdziwy pellet, był inny uC wysyłający mi 2 impulsy.
Za każdym naciśnięciem przycisku wysyłany był 1 impuls i dokładnie 4 ms po wysłaniu kolejnego impulsu.
W ten sposób jestem w stanie zrównoważyć kompilator oprogramowania, aby zawsze wyświetlał 1000 ft/s.
Krok 13: Więcej…
To mój pierwszy prototyp z 2010 roku.
Na wszelkie pytania lub raport o błędach możesz do mnie wysłać e-mail. Angielski czy francuski. Zrobię co w mojej mocy, aby pomóc.
Zalecana:
Power Bank Poniżej 10 USD! - Zrób to sam - Druk 3D: 6 kroków (ze zdjęciami)
Power Bank Poniżej 10 USD! | Zrób to sam | Druk 3D: Dzisiejsza branża smartfonów produkuje o wiele za mocny telefon niż oczekiwaliśmy w latach 90-tych, ale jest tylko jedna rzecz, której im brakuje, tj. bateria, są najgorsze. A jedynym rozwiązaniem, jakie mamy teraz, jest power bank. W tym filmie pokażę, jak
Chronograf Nerf i lufa szybkostrzelności: 7 kroków
Chronograf Nerf i szybkostrzelność beczki: wprowadzenie Jako majsterkowicza zawsze bardzo satysfakcjonujące jest oglądanie liczbowych wyników majsterkowania. Wielu z nas zmodyfikowało wcześniej pistolety Nerf i kto nie lubi rzucać kawałkami piany po całym domu z prędkością ponad 100 klatek na sekundę? Po zmodyfikowaniu wielu Nerf g
Arduino dla Nerf: chronograf i licznik strzałów: 28 kroków (ze zdjęciami)
Arduino dla Nerf: Chronograf i licznik strzałów: Mój poprzedni Instructable obejmował podstawy wykrywania prędkości rzutki za pomocą emitera i detektora podczerwieni. Ten projekt idzie o krok dalej, wykorzystując płytkę drukowaną, wyświetlacz i baterie do stworzenia przenośnego licznika amunicji i chronografu
Cyfrowy kontroler zawieszenia pneumatycznego za pomocą Arduino i pilota do smartfona: 7 kroków (ze zdjęciami)
Cyfrowy kontroler zawieszenia pneumatycznego za pomocą Arduino i pilota do smartfona: Witam wszystkich. W tej instrukcji postaram się pokazać, jak zbudować kontroler zawieszenia pneumatycznego samochodu, używając jednego modułu arduino + bluetooth i do zdalnego dowolnego smartfona z Androidem +4.4, jest to również mój pierwszy instruktaż, więc niedźwiedź w
Amunicja do działka pneumatycznego LED z piłką do skakania. Łatwy: 6 kroków
Amunicja do działka pneumatycznego LED z piłką do skakania. To proste: to jest rozświetlona, skacząca piłka, którą stworzyłem, aby wystrzelić nocą z działka powietrznego. Możesz go użyć do innych rzeczy, ale używam ich tylko do strzelania z mojego działka powietrznego przeznaczonego do strzelania do skaczących piłe