विषयसूची:

ओपन (साइकिल) ग्रेड सिम्युलेटर - ओपनग्रेड सिम: 6 कदम
ओपन (साइकिल) ग्रेड सिम्युलेटर - ओपनग्रेड सिम: 6 कदम

वीडियो: ओपन (साइकिल) ग्रेड सिम्युलेटर - ओपनग्रेड सिम: 6 कदम

वीडियो: ओपन (साइकिल) ग्रेड सिम्युलेटर - ओपनग्रेड सिम: 6 कदम
वीडियो: THIS JOB IS AMAZING | GAS STATION SIMULATOR #2 2024, नवंबर
Anonim
Image
Image
ओपन (साइकिल) ग्रेड सिम्युलेटर - ओपनग्रेड सिम
ओपन (साइकिल) ग्रेड सिम्युलेटर - ओपनग्रेड सिम
ओपन (साइकिल) ग्रेड सिम्युलेटर - ओपनग्रेड सिम
ओपन (साइकिल) ग्रेड सिम्युलेटर - ओपनग्रेड सिम

परिचय

अमेरिका की एक जानी-मानी फिटनेस कंपनी (वाहू) ने हाल ही में एक बेहतरीन इंडोर ट्रेनिंग एड पेश किया है जो टर्बो ट्रेनर पर बाइक के सामने वाले हिस्से को पहाड़ी के नकली ग्रेड के अनुसार ऊपर उठाती है और कम करती है जिस पर उपयोगकर्ता सवारी कर रहा है (किकर क्लाइंब)।

आश्चर्यजनक लग रहा है लेकिन दुख की बात है कि यह हम सभी के लिए उपलब्ध नहीं है क्योंकि आपको १) वाहू ट्रेनर की एक शीर्ष श्रेणी और २) £ ५०० नकद की आवश्यकता होगी।

मैंने एक हंसली को तोड़ा (पहाड़ बाइक पर सड़क साइकिल चालक को कभी नहीं रखा) इसलिए मेरे पास ट्रेनर पर अधिक मील और टिंकर करने के लिए अधिक समय था और मुझे लगा कि यह एक मजेदार परियोजना हो सकती है।

वाणिज्यिक इकाई -5% से +20% का अनुकरण करती है इसलिए मैं उसके करीब आना चाहता था लेकिन बजट के 10% पर!

यह मेरे टैक्स नियो के आसपास डिज़ाइन किया गया है लेकिन कोई भी ट्रेनर जो एएनटी+ या बीएलई के माध्यम से अपनी शक्ति और गति डेटा प्रसारित करता है उसे काम करने के लिए बनाया जा सकता है (मुझे लगता है!)।

चूंकि मेरी सड़क बाइक पर व्हील बेस बिल्कुल 1000 मिमी मापता है, इसलिए मुझे 20% अनुकरण करने के लिए 200 मिमी तक कांटे उठाने की आवश्यकता होगी (तस्वीर देखें) ताकि 200 मिमी रैखिक एक्ट्यूएटर करेगा। बाइक + सवार का वजन 100 किग्रा से अधिक होने की संभावना नहीं है और चूंकि यह धुरों के बीच वितरित किया जाता है और अधिकांश पीठ पर होता है 750N 75 किग्रा उठाएगा और ठीक होना चाहिए। अधिक पैसे के लिए तेज़ एक्ट्यूएटर उपलब्ध हैं लेकिन इसकी कीमत मुझे लगभग £ 20 है और यह 10 मिमी/सेकंड का प्रबंधन करता है। पोटेंशियोमीटर वाले एक्चुएटर्स जिन्हें साधारण सर्वो के रूप में इस्तेमाल किया जा सकता है, वे भी 2 से 3 गुना अधिक महंगे हैं।

आपूर्ति

एक्सल एडेप्टर भाग के माध्यम से 3डी प्रिंट (पीएलए या एबीएसएटीसी):

100 मिमी 3/4 इंच 10 swg एल्यूमीनियम ट्यूब स्टॉक (एक्सल फ्रेम के माध्यम से)

80 मिमी 6 मिमी स्टेनलेस स्टील बार स्टॉक

रैखिक एक्ट्यूएटर भाग के लिए जूते का 3D प्रिंट (PLA या ABSetc):

एच-ब्रिज के लिए केस का 3डी प्रिंट

Arduino के लिए केस का 3D प्रिंट (कीपैड के साथ संस्करण 1) https://www.thingiverse.com/thing:3984911 (संस्करण 2 जैसा दिखाया गया है (https://www.thingiverse.com/thing:3995976)

3 मिमी स्पष्ट ऐक्रेलिक 32 x 38 मिमी का लेजर कट टुकड़ा आपको पूरे इलेक्ट्रॉनिक्स में पसीने से बचाने के लिए (क्या ऐसा किया, आदर्श नहीं)।

कुछ ब्लीडिंग ब्लॉक्स (पैड्स को अंदर छोड़ने के लिए अनुकूलित) आपके शिमैनो डिस्क ब्रेक से गलती से कैलिपर पिस्टन को आपके उत्साह में धकेलने से रोकने के लिए

लीनियर एक्चुएटर 750N 200mm यात्रा जैसे https://www.linear-actuator.net.cn/product/linear… से Al03 मिनी लीनियर एक्चुएटर्स…

L298N H ब्रिज (जैसे:

Arduino नैनो IoT 33 www.rapidonline.com ऑर्डर 73-4863

2 कुंजी झिल्ली कीबोर्ड जैसे

IIC I2C लॉजिक लेवल कन्वर्टर द्वि-दिशात्मक मॉड्यूल 5V से 3.3V Arduino के लिए जैसे

१२वी ३ए डीसी बिजली की आपूर्ति - एलईडी प्रकाश व्यवस्था के लिए बढ़िया काम!

एनपीई केबल चींटी+ से बीएलई ब्रिज

केबल ब्रिज के लिए 3डी प्रिंट करने योग्य क्लिप

1.3 IIC I2C इंटरफ़ेस 128x32 3.3V के साथ OLED LCD डिस्प्ले मॉड्यूल;

चरण 1: कुछ गणित

कुछ गणित
कुछ गणित

हमें अनुकरण की जा रही झुकाव की गणना करने की आवश्यकता है। मुझे उम्मीद थी कि ट्रेनर इस डेटा को गति, शक्ति, ताल आदि के साथ विज्ञापित करेगा, हालांकि ट्रेनर इसे नियंत्रित करने के लिए उपयोग किए जा रहे टैबलेट, कंप्यूटर आदि पर सॉफ्टवेयर के अनुसार बिजली उत्पादन को बनाए रखने के लिए प्रतिरोध करता है। मेरे पास सॉफ्टवेयर से 'सिम्युलेटेड ग्रेड' को आसानी से पकड़ने का कोई तरीका नहीं था इसलिए मुझे पीछे की ओर काम करना होगा …

बाइक और सवार पर अभिनय करने वाली ताकतें प्रतिरोधक नुकसान और पहाड़ी पर चढ़ने के लिए आवश्यक शक्ति का एक संयोजन हैं। ट्रेनर गति और शक्ति की रिपोर्ट करता है। यदि हम एक निश्चित गति से प्रतिरोधक हानियों का पता लगा सकते हैं तो शेष शक्ति का उपयोग पहाड़ी पर चढ़ने के लिए किया जा रहा है। चढ़ाई करने की शक्ति बाइक और सवार के वजन और चढ़ाई की दर पर निर्भर करती है और इसलिए हम वापस झुकाव पर काम कर सकते हैं।

सबसे पहले मैंने विशिष्ट गति पर प्रतिरोधक बिजली हानि के लिए कुछ डेटा बिंदुओं को खोजने के लिए अद्भुत https://bikecalculator.com का उपयोग किया। फिर मैंने गति डोमेन को एक रैखिक संबंध बनाने के लिए बदल दिया और सबसे अच्छी फिट लाइन पाई। रेखा का समीकरण लेकर अब हम प्रतिरोध से शक्ति (W) की गणना कर सकते हैं = (0.0102*(Speedkmh^2.8))+9.428.

'चढ़ाई' की शक्ति देने के लिए मापी गई शक्ति से प्रतिरोध से शक्ति लें।

हम चढ़ाई की गति km/hr में जानते हैं और इसे m/s के SI मात्रक (3.6 से विभाजित) में बदल देते हैं।

इनलाइन से पाया जाता है: इनलाइन (%) =((पॉवर क्लाइम्बिंग/(वेटकेजी*जी))/स्पीड)*100

जहां मुक्त गिरावट का त्वरण g = 9.8m/s/s या 9.8 N/kg

चरण 2: कुछ डेटा प्राप्त करें

कुछ डेटा प्राप्त करें
कुछ डेटा प्राप्त करें

झुकाव गणना के लिए गति और शक्ति की आवश्यकता होती है। मैंने इसे प्राप्त करने के लिए BLE के माध्यम से ट्रेनर से जुड़ने के लिए Arduino Nano 33 IoT का उपयोग किया। मैं शुरू में बहुत अटक गया क्योंकि इस मॉड्यूल के लिए देशी ArduinoBLE लाइब्रेरी का वर्तमान v.1.1.2 संस्करण किसी भी रूप में प्रमाणीकरण को संभाल नहीं करता है, जिसका अर्थ है कि अधिकांश (?) वाणिज्यिक BLE सेंसर इसके साथ नहीं जुड़ेंगे।

समाधान एक एनपीई केबल एएनटी + से बीएलई ब्रिज (https://npe-inc.com/cableinfo/) का उपयोग करना था जो प्रशिक्षण ऐप के लिए संचार करने के लिए ट्रेनर के अंतर्निहित बीएलई को मुक्त रखता है और बीएलई पर किसी प्रमाणीकरण की आवश्यकता नहीं होती है पक्ष।

बीएलई पावर विशेषता बहुत सीधी है क्योंकि वाट में शक्ति 16 बिट पूर्णांक (छोटे एंडियन यानी कम से कम महत्वपूर्ण ऑक्टेट पहले) के रूप में प्रेषित डेटा के दूसरे और तीसरे बाइट्स में निहित है। मैंने 3s औसत शक्ति देने के लिए एक चलती औसत फ़िल्टर लागू किया - जैसे मेरा बाइक कंप्यूटर दिखाता है - क्योंकि यह कम अनिश्चित है।

अगर (powerCharacteristic.valueUpdated ()) {

// uint8_t होल्डपॉवरवैल्यू [6] = {0, 0, 0, 0, 0, 0} के मान के लिए एक सरणी परिभाषित करें; // सरणी में मान पढ़ें powerCharacteristic.readValue (होल्डपावरवैल्यू, 6); // पावर को स्थान 2 और 3 में वाट के रूप में लौटाया जाता है (लोक 0 और 1 में 8 बिट फ़्लैग होते हैं) बाइट रॉपावरवैल्यू2 = होल्डपॉवरवैल्यू [2]; // हेक्स बाइट में कम से कम सिग बाइट की शक्ति // HEX लॉन्ग रॉपावरटोटल = (rawpowerValue2 + (rawpowerValue3 * 256)) में पावर मोस्ट सिग बाइट; // '3s पावर' देने के लिए मूविंग एवरेज फिल्टर का इस्तेमाल करें।

बीएलई गति विशेषता (साइकिल गति और ताल) उन चीजों में से एक है जो आपको आश्चर्यचकित करती है कि जब उन्होंने विनिर्देश लिखा था तो एसआईजी पृथ्वी पर क्या धूम्रपान कर रहा था।

विशेषता एक 16 बाइट सरणी देता है जिसमें न तो गति होती है और न ही ताल। इसके बजाय आपको एक सेकंड के 1024वें हिस्से में अंतिम घटना डेटा के बाद से पहिया क्रांति और क्रैंक क्रांति (कुल) और समय मिलता है। तो और गणित। ओह, और बाइट हमेशा मौजूद नहीं होते हैं इसलिए शुरुआत में ध्वज बाइट होता है। ओह, और बाइट थोड़ा एंडियन हेक्स हैं इसलिए आपको दूसरी बाइट को 256 से गुणा करके, तीसरे को 65536 आदि से पीछे की ओर पढ़ना होगा। फिर उन्हें एक साथ जोड़ना होगा। गति खोजने के लिए आपको दूरी जानने के लिए एक मानक बाइक पहिया परिधि माननी होगी…।

अगर (स्पीड कैरेक्टरिस्टिक.वैल्यूअपडेटेड ()) {

// इस मान को 16 बाइट सरणी की आवश्यकता है uint8_t होल्डवैल्यू [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // लेकिन मैं केवल पहले 7 speedCharacteristic.readValue (होल्डवैल्यू, 7) पढ़ने जा रहा हूं; बाइट रॉवैल्यू 0 = होल्डवैल्यू [0]; // बाइनरी फ़्लैग्स 8 बिट इंट बाइट rawValue1 = होल्डवैल्यू [1]; // HEX बाइट में क्रांतियां कम से कम महत्वपूर्ण बाइट rawValue2 = होल्डवैल्यू [2]; // HEX बाइट में अगले सबसे महत्वपूर्ण बाइट में क्रांतियाँ rawValue3 = होल्डवैल्यू [3]; // HEX बाइट में अगले सबसे महत्वपूर्ण बाइट में क्रांतियाँ rawValue4 = होल्डवैल्यू [4]; // HEX बाइट में सबसे महत्वपूर्ण बाइट क्रांतियाँ rawValue5 = होल्डवैल्यू [5]; // अंतिम पहिया घटना के बाद का समय कम से कम सिग बाइट बाइट rawValue6 = होल्डवैल्यू [6]; // लास्ट व्हील इवेंट के बाद से अधिकांश सिग बाइट अगर (फर्स्टडेटा) {//लोक 2, 3 और 4 में छोटे एंडियन हेक्स के रूप में संचयी पहिया क्रांतियां प्राप्त करें (कम से कम महत्वपूर्ण ऑक्टेट पहले) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // सेकंड टाइम_1 के 1024वें हिस्से में आखिरी व्हील इवेंट के बाद से समय प्राप्त करें = (rawValue5 + (rawValue6 * 256)); फर्स्टडाटा = झूठा; } और {// डेटा का दूसरा सेट लंबा प्राप्त करें WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); लॉन्ग टाइमटेम्प = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp > WheelRevs1) {// सुनिश्चित करें कि साइकिल चल रही है WheelRevs2 = WheelRevsTemp; टाइम_2 = टाइमटेम्प; फर्स्टडाटा = सच;}

// सेमी में दूरी का अंतर ज्ञात करें और किमी फ्लोट दूरी में बदलेंTraveled = ((WheelRevs2 - WheelRevs1) * WheelCircCM);

फ्लोट किमीयात्रा = दूरीयात्रा / 1000000;

// एक सेकंड के १०२४वें हिस्से में समय निकालें और घंटों में बदलें

फ्लोट टाइमडिफरेंस = (टाइम_2 - टाइम_1); फ्लोट टाइमसेक = टाइमडिफरेंस/1024; फ्लोट टाइमहर्स = टाइमसेक / 3600;

// गति का पता लगाएं kmh

गतिकेएमएच = (किमी यात्रा / समय घंटे);

Arduino स्केच को GitHub (https://github.com/mockendon/opengradsim) पर होस्ट किया गया है।

चरण 3: हार्डवेयर 1 रैखिक एक्ट्यूएटर

हार्डवेयर 1 लीनियर एक्चुएटर
हार्डवेयर 1 लीनियर एक्चुएटर
हार्डवेयर 1 लीनियर एक्चुएटर
हार्डवेयर 1 लीनियर एक्चुएटर
हार्डवेयर 1 लीनियर एक्चुएटर
हार्डवेयर 1 लीनियर एक्चुएटर

मेरी डिस्क ब्रेक रोड बाइक पर धुरी के माध्यम से कांटे के बीच 100 मिमी के साथ धुरी के माध्यम से 12 मिमी साफ़ करने के लिए 1 9.2 मिमी धुरी निर्दिष्ट करता है।

स्टॉक 3/4 इंच 10swg एल्यूमीनियम ट्यूब एकदम फिट है और ईबे पर डेव नामक एक अच्छा चैप (https://www.ebay.co.uk/str/aluminiumonline) ने आपूर्ति की और इसे कुछ पाउंड के लिए मेरे लिए लंबाई में काट दिया।

एक्ट्यूएटर में 6 मिमी छेद के साथ 20 मिमी बार होता है, इसलिए 3 डी प्रिंटेड भाग एल्यूमीनियम ट्यूब को 6 मिमी स्टील बार से जोड़ता है और चूंकि बल 90% संपीड़न होते हैं इसलिए कुछ PLA / ABS चुनौती के लिए तैयार होते हैं।

यदि आप एक मानक त्वरित रिलीज़ सेटअप चलाते हैं तो ऐसा कुछ (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) इस घटक को फिर से डिज़ाइन करने से बच जाएगा।

बूट को मेरे Tacx ट्रेनर के साथ आपूर्ति किए गए रेज़र ब्लॉक में फिट करने के लिए डिज़ाइन किया गया है, लेकिन संभवतः कई समान रेज़र्स में फिट होगा या आप अपनी आवश्यकता के अनुरूप TinkerCad फ़ाइल को संपादित कर सकते हैं।

चरण 4: हार्डवेयर 2 - एच-ब्रिज

हार्डवेयर 2 - एच-ब्रिज
हार्डवेयर 2 - एच-ब्रिज
हार्डवेयर 2 - एच-ब्रिज
हार्डवेयर 2 - एच-ब्रिज
हार्डवेयर 2 - एच-ब्रिज
हार्डवेयर 2 - एच-ब्रिज

ये L298N H ब्रिज बोर्ड जो ऑनलाइन बहुत आम हैं, उनमें 5V रेगुलेटर बनाया गया है जो लीनियर एक्ट्यूएटर के लिए आवश्यक 12V बिजली की आपूर्ति से Arduino को पावर देने के लिए बहुत अच्छा है। दुर्भाग्य से Arduino नैनो IoT बोर्ड 3.3V सिग्नलिंग है इसलिए एक तार्किक स्तर कनवर्टर (या एक ऑप्टोइसोलेटर की आवश्यकता है क्योंकि सिग्नल केवल यूनिडायरेक्शनल हैं)।

केस को आमतौर पर एलईडी लाइटिंग अनुप्रयोगों में उपयोग किए जाने वाले पावर कनेक्टर को स्वीकार करने के लिए डिज़ाइन किया गया है। मैंने Arduino हेड यूनिट को आसानी से कनेक्ट/डिस्कनेक्ट करना संभव बनाने के लिए एक यूएसबी एक्सटेंशन लीड को कुचल दिया और जब तक मैं बिजली के लिए बिजली लाइनों और 3.3V सिग्नलिंग के लिए डेटा लाइनों का उपयोग करना सुनिश्चित करता था, मैं ईमानदारी से इसके खिलाफ सलाह दूंगा जैसा कि मैं करूँगा किसी को गलती से प्लग इन करके उनके USB पोर्ट या पेरिफेरल्स को फ्राई करने से नफरत है!

चरण 5: हार्डवेयर 3 नियंत्रण इलेक्ट्रॉनिक्स (Arduino)

हार्डवेयर 3 कंट्रोल इलेक्ट्रॉनिक्स (Arduino)
हार्डवेयर 3 कंट्रोल इलेक्ट्रॉनिक्स (Arduino)
हार्डवेयर 3 कंट्रोल इलेक्ट्रॉनिक्स (Arduino)
हार्डवेयर 3 कंट्रोल इलेक्ट्रॉनिक्स (Arduino)
हार्डवेयर 3 कंट्रोल इलेक्ट्रॉनिक्स (Arduino)
हार्डवेयर 3 कंट्रोल इलेक्ट्रॉनिक्स (Arduino)

Arduino OLED और लॉजिक लेवल कन्वर्टर के मामले में पीछे की तरफ 1/2 टर्न गार्मिन स्टाइल माउंट है, जिससे इसे बाइक पर सुरक्षित रूप से लगाया जा सके। एक 'आउट फ्रंट' माउंट यूनिट को एक्सेलेरोमीटर की स्थिति को 'शून्य' तक ऊपर या नीचे झुकाने की अनुमति देगा या कोड की एक पंक्ति शुरुआत में ऑटो शून्य के लिए जोड़ना आसान होगा।

केस में मेम्ब्रेन कीपैड के लिए एक स्थान होता है - इसका उपयोग संयुक्त सवार और बाइक के वजन को सेट करने के लिए किया जाता है। आप इसे केवल प्रोग्रामेटिक रूप से सेट कर सकते हैं, खासकर यदि आप किसी ट्रेनर को किसी के साथ साझा नहीं करते हैं।

'मैनुअल' मोड लागू करना अच्छा हो सकता है। शायद दोनों बटन दबाने से एक मैनुअल मोड शुरू हो सकता है और फिर बटन बढ़ / घट सकते हैं। मैं इसे टू-डू सूची में जोड़ दूंगा!

मामले की एसटीएल फाइल, फिर से, थिंगविवर्स पर उपलब्ध है (लिंक के लिए आपूर्ति अनुभाग देखें)।

Arduino स्केच को GitHub (https://github.com/mockendon/opengradsim) पर होस्ट किया गया है।

आप यहां से अपने केबल ब्रिज के लिए एक साफ-सुथरी छोटी क्लिप प्रिंट कर सकते हैं

चरण 6: 'रियर ड्रॉप आउट'

'रियर ड्रॉप आउट्स'
'रियर ड्रॉप आउट्स'
'रियर ड्रॉप आउट'
'रियर ड्रॉप आउट'
'रियर ड्रॉप आउट'
'रियर ड्रॉप आउट'

कई लोगों ने बाइक के हिलते-डुलते रियर ड्रॉप आउट रगड़ने का मुद्दा उठाया है। कुछ प्रशिक्षकों के पास एक धुरी होती है जो चलती है (जैसे कि किकर) लेकिन कई नहीं।

वर्तमान में मेरे लिए मेरा सबसे अच्छा समाधान कुछ मानक 61800-2RS गहरी नाली बीयरिंग (लगभग £ 2 प्रत्येक) को त्वरित रिलीज एडेप्टर पर माउंट करना है और फिर इन पर एक्सल ड्रॉप आउट के माध्यम से माउंट करना है (चित्र देखें) एक बड़े आकार के क्यूआर स्केवर के साथ

बियरिंग्स को एक पतले शिम वॉशर की आवश्यकता होती है जैसे एडॉप्टर और बेयरिंग के बीच M12 16mm 0.3mm।

वे पूरी तरह से फिट होते हैं और ट्रेनर के स्वतंत्र रूप से बाइक और कटार के साथ घूमते हैं।

फिलहाल यह ड्राइव की तरफ ऑफसेट को कुछ मिमी से बदल देता है, इसलिए आपको फिर से अनुक्रमित करने की आवश्यकता होगी

मैं मशीन के लिए कस्टम भागों (पीडीएफ योजना देखें) को डिजाइन कर रहा हूं (मेरे भावी बहनोई के खराद पर जब उनके पास मदद करने के लिए एक घंटा है!)। इनका अभी तक परीक्षण नहीं किया गया है !!! लेकिन स्टॉक ड्राइव साइड क्यूआर एडॉप्टर की आंतरिक सतह से 1 मिमी पीसना बिना किसी विशेष उपकरण के एक त्वरित फिक्स है;)

सिफारिश की: