Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Steps
Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Steps
Anonim
Image
Image
Open (Bicycle) Grade Simulator - OpenGradeSIM
Open (Bicycle) Grade Simulator - OpenGradeSIM
Open (Bicycle) Grade Simulator - OpenGradeSIM
Open (Bicycle) Grade Simulator - 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 принти

Ардуино үчүн иштин 3D принти (баскычтоп менен 1 -версия) https://www.thingiverse.com/thing:3984911 (2 -версия көрсөтүлгөндөй (https://www.thingiverse.com/thing:3995976)

3мм тунук акрилдин 32 х 38мм лазердик кесими электрониканын бардык жеринде тердөөңүздү сактап калуу үчүн (муну идеалдуу эмес).

Кээ бир кан блоктор (капталдарды калтырууга ылайыкташтырылган), кокусунан калибр поршендериңизди Shimano диск тормозуңуздан шыктанууңузга түрткү бербөө үчүн

Linear Actuator 750N 200mm саякат мисалы Al03 Mini Linear Actuators

L298N H көпүрөсү (сыяктуу:

Arduino Nano IoT 33 www.rapidonline.com заказ 73-4863

2 ачкыч мембраналык клавиатура, мисалы

IIC I2C Logic Level Converter Bi-Directional Module 5V to 3.3V Arduino үчүн, мисалы

12V 3A DC электр менен камсыздоо - LED жарыктандыруу үчүн иштегендер сонун иштейт!

NPE CABLE Ant+ BLE көпүрөсүнө

CABLE көпүрөсү үчүн 3D басып чыгарылуучу клип

1.3 OLED LCD дисплей модулу IIC I2C интерфейси менен 128x32 3.3V

1 -кадам: Кээ бир математика

Кээ бир математика
Кээ бир математика

Биз окшоштурулган ийилүүнү эсептеп чыгышыбыз керек. Мен машыктыруучу бул маалыматты ылдамдык, кубат, ыргак ж.б. менен бирге жарнамалайт деп үмүттөнгөм, бирок тренер планшеттеги программалык камсыздоого, компьютерди ж.б. көзөмөлдөө үчүн колдонулган кубаттуулукту кармап туруу үчүн каршылык көрсөтөт. Менде программалык камсыздоодон "окшоштурулган бааны" оңой эле басып алууга мүмкүнчүлүк болгон жок, ошондуктан артка иштөөгө туура келди …

Велосипед менен чабандестин үстүндө иштеген күчтөр - бул каршылыктуу жоготуулардын жана дөбөгө чыгуу үчүн зарыл болгон күчтүн жыйындысы. Тренер ылдамдык жана күч жөнүндө кабарлайт. Эгерде биз берилген ылдамдыкта резистивдүү жоготууларды таба алсак, анда калган күч тоого чыгуу үчүн колдонулат. Чыгуу күчү велосипед менен чабандестин салмагына жана көтөрүлүү ылдамдыгына жараша болот, ошондуктан биз жантайып кайра иштей алабыз.

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

"Чыгуу" күчүн берүү үчүн өлчөнгөн күчтөн каршылыктын күчүн алыңыз.

Биз км/саатта көтөрүлүү ылдамдыгын билебиз жана муну S/м бирдигине айландырабыз (3.6га бөлүү).

Качан табылган: Incline (%) = ((PowerClimbing/(WeightKg*g))/Speed)*100

мында эркин түшүүнүн ылдамдашы g = 9.8м/с/с же 9.8 Н/кг

2 -кадам: Кээ бир маалыматтарды алуу

Кээ бир маалыматтарды алуу
Кээ бир маалыматтарды алуу

Ийиле эсептөө ылдамдыкты жана күчтү талап кылат. Мен муну алуу үчүн машыктыруучуга BLE аркылуу туташуу үчүн Arduino Nano 33 IoT колдондум. Мен башында абдан тыгылып калдым, анткени бул модулдун жергиликтүү ArduinoBLE китепканасынын учурдагы v.1.1.2 версиясы аутентификацияны эч кандай түрдө иштете албайт, бул көпчүлүк BLE коммерциялык BLE сенсорлору менен жупташпайт дегенди билдирет.

Чечим NPE Cable 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); // Power 2 жана 3 -жерлерде ватт катары кайтарылат (0 жана 1 -лок 8 -бит желектери) байт rawpowerValue2 = holdpowervalues [2]; // HEXтеги эң кичине сиг байт rawpowerValue3 = holdpowervalues [3]; // 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 = holdvalues [0]; // экилик желектер 8 бит int bayte rawValue1 = holdvalues [1]; // төңкөрүштөр HEXтеги эң аз байт byte rawValue2 = holdvalues [2]; // төңкөрүштөр HEXтеги эң маанилүү байт rawValue3 = holdvalues [3]; // төңкөрүштөр HEXтеги эң маанилүү байт rawValue4 = holdvalues [4]; // төңкөрүштөр HEXтеги эң маанилүү байт rawValue5 = holdvalues [5]; // акыркы дөңгөлөк окуясынан бери эң кичине байт байт rawValue6 = holdvalues [6]; // акыркы дөңгөлөк окуясынан кийинки убакыт эң чоң байт if (firstData) {// 2, 3 жана 4 кичинекей азырак алты бурчтуу катары кумулятивдүү дөңгөлөктөрдү алуу rawValue3 * 65536) + (rawValue4 * 16777216)); // Акыркы дөңгөлөк окуясынан бери убакытты 1024 -секундада алыңыз Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = false; } else {// Маалыматтардын экинчи топтомун алуу WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); узак TimeTemp = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp> WheelRevs1) {// велосипеддин кыймылда экенин текшериңиз WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = true;}

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

сүзүү kmTravelled = distanceTravelled / 1000000;

// Убакытты секундасынын 1024төн биринде таап, саатка айлантыңыз

float timeDifference = (Time_2 - Time_1); float timeSecs = timeDifference / 1024; float 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 алюминий түтүк - бул 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 көпүрө тактасы 5V регуляторунда орнотулган, бул Arduino'ду сызыктуу кыймылдаткычка керектүү 12В электр менен камсыздоо үчүн эң сонун. Тилекке каршы, Arduino Nano IoT тактасы 3.3V болуп саналат, демек логикалык деңгээлдеги конверторго муктаждык бар (же сигналдар бир багыттуу болгондуктан оптоизолятор).

Кап LED жарык берүү колдонмолорунда кеңири колдонулган электр коннекторлорун кабыл алуу үчүн иштелип чыккан. Мен Arduino башкы блогун оңой туташтырууга / ажыратууга мүмкүндүк берүү үчүн USB кеңейтүүсүн алып салдым жана 3.3V сигнализациясы үчүн электр линияларын жана маалымат линияларын колдонгонума ишенгем. Кимдир бирөөнү 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 16mm 0.3mm жука шым шайба керек.

Алар кемчиликсиз туура келишет жана велосипед менен шишикти тренерден көз карандысыз айландырышат.

Учурда бул дисктин жылышын бир нече ммге өзгөртөт, андыктан кайра индекстешиңиз керек болот

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

Сунушталууда: