Բովանդակություն:

Բաց (հեծանիվ) դասարանի սիմուլյատոր - OpenGradeSIM: 6 քայլ
Բաց (հեծանիվ) դասարանի սիմուլյատոր - OpenGradeSIM: 6 քայլ

Video: Բաց (հեծանիվ) դասարանի սիմուլյատոր - OpenGradeSIM: 6 քայլ

Video: Բաց (հեծանիվ) դասարանի սիմուլյատոր - OpenGradeSIM: 6 քայլ
Video: Էթիկետ. Հեծանիվ վարելու կանոնները 2024, Հուլիսի
Anonim
Image
Image
Բաց (հեծանիվ) դասարանի սիմուլյատոր - OpenGradeSIM
Բաց (հեծանիվ) դասարանի սիմուլյատոր - OpenGradeSIM
Բաց (հեծանիվ) դասարանի սիմուլյատոր - OpenGradeSIM
Բաց (հեծանիվ) դասարանի սիմուլյատոր - OpenGradeSIM

Ներածություն

ԱՄՆ -ում տեղակայված ֆիթնեսի հայտնի մի ընկերություն (Wahoo) վերջերս ներսից հիանալի մարզումային օգնություն ցուցաբերեց, որը բարձրացնում և իջեցնում է հեծանիվը տուրբո վարժեցնողի մոտ `ըստ այն բլրի մոդելավորված աստիճանի, որը վարում է օգտվողը (Kickr Climb):

Amazingարմանալի տեսք ունի, բայց, ցավոք, սա մեզ բոլորիս հասանելի չէ, քանի որ ձեզ հարկավոր կլինի 1) Wahoo դասընթացավարի բարձրակարգ մարզիչ և 2) 500 ֆունտ ստերլինգ ՝ սա ձերն անելու համար:

Ես կոտրեցի կլավիկուլան (երբեք ճանապարհային հեծանվորդ չդնեցի լեռնային հեծանիվի վրա), այնպես որ ես ավելի շատ կիլոմետր ունեի մարզիչի վրա և ավելի շատ ժամանակ պտտելու համար և մտածեցի, որ սա կարող է լինել զվարճալի նախագիծ:

Առևտրային միավորը մոդելավորում է -5% -ից +20%, այնպես որ ես ուզում էի մոտենալ դրան, բայց բյուջեի 10% -ի չափով:

Սա նախատեսված է իմ Tacx Neo- ի շուրջ, բայց ցանկացած մարզիչ, որը իր հզորության և արագության տվյալները փոխանցում է ANT+ կամ BLE- ով, կարող է աշխատել (կարծում եմ):

Քանի որ իմ ճանապարհային հեծանիվի անիվի հիմքը չափում է ուղիղ 1000 մմ, ես պետք է պատառաքաղները բարձրացնեմ 200 մմ -ով `20% -ը մոդելավորելու համար (տես նկարը), այնպես որ դա կարող էր անել 200 մմ գծային շարժիչը: Հեծանիվ + հեծյալի քաշը դժվար թե գերազանցի 100 կգ -ը, և քանի որ այն բաշխված է առանցքների միջև, և մեծ մասը հետևի մասում է, 750N- ը կբարձրացնի 75 կգ և պետք է նորմալ լինի: Ավելի արագ գործարկիչներ հասանելի են ավելի շատ գումարների համար, բայց այս մեկն ինձ վրա արժեցավ 20 ֆունտ ստերլինգ և կառավարում է 10 մմ/վրկ: Պոտենցիոմետրերով ակտիվացուցիչները, որոնք կարող են օգտագործվել որպես պարզ սերվոներ, նույնպես 2 -ից 3 անգամ ավելի թանկ են:

Պարագաներ

Եռաչափ առանցքային ադապտեր մասի 3D տպում (PLA կամ ABSetc) ՝

100 մմ 3/4 դյույմ 10 swg ալյումինե խողովակի պաշար (միջանցիկ առանցքի շրջանակի համար)

80 մմ 6 մմ չժանգոտվող պողպատի ձուլակտոր

Կոշիկի 3D տպում (PLA կամ ABSetc) գծային շարժիչ մասի համար ՝

H-bridge- ի պատյանների 3D տպում

Գործի 3D տպում Arduino- ի համար (տարբերակ 1 ՝ ստեղնաշարով) https://www.thingiverse.com/thing:3984911 (Տարբերակ 2, ինչպես ցույց է տրված (https://www.thingiverse.com/thing:3995976)

3 մմ հստակ ակրիլից 32 x 38 մմ չափով լազերային կտրված կտոր ՝ ամբողջ էլեկտրոնիկայի վրա քրտնաջանությունից խուսափելու համար (դա արեց, ոչ իդեալական):

Որոշ արյունահոսող բլոկներ (հարմարեցված են բարձիկները ներս թողնելու համար) ՝ կանխելու համար, որ դուք ոգևորությամբ ձեր Շիմանոյի սկավառակի արգելակներից պատահաբար դուրս մղեք

Linear Actuator 750N 200 մմ ճանապարհորդություն, օրինակ ՝ Al03 Mini Linear Actuators from

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 կամուրջ

3D տպագրվող հոլովակ CABLE կամրջի համար

1.3 OLED LCD ցուցադրման մոդուլ IIC I2C ինտերֆեյսով 128x32 3.3V

Քայլ 1: Որոշ մաթեմատիկա

Որոշ մաթեմատիկա
Որոշ մաթեմատիկա

Մենք պետք է հաշվարկենք մոդելավորվող թեքությունը: Ես հույս ունեի, որ դասընթացավարը գովազդելու է այս տվյալները արագության, ուժի, արագության և այլնի հետ մեկտեղ: այնուամենայնիվ, մարզիչը պարզապես դիմադրություն է ցույց տալիս ՝ ելքային հզորությունը պահպանելու համար ՝ համաձայն պլանշետի, համակարգչի և այլնի ծրագրակազմի ՝ այն վերահսկելու համար: Ես ոչ մի կերպ չկարողացա ծրագրակազմից հեշտությամբ վերցնել «մոդելավորված գնահատականը», այնպես որ ստիպված կլինեի հետ աշխատել …

Հեծանիվի և հեծանվորդի վրա ազդող ուժերը դիմադրողական կորուստների և բլուր բարձրանալու համար անհրաժեշտ ուժի համադրություն են: Մարզիչը հայտնում է արագության և հզորության մասին: Եթե մենք կարողանանք որոշակի արագությամբ գտնել դիմադրողական կորուստները, ապա մնացած ուժը օգտագործվում է բլուր բարձրանալու համար: Բարձրանալու ուժը կախված է հեծանիվի և հեծյալի քաշից և վերելքի արագությունից, ուստի մենք կարող ենք վերադառնալ դեպի թեքությունը:

Սկզբում ես օգտագործեցի զարմանահրաշ https://bikecalculator.com- ը `տիպիկ արագությամբ դիմադրողական ուժի կորստի որոշ տվյալների կետեր գտնելու համար: Այնուհետև ես փոխակերպեցի արագության տիրույթը ՝ գծային հարաբերություններ ստեղծելու համար և գտա լավագույն պիտանի գիծը: Հաշվի առնելով գծի հավասարումը, այժմ կարող ենք հաշվարկել հզորությունը (W) դիմադրությունից = (0.0102*(Speedkmh^2.8))+9.428:

Վերցրեք ուժը չափված ուժից ՝ «բարձրանալու» ուժ տալու համար:

Մենք գիտենք բարձրանալու արագությունը կմ/ժ -ով և այն վերածում ենք SI- ի մ/վ -ի (բաժանել 3,6 -ի):

Թեքությունը հայտնաբերվում է ՝ թեքությունից (%) = ((PowerClimbing/(WeightKg*g))/Speed)*100

որտեղ ազատ անկման արագացում g = 9.8 մ/վ/վ կամ 9.8 Ն/կգ

Քայլ 2: Ստացեք որոշ տվյալներ

Ստացեք որոշ տվյալներ
Ստացեք որոշ տվյալներ

Թեքության հաշվարկը պահանջում է արագություն և ուժ: Ես օգտագործել եմ Arduino Nano 33 IoT ՝ BLE- ի միջոցով մարզիչին միանալու համար ՝ սա ստանալու համար: Սկզբում ես շատ խրվեցի, քանի որ այս մոդուլի հայրենի ArduinoBLE գրադարանի ներկայիս v.1.1.2 տարբերակը չի վարում նույնականացումը որևէ ձևով, ինչը նշանակում է, որ առևտրային BLE սենսորների մեծ մասը չի զուգակցվի դրա հետ:

Լուծումը NPE Cable ANT+ to BLE կամուրջի օգտագործումն էր (https://npe-inc.com/cableinfo/), որը ուսուցչի ներկառուցված BLE- ն անվճար է պահում վերապատրաստման ծրագրի հաղորդակցման համար և չի պահանջում նույնականացում BLE- ում: կողմը:

BLE հզորության բնութագիրը բավականին պարզ է, քանի որ հզորությունը վտ -ում պարունակվում է փոխանցված տվյալների երկրորդ և երրորդ բայթերում `որպես 16 բիթանոց ամբողջ թիվ (փոքր էնդիան, այսինքն` առաջին նշանակալի օկտետը առաջինը): Ես կիրառեցի շարժվող միջին զտիչ `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]; // էներգիայի նվազագույն sig բայթ HEX բայթում rawpowerValue3 = holdpowervalues [3]; // էներգիայի առավելագույն սիգ բայթ HEX long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Օգտագործեք շարժվող միջին զտիչ `« 3s power »powerTrainer = moveAverageFilter_power.process (rawpowerTotal) տալու համար;

BLE արագության բնութագիրը (Հեծանվավազքի արագություն և արագություն) այն բաներից է, որը ձեզ ստիպում է մտածել, թե ինչ է ծխում SIG- ի վրա, երբ նրանք գրում էին բնութագիրը:

Բնութագիրը վերադարձնում է 16 բայթ զանգված, որը չի պարունակում արագություն և արագություն: Փոխարենը, դուք ստանում եք անիվների պտույտներ և պտտվող պտույտներ (ընդհանուր գումարներ) և ժամանակ ՝ վերջին իրադարձության տվյալներից 1024 -րդ վայրկյանում: Այսպիսով, ավելի շատ մաթեմատիկա: Օ,, և բայթերը միշտ չէ, որ առկա են, այնպես որ սկզբում դրոշի բայթ է: Օ Oh, և բայթերը փոքր endian HEX են, այնպես որ պետք է կարդալ հետընթաց ՝ երկրորդ բայթը բազմապատկելով 256 -ով, երրորդը ՝ 65536 -ով և այլն, այնուհետև դրանք ավելացնելով միասին: Արագություն գտնելու համար դուք պետք է ստանաք հեծանիվի անիվի ստանդարտ շրջագիծ ՝ հեռավորությունը իմանալու համար…

եթե (speedCharacteristic.valueUpdated ()) {

// Այս արժեքին անհրաժեշտ է 16 բայթ զանգված uint8_t պահեստային արժեքներ [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Բայց ես պատրաստվում եմ կարդալ միայն առաջին 7 speedCharacteristic.readValue (պահման արժեքներ, 7); բայթ rawValue0 = պահման արժեքներ [0]; // երկուական դրոշներ 8 բիթ int բայթ rawValue1 = պահման արժեքներ [1]; // հեղափոխությունները նվազ նշանակալի բայթ HEX բայթում rawValue2 = պահման արժեքներ [2]; // հեղափոխությունները հաջորդ ամենաէական բայթում HEX բայթում rawValue3 = պահման արժեքներ [3]; // հեղափոխությունները հաջորդ ամենակարևոր բայթում HEX բայթում rawValue4 = պահման արժեքներ [4]; // հեղափոխությունները ամենաէական բայթ HEX բայթում rawValue5 = պահման արժեքներ [5]; // անիվի վերջին իրադարձությունից ամենացածր ժամանակը սիգ բայթ բայթ rawValue6 = պահման արժեքներ [6]; // ժամանակը անիվի վերջին իրադարձությունից ամենաշատը բայթ է եթե (firstData) {// Ստացեք անիվների կուտակային պտույտներ ՝ որպես փոքր էնդյան վեցանկյուն 2 -րդ, 3 -րդ և 4 -րդ տեղերում (առաջին հերթին նշանակալի օկտետ) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // timeամանակ ստացեք վերջին անիվի իրադարձությունից 1024 -րդ վայրկյանում Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = կեղծ; } else {// Ստացեք տվյալների երկրորդ փաթեթը երկար WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); երկար TimeTemp = (rawValue5 + (rawValue6 * 256)); եթե (WheelRevsTemp> WheelRevs1) {// համոզվեք, որ հեծանիվը շարժվում է WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = ճշմարիտ;}

// Գտեք հեռավորության տարբերությունը սմ -ով և փոխարկեք կմ -ի float distanceTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

float kmTravelled = distanceTraledled / 1000000;

// Գտեք ժամանակը վայրկյանի 1024 -րդ վայրկյանում և փոխակերպեք ժամի

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

// Գտեք արագություն կմ/ ժ

արագությունKMH = (kmTraledled / timeHrs);

Arduino- ի էսքիզը տեղակայված է GitHub- ում (https://github.com/mockendon/opengradesim):

Քայլ 3. Սարքաշար 1 ՝ գծային շարժիչ

Սարքավորումներ 1 գծային շարժիչ
Սարքավորումներ 1 գծային շարժիչ
Սարքավորումներ 1 գծային շարժիչ
Սարքավորումներ 1 գծային շարժիչ
Սարքավորումներ 1 գծային շարժիչ
Սարքավորումներ 1 գծային շարժիչ

Իմ սկավառակի արգելակման ճանապարհի հեծանիվի անցնող առանցքը սահմանում է 19,2 մմ առանցք, որը 12 մմ առանցքով մաքրում է պատառաքաղների միջև 100 մմ:

Պահեստավորված 3/4 դյույմ 10swg ալյումինե խողովակը կատարյալ տեղավորվում է և գեղեցիկ դեբյուտ է կոչվում ebay- ում (https://www.ebay.co.uk/str/aluminiumonline) մատակարարված և երկարեց ինձ համար մի քանի ֆունտով:

Գործարկիչն ունի 20 մմ ձող ՝ 6 մմ անցքով, այնպես որ 3D տպված հատվածը կապում է ալյումինե խողովակը 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 Վ էլեկտրամատակարարումից սնուցելու համար, որը պահանջվում է գծային շարժիչի համար: Unfortunatelyավոք, Arduino Nano IoT տախտակը 3.3 Վ ազդանշան է տալիս, հետևաբար տրամաբանական մակարդակի փոխարկիչի (կամ օպտոիզոլատոր) կարիք, քանի որ ազդանշանները միայն միակողմանի են):

Գործը նախատեսված է ընդունելու հոսանքի միակցիչները, որոնք սովորաբար օգտագործվում են LED լուսավորման ծրագրերում: Ես մորթեցի USB երկարացման կապը, որպեսզի հնարավոր լինի հեշտությամբ միացնել / անջատել Arduino- ի գլխամասը և մինչդեռ ես վստահ էի, որ էլեկտրահաղորդման գծերն օգտագործում եմ հոսանքի և 3.3 Վ ազդանշանի տվյալների գծերը, ես ազնվորեն խորհուրդ կտայի դրա դեմ ատեք որևէ մեկին տապակել իրենց USB պորտերը կամ ծայրամասային սարքերը ՝ դրանք սխալմամբ միացնելով:

Քայլ 5. Սարքաշար 3 Control Electronics (Arduino)

Սարքաշար 3 Control Electronics (Arduino)
Սարքաշար 3 Control Electronics (Arduino)
Սարքաշար 3 Control Electronics (Arduino)
Սարքաշար 3 Control Electronics (Arduino)
Սարքաշար 3 Control Electronics (Arduino)
Սարքաշար 3 Control Electronics (Arduino)

Arduino OLED և տրամաբանական մակարդակի փոխարկիչի պատյանն ունի հետևի մեջ 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 ադապտերի ներքին մակերևույթից, արագ շտկում է ՝ առանց հատուկ գործիքների;)

Խորհուրդ ենք տալիս: