סימולטור כיתה פתוח (אופניים) - OpenGradeSIM: 6 שלבים
סימולטור כיתה פתוח (אופניים) - OpenGradeSIM: 6 שלבים
Anonim
Image
Image
סימולטור כיתה פתוח (אופניים) - OpenGradeSIM
סימולטור כיתה פתוח (אופניים) - OpenGradeSIM
סימולטור כיתה פתוח (אופניים) - OpenGradeSIM
סימולטור כיתה פתוח (אופניים) - OpenGradeSIM

מבוא

חברת כושר ידועה בארה ב (וואהו) הוציאה לאחרונה מכשיר אימון מקורה נהדר שמעלה ומוריד את חזית האופניים על מאמן הטורבו בהתאם לדרגת הגבעה המדומה שהמשתמש רוכב עליה (ה- Kickr Climb).

נראה מדהים אבל למרבה הצער זה לא זמין לכולנו כיוון שתצטרכו 1) מאמן וואהו מהשורה הראשונה ו -2) 500 ₪ במזומן כדי להפוך אותו לשלך.

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

היחידה המסחרית מדמה -5% עד +20% אז רציתי להתקרב לזה אבל על 10% מהתקציב!

זה מתוכנן סביב ה- Tacx Neo שלי, אבל כל מאמן שמשדר את נתוני הכוח והמהירות שלו באמצעות ANT+ או BLE יכול לגרום לעבודה (אני מניח!).

מכיוון שבסיס הגלגלים באופני הכביש שלי מודד בדיוק 1000 מ"מ, הייתי צריך להרים את המזלגות ב -200 מ"מ כדי לדמות 20% (ראה תמונה) כך שמפעיל לינארי של 200 מ"מ יעשה. לא סביר שמשקל האופניים + הרוכב יעלה על 100 ק"ג ומאחר וזה מופץ בין הצירים והרוב על הגב 750N ירים 75 ק"ג ואמור להיות בסדר. מפעילים מהירים יותר זמינים תמורת יותר כסף אבל זה עלה לי בסביבות 20 ליש"ט ומנהל 10 מ"מ/שניות. מפעילים עם פוטנציומטרים שיכולים לשמש סרוו פשוט הם גם יקרים פי 2 עד 3.

אספקה

הדפסה תלת -ממדית (PLA או ABSetc) של חלק מתאם הציר דרך:

100 מ מ של 3/4 אינץ '10 צינורות אלומיניום SWG (למסגרת ציר דרך)

80 מ"מ של 6 מ"מ מוט נירוסטה

הדפסה תלת מימדית (PLA או ABSetc) של הנעל לחלק המפעיל הלינארי:

הדפס תלת מימד של המארז לגשר H

הדפסה תלת מימדית של מארז Arduino (גרסה 1 עם לוח מקשים) https://www.thingiverse.com/thing:3984911 (גירסה 2 כפי שמוצג (https://www.thingiverse.com/thing:3995976)

פיסת חיתוך בלייזר של אקריליק שקוף 3 מ"מ 32 על 38 מ"מ כדי למנוע ממך להזיע בכל האלקטרוניקה (עשה זאת, לא אידיאלי).

כמה בלוקים מדממים (מותאמים להשאיר את הרפידות בפנים) כדי למנוע ממך לדחוף בטעות את בוכנות הקליפר ממעצורי הדיסק של שימאנו בהתלהבותך

מפעיל לינארי 750N 200 מ מ נסיעה למשל Al03 מיני מפעילים ליניאריים מ

גשר L298N H (כמו:

הזמנת Arduino Nano IoT 33 www.rapidonline.com 73-4863

מקלדת ממברנה 2 מפתחות למשל

מודול דו-כיווני IIC I2C ממיר לוגי 5V עד 3.3V עבור Arduino למשל

ספק כוח 12V 3A DC - אלה לתאורת LED עובדים מצוין!

NPE CABLE Ant+ to BLE bridge

קליפ להדפסה תלת -ממדית לגשר CABLE

מודול תצוגת LCD בגודל 1.3 אינץ 'עם ממשק IIC I2C 128x32 3.3V

שלב 1: קצת מתמטיקה

קצת מתמטיקה
קצת מתמטיקה

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

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

ראשית השתמשתי ב https://bikecalculator.com המדהים כדי למצוא כמה נקודות נתונים לאובדן כוח התנגדות במהירויות אופייניות. אחר כך הפכתי את תחום המהירות לייצר מערכת יחסים לינארית ומצאתי את הקו המתאים ביותר. אם ניקח את משוואת הקו נוכל כעת לחשב הספק (W) מהתנגדות = (0.0102*(Speedkmh^2.8))+9.428.

קח את הכוח מההתנגדות מהעוצמה הנמדדת כדי לתת כוח של 'טיפוס'.

אנו מכירים את מהירות העלייה בק מ/שעה וממירים זאת ליחידות SI של m/s (מחלקים ב- 3.6).

השיפוע נמצא מתוך: שיפוע (%) = ((כוח טיפוס/(משקל ק"ג*גרם))/מהירות)*100

כאשר האצת נפילה חופשית g = 9.8m/s/s או 9.8 N/kg

שלב 2: קבל נתונים

קבל קצת נתונים
קבל קצת נתונים

חישוב השיפוע דורש מהירות ועוצמה. השתמשתי ב- Arduino Nano 33 IoT כדי להתחבר למאמן באמצעות BLE כדי לקבל זאת. נתקעתי מאוד בהתחלה מכיוון שגרסת ה- v.1.1.2 הנוכחית של ספריית ArduinoBLE המקורית עבור מודול זה אינה מטפלת באימות בשום צורה מה שאומר שרוב (?) חיישני BLE המסחריים לא יתאימו לזה.

הפתרון היה להשתמש בגשר NPE ANT+ to BLE NPE (https://npe-inc.com/cableinfo/) אשר שומר על ה- BLE המובנה של המאמן בחינם לאפליקציית האימון לתקשר ואינו דורש אימות ב- BLE צַד.

מאפיין ההספק של BLE די פשוט מכיוון שהספק בוואט כלול בתים השני והשלישי של הנתונים המועברים כמספר שלם של 16 סיביות (אנדיאן קטן כלומר אוקטט לפחות משמעותי ראשון). החלתי מסנן ממוצע נע כדי לתת כוח ממוצע לשלושה - בדיוק כמו שמחשב האופניים שלי מראה - מכיוון שזה פחות יציב.

if (powerCharacteristic.valueUpdated ()) {

// הגדר מערך לערך uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0, 0}; // קרא ערך לתוך מערך powerCharacteristic.readValue (holdpowervalues, 6); // הספק מוחזר כוואט במיקום 2 ו -3 (לוק 0 ו -1 הוא דגלים של 8 סיביות) בתים rawpowerValue2 = holdpowervalues [2]; // כוח הכי פחות סיגה בייט HEX rawpowerValue3 = holdpowervalues [3]; // כוח הכי הרבה סיגה בתים ב- HEX rawpowerTotal ארוך = (rawpowerValue2 + (rawpowerValue3 * 256)); // השתמש במסנן ממוצע נע כדי לתת '3s power' powerTrainer = movingAverageFilter_power.process (rawpowerTotal);

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

המאפיין מחזיר מערך 16 בתים שאינו מכיל מהירות או קצב. במקום זאת אתה מקבל סיבובים של גלגלים וסיבובים כנפיים (סיכומים) וזמן מאז נתוני האירוע האחרון ב -1024 שניות. אז עוד מתמטיקה. אה, והבתים לא תמיד קיימים ולכן יש בתור דגל בהתחלה. אה, והבתים הם HEX קטן של האנדיאן, אז אתה צריך לקרוא לאחור ולהכפיל את הבייט השני ב- 256, השלישי ב- 65536 וכו 'ואז להוסיף אותם יחד. כדי למצוא מהירות אתה צריך להניח היקף גלגל אופניים סטנדרטי כדי לדעת מרחק …

if (speedCharacteristic.valueUpdated ()) {

// ערך זה צריך מערך 16 בתים uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // אבל אני רק הולך לקרוא את 7 speedCharacteristic.readValue הראשון (holdvalues, 7); בתים rawValue0 = holdvalues [0]; // דגלים בינאריים 8 bit int byte rawValue1 = holdvalues [1]; // מהפכות בתים הכי פחות משמעותיות ב- HEX byte rawValue2 = holdvalues [2]; // מהפכות הבייט המשמעותי הבא ב- HEX byte rawValue3 = holdvalues [3]; // מהפכות הבייט המשמעותי הבא ב- HEX byte rawValue4 = holdvalues [4]; // מהפכות הבייט המשמעותי ביותר ב- HEX byte rawValue5 = holdvalues [5]; // זמן מאז אירוע הגלגל האחרון הכי פחות byte byte rawValue6 = holdvalues [6]; // זמן מאז אירוע הגלגל האחרון רוב הסיגה בייט אם (firstData) {// קבל סיבובי גלגלים מצטברים כמו hex קטן של האנדיאן ב- loc 2, 3 ו- 4 (הכי פחות אוקטט ראשון ראשון) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // קבל זמן מאז אירוע הגלגל האחרון ב -1024 שניות Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = false; } אחר {// קבל קבוצה שנייה של נתונים WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); TimeTemp ארוך = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp> WheelRevs1) {// ודא שהאופניים זזים WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = true;}

// מצא את הפרש המרחק בסנטימטרים והמיר ל- km distance floatTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

לצוף kmTravelled = distanceTravelled / 1000000;

// מצא זמן ב -1024 שניות והמיר לשעות

float timeDifference = (Time_2 - Time_1); float timeSecs = timeDifference / 1024; float timeHrs = timeSecs / 3600;

// מצא מהירות קמ ש

speedKMH = (kmTravelled / timeHrs);

המערכון של Arduino מתארח ב- GitHub (https://github.com/mockendon/opengradesim).

שלב 3: חומרה 1 המפעיל הלינארי

חומרה 1 המפעיל הלינארי
חומרה 1 המפעיל הלינארי
חומרה 1 המפעיל הלינארי
חומרה 1 המפעיל הלינארי
חומרה 1 המפעיל הלינארי
חומרה 1 המפעיל הלינארי

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

צינור אלומיניום בגודל 3/4 אינץ '10swg מתאים בצורה מושלמת וחתיך נחמד בשם Dave ב- ebay (https://www.ebay.co.uk/str/aluminiumonline) מסופק וחתך אותו לאורך בשבילי בכמה קילוגרמים.

למפעיל יש מוט 20 מ"מ עם חור של 6 מ"מ כך שהחלק המודפס בתלת מימד מקשר את צינור האלומיניום למוט פלדה 6 מ"מ ומכיוון שהכוחות הם 90% דחיסה, כמה PLA / ABS עומד באתגר.

אם אתה מפעיל התקנה רגילה של שחרור מהיר אז משהו כזה (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) ימנע צורך לעצב מחדש רכיב זה.

האתחול מיועד להתאים לגוש ההגבהה המסופק עם מאמן ה- Tacx שלי, אך ככל הנראה יתאים להרמות רבות דומות או שתוכל פשוט לערוך את קובץ ה- TinkerCad כך שיתאים לדרישתך.

שלב 4: חומרה 2 - גשר ה- H

חומרה 2 - גשר ה- H
חומרה 2 - גשר ה- H
חומרה 2 - גשר ה- H
חומרה 2 - גשר ה- H
חומרה 2 - גשר ה- H
חומרה 2 - גשר ה- H

ללוח הגשרים מסוג L298N H הנפוצים מאוד ברשת יש ווסת 5V מובנה שהוא נהדר להפעלת הארדואינו מספק הכוח 12V הנדרש למפעיל הליניארי. למרבה הצער, לוח Arduino Nano IoT הוא איתות 3.3V ומכאן הצורך בממיר רמות לוגי (או באופטו -איזולטור מכיוון שהאותות חד כיווניים בלבד).

המארז נועד לקבל את מחברי החשמל הנפוצים ביישומי תאורת LED. שחיטתי מוביל USB להארכת USB כדי לאפשר לחבר / לנתק את יחידת הראש של Arduino בקלות ובעוד שהייתי בטוח להשתמש בקווי החשמל עבור קווי החשמל ואת קווי הנתונים לאיתור 3.3V הייתי ממליץ בכנות נגד זה כפי שהייתי שונא מישהו לטגן את יציאות ה- USB או הציוד ההיקפי שלו על ידי חיבורו בטעות!

שלב 5: חומרה 3 בקרת האלקטרוניקה (Arduino)

חומרה 3 בקרת האלקטרוניקה (Arduino)
חומרה 3 בקרת האלקטרוניקה (Arduino)
חומרה 3 בקרת האלקטרוניקה (Arduino)
חומרה 3 בקרת האלקטרוניקה (Arduino)
חומרה 3 בקרת האלקטרוניקה (Arduino)
חומרה 3 בקרת האלקטרוניקה (Arduino)

המארז של ממיר רמות הלוגיקה של Arduino ו- Logic כולל הר רגיל בסגנון Garmin בגובה 1/2 סיבוב על הגב כדי לאפשר הרכבה מאובטחת לאופניים. הר "מלפנים בחזית" יאפשר להטות את היחידה למעלה או למטה ל"אפס "את מיקום מד התאוצה או שורת קוד רק לאפס אוטומטי בהתחלה יהיה קל להוסיף.

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

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

קובץ ה- STL של התיק זמין שוב ב- Thingiverse (עיין בסעיף החומרים המצורפים לקישור).

המערכון של Arduino מתארח ב- GitHub (https://github.com/mockendon/opengradesim).

אתה יכול להדפיס קליפ קטן ומסודר לגשר CABLE שלך מכאן

שלב 6: 'הנפילה האחורית'

'הנפילה האחורית'
'הנפילה האחורית'
'הנפילה האחורית'
'הנפילה האחורית'
'הנפילה האחורית'
'הנפילה האחורית'

אנשים רבים העלו את סוגיית השפשוף האחורי כשהאופניים נעים. לחלק מהמאמנים יש סרן שזז (כמו ה- Kickr) אך לרבים אין.

כרגע הפתרון הטוב ביותר בשבילי הוא להרכיב כמה מיסבים חריצים עמוקים 61800-2RS סטנדרטיים (כ -2 ליש ט כל אחד) על מתאמי השחרור המהיר ולאחר מכן להרכיב את הנשירות דרך האקסל על אלה (ראה תמונות) עם שיפוד QR גדול מדי.

למיסבים יש צורך במכונת כביסה דקה, למשל M12 16 מ"מ 0.3 מ"מ בין המתאם למסב.

הם מתאימים בצורה מושלמת ומסתובבים עם האופניים והשיפוד ללא תלות במאמן.

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

אני מתכנן חלקים מותאמים אישית (ראה תוכנית pdf) למכונה (על המחרטה לעתיד של גיסי כשיש לו שעה לעזור!). אלה עדיין לא נבדקו !!! אבל טחינת 1 מ מ מהמשטח הפנימי של מתאם ה- QR בצד הכונן של המניה היא תיקון מהיר ללא כלים מיוחדים;)