Obsah:
- Zásoby
- Krok 1: Trocha matematiky
- Krok 2: Získejte nějaká data
- Krok 3: Hardware 1 lineární pohon
- Krok 4: Hardware 2 - H -Bridge
- Krok 5: Hardware 3, řídicí elektronika (Arduino)
- Krok 6: 'Zadní výpadky'
Video: Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Úvod
Jistá známá americká fitness společnost (Wahoo) nedávno přinesla skvělou indoor tréninkovou pomůcku, která zvedá a snižuje přední část kola na turbo trenažéru podle simulovaného sklonu kopce, na kterém uživatel jede (Kickr Climb).
Vypadá to úžasně, ale bohužel to není k dispozici pro nás všechny, protože budete potřebovat 1) špičkový trenér Wahoo a 2) hotovost 500 £, aby to bylo vaše.
Zlomil jsem klíční kost (nikdy jsem nedal silničního cyklistu na horské kolo), takže jsem měl více kilometrů na trenažéru a více času na vrtání a myslel jsem si, že by to mohl být zábavný projekt.
Komerční jednotka simuluje -5% až +20%, takže jsem se tomu chtěl přiblížit, ale na 10% rozpočtu!
Toto je navrženo kolem mého Tacx Neo, ale jakýkoli trenér, který vysílá data o výkonu a rychlosti pomocí ANT+ nebo BLE, by mohl fungovat (počítám!).
Protože rozvor na mém silničním kole měří přesně 1000 mm, musel bych vidlice zvednout o 200 mm, aby simuloval 20% (viz obrázek), takže 200 mm lineární pohon by to udělal. Hmotnost kola + jezdce pravděpodobně nepřekročí 100 kg, a protože je rozložena mezi nápravy a většina je vzadu, 750 N zvedne 75 kg a mělo by být v pořádku. Rychlejší pohony jsou k dispozici za více peněz, ale tento mě stál kolem 20 liber a zvládá 10 mm/s. Pohony s potenciometry, které lze použít jako jednoduchá serva, jsou také 2 až 3krát dražší.
Zásoby
3D tisk (PLA nebo ABSetc) části adaptéru pro průchozí nápravu:
100 mm 3/4 palce 10 swg hliníková trubka pažba (pro rám přes nápravu)
80 mm 6mm tyče z nerezové oceli
3D tisk (PLA nebo ABSetc) boty pro lineární pohon:
3D tisk pouzdra pro H-můstek
3D tisk pouzdra pro Arduino (verze 1 s klávesnicí) https://www.thingiverse.com/thing:3984911 (verze 2, jak je znázorněno (https://www.thingiverse.com/thing:3995976)
Laserem řezaný kus 3 mm čirého akrylu 32 x 38 mm, abyste se nepotili po celé elektronice (udělal, není ideální).
Některé krvácející bloky (přizpůsobené tak, aby nechaly vložky dovnitř), které zabraňují nechtěnému vytlačení pístů třmenu z kotoučových brzd Shimano ve vašem nadšení
Lineární pohon 750N zdvih 200 mm, např. Al03 Mini lineární ovladače z
Most L298N H (jako:
Arduino Nano IoT 33 www.rapidonline.com objednejte 73-4863
2klávesová membránová klávesnice, např.
IIC I2C Logic Level Converter Obousměrný modul 5V na 3,3V pro Arduino např.
Napájení 12V 3A DC - ty pro LED osvětlení fungují skvěle!
NPE CABLE Ant++ BLE můstek
Klip pro 3D tisk pro CABLE bridge
1,3 OLED LCD zobrazovací modul s rozhraním IIC I2C 128x32 3,3V
Krok 1: Trocha matematiky
Musíme vypočítat sklon, který se simuluje. Doufal jsem, že trenér bude inzerovat tato data spolu s rychlostí, výkonem, kadencí atd., Ale trenér jednoduše nastaví odpor, aby udržel výstupní výkon podle softwaru na tabletu, počítači atd., Který se používá k jeho ovládání. Neměl jsem způsob, jak snadno zachytit „simulovanou známku“ze softwaru, takže bych musel pracovat zpět…
Síly působící na kolo a jezdce jsou kombinací odporových ztrát a síly potřebné ke zdolání kopce. Trenér hlásí rychlost a sílu. Pokud dokážeme najít odporové ztráty při dané rychlosti, pak je zbývající síla použita k výstupu na kopec. Síla stoupání závisí na hmotnosti kola a jezdce a rychlosti stoupání, takže se můžeme vrátit zpět do stoupání.
Nejprve jsem pomocí úžasného https://bikecalculator.com našel nějaké datové body pro odporovou ztrátu výkonu při typických rychlostech. Poté jsem transformoval doménu rychlosti na lineární vztah a našel nejvhodnější linii. Když vezmeme rovnici přímky, můžeme nyní vypočítat výkon (W) z odporu = (0,0102*(Speedkmh^2,8))+9,428.
Odeberte sílu z odporu z naměřeného výkonu a dejte sílu „stoupání“.
Známe rychlost výstupu v km/h a převedeme to na jednotky SI m/s (děleno 3,6).
Sklon lze zjistit z: Sklonu (%) = ((PowerClimbing/(WeightKg*g))/Speed)*100
kde zrychlení volného pádu g = 9,8 m/s/s nebo 9,8 N/kg
Krok 2: Získejte nějaká data
Výpočet sklonu vyžaduje rychlost a výkon. Abych to přijal, použil jsem Arduino Nano 33 IoT k připojení k trenérovi přes BLE. Zpočátku jsem se velmi zasekl, protože aktuální verze v.1.1.2 nativní knihovny ArduinoBLE pro tento modul nezvládá autentizaci v žádné formě, což znamená, že většina (?) Komerčních BLE senzorů se s ní nespáruje.
Řešením bylo použít most NPE Cable ANT+ to BLE (https://npe-inc.com/cableinfo/), který udržuje vestavěný BLE trenéra volný pro komunikaci tréninkové aplikace a nevyžaduje žádné ověřování na BLE boční.
Výkonová charakteristika BLE je velmi přímočará, protože výkon ve wattech je obsažen ve druhém a třetím bajtu přenášených dat jako 16bitové celé číslo (malý endian, tj. Nejméně významný oktet jako první). Použil jsem klouzavý průměr filtru, abych poskytl průměrný výkon 3 s - stejně jako to ukazuje můj počítač na kole - protože to je méně nevyrovnané.
if (powerCharacteristic.valueUpdated ()) {
// Definujte pole pro hodnotu uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0}; // Načtení hodnoty do pole powerCharacteristic.readValue (holdpowervalues, 6); // Výkon je vrácen jako watt v místě 2 a 3 (loc 0 a 1 je 8bitový příznak) byte rawpowerValue2 = holdpowervalues [2]; // výkon nejméně sig byte v HEX bajtu rawpowerValue3 = holdpowervalues [3]; // power most sig byte in HEX long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Pomocí filtru klouzavého průměru poskytněte výkon 3 s powerTrainer = movingAverageFilter_power.process (rawpowerTotal);
Rychlostní charakteristika BLE (Cyklistická rychlost a kadence) je jednou z těch věcí, kvůli kterým se divíte, co na zemi SIG kouřilo, když psali specifikaci.
Charakteristika vrací 16bajtové pole, které neobsahuje rychlost ani kadenci. Místo toho získáte otáčky kol a otáčky kliky (součty) a čas od dat poslední události za 1024 s. Takže další matematika. A bajty nejsou vždy přítomny, takže na začátku je vlajkový bajt. Ach, a bajty jsou malé endianové HEX, takže musíte přečíst zpět vynásobením druhého bajtu 256, třetího 65536 atd. A poté je sčítat. Abyste našli rychlost, musíte předpokládat standardní obvod kola, abyste znali vzdálenost….
if (speedCharacteristic.valueUpdated ()) {
// Tato hodnota potřebuje 16bytové pole uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Ale budu číst jen prvních 7 speedCharacteristic.readValue (holdvalues, 7); byte rawValue0 = hodnoty podržení [0]; // binární příznaky 8 bitů int byte rawValue1 = holdvalues [1]; // otáčky nejméně významný bajt v HEX bajtu rawValue2 = holdvalues [2]; // otáčky další nejvýznamnější bajt v HEX bajtu rawValue3 = holdvalues [3]; // otáčky další nejvýznamnější bajt v HEX bajtu rawValue4 = holdvalues [4]; // otáčky nejvýznamnějšího bajtu v HEX bajtu rawValue5 = holdvalues [5]; // čas od poslední události kola nejméně sig byte byte rawValue6 = holdvalues [6]; // čas od poslední události kola nejvíce sig byte if (firstData) {// Získejte kumulativní otáčky kola jako malý endian hex v loc 2, 3 a 4 (nejméně významný oktet jako první) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // Získejte čas od poslední události kola za 1024 sekund sekundy Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = false; } else {// Získejte druhou sadu dat dlouhou WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); dlouhá TimeTemp = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp> WheelRevs1) {// ujistěte se, že se kolo pohybuje WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = true;}
// Najděte rozdíl vzdálenosti v cm a převeďte na km float distanceTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);
float kmTravelled = distanceTravelled / 1000000;
// Najděte čas za 1024 sekund a převeďte ho na hodiny
float timeDifference = (Time_2 - Time_1); float timeSecs = timeDifference / 1024; float timeHrs = timeSecs / 3600;
// Najděte rychlost kmh
speedKMH = (kmTravelled / timeHrs);
Skica Arduina je umístěna na GitHubu (https://github.com/mockendon/opengradesim).
Krok 3: Hardware 1 lineární pohon
Průchozí náprava na mém silničním kole s kotoučovou brzdou určuje osu 19,2 mm, která vyčistí 12 mm průchodnou nápravu se 100 mm mezi vidlicemi.
Skladová 3/4 palcová hliníková trubka 10swg se perfektně hodí a dodává se pěkný chlápek s názvem Dave na ebay (https://www.ebay.co.uk/str/aluminiumonline) a za pár liber mi ji zkrátil na délku.
Aktuátor má 20 mm tyč s 6 mm otvorem, takže 3D tištěná část spojuje hliníkovou trubku s 6 mm ocelovou tyčí a protože síly jsou stlačeny na 90%, některé PLA / ABS tuto výzvu zvládnou.
Pokud spustíte standardní nastavení rychlého uvolnění, pak by něco takového (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) zabránilo nutnosti přepracovat tuto součást.
Boot je navržen tak, aby se vešel do zvedacího bloku dodávaného s mým trenažérem Tacx, ale pravděpodobně by se hodil do mnoha podobných raiserů, nebo můžete upravit soubor TinkerCad tak, aby vyhovoval vašim požadavkům.
Krok 4: Hardware 2 - H -Bridge
Tyto můstkové desky L298N H, které jsou velmi běžné online, mají vestavěný 5V regulátor, který je skvělý pro napájení Arduina z napájecího zdroje 12V potřebného pro lineární pohon. Bohužel deska Arduino Nano IoT signalizuje 3,3 V, a proto je potřeba logický převodník úrovní (nebo optoizolátor, protože signály jsou pouze jednosměrné).
Pouzdro je navrženo pro připojení napájecích konektorů běžně používaných v aplikacích LED osvětlení. Zabil jsem prodlužovací kabel USB, aby bylo možné snadno připojit / odpojit hlavní jednotku Arduino, a zatímco jsem si byl jistý, že použiji napájecí kabely pro napájení a datové linky pro signalizaci 3,3 V, upřímně bych PROTI tomu poradil, protože nenávidět někoho, kdo smaží jeho USB porty nebo periferie omylem!
Krok 5: Hardware 3, řídicí elektronika (Arduino)
Pouzdro pro Arduino OLED a převodník logických úrovní má standardní 1/2 otočný držák ve stylu Garmin na zadní straně, který umožňuje jeho bezpečné upevnění na kolo. Upevnění „zepředu“umožní snadné naklápění jednotky nahoru nebo dolů na „nulu“. Akcelerometr nebo řádek kódu pro automatické vynulování na začátku.
Pouzdro má místo pro membránovou klávesnici - slouží k nastavení kombinované hmotnosti jezdce a kola. Můžete to nastavit programově, zejména pokud s nikým nesdílíte trenéra.
Mohlo by být hezké implementovat „ruční“režim. Možná by stisknutím obou tlačítek mohl být spuštěn manuální režim a poté by tlačítka mohla zvýšit / snížit sklon. Přidám to do seznamu úkolů!
Soubor STL případu je opět k dispozici na Thingiverse (odkaz najdete v sekci dodávky).
Skica Arduina je umístěna na GitHubu (https://github.com/mockendon/opengradesim).
Odtud můžete vytisknout úhledný malý klip pro svůj KABELOVÝ můstek
Krok 6: 'Zadní výpadky'
Mnoho lidí nastolilo problém se zadním odpadáním při tažení kola. Někteří trenéři mají nápravu, která se pohybuje (jako Kickr), ale mnozí ne.
V současné době je pro mě nejlepším řešením namontovat některá standardní ložiska 61800-2RS s hlubokou drážkou (přibližně 2 libry za kus) na rychloupínací adaptéry a poté na ně namontovat výsuvy průchozí osy (viz obrázky) pomocí špejle QR nadměrné velikosti
Ložiska potřebují mezi adaptérem a ložiskem tenkou podložku, např. M12 16 mm 0,3 mm.
Perfektně sedí a otáčejí se s kolem a špejlí nezávisle na trenažéru.
V tuto chvíli se změní ofset na straně pohonu o několik mm, takže budete muset znovu indexovat
Navrhuji součásti na zakázku (viz plán pdf) na obrábění (na soustruhu mého budoucího švagra, když má hodinu na pomoc!). Ty ještě nejsou testovány !!! Ale broušení 1 mm z vnitřního povrchu QR adaptéru na straně pohonu je rychlá oprava bez speciálních nástrojů;)
Doporučuje:
Webový simulátor Arduino z Wokwi-2020 ?: 5 kroků
Webový Arduino Simulator od Wokwi-2020 ?: Wokwi Arduino Simulator běží na platformě AVR8js. Jedná se o webový Arduino Simulator. Arduino Simulator běží na webovém prohlížeči. vydělává to tedy více pozornosti a upřímně, má to mnoho pozitivních bodů ve srovnání s jinými dostupnými simulátory
DIY RACING GAME SIMULATOR -- F1 SIMULÁTOR: 5 kroků
DIY RACING GAME SIMULATOR || SIMULÁTOR F1: Ahoj všichni Vítejte na mém kanálu, dnes vám ukážu, jak stavím " Simulátor závodních her " s pomocí Arduino UNO. toto není build blog, je to jen přehled a test simulátoru. Kompletní build blog již brzy
Simulátor auta Arduino pedály: 7 kroků (s obrázky)
Automobilový simulátor Arduino pedály: Mám probíhající projekt na stavbu automobilového simulátoru a jedním cílem je získat pocit, jako byste seděli ve skutečném závodním autě. S touto instrukcí vysvětluji, jak jsem postavil své pedály do svého automobilového simulátoru. Samozřejmě si můžete koupit takové věci, ale já chci
Traffic Light Simulator: 7 kroků
Traffic Light Simulator: Tento projekt Arduino kombinuje tlačítka a světla, aby vytvořil pěkný malý simulátor semaforu křížovým způsobem. Bavte se a pozorujte! Provedl jsem některé změny, včetně kódování tlačítek a rozdílů na semaforech. Tento projekt zahrnuje 2
Lazy Man's Portable Bicycle Pump: 15 Steps (with Pictures)
Lazy Man's Portable Bicycle Pump: Jsme čtyřčlenná rodina, takže máme čtyři kola. Pokaždé, když je chceme použít, určitě se najdou nějaké pneumatiky na doplnění. Můj kompresor je v garáži /dílně a není snadno přístupný, odkud ukládáme kola. Proto musíme použít h