תוכן עניינים:

כרונוגרף של רובה אוויר, כרונוסקופ. מודפס בתלת מימד: 13 שלבים
כרונוגרף של רובה אוויר, כרונוסקופ. מודפס בתלת מימד: 13 שלבים

וִידֵאוֹ: כרונוגרף של רובה אוויר, כרונוסקופ. מודפס בתלת מימד: 13 שלבים

וִידֵאוֹ: כרונוגרף של רובה אוויר, כרונוסקופ. מודפס בתלת מימד: 13 שלבים
וִידֵאוֹ: Walther Rotex air rifle power test with FX chronograph #airgun #pcpairgun 2024, יולי
Anonim
Image
Image
תכונה
תכונה

היי לכולם, היום נבקר שוב בפרוייקט שעשיתי בשנת 2010. כרונוגרף של רובה אוויר. מכשיר זה יגיד לך את מהירות הטיל. כדור פלסטיק, BB או אפילו אוויר רך BB פלסטיק.

בשנת 2010 קניתי רובה אוויר בשביל הכיף. פגעתי בפחיות, בקבוקים, כיוון. אני יודע שהמהירות של האקדח הזה הייתה מקסימלית של 500 רגל לשנייה. כי זה חוק הקנדה. יש רובה אוויר חזקה יותר אבל אתה צריך להיות בעל רישיון ולא תוכל לקנות את הדבר הזה בוולמארט.

עכשיו היה לי רישיון זה, יכולתי לרכוש עוד אחד. אבל סיפור קצר, אותו אקדח היה זמין לארה ב במהירות של 1000 רגל/שניות. מה!? אותו אקדח? כן … בקנדה, לשבץ יש חור בה והמעיין רך יותר.

הדבר הראשון שצריך לעשות הוא למלא את החור. זה מה שעשיתי עם הלחמה. הדבר הבא לעשות הוא להזמין קפיץ חלופי. אבל רגע … מה המהירות הנוכחית של הצעצוע החדש שלי? האם האביב באמת נחוץ? אני לא יודע ואני רוצה לדעת. אני רוצה לדעת עכשיו אבל איך?

בגלל זה עשיתי את הפרויקט הזה. כל מה שהייתי צריך זה 2 חיישנים, uC ותצוגה ואנחנו בעסקים.

בשבוע שעבר ראיתי את הכרונוגרף הכחול הישן שלי על מדף ואני מדבר לעצמי: "למה שלא תשתף את זה ותעשה עם זה הוראה?" ואגב, נוכל להעלות את הדיוק ולהוסיף מחוון סוללה. שים כפתור 1 במקום 2 להפעלה/כיבוי. כל הר משטח. אנחנו עכשיו בשנת 2020!

אז הנה זה … נתחיל!

שלב 1: תכונה

-מהירות גלולה

-מְהִירוּת

ריצה של -20 מגה -הרץ, דיוק עצום

-כיבוי אוטומטי

-מתח הסוללה מוצג

-זמין סכמטי

-pcb זמין

-רשימת חלקים זמינה

-STL זמין

-קוד C זמין

שלב 2: תורת הפעולה והדיוק

-יש לנו UC פועל במהירות 20Mhz. המתנד המשמש הוא TCX0 +-2.5 עמודים לדקה

-יש לנו 2 חיישנים במרחק של 3 סנטימטרים אחד מהשני.

-הקליע פגע בחיישן הראשון. uC להתחיל לספור (טיימר 1)

-הקליע פגע בחיישן השני. uC תפסיק לספור.

-בדוק את ערך טיימר 1, בצע את החישוב והמהירות ומהירות התצוגה.

אני משתמש בטיימר 16 סיביות + דגל הצפה tov1. סה"כ 17 ביט עבור 131071 "tic" לספירה מלאה.

1/20 mhz = 50 ns. כל טיק הוא 50 ns

131071 x 50 ns = 6.55355 אלפיות השנייה לעשות 3 אינץ '.

6.55355 ms x 4 = 26.21 ms לעשות 12 אינץ '.

1/26.21 ms = 38.1472637 רגל/שנייה

זו המהירות האיטית ביותר שהמכשיר יכול למדוד.

למה 20 מגה -הרץ? למה לא להשתמש ב 8 מגה -הרץ הפנימי או אפילו קריסטל?

המכשיר הראשון שלי היה באמצעות המתנד הפנימי. עבד אבל זה לא היה מדויק מספיק. הווריאציה עצומה מדי. קריסטל עדיף אך הטמפרטורה בתדירות משתנה. אנחנו לא יכולים לעשות מכשיר מדידה מדויק עם זה. כמו כן, ככל שהתדירות גבוהה יותר, יותר טיק ייחשב לאותה מהירות. הדגימה תהיה טובה יותר עם דיוק טוב מאוד. מכיוון שלא ניתן לחלק טיק, ההפסד הוא קטן אם מחזור העבודה הוא מהיר.

ב 20 MHz יש לנו צעדים של 50 ns. האם אנו יודעים כמה המדויק הוא 50 ns עבור קליע במהירות של 38 רגל/שניות.

38.1472637 ft/s לחלק ב 131071 = 0, 000291042 רגל

0, 0003880569939956207 רגל x 12 = 0, 003492512 אינץ '

1/0, 003492512 = 286.37 ". במילה אחרת. במהירות 50 רגל/שניות יש לנו דיוק של +- 1/286" או +- 0, 003492512 אינץ '

אבל אם המתנד שלי הוא הגרוע ביותר ופועל במהירות 20 מגה -הרץ +2.5 עמודים לדקה האם זה בסדר? בוא נגלה…

2.5 עמודים לדקה של 20 000 000 הם: (20000000/1000000) x 2.5 = 20000050 הרץ

אז במקרה הגרוע ביותר יש לנו עוד 50 שעון על 20 מגה -הרץ. זה שעון 50 בשנייה אחת. כמה טיק יותר על טיימר 1 אם הגלולה עושה את אותה מהירות (38.1472637 רגל/שניות או 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 רגל/שניות

אז יש לנו 38.14735907 רגל/ש 'במקום 38.1472637 רגל/ש'

כעת אנו יודעים כי 2.5 עמודים לדקה אינם משפיעים על התוצאה.

להלן דוגמא למהירות שונה

למשך 1000 רגל/שניות

1000 רגל/ש x 12 הוא 12000 אינץ '/ש

שנייה אחת למשך 12000 "כמה זמן לעשות 3"? 3x1/12000 = 250 שניות

250 us / 50 ns = 5000 tic.

טיימר 1 יעמוד על 5000

uC בצע את החישוב ו -1000 רגל/שניות מוצג. בינתיים הכל טוב

למשך 900 רגל/שניות

900 רגל/שנייה זה 10800 אינץ 'לשנייה

3x1/10800 = 277.77 אנחנו

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

טיימר 1 יהיה בשעה 5555

uC בצע את החישוב ו- 900, 09 יוצג במקום 900

למה ? מכיוון שטיימר 1 נמצא ב- 5555 ו- 0, 5555 הולך לאיבוד. טייקר על טיימר אינו ניתן לחלוקה.

יש לנו שגיאה 0, 09 על 900 רגל/שניות

0, 09/900x100 = 0, 01% שגיאה בלבד

1500 רגל/ש 1500 רגל/ש 'הוא 18000 אינץ'/ש 3x1/10800 = 166.66 לנו

166.66 us / 50 ns = 3333.333 טייק טיימר 1 יהיה ב- 3333

uC בצע את החישוב ו- 1500.15 יוצג במקום 1500 זה.15/1500x100 = 0, 01%

למשך 9000 רגל לשנייה

9000 x 12 = 180000 אינץ 'לשנייה

3x1/180000 = 27.7777 לנו

27.77 us / 50 ns = 555, 555

טיימר 1 יהיה 555 ו -4/(1/555x50ns) יוצג 9009, 00 יוצג

כאן השגיאה היא 9 רגל/ש 'על 9000 = 0, 1%

כפי שאתה יכול לראות % השגיאה עולה כאשר המהירות גבוהה יותר. אבל הישאר <0.1%

התוצאות האלה טובות מאוד.

אבל הדיוק אינו לינארי. במהירות 10000 רגל/ש 'זה 0, 1 %. דבר חדש הוא שאנו אף פעם לא בודקים גלולה בגודל 10, 000 רגל/ש.

דבר נוסף שכדאי לזכור. כאשר מתרחשת הפרעה, uC תמיד מסיימת את ההוראה האחרונה לפני הכניסה להפסקה. זה נורמלי וכל UC עושה את זה. אם אתה מקודד arduino, ב- C או אפילו במכלול. רוב הזמן תחכו בלופ לנצח … לחכות. הבעיה היא שבלולאה אנו מבלים 2 מחזורים. בדרך כלל זה לא חשוב. אבל במקרה שלנו. כן, כל טיק חשוב. בואו נסתכל בלולאה אינסופית:

מכלול:

לוּלָאָה:

לולאת rjmp

ב- C:

בעוד (1) {}

למעשה מהדר C משתמש בהוראת rjmp. RJMP הוא 2 מחזורים.

זה אומר שאם ההפרעה מתרחשת במחזור הראשון, אנו מאבדים מחזור אחד (טיק) (50ns).

הדרך שלי לתקן זאת היא להוסיף הרבה הוראות nop בלולאה. NOP הוא מחזור אחד.

לוּלָאָה:

לא

לא

לא

לא

לא

לולאת rjmp

אם ההפרעה מתרחשת בהוראה לא. אנחנו בסדר. אם זה קורה במחזור השני של הוראת rjmp אנחנו בסדר. אבל אם זה יקרה במחזור הראשון של הוראת rjmp, נאבד תיקון אחד. כן זה רק 50 ns אבל כמו שאתה יכול לראות למעלה, 50 ns על 3 אינץ 'זה לא כלום. איננו יכולים לתקן זאת באמצעות תוכנה מכיוון שאיננו יודעים מתי בדיוק ההפרעה מתרחשת. לכן בקוד תראה הרבה הוראות לא. עכשיו אני די בטוח שההפסקה תיפול בהוראה לא. אם אני מוסיף 2000 nop יש לי 0, 05% ליפול על הוראת rjmp.

דבר נוסף שכדאי לזכור. כאשר מתרחשת הפרעה. המהדר עושה הרבה דחיפה ומשיכה. אבל זה תמיד אותו מספר. אז עכשיו נוכל לבצע תיקון תוכנה.

לסיכום בנושא:

הדיוק בכדור ממוצע של 1000 רגל/שניות הוא 0, 01%

100x יותר מדויק מאשר 1% אחרים בשוק. התדירות גבוהה יותר ועם TCXO, מדויק יותר

לדוגמא, 1% מה- 1000 רגל/ש 'הוא פחות או יותר 10 רגל/שנייה. זה הבדל עצום.

שלב 3: רשימת סכמטים וחלקים

רשימת סכמטים וחלקים
רשימת סכמטים וחלקים

כאן יישמתי את מעגל ההפעלה/כיבוי של כפתור הלחיצה האחד שלי. (עיין במדריך האחרון שלי) המעגל הזה שימושי מאוד ועובד טוב מאוד.

אני משתמש ב- atmega328p. זה מתוכנת ב- C.

התצוגה תואמת HD44780 LCD סטנדרטית בעלת 2 קווים. נעשה שימוש במצב 4 ביט.

וסת 3.3v משמש לספק מתח ל- TCXO 20mhz.

D1 מיועד לתאורה אחורית lcd. אופציונאלי. הסוללה תחזיק יותר אם לא תתקין D1.

כל הנגדים והמכסים הם באריזה 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

צג lcd 2 line HD44780. אין צורך לרכוש את מודול i2c.

חיישנים:

2x פולט OP140A

2x מקלט OPL530

מקודד: PEC11R-4215K-S0024 *אל תשכח להוסיף נגדים 4x 10k ו- 2x.01uf לביצוע מסנן המקודד. ראה תמונה למטה

שלב 4: קובץ Gerber PCB

קובץ גרבר PCB
קובץ גרבר PCB
קובץ גרבר PCB
קובץ גרבר PCB
קובץ גרבר PCB
קובץ גרבר PCB
קובץ גרבר PCB
קובץ גרבר PCB

להלן קבצי גרבר

שלב 5: הלחם את המחשב האישי שלך

הלחמה המחשב האישי שלך
הלחמה המחשב האישי שלך
הלחמה המחשב האישי שלך
הלחמה המחשב האישי שלך
הלחמה המחשב האישי שלך
הלחמה המחשב האישי שלך

בעזרת סכמטי, הלחם את כל הרכיב שלך במחשב הלוח. כל חלק או כתוב על pcb, r1, r2 … וכן הלאה.

אין לי התקנה של D1. זה מיועד לתאורה האחורית של lcd. זה יפה אבל חיי הסוללה מושפעים. אז אני בוחר להשאיר את האור האחורי של ה- LCD כבוי.

שלב 6: תכנות ה- Atmega328p

תכנות ה- Atmega328p
תכנות ה- Atmega328p

בדוק כאן בשלב 12 לתכנת ה- atmega328p. אני מספק כאן את קובץ ה- hex עבור זה.

להלן תוכנית avrdude מוכנה לתכנת קובץ אצווה. לחץ רק על התוכנית usbasp.bat וה- usbasp שלך מותקן כראוי. הכל יעשה באופן אוטומטי כולל ביט נתיך.

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

בפרויקט זה אני משתף גם את קוד המקור C. שים לב כי הערה כלשהי בו יכולה להיות בצרפתית. Https://1drv.ms/u/s! AnKLPDy3pII_vXUMXHdxajwGRFJx? E…

שלב 7: תצוגת LCD

תצוגת אל סי די
תצוגת אל סי די
תצוגת אל סי די
תצוגת אל סי די

התקן קצת קלטת וחבר pcb ו- lcd יחד

שלב 8: קובץ STL

קובץ STL
קובץ STL
קובץ STL
קובץ STL
קובץ STL
קובץ STL

קובץ stl

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

יש צורך בתמיכה במארז, צינור חיישן ומחזיק רובה.

הדפסתי את כולם בגובה.2 מ מ.

שלב 9: מקודד סיבובי

מקודד סיבובי
מקודד סיבובי
מקודד סיבובי
מקודד סיבובי
מקודד סיבובי
מקודד סיבובי

מקודד סיבובי זה מחובר למחבר ה- ISP. הוא משמש לשינוי משקל הגלולה ולהדלקה וכיבוי של המכשיר.

סיכת ISP ISP 2 (הנגד למעלה)

מסוף A (צהוב) עובר לסיכה של ספק האינטרנט 1

מסוף B (ירוק) עבור לפין ספק שירותי האינטרנט 3

מסוף C (gnd) סיכת ISP 6

אני מוסיף 2 תמונות כדי לראות את ההבדל בין אם יש מסנן לעומת אין מסנן. אתה יכול לראות בקלות את ההבדל בין שניהם.

כפתור הלחיצה עובר למחבר ה- PCB SW.

שלב 10: צינור חיישן

צינור חיישן
צינור חיישן
צינור חיישן
צינור חיישן
צינור חיישן
צינור חיישן

חָשׁוּב:

צינור החיישן חייב להיות שחור ומקלט החיישן חייב להיות מוסתר

הניסיונות הראשונים שלי היו לקבל צינור אדום ויפה. אבל זה מסובך! זה לא עבד בכלל. הבנתי שאור חיצוני נכנס לזרוק את חיישן הפלסטיק והמקלט תמיד דולק.

כדי לקבל תוצאה טובה לא הייתה לי ברירה לשנות את הצבע לשחור.

התקן את המקלט למעלה. והסתירו את הפלסטיק הצלול עם צבע שחור, סרט או מסטיק, סיליקון שחור.

התקן פולט בתחתית.. בדוק בעט אם החיישנים מגיבים היטב. אולי יהיה צורך להגדיל מעט את החור של הפולט. זה יהיה תלוי בכיול המדפסת שלך.

יש לי גם תוצאה טובה יותר בצל. הימנע מאור שמש ישיר.

שלב 11: אלטרנטיבה לצינור חיישן

אלטרנטיבה לצינור חיישן
אלטרנטיבה לצינור חיישן
אלטרנטיבה לצינור חיישן
אלטרנטיבה לצינור חיישן

אם אין לך מדפסת תלת מימד, אתה יכול לעשות את אותו הדבר עם צינור נחושת. זה יעבוד טוב מאוד. דבר קשה לעשות הוא החור בגובה 3 סנטימטרים בדיוק והמקלט והפולט חייבים להיות מיושרים.

שלב 12: גלולה על אוסצילוסקופ וכיול

גלולה על אוסצילוסקופ וכיול
גלולה על אוסצילוסקופ וכיול

זוהי גלולה אמיתית שעוברת לזרוק את הצינור. בדיקה 1 צהוב הוא חיישן 1. בדיקה 2 סגולה היא חיישן 2.

זמן/div הוא 50 us.

אנו יכולים לספור 6 חטיבות של 50us. 50 us x 6 = 300 us (עבור 3 אינץ '). 300 us x 4 = 1.2 ms עבור 1 רגל

1/1.2ms = 833.33 רגל/שנייה

אנו יכולים גם לראות כי החיישן נמצא בדרך כלל ב -5 וולט. והאם נוכל לחסום את אור הפולט, החיישן נופל ל -0.

זו הדרך שבה uC מתחיל ועוצר את הקונטר שלו (טיימר 1)

אבל כדי לדעת בדיוק אם המהירות מדויקת, הייתי צריך דרך להעריך זאת.

כדי לבצע כיול תוכנה ולבדוק את הדיוק של מכשיר זה, השתמשתי במתנד הפניה של 10 מגה -הרץ. עיין ב- GPSDO שלי בהנחיות אחרות.

אני מאכיל עוד atmega328 עם 10 מגה -הרץ הזה. ותכנת את זה במאסף כדי לשלוח לי 2 פולסים בכל פעם שאני לוחץ על כפתור כדי לדמות גלולה. בדיוק כמו שראינו בתמונה אבל במקום זאת כדי לקבל גלולה אמיתית זה היה עוד uC ששלח לי 2 פולסים.

בכל פעם שנלחץ על כפתור לחיצה נשלח דופק אחד ודופק 4 אלפיות השנייה לאחר שליחת דופק נוסף.

בדרך זו, אוכל לאזן את מהדר התוכנה כך שיוצגו תמיד 1000 רגל/שניות.

שלב 13: עוד…

יותר…
יותר…
יותר…
יותר…

זהו האב טיפוס הראשון שלי לשנת 2010.

לכל שאלה או דוח שגיאות אתה יכול לשלוח לי דוא ל. אנגלית או צרפתית. אעשה כמיטב יכולתי לעזור.

מוּמלָץ: