Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Prezantimi
Një kompani e njohur e fitnesit me bazë në SHBA (Wahoo) kohët e fundit nxori një ndihmë të madhe stërvitore të brendshme që ngre dhe ul pjesën e përparme të biçikletës në trainer turbo sipas shkallës së simuluar të kodrës që përdoruesi është duke hipur (Ngjitja Kickr).
Duket e mahnitshme, por për fat të keq kjo nuk është e disponueshme për të gjithë ne pasi do t'ju duhet 1) një trainer i lartë i gamës Wahoo dhe 2) 500 cash para në dorë për ta bërë këtë tuajin.
Kam thyer një klavikulë (kurrë nuk e kam vënë një çiklist rrugor në një biçikletë malore) kështu që kisha më shumë kilometra në trajner dhe më shumë kohë për të llastuar dhe mendova se ky mund të ishte një projekt argëtues.
Njësia tregtare simulon -5% në +20% kështu që unë doja t'i afrohesha asaj, por me 10% të buxhetit!
Kjo është krijuar rreth Tacx Neo tim, por çdo trajner që transmeton të dhënat e fuqisë dhe shpejtësisë së tij përmes ANT+ ose BLE mund të funksionojë (mendoj!).
Meqenëse baza e rrotave në biçikletën time të rrugës mat saktësisht 1000mm, do të më duhej të ngreja pirunët me 200mm për të simuluar 20% (shiko figurën) kështu që do të bënte një shtytës linear 200mm. Pesha e biçikletës + e kalorësit nuk ka gjasa të kalojë 100 kg dhe meqenëse kjo është e shpërndarë midis akseve dhe shumica është në anën e pasme 750N do të ngre 75 kg dhe duhet të jetë në rregull. Aktivizuesit më të shpejtë janë në dispozicion për më shumë para, por ky më kushtoi rreth 20 £ dhe menaxhon 10 mm/sek. Aktivizuesit me potenciometra që mund të përdoren si servos të thjeshtë janë gjithashtu 2 deri në 3 herë më të shtrenjtë.
Furnizimet
Printimi 3D (PLA ose ABSetc) i pjesës së përshtatësit përmes boshtit:
100mm stok prej tubi alumini 3/4 inç 10 swg (për një kornizë përmes boshtit)
80 mm stok prej 6 mm prej çeliku inox
Shtypja 3D (PLA ose ABSetc) e këpucëve për pjesën e aktivizuesit linear:
Printimi 3D i Rastit për urën H
Printimi 3D i Rastit për Arduino (Versioni 1 me tastierë) https://www.thingiverse.com/thing:3984911 (Versioni 2 siç tregohet (https://www.thingiverse.com/thing:3995976)
Pjesë e prerë me lazer prej akriliku të pastër 3 mm 32 x 38 mm për t'ju mbajtur të djersitur në të gjithë pajisjet elektronike (e bëri atë, jo ideale).
Disa blloqe gjakderdhjeje (të përshtatura për të lënë jastëkët brenda) për t'ju parandaluar që të nxisni aksidentalisht pistonët e kaliperit nga frenat e diskut Shimano në entuziazmin tuaj
Lëvizës Linear 750N 200mm udhëtim p.sh. Al03 Mini Actuators Linear nga
Ura L298N H (si:
Arduino Nano IoT 33 www.rapidonline.com porosia 73-4863
2 tastiera me membranë kryesore p.sh.
Konvertuesi i nivelit logjik IIC I2C Moduli Bi-Drejtues 5V në 3.3V Për Arduino p.sh.
Furnizimi me energji 12V 3A DC - ato për ndriçimin LED funksionojnë shkëlqyeshëm!
NPE CABLE Ant+ në urën BLE
Klip i printueshëm 3D për urën CABLE
Moduli i ekranit LCD 1.3 OLED me ndërfaqe IIC I2C 128x32 3.3V
Hapi 1: Disa matematikë
Duhet të llogarisim pjerrësinë që simulohet. Unë kisha shpresuar se traineri do t'i reklamonte këto të dhëna së bashku me shpejtësinë, fuqinë, ritmin etj. Megjithatë traineri thjesht vendos rezistencë për të ruajtur prodhimin e energjisë sipas softuerit në tabletë, kompjuter etj që përdoret për t'i kontrolluar ato. Unë nuk kisha asnjë mënyrë për të kapur me lehtësi "notën e simuluar" nga softueri, kështu që do të më duhej të punoja prapa …
Forcat që veprojnë në biçikletë dhe kalorës janë një kombinim i humbjeve rezistente dhe fuqisë së nevojshme për t'u ngjitur në kodër. Trajneri raporton shpejtësinë dhe fuqinë. Nëse mund të gjejmë humbjet rezistente me një shpejtësi të caktuar, atëherë fuqia e mbetur po përdoret për t'u ngjitur në kodër. Fuqia për t'u ngjitur varet nga pesha e biçikletës dhe kalorësit dhe shkalla e ngjitjes dhe kështu ne mund të punojmë përsëri në pjerrësi.
Së pari kam përdorur https://bikecalculator.com të mahnitshme për të gjetur disa pika të të dhënave për humbjen e fuqisë rezistente me shpejtësi tipike. Pastaj transformova fushën e shpejtësisë për të prodhuar një marrëdhënie lineare dhe gjeta vijën më të përshtatshme të përshtatjes. Duke marrë ekuacionin e vijës tani mund të llogarisim fuqinë (W) nga rezistenca = (0.0102*(Speedkmh^2.8))+9.428.
Merrni fuqinë nga rezistenca nga fuqia e matur për të dhënë fuqinë e 'ngjitjes'.
Ne e dimë shpejtësinë e ngjitjes në km/orë dhe e konvertojmë atë në njësi SI të m/s (pjesëtoni me 3.6).
Pjerrësia gjendet nga: Pjerrësia (%) = ((PowerClimbing/(PeshaKg*g))/Shpejtësia)*100
ku nxitimi i rënies së lirë g = 9.8m/s/s ose 9.8 N/kg
Hapi 2: Merrni disa të dhëna
Llogaritja e pjerrësisë kërkon shpejtësi dhe fuqi. Kam përdorur një Arduino Nano 33 IoT për t'u lidhur me trajnerin përmes BLE për të marrë këtë. Fillimisht u bllokova pasi versioni aktual v.1.1.2 i bibliotekës vendase ArduinoBLE për këtë modul nuk trajton vërtetimin në asnjë formë që do të thotë se shumica (?) Sensorët komercial BLE nuk do të çiftohen me të.
Zgjidhja ishte përdorimi i urës NPE Cable ANT+ to BLE (https://npe-inc.com/cableinfo/) e cila e mban të integruar BLE-në e trajnerit falas për komunikimin e aplikacionit të trajnimit dhe nuk kërkon vërtetim në BLE anësore.
Karakteristika e fuqisë BLE është mjaft e drejtpërdrejtë pasi fuqia në watt përmbahet në bajtët e dytë dhe të tretë të të dhënave të transmetuara si një numër i plotë 16 bitësh (pak endian, domethënë okteti më pak i rëndësishëm së pari). Kam aplikuar një filtër mesatar lëvizës për të dhënë fuqi mesatare 3 -vjeçare - ashtu siç tregon kompjuteri im biçikletë - pasi kjo është më pak e çrregullt.
nëse (powerCharacteristic.valueUpdated ()) {
// Përcaktoni një grup për vlerën uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0}; // Lexo vlerën në varg powerCharacteristic.readValue (vlerat e mbajtjes së fuqisë, 6); // Fuqia kthehet si vat në vendndodhjen 2 dhe 3 (lok 0 dhe 1 është flamuj 8 bit) byte rawpowerValue2 = vlerat e mbajtjes së fuqisë [2]; // fuqia më e vogël sig byte në bajt HEX rawpowerValue3 = vlerat e mbajtjes [3]; // fuqia më e madhe e byteve në HEX rawpowerTotal të gjatë = (rawpowerValue2 + (rawpowerValue3 * 256)); // Përdorni filtrin mesatar të lëvizshëm për t'i dhënë '3s power' powerTrainer = moveAverageFilter_power.process (rawpowerTotal);
Karakteristika e shpejtësisë BLE (Shpejtësia dhe shpejtësia e çiklizmit) është një nga ato gjëra që ju bën të pyesni veten se çfarë në tokë po pinte SIG kur ata shkruan specifikimin.
Karakteristika kthen një grup prej 16 bajtësh që nuk përmban as shpejtësi dhe as ritëm. Në vend të kësaj ju merrni rrotullimet e rrotave dhe revolucionet e fiksimit (totali) dhe kohën që nga të dhënat e ngjarjes së fundit në 1024 -të e sekondës. Pra më shumë matematikë atëherë. Oh, dhe bajtët nuk janë gjithmonë të pranishëm kështu që ka një bajt flamur në fillim. Oh, dhe bajtët janë pak HEX endian, kështu që ju duhet të lexoni prapa duke shumëzuar bajtin e dytë me 256, të tretin me 65536 etj., Pastaj duke i shtuar ato së bashku. Për të gjetur shpejtësinë, duhet të supozoni një perimetër standard të rrotave të biçikletës për të ditur distancën….
nëse (speedCharacteristic.valueUpdated ()) {
// Kjo vlerë ka nevojë për një grup 16 bajt uint8_t vlera mbajtëse [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Por unë do të lexoj vetëm 7 shpejtësinë e parë speedCharacteristic.readValue (vlerat e mbajtjes, 7); byte rawValue0 = vlerat e mbajtjes [0]; // flamuj binarë 8 bit int byte rawValue1 = vlerat e mbajtjes [1]; // revolucionet bajt më pak domethënës në bajt HEX rawValue2 = vlerat e mbajtjes [2]; // revolucionet bajti tjetër më i rëndësishëm në bajtin HEX rawValue3 = vlerat e mbajtjes [3]; // revolucionet bajti tjetër më i rëndësishëm në bajtin hex rawValue4 = vlerat e mbajtjes [4]; // revolucionet bajti më domethënës në bajtin hex rawValue5 = vlerat e mbajtjes [5]; // koha që nga ngjarja e fundit e rrotave më së paku sig byte byte rawValue6 = vlerat e mbajtjes [6]; // koha që nga ngjarja e fundit e rrotave më e madhe e byte sig nëse (të dhënat e para) {// Merrni rrotullimet kumulative të rrotave si gjashtëkëndësh endian të vogël në vendndodhjen 2, 3 dhe 4 (okteti më pak i rëndësishëm së pari) WheelRevs1 = (i papërpunuarVlera1 + (vlera e papërpunuar2 * 256) + (Vlera e papërpunuar3 * 65536) + (Vlera e papërpunuar4 * 16777216)); // Merrni kohë që nga ngjarja e fundit e rrotës në 1024 -at e një të dytë Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = false; } else {// Merr grupin e dytë të të dhënave WheelRevsTemp të gjatë = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); TimeTemp e gjatë = (Vlera e papërpunuar5 + (Vlera e papërpunuar6 * 256)); nëse (WheelRevsTemp> WheelRevs1) {// sigurohuni që biçikleta po lëviz WheelRevs2 = WheelRevsTemp; Koha_2 = Kohëzgjatja; firstData = e vërtetë;}
// Gjeni ndryshimin e distancës në cm dhe konvertojeni në km distanca notueseTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);
noton kmTravelled = distanceTraledled / 1000000;
// Gjeni kohë në 1024 -të e sekondës dhe konvertojeni në orë
float timeDifference = (Time_2 - Time_1); float timeSecs = timeDifference / 1024; koha e notimitHrs = timeSecs / 3600;
// Gjeni shpejtësinë kmh
shpejtësiaKMH = (kmTraledled / timeHrs);
Skica Arduino është pritur në GitHub (https://github.com/mockendon/opengradesim).
Hapi 3: Hardware 1 the Actuator Linear
Boshti përmes në biçikletën time të frenave me disk përcakton një bosht 19.2mm për të pastruar boshtin 12mm përmes 100mm midis pirunëve.
Stock 3/4 inç 10swg tub alumini është një përshtatje e përsosur dhe një copë e bukur e quajtur Dave në ebay (https://www.ebay.co.uk/str/aluminiumonline) e furnizuar dhe e prerë në gjatësi për mua për disa paund.
Aktivizuesi ka një shirit 20 mm me një vrimë 6 mm, kështu që pjesa e printuar 3D lidh tubin e aluminit me një shufër çeliku 6 mm dhe meqenëse forcat janë 90% të ngjeshura, disa PLA / ABS janë në lartësinë e sfidës.
Nëse ekzekutoni një konfigurim standard të lëshimit të shpejtë, atëherë diçka e tillë (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) do të shmangte nevojën për të ridizajnuar këtë përbërës.
Çizmi është krijuar për t'u përshtatur me bllokun e ngritësit të furnizuar me trainerin tim Tacx, por ndoshta do të përshtatet në shumë ngritës të ngjashëm ose thjesht mund të redaktoni skedarin TinkerCad që t'i përshtatet kërkesës tuaj.
Hapi 4: Hardware 2 - H -Bridge
Këto borde urë L298N H që janë shumë të zakonshme në internet kanë një rregullator të integruar në 5V i cili është i shkëlqyeshëm për fuqizimin e Arduino nga furnizimi me energji 12V i kërkuar për aktivizuesin linear. Fatkeqësisht, bordi Arduino Nano IoT është 3.3V duke sinjalizuar kështu nevojën për një konvertues të nivelit logjik (ose një optoizolator pasi sinjalet janë vetëm njëdrejtimëshe).
Rasti është krijuar për të pranuar lidhësit e energjisë që përdoren zakonisht në aplikimet e ndriçimit LED. Unë theva një prizë shtesë USB për të bërë të mundur lidhjen / shkëputjen e njësisë së kokës Arduino me lehtësi dhe ndërsa isha i sigurt se do të përdorja linjat e energjisë për energjinë dhe linjat e të dhënave për sinjalizimin 3.3V sinqerisht do të këshilloja KUNDSTR kësaj urreni dikë që të skuqet portat e tyre USB ose pajisjet periferike duke i lidhur ato gabimisht!
Hapi 5: Hardueri 3 Elektronika e Kontrollit (Arduino)
Rasti për konvertuesin Arduino OLED dhe nivelin logjik ka një montim standard 1/2 të stilit Garmin në pjesën e pasme për të lejuar që ai të montohet në mënyrë të sigurt në biçikletë. Një montim 'jashtë përpara' do të lejojë që njësia të anohet lart ose poshtë në 'zero' pozicioni i përshpejtuesit ose një linjë kodi vetëm në zero automatike në fillim do të ishte e lehtë të shtohej.
Rasti ka një vend për një tastierë membrana - kjo përdoret për të vendosur peshën e kombinuar të kalorësit dhe biçikletës. Ju thjesht mund ta vendosni këtë në mënyrë programore veçanërisht nëse nuk ndani një trajner me askënd.
Mund të jetë mirë të zbatosh një mënyrë 'manuale'. Ndoshta shtypja e të dy butonave mund të fillojë një mënyrë manuale dhe pastaj butonat mund të rrisin / ulin pjerrësinë. Unë do ta shtoj këtë në listën e detyrave!
Dosja STL e rastit është, përsëri, e disponueshme në Thingiverse (shiko seksionin e furnizimeve për lidhjen).
Skica Arduino është pritur në GitHub (https://github.com/mockendon/opengradesim).
Mund të printoni një klip të vogël të pastër për urën tuaj CABLE nga këtu
Hapi 6: "Dalja e pasme"
Shumë njerëz kanë ngritur çështjen e fërkimit të pjesës së pasme kur lëviz biçikleta. Disa trajnerë kanë një bosht që lëviz (si Kickr), por shumë jo.
Aktualisht zgjidhja ime më e mirë për mua është të montoj disa kushineta standarde me zakon të thellë 61800-2RS (rreth 2 each secila) në adaptorët e lëshimit të shpejtë dhe pastaj të montoj daljet përmes boshtit në këto (shiko fotot) me një hell të madhësisë QR
Kushinetat kanë nevojë për një rondele të hollë, p.sh. M12 16mm 0.3mm midis përshtatësit dhe kushinetës.
Ato përshtaten në mënyrë perfekte dhe rrotullohen me biçikletën dhe hellin në mënyrë të pavarur nga traineri.
Për momentin kjo ndryshon kompensimin në anën e makinës me disa mm, kështu që do t'ju duhet të ri-indeksoni
Unë jam duke projektuar pjesë të personalizuara (shiko planin pdf) për tu përpunuar (në tornën e kunatit tim të ardhshëm kur ai ka një orë për të ndihmuar!). Këto nuk janë testuar akoma !!! Por bluarja 1 mm nga sipërfaqja e brendshme e përshtatësit QR nga ana e aksioneve është një rregullim i shpejtë pa mjete speciale;)