Ашық (велосипед) сынып симуляторы - OpenGradeSIM: 6 қадам
Ашық (велосипед) сынып симуляторы - OpenGradeSIM: 6 қадам
Anonim
Image
Image
Ашық (велосипед) сынып тренажері - OpenGradeSIM
Ашық (велосипед) сынып тренажері - OpenGradeSIM
Ашық (велосипед) сынып тренажері - OpenGradeSIM
Ашық (велосипед) сынып тренажері - OpenGradeSIM

Кіріспе

Жақында АҚШ -тың белгілі бір фитнес -компаниясы (Wahoo) жақында турбо -тренажерде велосипедтің алдыңғы жағын көтеретін және төмендететін керемет жабық жаттығуларды шығарды, ол пайдаланушы мінетін шыңға сәйкес келеді (Kickr Climb).

Бұл таңқаларлық көрінеді, бірақ, өкінішке орай, бұл бәрімізге қол жетімді емес, өйткені сізге 1) Wahoo тренажерінің ең жоғары жаттықтырушысы және 2) сізге 500 фунт стерлинг қажет.

Мен клавикуланы сындырдым (велосипедшіні тау велосипедіне ешқашан отырғызбаңыз), сондықтан менде жаттықтырушыда бірнеше миль болды, ал ойнауға көбірек уақыт болды және бұл қызықты жоба деп ойладым.

Коммерциялық блок -5% -дан +20% -ға дейін имитациялайды, сондықтан мен оған жақындағым келді, бірақ бюджеттің 10%!

Бұл менің Tacx Neo -ға арналған, бірақ оның қуаты мен жылдамдығы туралы ақпаратты ANT+ немесе BLE арқылы тарататын кез келген жаттықтырушы жұмыс жасай алады (менің ойымша!).

Жол велосипедінің доңғалақ негізі дәл 1000 мм болатындықтан, 20% имитациялау үшін шанышқыларды 200 мм көтеруім керек (суретті қараңыз), осылайша 200 мм сызықты қозғалтқыш жасайды. Велосипед + шабандозының салмағы 100 кг -нан аспауы екіталай, себебі ол осьтер арасында бөлінгендіктен, артқы жағында 750N 75кг көтереді және жақсы болуы керек. Жылдам жетектер көп ақшаға қол жетімді, бірақ бұл маған шамамен 20 фунт стерлинг және 10 мм/сек басқарады. Қарапайым серво ретінде қолдануға болатын потенциометрлері бар жетектер де 2-3 есе қымбат.

Жабдықтар

Осьтік адаптер бөлігінің 3D басып шығару (PLA немесе ABSetc):

100 мм 3/4 дюймдік 10 swg алюминий түтік қорабы (осьтен өтетін жақтау үшін)

6мм тот баспайтын болаттан жасалған 80мм шток

Өткізгіштің сызықты бөлігіне арналған аяқ киімнің 3D басып шығарылуы (PLA немесе ABSetc):

H-көпірге арналған корпустың 3D басып шығарылуы

Arduino корпусының 3D басып шығарылуы (1 -нұсқа пернетақтамен) https://www.thingiverse.com/thing:3984911 (2 -нұсқа көрсетілгендей (https://www.thingiverse.com/thing:3995976)

Электрониканың барлық жерінде терлеуге жол бермеу үшін 32 х 38 мм мөлдір акрилден жасалған лазерлік кесінді (бұл өте жақсы емес).

Шамано дискінің тежегіштерінен калибрлі поршендерді кездейсоқ итеріп кетпеу үшін кейбір қан кететін блоктар (жастықшаларды қалдыруға бейімделген)

Сызықтық жетекті 750N 200 мм жүру мысалы Al03 шағын сызықты жетектер

L298N H көпірі (мысалы:

Arduino Nano IoT 33 www.rapidonline.com тапсырысы 73-4863

2 пернелі мембраналық пернетақта, мысалы

IIC I2C логикалық деңгей түрлендіргіші екі бағытты модуль 5V-3.3V Arduino үшін, мысалы

12В 3А тұрақты ток көзі - жарықдиодты жарықтандыруға арналған құрылғылар өте жақсы жұмыс істейді!

NPE CABLE Ant+ BLE көпіріне

CABLE көпіріне арналған 3D басып шығарылатын клип

1,3 дюймдық OLED СКД дисплей модулі IIC I2C интерфейсі 128x32 3.3В

1 -қадам: Кейбір математика

Кейбір математика
Кейбір математика

Біз имитацияланған көлбеуді есептеуіміз керек. Мен жаттықтырушы бұл деректерді жылдамдықпен, қуатпен, жылдамдықпен және т.б. жарнамалайды деп үміттенгенмін, бірақ жаттықтырушы планшеттегі бағдарламалық жасақтамаға, компьютерге және т. Менде бағдарламалық жасақтамадан «имитациялық бағаны» оңай алуға мүмкіндігім болмады, сондықтан мен артқа қарай жұмыс істеуім керек еді …

Велосипед пен шабандозға әсер ететін күштер - қарсылықты жоғалту мен төбеге көтерілу үшін қажет күштердің жиынтығы. Жаттықтырушы жылдамдық пен қуат туралы хабарлайды. Егер біз резистивті шығындарды берілген жылдамдықпен таба алатын болсақ, онда қалған қуат төбеге көтерілуге жұмсалады. Көтерілу күші велосипед пен шабандоздың салмағына және көтерілу жылдамдығына байланысты, сондықтан біз көлбеу бағытта жұмыс жасай аламыз.

Алдымен мен таңғажайып https://bikecalculator.com сайтында әдеттегі жылдамдықта резистивті қуат жоғалту үшін кейбір деректер нүктелерін іздедім. Содан кейін мен жылдамдық доменін сызықтық қатынас жасау үшін өзгерттім және ең қолайлы сызықты таптым. Сызықтың теңдеуін алып, енді қарсылықтан = (0.0102*(Speedkmh^2.8))+9.428 қуатын (W) есептей аламыз.

«Өрмелеу» күшін беру үшін өлшенген қуаттан қарсылықтан қуат алыңыз.

Біз км/сағ көтерілу жылдамдығын білеміз және оны м/с SI бірліктеріне түрлендіреміз (3,6 -ға бөліңіз).

Көлбеу мына жерден табылған: Көлбеу (%) = ((PowerClimbing/(WeightKg*g))/Speed)*100

мұнда еркін түсу үдеуі g = 9,8м/с/с немесе 9,8 Н/кг

2 -қадам: Деректерді алу

Кейбір деректерді алыңыз
Кейбір деректерді алыңыз

Көлбеу есептеу жылдамдық пен қуатты қажет етеді. Мен оны алу үшін жаттықтырушыға BLE арқылы қосылу үшін Arduino Nano 33 IoT қолдандым. Мен бастапқыда өте қатып қалдым, себебі осы модульге арналған ArduinoBLE жергілікті кітапханасының ағымдағы v.1.1.2 нұсқасы түпнұсқалық растаманы ешбір түрде өңдемейді, яғни коммерциялық BLE сенсорларының көпшілігі онымен қосылмайды.

Шешім NPE ANT+ кабелінен BLE көпірін пайдалану болды (https://npe-inc.com/cableinfo/), ол тренерлердің BLE-де орнатылған жаттығуларға қосылу үшін ақысыз қалады және BLE аутентификациясын қажет етпейді. жағы

BLE қуатының сипаттамасы өте қарапайым, өйткені ватт қуаты 16 -разрядты бүтін сан ретінде берілетін мәліметтердің екінші және үшінші байтында болады (кішкене ендіан, яғни ең алдымен октеттің ең азы). Мен 3s орташа қуатын беру үшін жылжымалы орташа сүзгіні қолдандым - менің велосипед компьютерім сияқты - бұл тұрақсыз.

if (powerCharacteristic.valueUpdated ()) {

// uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0} мәніне массив анықтаңыз; // Мәнді powerCharacteristic.readValue массивіне оқу (holdpowervalues, 6); // Қуат 2 және 3 -орындарда ватт ретінде қайтарылады (0 және 1 -ші нүкте - 8 биттік жалаушалар) байт rawpowerValue2 = holdpowervalues [2]; // HEX -тегі ең кіші сиг байт rawpowerValue3 = holdpowervalues [3]; // power in sig sig байтындағы HEX long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // '3s power' беру үшін жылжымалы орташа сүзгіні қолданыңыз powerTrainer = moveAverageFilter_power.process (rawpowerTotal);

BLE жылдамдығының сипаттамасы (Cycling Speed and Cadence) - бұл спецификацияны жазғанда, SIG жер бетінде не шегетінін білуге мәжбүр ететін нәрселердің бірі.

Сипаттамасы 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 = ұстау мәндері [0]; // екілік жалаушалар 8 биттік int байт rawValue1 = holdvalues [1]; // революциялар HEX байтындағы ең аз байт rawValue2 = ұстау мәндері [2]; // революциялар HEX байтындағы келесі маңызды байт rawValue3 = holdvalues [3]; // революциялар HEX байтындағы келесі маңызды байт rawValue4 = holdvalues [4]; // революциялар HEX -тегі ең маңызды байт rawValue5 = ұстау мәндері [5]; // соңғы доңғалақ оқиғасынан кейінгі уақыт ең кіші байт байт rawValue6 = holdvalues [6]; // соңғы доңғалақ оқиғасынан кейінгі уақыт, ең үлкен байт if (firstData) {// 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)); ұзақ TimeTemp = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp> WheelRevs1) {// велосипедтің қозғалатынына көз жеткізіңіз WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = ақиқат;}

// Арақашықтықтың айырмашылығын см -ден табыңыз және км -ге ауыстырыңыз float distanceTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

float kmTravelled = қашықтықTravelled / 1000000;

// Уақытты секундтың 1024 -ші бөлігінде тауып, сағатқа айналдырыңыз

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

// км/ сағ жылдамдықты табыңыз

жылдамдықKMH = (кмTravelled / timeHrs);

Arduino эскизі GitHub -да орналастырылған (https://github.com/mockendon/opengradesim).

3 -қадам: 1 -ші аппараттық сызықтық іске қосқыш

Аппараттық құралдар 1 Сызықтық атқарушы
Аппараттық құралдар 1 Сызықтық атқарушы
Аппараттық құралдар 1 Сызықтық атқарушы
Аппараттық құралдар 1 Сызықтық атқарушы
Аппараттық құралдар 1 Сызықтық атқарушы
Аппараттық құралдар 1 Сызықтық атқарушы

Дискілі тежегіш жол велосипедіндегі айналмалы ось 12,2 мм осьтен шанышқылар арасында 100 мм болатын тазартатын 19,2 мм осьті көрсетеді.

3/4 дюймдік 10swg алюминий құбыры - бұл ebay -дағы Dave (https://www.ebay.co.uk/str/aluminiumonline) деп аталатын жақсы қапсырма және оны бірнеше фунтқа ұзындыққа дейін қиып алады.

Жетекте 6 мм саңылауы бар 20 мм штанга бар, сондықтан 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В қуат көзінен қуаттандыруға өте ыңғайлы. Өкінішке орай, Arduino Nano IoT тақтасы 3.3В сигналды береді, сондықтан логикалық деңгейдегі түрлендіргіш қажет (немесе сигналдар бір бағытты болғандықтан оптуолизатор).

Корпус жарықдиодты жарықтандыруда жиі қолданылатын қуат қосқыштарын қабылдауға арналған. Мен Arduino бас қондырғысын оңай қосуға / ажыратуға мүмкіндік беретін USB кеңейту сымын алып тастадым, ал мен 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 және логикалық деңгей түрлендіргішінің корпусында велосипедке мықтап бекітуге мүмкіндік беретін артқы жағында стандартты 1/2 бұрылысты Garmin стилі бар. «Алдыңғы» қондырғы қондырғыны акселерометр позициясына «нөлге» дейін жоғары немесе төмен еңкейтуге мүмкіндік береді немесе бастапқыда автоматты нөлге дейін код жолын қосу оңай болады.

Корпуста мембраналық пернетақтаға арналған орын бар - бұл шабандоз бен велосипед салмағын орнату үшін қолданылады. Сіз мұны бағдарламалық түрде орната аласыз, әсіресе жаттықтырушыны ешкіммен бөліспесеңіз.

«Қолмен» режимін енгізу жақсы болар еді. Мүмкін екі түймені басу қолмен жұмыс режимін бастауы мүмкін, содан кейін түймелер көлбеуді жоғарылатуы / төмендетуі мүмкін. Мен мұны істер тізіміне қосамын!

Істің STL файлы қайтадан Thingiverse -те қол жетімді (сілтемені жабдықтау бөлімінен қараңыз).

Arduino эскизі GitHub -да орналастырылған (https://github.com/mockendon/opengradesim).

Сіз осы жерден CABLE көпіріне ұқыпты шағын клип басып шығара аласыз

6 -қадам: «Артқы тамшылар»

«Артқы тамшылар»
«Артқы тамшылар»
«Артқы тамшылар»
«Артқы тамшылар»
«Артқы тамшылар»
«Артқы тамшылар»

Көптеген адамдар велосипед қозғалғанда артқы жағынан ысқылау мәселесін көтерді. Кейбір жаттықтырушыларда ось бар, ол қозғалады (мысалы, Kickr), бірақ көпшілігі қозғалмайды.

Қазіргі уақытта мен үшін ең жақсы шешім-бұл тез шығарылатын адаптерлерге стандартты 61800-2RS терең ойық мойынтіректерін (әрқайсысы шамамен 2 фунт стерлинг) орнату, содан кейін осьтер арқылы түсетін шығуларды үлкен өлшемдегі QR қисықпен орнату (суреттерді қараңыз).

Мойынтіректерге жіңішке жуғыш қажет, мысалы, адаптер мен мойынтіректің арасындағы M12 16 мм 0,3 мм.

Олар мінсіз сәйкес келеді және велосипедпен және шпательмен жаттықтырушыға тәуелсіз айналады.

Қазіргі уақытта бұл дискідегі жылжуды бірнеше мм-ге өзгертеді, сондықтан сізге қайтадан индекстеу қажет болады

Мен машинаның арнайы бөліктерін (pdf жоспарын қараңыз) жобалап жатырмын (болашақ қайын ағамның станогында, оған көмектесуге бір сағат болғанда!). Бұлар әлі тексерілмеген !!! Бірақ QR адаптерінің ішкі бетінен 1 мм тегістеу - бұл арнайы құралдарсыз тез түзету;)

Ұсынылған: