جدول المحتويات:

Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 خطوات
Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 خطوات

فيديو: Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 خطوات

فيديو: Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 خطوات
فيديو: Platelet Activation and Factors for Clot Formation 2024, شهر نوفمبر
Anonim
Image
Image
فتح (دراجة) محاكي الصف - OpenGradeSIM
فتح (دراجة) محاكي الصف - OpenGradeSIM
فتح (دراجة) محاكي الصف - OpenGradeSIM
فتح (دراجة) محاكي الصف - OpenGradeSIM

مقدمة

قدمت شركة لياقة بدنية أمريكية معروفة (Wahoo) مؤخرًا مساعدة تدريب داخلية رائعة ترفع وتخفض مقدمة الدراجة على المدرب التوربيني وفقًا لدرجة محاكاة التل التي يركبها المستخدم (Kickr Climb).

تبدو مذهلة ولكن للأسف هذا ليس متاحًا لنا جميعًا لأنك ستحتاج إلى 1) مدرب Wahoo على أعلى مستوى و 2) 500 جنيه إسترليني نقدًا لصنع هذا لك.

لقد كسرت الترقوة (لم أضع مطلقًا راكب دراجة على الطريق على دراجة جبلية) لذلك كان لدي المزيد من الأميال على المدرب والمزيد من الوقت للتلاعب واعتقدت أن هذا يمكن أن يكون مشروعًا ممتعًا.

الوحدة التجارية تحاكي -5٪ إلى + 20٪ لذا أردت الاقتراب من ذلك ولكن على 10٪ من الميزانية!

تم تصميم هذا حول Tacx Neo الخاص بي ولكن أي مدرب يبث بيانات قوته وسرعته عبر ANT + أو BLE يمكن أن يعمل (أعتقد!).

نظرًا لأن قاعدة العجلة على دراجتي على الطريق تقيس بالضبط 1000 مم ، فسوف أحتاج إلى رفع الشوكات بمقدار 200 مم لمحاكاة 20٪ (انظر الموافقة المسبقة عن علم) حتى يعمل مشغل خطي 200 مم. من غير المحتمل أن يتجاوز وزن الدراجة + المتسابق 100 كجم وبما أن هذا موزع بين المحاور ومعظمها في الخلف ، فإن 750 نيوتن سترفع 75 كجم ويجب أن تكون على ما يرام. تتوفر مشغلات أسرع مقابل المزيد من المال ، لكن هذا كلفني حوالي 20 جنيهًا إسترلينيًا ويدير 10 مم / ثانية. المحركات ذات مقاييس الجهد التي يمكن استخدامها كمؤازرات بسيطة هي أيضًا أغلى مرتين إلى ثلاث مرات.

اللوازم

طباعة ثلاثية الأبعاد (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 مم لمنعك من التعرق في جميع أنحاء الإلكترونيات (فعلت ذلك ، ليس مثاليًا).

بعض الكتل النازفة (تم تكييفها لتترك الوسادات بالداخل) لمنعك عن طريق الخطأ من دفع مكابس المسماك خارج فرامل قرص Shimano في حماسك

المشغل الخطي 750N 200mm السفر ، مثل Al03 Mini Linear Actuators من

جسر L298N H (مثل:

Arduino Nano IoT 33 www.rapidonline.com اطلب 73-4863

2 لوحة مفاتيح غشائية على سبيل المثال

محول المستوى المنطقي IIC I2C وحدة ثنائية الاتجاه 5 فولت إلى 3.3 فولت لاردوينو على سبيل المثال

مزود طاقة 12 فولت 3 أمبير تيار مستمر - تعمل مصابيح LED بشكل رائع!

NPE CABLE Ant + إلى جسر BLE

مقطع ثلاثي الأبعاد قابل للطباعة لجسر CABLE

وحدة شاشة OLED LCD 1.3 بوصة مع واجهة IIC I2C 128x32 3.3 فولت

الخطوة الأولى: بعض الرياضيات

بعض الرياضيات
بعض الرياضيات

نحتاج إلى حساب الميل الذي يتم محاكاته. كنت آمل أن يقوم المدرب بالإعلان عن هذه البيانات جنبًا إلى جنب مع السرعة والقوة والإيقاع وما إلى ذلك ، ولكن المدرب ببساطة يضبط المقاومة للحفاظ على خرج الطاقة وفقًا للبرامج الموجودة على الجهاز اللوحي والكمبيوتر وما إلى ذلك المستخدمة للتحكم فيه. لم يكن لدي أي طريقة لالتقاط "الدرجة المحاكاة" بسهولة من البرنامج ، لذا كان علي العمل بشكل عكسي …

القوى المؤثرة على الدراجة والراكب هي مزيج من الخسائر المقاومة والقوة اللازمة لتسلق التل. يبلغ المدرب عن السرعة والقوة. إذا تمكنا من إيجاد الخسائر المقاومة بسرعة معينة ، فسيتم استخدام القوة المتبقية لتسلق التل. تعتمد قوة الصعود على وزن الدراجة والراكب ومعدل الصعود حتى نتمكن من العودة إلى المنحدر.

أولاً ، استخدمت موقع https://bikecalculator.com المذهل للعثور على بعض نقاط البيانات لفقدان القدرة المقاومة بسرعات نموذجية. ثم قمت بتحويل مجال السرعة لإنتاج علاقة خطية ووجدت أفضل خط ملائم. بأخذ معادلة الخط يمكننا الآن حساب القوة (W) من المقاومة = (0.0102 * (Speedkmh ^ 2.8)) + 9.428.

خذ القوة من المقاومة من القوة المقاسة لإعطاء قوة "التسلق".

نعلم سرعة الصعود بالكيلومتر / الساعة ونحولها إلى وحدات SI من m / s (نقسم على 3.6).

تم العثور على الميل من: Incline (٪) = ((PowerClimbing / (WeightKg * g)) / Speed) * 100

حيث تسارع السقوط الحر g = 9.8m / s / s أو 9.8 N / kg

الخطوة الثانية: الحصول على بعض البيانات

احصل على بعض البيانات
احصل على بعض البيانات

يتطلب حساب المنحدر السرعة والقوة. لقد استخدمت Arduino Nano 33 IoT للاتصال بالمدرب عبر BLE لتلقي هذا. لقد علقت بشدة في البداية لأن الإصدار الحالي v.1.1.2 من مكتبة ArduinoBLE الأصلية لهذه الوحدة لا يتعامل مع المصادقة بأي شكل مما يعني أن معظم مستشعرات BLE التجارية (؟) لن تقترن معها.

كان الحل هو استخدام NPE Cable ANT + to BLE bridge (https://npe-inc.com/cableinfo/) والذي يحافظ على BLE المدمج في المدرب مجانًا حتى يتواصل تطبيق التدريب ولا يتطلب أي مصادقة على BLE الجانب.

تعتبر خاصية قدرة BLE واضحة جدًا حيث يتم احتواء القدرة بالواط في البايتين الثاني والثالث من البيانات المرسلة في صورة عدد صحيح 16 بت (قيمة endian صغيرة ، أي أقل عدد ثماني بتات أولًا). لقد قمت بتطبيق مرشح متوسط متحرك لإعطاء متوسط 3 ثوانٍ - تمامًا كما يظهر على جهاز الكمبيوتر الخاص بالدراجة - لأن هذا أقل تقلبًا.

إذا (powerCharacteristic.valueUpdated ()) {

// تحديد مصفوفة للقيمة uint8_t holdpowervalues [6] = {0 ، 0 ، 0 ، 0 ، 0 ، 0} ؛ // قراءة القيمة في مجموعة powerCharacteristic.readValue (holdpowervalues، 6) ؛ // يتم إرجاع الطاقة كواط في الموقع 2 و 3 (loc 0 و 1 هي علامات 8 بت) بايت rawpowerValue2 = holdpowervalues [2] ؛ // القوة الأقل سيج بايت في HEX byte rawpowerValue3 = holdpowervalues [3] ؛ // power most sig byte في HEX long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)) ؛ // استخدم مرشح المتوسط المتحرك لمنح powerTrainer '3s power' = moveAverageFilter_power.process (rawpowerTotal) ؛

تعد خاصية سرعة BLE (سرعة ركوب الدراجات والإيقاع) واحدة من تلك الأشياء التي تجعلك تتساءل عما كان يدخنه SIG على الأرض عندما كتبوا المواصفات.

تقوم الخاصية بإرجاع مصفوفة 16 بايت لا تحتوي على سرعة ولا إيقاع. بدلاً من ذلك ، تحصل على ثورات العجلة وثورات الكرنك (الإجماليات) والوقت منذ بيانات الحدث الأخير في 1024 جزءًا من الثانية. إذن المزيد من الرياضيات. أوه ، والبايتات ليست موجودة دائمًا ، لذلك هناك بايت في البداية. أوه ، والبايتات هي عبارة عن هيكس endian صغير ، لذا فأنت بحاجة إلى القراءة للخلف بضرب البايت الثاني في 256 ، والثالث في 65536 وما إلى ذلك ، ثم إضافتها معًا. للعثور على السرعة ، عليك أن تفترض محيط عجلة الدراجة القياسي لمعرفة المسافة….

إذا (speedCharacteristic.valueUpdated ()) {

// تحتاج هذه القيمة إلى مصفوفة من 16 بايت uint8_t Holdvalues [16] = {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ؛ // لكنني سأقرأ فقط أول 7 سرعات شخصية.قراءة القيمة (Holdvalues، 7) ؛ byte rawValue0 = Holdvalues [0] ، // الإشارات الثنائية 8 بت int بايت rawValue1 = Holdvalues [1] ؛ // الثورات البايت الأقل أهمية في HEX byte rawValue2 = Holdvalues [2] ؛ // الثورات التي تلي أهم بايت في HEX byte rawValue3 = Holdvalues [3] ؛ // الثورات التالية أهم بايت في HEX byte rawValue4 = Holdvalues [4] ؛ // الثورات أهم بايت في HEX byte rawValue5 = Holdvalues [5] ؛ // الوقت المنقضي منذ آخر حدث للعجلة أقل عدد بايت بايت من سيغ بايت rawValue6 = Holdvalues [6] ؛ // الوقت المنقضي منذ آخر حدث للعجلة يكون معظم بايت sig byte إذا (firstData) {// احصل على ثورات عجلة تراكمية على شكل سداسي endian صغير في loc 2 و 3 و 4 (الثماني الأقل أهمية أولاً) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)) ؛ // احصل على الوقت منذ آخر حدث للعجلة في 1024 جزءًا من الثانية Time_1 = (rawValue5 + (rawValue6 * 256)) ؛ firstData = خطأ ؛ } else {// احصل على المجموعة الثانية من البيانات الطويلة WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)) ؛ long TimeTemp = (rawValue5 + (rawValue6 * 256)) ؛ if (WheelRevsTemp> WheelRevs1) {// تأكد من أن الدراجة تتحرك WheelRevs2 = WheelRevsTemp؛ Time_2 = TimeTemp ، firstData = صحيح ؛}

// أوجد فرق المسافة بالسنتيمتر وتحويلها إلى مسافة الطفو بالكيلومتر = ((WheelRevs2 - WheelRevs1) * wheelCircCM) ؛

تعويم kmTravelled = مسافة سافر / 1000000 ؛

// ابحث عن الوقت في 1024 من الثانية وقم بالتحويل إلى ساعات

تعويم TimeDifference = (Time_2 - Time_1) ؛ تعويم timeSecs = timeDifference / 1024 ؛ تعويم timeHrs = timeSecs / 3600 ؛

// البحث عن السرعة kmh

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 on 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-Bridge

الأجهزة 2 - H-Bridge
الأجهزة 2 - H-Bridge
الأجهزة 2 - H-Bridge
الأجهزة 2 - H-Bridge
الأجهزة 2 - H-Bridge
الأجهزة 2 - H-Bridge

تحتوي لوحة الجسر L298N H الشائعة جدًا عبر الإنترنت على منظم مدمج بجهد 5 فولت وهو أمر رائع لتشغيل Arduino من مصدر الطاقة 12 فولت المطلوب للمشغل الخطي. لسوء الحظ ، فإن لوحة Arduino Nano IoT تشير إلى 3.3 فولت ومن ثم الحاجة إلى محول المستوى المنطقي (أو optoisolator لأن الإشارات أحادية الاتجاه فقط).

تم تصميم العلبة لقبول موصلات الطاقة المستخدمة بشكل شائع في تطبيقات إضاءة LED. لقد قمت بتقطيع وصلة تمديد USB لإتاحة إمكانية توصيل / فصل وحدة رأس Arduino بسهولة ، وبينما كنت متأكدًا من استخدام خطوط الطاقة للطاقة وخطوط البيانات للإشارة 3.3 فولت ، فإنني أنصح بصدق بعدم ذلك كما أفعل. أكره شخصًا ما لقلي منافذ USB أو الأجهزة الطرفية عن طريق توصيلها عن طريق الخطأ!

الخطوة 5: الأجهزة 3 أجهزة التحكم الإلكترونية (Arduino)

الأجهزة 3 - إلكترونيات التحكم (اردوينو)
الأجهزة 3 - إلكترونيات التحكم (اردوينو)
الأجهزة 3 - إلكترونيات التحكم (اردوينو)
الأجهزة 3 - إلكترونيات التحكم (اردوينو)
الأجهزة 3 - إلكترونيات التحكم (اردوينو)
الأجهزة 3 - إلكترونيات التحكم (اردوينو)

تحتوي علبة Arduino OLED ومحول المستوى المنطقي على حامل قياسي من طراز Garmin 1/2 دورة على ظهره للسماح بتثبيته بشكل آمن على الدراجة. سيسمح الحامل "الأمامي الخارجي" بإمالة الوحدة لأعلى أو لأسفل إلى "صفر" سيكون من السهل إضافة موضع مقياس التسارع أو سطر من التعليمات البرمجية لمجرد الصفر التلقائي في البداية.

تحتوي العلبة على مكان للوحة مفاتيح غشائية - تُستخدم لضبط وزن الدراج والدراجة معًا. يمكنك فقط ضبط هذا برمجيًا خاصةً إذا كنت لا تشارك مدربًا مع أي شخص.

قد يكون من الجيد تنفيذ الوضع "اليدوي". ربما يؤدي الضغط على كلا الزرين إلى بدء الوضع اليدوي ومن ثم يمكن للأزرار زيادة / تقليل الميل. سأضيف هذا إلى قائمة المهام!

ملف المحكمة الخاصة بلبنان الخاص بالقضية ، مرة أخرى ، متاح على Thingiverse (راجع قسم المستلزمات للحصول على الارتباط).

يتم استضافة رسم Arduino في GitHub (https://github.com/mockendon/opengradesim).

يمكنك طباعة مقطع صغير أنيق لجسر الكبل الخاص بك من هنا

الخطوة السادسة: المتسربون من الخلف

"المتسربون من الخلف"
"المتسربون من الخلف"
"المتسربون من الخلف"
"المتسربون من الخلف"
"المتسربون من الخلف"
"المتسربون من الخلف"

أثار العديد من الأشخاص مسألة الاحتكاك الخلفي أثناء تحرك الدراجة. بعض المدربين لديهم محور يتحرك (مثل Kickr) لكن الكثير منهم لا يتحرك.

أفضل حل بالنسبة لي حاليًا هو تركيب بعض محامل الأخدود العميقة القياسية 61800-2RS (حوالي 2 جنيه إسترليني لكل منهما) على محولات الإفراج السريع ثم تركيب نقاط التسرب عبر المحور على هذه (انظر الصور) باستخدام سيخ QR أكبر من الحجم

تحتاج المحامل إلى غسالة رقيقة على سبيل المثال M12 16 مم 0.3 مم بين المحول والمحمل.

تتناسب تمامًا مع الدراجة والسيخ وتدوران بشكل مستقل عن المدرب.

في الوقت الحالي ، يغير هذا الإزاحة على جانب محرك الأقراص بمقدار 2 مم ، لذا ستحتاج إلى إعادة الفهرسة

أقوم بتصميم أجزاء مخصصة (انظر خطة pdf) للآلة (على مخرطة صهري المستقبلي عندما يكون لديه ساعة للمساعدة!). هذه لم تختبر بعد !!! لكن طحن 1 مم من السطح الداخلي لمحول QR الجانبي لمحرك الأقراص هو حل سريع بدون أدوات خاصة ؛)

موصى به: