Nyitott (kerékpár) osztályú szimulátor - OpenGradeSIM: 6 lépés
Nyitott (kerékpár) osztályú szimulátor - OpenGradeSIM: 6 lépés
Anonim
Image
Image
Nyitott (kerékpár) osztályú szimulátor - OpenGradeSIM
Nyitott (kerékpár) osztályú szimulátor - OpenGradeSIM
Nyitott (kerékpár) osztályú szimulátor - OpenGradeSIM
Nyitott (kerékpár) osztályú szimulátor - OpenGradeSIM

Bevezetés

Egy jól ismert amerikai fitneszcég (Wahoo) nemrégiben bemutatott egy nagyszerű beltéri edzőeszközt, amely megemeli és leengedi a kerékpár elülső részét a turbóedzőn a felhasználó által szimulált dombvonal szerint (a Kickr Climb).

Elképesztően néz ki, de sajnos ez nem áll mindannyiunk rendelkezésére, mivel szüksége lesz 1) a legmagasabb szintű Wahoo edzőre és 2) 500 font készpénzre.

Eltörtem a kulcscsontomat (soha nem tettem fel országúti kerékpárosokat hegyi kerékpárra), így több mérföldem volt az edzőn, és több időm volt a bütykölésre, és úgy gondoltam, hogy ez egy szórakoztató projekt lehet.

A kereskedelmi egység -5% -tól +20% -ig szimulál, ezért közel akartam kerülni ehhez, de a költségvetés 10% -án!

Ezt a Tacx Neo -m köré terveztem, de minden olyan edző, amely ANT+ vagy BLE -n keresztül sugározza teljesítmény- és sebességadatait, működésbe hozható (gondolom!).

Mivel az országúti biciklim tengelytávja pontosan 1000 mm, a villákat 200 mm -rel kell felemelnem, hogy 20% -ot szimulálhassak (lásd a képen), így egy 200 mm -es lineáris működtető is megtenné. A kerékpár + versenyző súlya valószínűleg nem haladja meg a 100 kg -ot, és mivel ez eloszlik a tengelyek között, és a legtöbb hátul van, a 750N 75 kg -ot emel, és rendben kell lennie. Gyorsabb szelepmozgatók több pénzért kaphatók, de ez körülbelül 20 fontba került, és 10 mm/sec sebességgel működik. Az egyszerű szervóként használható potenciométeres hajtóművek szintén 2-3 -szor drágábbak.

Kellékek

Az átmenő tengely adapter részének 3D nyomtatása (PLA vagy ABSetc):

100 mm 3/4 hüvelykes 10 swg alumínium csőállomány (átmenő tengely kerethez)

80 mm -es 6 mm -es rozsdamentes acél rúd

A cipő 3D nyomtatása (PLA vagy ABSetc) a lineáris működtető részhez:

A H-híd tokjának 3D nyomtatása

Az Arduino tok 3D nyomtatása (1. verzió billentyűzettel)

Lézervágott darab 3 mm átlátszó, 32 x 38 mm -es akrilból, hogy ne izzadjon az elektronika (ez nem ideális).

Néhány vérzőblokk (a betétek behagyására alkalmas), hogy megakadályozza, hogy lelkesedésében véletlenül kiszorítsa a féknyereg dugattyúit a Shimano tárcsafékből

Lineáris működtető 750N 200 mm-es út, pl. Al03 Mini lineáris működtető a

L298N H híd (például:

Arduino Nano IoT 33 www.rapidonline.com rendelés 73-4863

2 gombos membrán billentyűzet, pl.

IIC I2C logikai szintváltó kétirányú modul 5V-3.3V Arduino számára, pl.

12V 3A egyenáramú tápegység - a LED -es világításhoz használhatók nagyszerűen működnek!

NPE CABLE Ant+-BLE híd

3D nyomtatható klip a CABLE hídhoz

1,3 OLED LCD kijelző modul IIC I2C interfésszel 128x32 3.3V

Lépés: Néhány matematika

Néhány matematika
Néhány matematika

Ki kell számolnunk a szimulálandó lejtést. Reméltem, hogy a tréner ezeket az adatokat a sebességgel, az erővel, a ritmussal stb. Együtt reklámozza, azonban a tréner egyszerűen ellenállást állít fel a teljesítmény fenntartására a táblagépen, számítógépen stb. Használt szoftver szerint. Nem volt módom arra, hogy a szoftverből könnyen elkapjam a „szimulált osztályzatot”, így visszafelé kell dolgoznom…

A kerékpárra és a versenyzőre ható erők az ellenálló veszteségek és a domb megmászásához szükséges erő kombinációja. Az edző jelentést tesz a sebességről és az erőről. Ha meg tudjuk találni az ellenállási veszteségeket egy adott sebességnél, akkor a fennmaradó teljesítményt a domb megmászására fordítjuk. A mászás ereje a kerékpár és a versenyző súlyától, valamint az emelkedési sebességtől függ, és így visszatérhetünk a lejtőhöz.

Először a lenyűgöző https://bikecalculator.com weboldalon találtam néhány adatpontot az ellenállásos teljesítményveszteséghez tipikus sebességnél. Ezután átalakítottam a sebességtartományt, hogy lineáris kapcsolatot hozzon létre, és megtaláltam a legjobban illeszkedő vonalat. A vonal egyenletét figyelembe véve most kiszámíthatjuk a teljesítményt (W) az ellenállásból = (0,0102*(Speedkmh^2,8))+9,428.

Vegye ki az ellenállásból származó erőt a mért teljesítményből, és adja meg a „mászás” erejét.

Ismerjük az emelkedési sebességet km/h -ban, és ezt m/s SI -egységgé alakítjuk (osztjuk 3,6 -tal).

A lejtést a következőből találja: Incline (%) = ((PowerClimbing/(WeightKg*g))/Speed)*100

ahol a szabadesés gyorsulása g = 9,8 m/s/s vagy 9,8 N/kg

2. lépés: Adatok beszerzése

Szerezzen be néhány adatot
Szerezzen be néhány adatot

A dőlésszámítás sebességet és teljesítményt igényel. Egy Arduino Nano 33 IoT -t használtam, hogy a BLE -n keresztül csatlakozzam a trénerhez, hogy megkapjam ezt. Kezdetben nagyon elakadtam, mivel a natív ArduinoBLE könyvtár jelenlegi v.1.1.2 verziója ehhez a modulhoz semmilyen formában nem kezeli a hitelesítést, ami azt jelenti, hogy a legtöbb (?) Kereskedelmi BLE érzékelő nem párosul vele.

A megoldás az volt, hogy egy NPE kábel ANT+ BLE hidat (https://npe-inc.com/cableinfo/) használtak, amely a tréner beépített BLE-jét szabadon tartja az oktatóalkalmazás számára, és nem igényel hitelesítést a BLE-n oldal.

A BLE teljesítményjellemzője meglehetősen egyszerű, mivel a wattban megadott teljesítményt az átvitt adatok második és harmadik bájtja tartalmazza, 16 bites egész számként (kis endián, azaz először a legkevésbé jelentős oktett). Mozgó átlag szűrőt alkalmaztam, hogy 3s átlagos teljesítményt nyújtsak - ahogy a kerékpáros számítógépem mutatja -, mivel ez kevésbé szabálytalan.

if (powerCharacteristic.valueUpdated ()) {

// Tömb definiálása az uint8_t holdpowervalues értékhez [6] = {0, 0, 0, 0, 0, 0}; // Érték olvasása tömbbe powerCharacteristic.readValue (holdpowervalues, 6); // A teljesítményt wattként adják vissza a 2. és 3. helyen (a 0 és az 1 8 bites zászlók) byte rawpowerValue2 = holdpowervalues [2]; // teljesítmény legkisebb szig bájt a HEX bájtban rawpowerValue3 = holdpowervalues [3]; // a legtöbb szig bájt a HEX -ben hosszú rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Mozgó átlag szűrő használatával adja meg a '3s power' powerTrainer = mozgóAverageFilter_power.process (rawpowerTotal);

A BLE sebességjellemző (Cycling Speed and Cadence) egyike azoknak a dolgoknak, amelyek elgondolkodtatnak azon, hogy mi az ördögben dohányzott a SIG, amikor megírták a specifikációt.

A Characteristic egy 16 bájtos tömböt ad vissza, amely nem tartalmaz sem sebességet, sem ütemet. Ehelyett 1024 másodperc alatt kapod meg a kerékfordulatokat és a forgattyús fordulatokat (összes), valamint az utolsó eseményadatok óta eltelt időt. Akkor több matek. Ja, és a bájtok nem mindig vannak jelen, így van egy zászló bájt az elején. Ja, és a bájtok kis endikus HEX -ek, ezért visszafelé kell olvasni, megszorozni a második bájtot 256 -mal, a harmadikat 65536 -al stb., Majd összeadni őket. A sebesség megtalálásához feltételezni kell a kerékpár szokásos kerületét, hogy megtudja a távolságot.

if (speedCharacteristic.valueUpdated ()) {

// Ennek az értéknek 16 bájtos tömbre van szüksége uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // De csak az első 7 speedCharacteristic.readValue értéket fogom elolvasni (holdvalues, 7); bájt rawValue0 = holdvalues [0]; // bináris zászlók 8 bites int byte rawValue1 = holdvalues [1]; // fordulatok legkevésbé jelentős bájtja a HEX bájtban rawValue2 = holdvalues [2]; // fordulat a következő legjelentősebb bájt a HEX bájtban rawValue3 = holdvalues [3]; // fordulat a következő legjelentősebb bájt a HEX bájtban rawValue4 = holdvalues [4]; // fordulatok legjelentősebb bájtja a HEX bájtban rawValue5 = holdvalues [5]; // a legutóbbi esemény óta eltelt idő legkisebb szig bájt rawValue6 = holdvalues [6]; // a legutóbbi kerékesemény óta eltelt idő a legtöbb szig bájtot if (firstData) {// Az összesített kerékfordulatszámok lekérése kis endiánhexamént a 2., 3. és 4. helyen (először a legkevésbé jelentős oktett) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (nyersérték3 * 65536) + (nyersérték4 * 16777216)); // Az utolsó kerék esemény óta eltelt idő 1024 másodperc múlva Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = hamis; } else {// Második adathalmaz megszerzése WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); hosszú IdőTemp = (nyersérték5 + (nyersérték6 * 256)); if (WheelRevsTemp> WheelRevs1) {// győződjön meg arról, hogy a kerékpár mozog WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = igaz;}

// Keresse meg a távolságkülönbséget cm -ben, és konvertálja km -re float distanceTravelled = (((WheelRevs2 - WheelRevs1) * wheelCircCM);

float kmTravelled = distanceTravelled / 1000000;

// Találjon időt 1024 másodperc alatt, és konvertálja órákra

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

// Keresse meg a kmh sebességet

sebességKMH = (kmTravelled / timeHrs);

Az Arduino vázlat a GitHub webhelyen található (https://github.com/mockendon/opengradesim).

3. lépés: Hardver 1 a lineáris működtető

Hardver 1 a lineáris működtető
Hardver 1 a lineáris működtető
Hardver 1 a lineáris működtető
Hardver 1 a lineáris működtető
Hardver 1 a lineáris működtető
Hardver 1 a lineáris működtető

A tárcsafékes országúti kerékpárom átmenő tengelye egy 19,2 mm -es tengelyt határoz meg a 12 mm -es átmenő tengely tisztítására, 100 mm -rel a villák között.

A készlet 3/4 hüvelykes 10swg alumínium cső tökéletesen illeszkedik, és egy szép denevér, Dave az ebay -en (https://www.ebay.co.uk/str/aluminiumonline) szállított, és néhány kilóért vágja nekem.

A hajtómű 20 mm -es rúddal és 6 mm -es lyukkal rendelkezik, így a 3D nyomtatott rész összekapcsolja az alumíniumcsövet egy 6 mm -es acélrúddal, és mivel az erők 90% -os összenyomás, néhány PLA / ABS megfelel a kihívásnak.

Ha szabványos gyorskioldó beállítást futtat, akkor valami ilyesmi (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) elkerülheti az összetevő újratervezését.

A csomagtartót úgy tervezték, hogy illeszkedjen a Tacx tréneremhez mellékelt emelő blokkhoz, de valószínűleg sok hasonló emelőbe illeszkedik, vagy egyszerűen szerkesztheti a TinkerCad fájlt az Ön igényei szerint.

4. lépés: 2. hardver - a H -híd

2. hardver - a H -híd
2. hardver - a H -híd
2. hardver - a H -híd
2. hardver - a H -híd
2. hardver - a H -híd
2. hardver - a H -híd

Ezek az online nagyon gyakori L298N H hídtáblák beépített 5 V -os szabályozóval rendelkeznek, amely kiválóan alkalmas az Arduino áramellátására a lineáris működtetőhöz szükséges 12 V -os tápegységről. Sajnos az Arduino Nano IoT kártya 3.3V jelzésű, ezért logikai szintű konverterre (vagy optoizolátorra) van szükség, mivel a jelek csak egyirányúak.

A tokot úgy tervezték, hogy elfogadja a LED -es világítási alkalmazásokban általánosan használt tápcsatlakozókat. Elvágtam egy USB hosszabbító kábelt, hogy lehetővé tegyem az Arduino fejegység egyszerű csatlakoztatását / leválasztását, és bár biztos voltam benne, hogy a tápvezetékeket használom az áramellátáshoz, és az adatvezetékeket a 3,3 V -os jelzéshez, őszintén azt tanácsolom ELLEN. utálok valakit, hogy megsütje az USB -portjait vagy perifériáit, ha véletlenül csatlakoztatja őket!

5. lépés: 3. hardver, a vezérlőelektronika (Arduino)

3. hardver: vezérlőelektronika (Arduino)
3. hardver: vezérlőelektronika (Arduino)
3. hardver: vezérlőelektronika (Arduino)
3. hardver: vezérlőelektronika (Arduino)
3. hardver: vezérlőelektronika (Arduino)
3. hardver: vezérlőelektronika (Arduino)

Az Arduino OLED és a logikai szintváltó tokja hátul egy szabványos, 1/2 fordulatos Garmin stílusú rögzítéssel rendelkezik, hogy biztonságosan rögzíthető legyen a kerékpárra. Az „elülső” rögzítés lehetővé teszi az egység felfelé vagy lefelé billentését a gyorsulásmérő pozíciójába, vagy egyszerűen hozzáadható a kódsor az automatikus nullához.

A toknak membrán billentyűzete van - ez a vezető és a kerékpár együttes súlyának beállítására szolgál. Ezt csak programszerűen állíthatja be, különösen, ha senkivel nem oszt meg edzőt.

Jó lehet egy „kézi” módot megvalósítani. Talán mindkét gomb megnyomása kézi üzemmódot indíthat, majd a gombok növelhetik / csökkenthetik a lejtést. Ezt hozzáadom a teendők listájához!

Az ügy STL -aktája ismét elérhető a Thingiverse webhelyen (linkért lásd a kellékek részt).

Az Arduino vázlat a GitHub webhelyen található (https://github.com/mockendon/opengradesim).

Innen kinyomtathat egy ügyes kis klipet a CABLE hídhoz

6. lépés: „A hátsó kiesések”

"A hátsó kiesések"
"A hátsó kiesések"
"A hátsó kiesések"
"A hátsó kiesések"
"A hátsó kiesések"
"A hátsó kiesések"

Sokan felvetették a hátsó kiesés dörzsölésének kérdését a kerékpár mozgása közben. Néhány oktatónak van tengelye, amely mozog (mint a Kickr), de soknak nincs.

Jelenleg a legjobb megoldás számomra, ha néhány szabványos 61800-2RS mélyhornyú csapágyat (kb. 2 font) szerelek a gyorskioldó adapterekre, majd az átmenő tengelyes kivezetéseket ezekre (lásd a képeket) egy nagyobb méretű QR-nyárssal rögzítem

A csapágyaknak vékony alátét alátétre van szükségük, pl. M12 16 mm 0,3 mm az adapter és a csapágy között.

Tökéletesen illeszkednek, és az edzőtől függetlenül forognak a kerékpárral és a nyárssal.

Jelenleg ez néhány mm-rel megváltoztatja a meghajtóoldali eltolást, így újra kell indexelni

Egyedi alkatrészeket tervezek (lásd a pdf tervet), amelyeket meg kell gépelni (a leendő sógorom esztergáján, amikor van egy órája a segítségre!). Ezeket még nem tesztelték !!! De az 1 mm -es csiszolás a készlethajtó oldali QR -adapter belső felületéről gyors megoldás speciális szerszámok nélkül;)

Ajánlott: