Spisu treści:

Symulator nachylenia otwartego (rowerowego) - OpenGradeSIM: 6 kroków
Symulator nachylenia otwartego (rowerowego) - OpenGradeSIM: 6 kroków

Wideo: Symulator nachylenia otwartego (rowerowego) - OpenGradeSIM: 6 kroków

Wideo: Symulator nachylenia otwartego (rowerowego) - OpenGradeSIM: 6 kroków
Wideo: Wahoo Climb - symulator nachylenia roweru - podjazdy na trenażerze teraz są bajką. 2024, Listopad
Anonim
Image
Image
Otwarty (rowerowy) symulator nachylenia - OpenGradeSIM
Otwarty (rowerowy) symulator nachylenia - OpenGradeSIM
Otwarty (rowerowy) symulator nachylenia - OpenGradeSIM
Otwarty (rowerowy) symulator nachylenia - OpenGradeSIM

Wstęp

Pewna dobrze znana amerykańska firma fitness (Wahoo) wprowadziła niedawno na rynek świetną pomoc do treningu w pomieszczeniach, która podnosi i obniża przód roweru na turbotrenerze zgodnie z symulowanym nachyleniem podjazdu, po którym użytkownik jedzie (Kickr Climb).

Wygląda niesamowicie, ale niestety nie jest to dostępne dla nas wszystkich, ponieważ będziesz potrzebować 1) najwyższej klasy trenera Wahoo i 2) 500 funtów gotówki, aby to zrobić.

Złamałem obojczyk (nigdy nie umieszczałem kolarza szosowego na rowerze górskim), więc miałem więcej kilometrów na trenerze i więcej czasu na majsterkowanie i pomyślałem, że to może być fajny projekt.

Jednostka komercyjna symuluje od -5% do +20%, więc chciałem zbliżyć się do tego, ale za 10% budżetu!

Został zaprojektowany wokół mojego Tacx Neo, ale każdy trenażer, który przesyła dane dotyczące mocy i prędkości za pośrednictwem ANT+ lub BLE, może działać (tak sądzę!).

Ponieważ rozstaw osi mojego roweru szosowego mierzy dokładnie 1000 mm, musiałbym podnieść widły o 200 mm, aby zasymulować 20% (patrz zdjęcie), więc wystarczyłby 200 mm siłownik liniowy. Waga roweru + rowerzysty prawdopodobnie nie przekroczy 100kg, a ponieważ jest ona rozłożona na osie i większość znajduje się z tyłu, 750N podniesie 75kg i powinno być w porządku. Szybsze siłowniki są dostępne za więcej pieniędzy, ale ten kosztował mnie około 20 funtów i radzi sobie z prędkością 10 mm/s. Siłowniki z potencjometrami, które mogą być używane jako proste serwa, są również 2 do 3 razy droższe.

Kieszonkowe dzieci

Wydruk 3D (PLA lub ABSetc) części adaptera osi przelotowej:

100 mm aluminiowa kolba 3/4 cala 10 swg (dla ramy z osią przelotową)

80 mm z 6 mm prętów ze stali nierdzewnej

Wydruk 3D (PLA lub ABSetc) buta dla części siłownika liniowego:

Wydruk 3D obudowy na mostek H

Wydruk 3D obudowy dla Arduino (wersja 1 z klawiaturą) https://www.thingiverse.com/thing:3984911 (wersja 2, jak pokazano (https://www.thingiverse.com/thing:3995976)

Wycięty laserowo kawałek 3 mm przezroczystego akrylu o wymiarach 32 x 38 mm, aby zapobiec poceniu się całej elektroniki (tak, nie jest to idealne).

Niektóre bloki odpowietrzające (przystosowane, aby pozostawić klocki w środku), aby zapobiec przypadkowemu wypchnięciu tłoków zaciskowych z hamulców tarczowych Shimano w entuzjazmie

Siłownik liniowy 750N skok 200 mm np. Mini siłowniki liniowe Al03 z

Mostek L298N H (np.:

Arduino Nano IoT 33 www.rapidonline.com zamów 73-4863

2 klawiszowa klawiatura membranowa np.

Moduł dwukierunkowy konwertera poziomów logicznych IIC I2C 5 V na 3,3 V dla Arduino, np.

Zasilacz 12V 3A DC - te do oświetlenia LED sprawdzają się świetnie!

NPE CABLE Ant+ do mostka BLE

Klips do druku 3D do mostka KABLOWEGO

1.3 Moduł wyświetlacza OLED LCD z interfejsem IIC I2C 128x32 3.3V

Krok 1: Trochę matematyki

Trochę matematyki
Trochę matematyki

Musimy obliczyć symulowane nachylenie. Miałem nadzieję, że trener zareklamuje te dane wraz z prędkością, mocą, kadencją itp. Jednak trener po prostu ustawia opór, aby utrzymać moc wyjściową zgodnie z oprogramowaniem na tablecie, komputerze itp. Używanym do jego kontrolowania. Nie miałem możliwości łatwego przechwycenia „symulowanej oceny” z oprogramowania, więc musiałem pracować wstecz…

Siły działające na rower i jeźdźca to połączenie strat rezystancyjnych i mocy potrzebnej do pokonania wzniesienia. Trener zgłasza prędkość i moc. Jeśli możemy znaleźć straty rezystancyjne przy danej prędkości, to pozostała moc jest wykorzystywana do wspinania się na wzgórze. Moc wspinania zależy od wagi roweru i rowerzysty oraz tempa wznoszenia, dzięki czemu możemy wrócić do pochyłości.

Najpierw użyłem niesamowitego https://bikecalculator.com, aby znaleźć kilka punktów danych dotyczących utraty mocy rezystancyjnej przy typowych prędkościach. Następnie przekształciłem domenę prędkości, aby uzyskać zależność liniową i znalazłem najlepszą linię dopasowania. Biorąc równanie linii, możemy teraz obliczyć moc (W) z oporu = (0,0102*(Speedkmh^2,8))+9,428.

Weź moc z oporu z zmierzonej mocy, aby dać moc „wspinania się”.

Znamy prędkość wznoszenia w km/h i przeliczamy ją na jednostki SI m/s (podzielić przez 3,6).

Nachylenie można znaleźć z: Nachylenie (%) =((Wspinaczka PowerClimbing/(WagaKg*g))/Prędkość)*100

gdzie przyspieszenie swobodnego spadania g = 9,8m/s/s lub 9,8 N/kg

Krok 2: Uzyskaj trochę danych

Uzyskaj trochę danych
Uzyskaj trochę danych

Obliczenie nachylenia wymaga prędkości i mocy. Użyłem Arduino Nano 33 IoT, aby połączyć się z trenerem przez BLE, aby to otrzymać. Początkowo bardzo utknąłem, ponieważ obecna wersja v1.1.2 natywnej biblioteki ArduinoBLE dla tego modułu nie obsługuje uwierzytelniania w żadnej formie, co oznacza, że większość (?) komercyjnych czujników BLE nie będzie się z nią sparować.

Rozwiązaniem było użycie mostka NPE Cable ANT+ do BLE (https://npe-inc.com/cableinfo/), który sprawia, że wbudowany BLE trenera jest bezpłatny, aby aplikacja szkoleniowa mogła się komunikować i nie wymaga uwierzytelniania w BLE Strona.

Charakterystyka mocy BLE jest dość prosta, ponieważ moc w watach jest zawarta w drugim i trzecim bajcie przesyłanych danych jako 16-bitowa liczba całkowita (mały endian, czyli najpierw najmniej znaczący oktet). Zastosowałem filtr średniej ruchomej, aby uzyskać średnią moc 3 s - tak jak pokazuje mój komputer rowerowy - ponieważ jest to mniej błędne.

if (powerCharacteristic.valueUpdated()) {

// Zdefiniuj tablicę dla wartości uint8_t holdpowervalues[6] = {0, 0, 0, 0, 0, 0}; // Wczytaj wartość do tablicy powerCharacteristic.readValue(holdpowervalues, 6); // Moc jest zwracana jako waty w lokalizacjach 2 i 3 (loc 0 i 1 to 8-bitowe flagi) byte rawpowerValue2 = holdpowervalues[2]; // moc najmniejszego znaku bajtu w bajtach HEX rawpowerValue3 = holdpowervalues[3]; // podaj najwięcej sig byte w HEX long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Użyj filtru średniej ruchomej, aby dać „moc 3 s” powerTrainer = moveAverageFilter_power.process(rawpowerTotal);

Charakterystyka prędkości BLE (Cycling Speed and Cadence) to jedna z tych rzeczy, które sprawiają, że zastanawiasz się, co palił SIG, kiedy pisał specyfikację.

Charakterystyka zwraca 16-bajtową tablicę, która nie zawiera prędkości ani kadencji. Zamiast tego otrzymujesz obroty kół i obroty korby (suma) oraz czas od ostatniego zdarzenia w 1024 sekundach. Więc więcej matematyki. Aha, i bajty nie zawsze są obecne, więc na początku jest bajt flagi. Aha, a bajty to little endian HEX, więc musisz czytać wstecz, mnożąc drugi bajt przez 256, trzeci przez 65536 itd., a następnie dodając je do siebie. Aby znaleźć prędkość, musisz przyjąć standardowy obwód koła rowerowego, aby poznać odległość….

if (speedCharacteristic.valueUpdated()) {

// Ta wartość wymaga 16-bajtowej tablicy uint8_t holdvalues[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Ale zamierzam przeczytać tylko pierwsze 7 speedCharacteristic.readValue(holdvalues, 7); bajt rawValue0 = holdvalues[0]; // flagi binarne 8 bit int byte rawValue1 = holdvalues[1]; // obraca najmniej znaczący bajt w HEX byte rawValue2 = holdvalues[2]; // obraca następny najbardziej znaczący bajt w HEX byte rawValue3 = holdvalues[3]; // obraca następny najbardziej znaczący bajt w HEX byte rawValue4 = holdvalues[4]; // obraca najbardziej znaczący bajt w HEX byte rawValue5 = holdvalues[5]; // czas od ostatniego zdarzenia koła najmniejszy bajt sig bajt rawValue6 = holdvalues[6]; // czas od ostatniego zdarzenia koła najbardziej sig byte if (firstData) { // Uzyskaj skumulowane obroty koła jako little endian hex w loc 2, 3 i 4 (najpierw najmniej znaczący oktet) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (surowaValue3 * 65536) + (surowaValue4 * 16777216)); // Pobierz czas od ostatniego zdarzenia koła w 1024. sekundy Time_1 = (rawValue5 + (rawValue6 * 256)); pierwszeDane = fałsz; } else { // Pobierz drugi zestaw danych long WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); long TimeTemp = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp > WheelRevs1) { // upewnij się, że rower się porusza WheelRevs2 = WheelRevsTemp; Czas_2 = Czas Temp; firstData = prawda;}

// Znajdź różnicę odległości w cm i przelicz na km float distanceTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

float kmPrzebyty = dystansPrzebyty / 1000000;

// Znajdź czas w 1024 sekundach i przelicz na godziny

zmiennoprzecinkowa różnica czasu = (Czas_2 - Czas_1); czas zmiennoprzecinkowySek = różnica czasu / 1024; czas zmiennoprzecinkowyGodz = czasSek / 3600;

// Znajdź prędkość kmh

prędkośćKMH = (kmPodróż / czasGodz);

Szkic Arduino jest hostowany na GitHub (https://github.com/mockendon/opengradesim).

Krok 3: Sprzęt 1 siłownika liniowego

Sprzęt 1 siłownik liniowy
Sprzęt 1 siłownik liniowy
Sprzęt 1 siłownik liniowy
Sprzęt 1 siłownik liniowy
Sprzęt 1 siłownik liniowy
Sprzęt 1 siłownik liniowy

Oś przelotowa w moim rowerze szosowym z hamulcem tarczowym ma oś 19,2 mm, aby oczyścić oś przelotową 12 mm ze 100 mm między widłami.

Zapasowa rura aluminiowa 3/4 cala 10swg jest idealnie dopasowana i fajny facet o imieniu Dave na ebay (https://www.ebay.co.uk/str/aluminiumonline) dostarczony i przycięty dla mnie na długość za kilka funtów.

Siłownik ma pręt 20 mm z otworem 6 mm, więc wydrukowana część 3D łączy aluminiową rurę ze stalowym prętem o średnicy 6 mm, a ponieważ siły to 90% kompresji, niektóre PLA / ABS są w stanie sprostać wyzwaniu.

Jeśli uruchomisz standardową konfigurację szybkiego wydania, coś takiego (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) pozwoli uniknąć przeprojektowania tego komponentu.

But został zaprojektowany tak, aby pasował do bloku podwyższającego dostarczonego z moim trenerem Tacx, ale prawdopodobnie pasowałby do wielu podobnych podnośników lub możesz po prostu edytować plik TinkerCad, aby dopasować go do swoich wymagań.

Krok 4: Sprzęt 2 - mostek H

Sprzęt 2 - mostek H
Sprzęt 2 - mostek H
Sprzęt 2 - mostek H
Sprzęt 2 - mostek H
Sprzęt 2 - mostek H
Sprzęt 2 - mostek H

Te płytki mostkowe L298N H, które są bardzo popularne w Internecie, mają wbudowany regulator 5 V, który doskonale nadaje się do zasilania Arduino z zasilacza 12 V wymaganego dla siłownika liniowego. Niestety płytka Arduino Nano IoT sygnalizuje napięcie 3,3 V, stąd potrzeba konwertera poziomów logicznych (lub optoizolatora, ponieważ sygnały są tylko jednokierunkowe).

Obudowa jest przystosowana do złączy zasilających powszechnie stosowanych w aplikacjach oświetleniowych LED. Zmasakrowałem przedłużacz USB, aby umożliwić łatwe podłączenie / odłączenie jednostki głównej Arduino i chociaż byłem pewien, że użyję linii zasilających do zasilania i linii danych do sygnalizacji 3,3 V, szczerze odradzałbym to, tak jak bym nienawidzę kogoś, kto usmaży swoje porty USB lub urządzenia peryferyjne, podłączając je przez pomyłkę!

Krok 5: Sprzęt 3 elektronika sterująca (Arduino)

Sprzęt 3 elektronika sterująca (Arduino)
Sprzęt 3 elektronika sterująca (Arduino)
Sprzęt 3 elektronika sterująca (Arduino)
Sprzęt 3 elektronika sterująca (Arduino)
Sprzęt 3 elektronika sterująca (Arduino)
Sprzęt 3 elektronika sterująca (Arduino)

Obudowa na Arduino OLED i konwerter poziomów logicznych ma z tyłu standardowe mocowanie typu Garmin 1/2 obrotu, aby umożliwić bezpieczne zamontowanie na rowerze. Mocowanie „z przodu” pozwoli na przechylenie urządzenia w górę lub w dół do „zera” pozycji akcelerometru lub linii kodu, aby łatwo było dodać automatyczne zerowanie na początku.

Etui ma miejsce na klawiaturę membranową - służy do ustawiania łącznej wagi rowerzysty i roweru. Możesz po prostu ustawić to programowo, zwłaszcza jeśli nie udostępniasz nikomu trenera.

Przydałoby się zaimplementować tryb „ręczny”. Być może naciśnięcie obu przycisków może zainicjować tryb ręczny, a następnie przyciski mogą zwiększyć / zmniejszyć nachylenie. Dodam to do listy rzeczy do zrobienia!

Plik STL sprawy jest ponownie dostępny na Thingiverse (patrz link do sekcji materiałów eksploatacyjnych).

Szkic Arduino jest hostowany na GitHub (https://github.com/mockendon/opengradesim).

Możesz wydrukować zgrabny mały klips do mostka CABLE tutaj

Krok 6: „Tylne odpadnięcia”

„Tylne wypady”
„Tylne wypady”
„Tylne wypady”
„Tylne wypady”
„Tylne wypady”
„Tylne wypady”

Wiele osób podniosło kwestię tarcia tylnego wypadania podczas ruchu roweru. Niektóre trenerzy mają oś, która się porusza (jak Kickr), ale wiele nie.

Obecnie moim najlepszym rozwiązaniem dla mnie jest zamontowanie niektórych standardowych łożysk rowkowych 61800-2RS (około 2 GBP każde) na adapterach szybkiego zwalniania, a następnie zamontowanie na nich haków przelotowych (patrz zdjęcia) za pomocą szpikulca QR o dużym rozmiarze

Łożyska wymagają cienkiej podkładki, np. M12 16mm 0,3mm między adapterem a łożyskiem.

Pasują idealnie i obracają się z rowerem i szpikulcem niezależnie od trenera.

W tej chwili zmienia to przesunięcie po stronie napędu o kilka mm, więc będziesz musiał ponownie indeksować

Projektuję niestandardowe części (patrz plan pdf) do obróbki (na tokarce mojego przyszłego szwagra, gdy ma godzinę na pomoc!). Nie są jeszcze testowane!!! Ale szlifowanie 1mm od wewnętrznej powierzchni adaptera QR od strony napędu kolby to szybka naprawa bez specjalnych narzędzi;)

Zalecana: