Isi kandungan:

Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Langkah
Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Langkah

Video: Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Langkah

Video: Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Langkah
Video: F7HH0W8K36U3VXJ 2024, November
Anonim
Image
Image
Open (Bicycle) Gred Simulator - OpenGradeSIM
Open (Bicycle) Gred Simulator - OpenGradeSIM
Open (Bicycle) Gred Simulator - OpenGradeSIM
Open (Bicycle) Gred Simulator - OpenGradeSIM

Pengenalan

Syarikat kecergasan (Wahoo) yang terkenal di AS baru-baru ini mengeluarkan alat latihan dalaman yang hebat yang menaikkan dan menurunkan bahagian depan basikal pada pelatih turbo mengikut tahap bukit yang disimulasikan oleh pengguna (Kickr Climb).

Nampak sangat mengagumkan tetapi sayangnya ini tidak tersedia untuk kita semua kerana anda memerlukan 1) pelatih Wahoo teratas dan 2) wang tunai £ 500 untuk menjadikannya milik anda.

Saya memecahkan klavikula (tidak pernah meletakkan penunggang basikal di basikal gunung) jadi saya mempunyai lebih banyak batu di pelatih dan lebih banyak masa untuk bermain-main dan menganggap ini boleh menjadi projek yang menyeronokkan.

Unit komersil mensimulasikan -5% hingga + 20% jadi saya ingin menghampirinya tetapi pada 10% anggaran!

Ini dirancang di sekitar Tacx Neo saya tetapi mana-mana pelatih yang menyiarkan data kuasa dan kelajuannya melalui ANT + atau BLE boleh dibuat berfungsi (saya rasa!).

Oleh kerana asas roda pada basikal jalan raya saya berukuran tepat 1000mm, saya perlu mengangkat garpu sebanyak 200mm untuk mensimulasikan 20% (lihat gambar) sehingga penggerak linear 200mm dapat dilakukan. Berat penunggang basikal + tidak mungkin melebihi 100kg dan kerana ini diagihkan di antara gandar dan kebanyakan di bahagian belakang 750N akan mengangkat 75kg dan semestinya baik. Penggerak yang lebih cepat tersedia untuk lebih banyak wang tetapi yang ini berharga sekitar £ 20 dan berjaya 10mm / saat. Penggerak dengan potensiometer yang boleh digunakan sebagai servo sederhana juga 2 hingga 3 kali lebih mahal.

Bekalan

Cetakan 3D (PLA atau ABSetc) bahagian penyesuai gandar:

100mm stok tiub aluminium 10/3 inci 3/4 inci (untuk bingkai gandar melalui)

Stok bar keluli tahan karat 80mm 6mm

Cetakan 3D (PLA atau ABSetc) kasut untuk bahagian penggerak linear:

Cetakan 3D Casing Jambatan H

Cetakan 3D Casing untuk Arduino (Versi 1 dengan papan kekunci) https://www.thingiverse.com/thing:3984911 (Versi 2 seperti yang ditunjukkan (https://www.thingiverse.com/thing:3995976)

Potongan laser dengan akrilik 3mm yang jelas 32 x 38mm untuk mengelakkan anda berpeluh di seluruh elektronik (adakah itu, tidak sesuai).

Beberapa blok pendarahan (disesuaikan untuk membiarkan pembalut masuk) untuk mengelakkan anda menolak piston kaliper dari brek cakera Shimano secara tidak sengaja kerana semangat anda

Linear Actuator 750N 200mm travel mis. Al03 Mini Linear Actuators dari

Jambatan L298N H (seperti:

Arduino Nano IoT 33 www.rapidonline.com pesanan 73-4863

2 papan kekunci membran utama contohnya

Modul Dwi-Arah Penukar Tahap Logik IIC I2C 5V hingga 3.3V Untuk Arduino contohnya

Bekalan kuasa 12V 3A DC - yang terbaik untuk pencahayaan LED!

Jambatan NPE CABLE Ant + to BLE

Klip cetak 3D untuk jambatan CABLE

Modul Paparan LCD OLED 1.3 dengan Antaramuka IIC I2C 128x32 3.3V

Langkah 1: Beberapa Matematik

Sebilangan Matematik
Sebilangan Matematik

Kita perlu mengira kecondongan yang disimulasikan. Saya berharap pelatih akan mengiklankan data ini bersama dengan kelajuan, daya, irama dll. Namun pelatih hanya menetapkan ketahanan untuk mengekalkan output daya mengikut perisian di tablet, komputer dll yang digunakan untuk mengendalikannya. Saya tidak mempunyai cara untuk menangkap 'simulasi gred' dari perisian dengan mudah jadi saya harus berusaha ke belakang …

Kekuatan yang bertindak pada basikal dan penunggang adalah gabungan kehilangan daya tahan dan kekuatan yang diperlukan untuk mendaki bukit. Pelatih melaporkan kelajuan dan kuasa. Sekiranya kita dapat menemui kerugian resistif pada kelajuan tertentu maka daya yang tersisa digunakan untuk mendaki bukit. Kekuatan pendakian bergantung pada berat basikal dan penunggang dan kadar pendakian sehingga kita dapat kembali ke lereng.

Mula-mula saya menggunakan https://bikecalculator.com yang menakjubkan untuk mencari beberapa titik data untuk kehilangan daya resistif pada kelajuan biasa. Kemudian saya mengubah domain kelajuan untuk menghasilkan hubungan linear dan menemui garis yang paling sesuai. Dengan mengambil persamaan garis, kita sekarang dapat mengira daya (W) dari rintangan = (0.0102 * (Speedkmh ^ 2.8)) + 9.428.

Ambil daya dari rintangan dari daya yang diukur untuk memberi kekuatan 'pendakian'.

Kami mengetahui kelajuan pendakian dalam km / jam dan mengubahnya menjadi unit SI m / s (bahagikan dengan 3.6).

Kecondongan dijumpai dari: Incline (%) = ((PowerClimbing / (WeightKg * g)) / Speed) * 100

di mana pecutan kejatuhan bebas g = 9.8m / s / s atau 9.8 N / kg

Langkah 2: Dapatkan Beberapa Data

Dapatkan Sebilangan Data
Dapatkan Sebilangan Data

Pengiraan condong memerlukan kelajuan dan daya. Saya menggunakan Arduino Nano 33 IoT untuk berhubung dengan pelatih melalui BLE untuk menerimanya. Pada mulanya saya buntu kerana versi v.1.1.2 terkini dari perpustakaan ArduinoBLE asli untuk modul ini tidak mengendalikan pengesahan dalam bentuk apa pun yang bermaksud kebanyakan (?) Sensor BLE komersial tidak akan berpasangan dengannya.

Penyelesaiannya adalah dengan menggunakan jambatan NPE Cable ANT + ke BLE (https://npe-inc.com/cableinfo/) yang menjadikan BLE pelatih yang terpasang bebas untuk aplikasi latihan berkomunikasi dan tidak memerlukan pengesahan pada BLE sisi.

Ciri daya BLE cukup mudah kerana kuasa dalam watt terkandung dalam bait kedua dan ketiga dari data yang dihantar sebagai bilangan bulat 16 bit (sedikit endian iaitu oktet paling kurang pertama). Saya menggunakan penapis purata bergerak untuk memberi kuasa purata 3s - seperti yang ditunjukkan oleh komputer basikal saya - kerana ini kurang menentu.

jika (powerCharacteristic.valueUpdated ()) {

// Tentukan array untuk nilai uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0}; // Baca nilai menjadi array powerCharacteristic.readValue (holdpowervalues, 6); // Kuasa dikembalikan sebagai watt di lokasi 2 dan 3 (loc 0 dan 1 adalah bendera 8 bit) byte rawpowerValue2 = holdpowervalues [2]; // power byte paling sedikit dalam byte HEX rawpowerValue3 = nilai holdpower [3]; // power paling sig byte dalam HEX rawpowerTotal panjang = (rawpowerValue2 + (rawpowerValue3 * 256)); // Gunakan penapis purata bergerak untuk memberikan powerTrainer = movingAverageFilter_power.process 'powers 3s' (rawpowerTotal);

Ciri kelajuan BLE (Cycling Speed and Cadence) adalah salah satu perkara yang membuat anda tertanya-tanya apa yang SIG merokok ketika mereka menulis spesifikasi.

The Characteristic mengembalikan array 16 bait yang tidak mengandungi kelajuan atau irama. Sebaliknya anda mendapat putaran roda dan putaran engkol (jumlah) dan masa sejak data peristiwa terakhir pada 1024 saat. Oleh itu, lebih banyak matematik. Oh, dan bait tidak selalu ada sehingga ada bait bendera pada awalnya. Oh, dan baitnya sedikit HEX endian jadi anda perlu membaca ke belakang mengalikan bait kedua dengan 256, ketiga dengan 65536 dll, kemudian menambahkannya bersama. Untuk mencari kelajuan, anda perlu menganggap lilitan roda basikal standard untuk mengetahui jarak….

jika (speedCharacteristic.valueUpdated ()) {

// Nilai ini memerlukan susunan 16 bait uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Tetapi saya hanya akan membaca 7 speedCharacteristic.readValue pertama (nilai tahan, 7); byte rawValue0 = nilai penahanan [0]; // bendera perduaan 8 bit int bait rawValue1 = nilai penahanan [1]; // revolusi bait paling rendah dalam bait HEX rawValue2 = nilai penahanan [2]; // revolusi bait terpenting seterusnya dalam bait HEX rawValue3 = nilai penahanan [3]; // revolusi byte terpenting seterusnya dalam bait HEX rawValue4 = nilai penahanan [4]; // revolusi bait paling signifikan dalam bait HEX rawValue5 = nilai penahanan [5]; // masa sejak acara roda terakhir sekurang-kurangnya sig byte byte rawValue6 = holdvalues [6]; // masa sejak peristiwa roda terakhir paling banyak sig byte jika (firstData) {// Dapatkan putaran roda kumulatif sebagai hex endian kecil di lok 2, 3 dan 4 (oktet paling rendah pertama) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // Dapatkan masa sejak acara roda terakhir pada 1024th of Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = palsu; } lain {// Dapatkan sekumpulan data panjang WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); TimeTemp panjang = (rawValue5 + (rawValue6 * 256)); jika (WheelRevsTemp> WheelRevs1) {// pastikan basikal bergerak WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = benar;}

// Cari perbezaan jarak dalam cm dan ubah menjadi jarak pelampung kmTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

apungan kmTravelled = jarakTravelled / 1000000;

// Cari masa dalam 1024 saat dan tukar menjadi jam

float timeDifference = (Masa_2 - Masa_1); masa apunganSecs = timeDifference / 1024; masa apunganHrs = timeSecs / 3600;

// Cari kelajuan kmh

speedKMH = (kmTravelled / timeHrs);

Sketsa Arduino dihoskan di GitHub (https://github.com/mockendon/opengradesim).

Langkah 3: Perkakasan 1 Penggerak Linear

Perkakasan 1 Penggerak Linear
Perkakasan 1 Penggerak Linear
Perkakasan 1 Penggerak Linear
Perkakasan 1 Penggerak Linear
Perkakasan 1 Penggerak Linear
Perkakasan 1 Penggerak Linear

Gandar melalui pada cakera jalan brek cakera saya menentukan gandar 19.2mm untuk membersihkan gandar 12mm hingga 100mm di antara garpu.

Stok tiub aluminium 10swg berukuran 3/4 inci sangat sesuai dan pelawat yang bagus bernama Dave on ebay (https://www.ebay.co.uk/str/aluminiumonline) dibekalkan dan dipotong untuk saya selama beberapa paun.

Penggerak mempunyai bar 20mm dengan lubang 6mm sehingga bahagian bercetak 3D menghubungkan tiub aluminium ke bar keluli 6mm dan kerana daya adalah pemampatan 90%, beberapa PLA / ABS sesuai dengan cabarannya.

Sekiranya anda menjalankan persediaan pelepasan cepat standard, maka seperti ini (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) akan mengelakkan daripada merancang semula komponen ini.

Boot direka untuk masuk ke blok raiser yang disertakan dengan pelatih Tacx saya tetapi mungkin sesuai dengan banyak raiser yang serupa atau anda boleh mengedit fail TinkerCad untuk memenuhi keperluan anda.

Langkah 4: Perkakasan 2 - Jambatan H

Perkakasan 2 - Jambatan H
Perkakasan 2 - Jambatan H
Perkakasan 2 - Jambatan H
Perkakasan 2 - Jambatan H
Perkakasan 2 - Jambatan H
Perkakasan 2 - Jambatan H

Papan jambatan L298N H yang sangat biasa dalam talian mempunyai pengatur 5V bawaan yang bagus untuk menghidupkan Arduino dari bekalan kuasa 12V yang diperlukan untuk penggerak linear. Malangnya papan Arduino Nano IoT mempunyai isyarat 3.3V maka perlunya penukar tahap logik (atau optoisolator kerana isyaratnya hanya searah).

Sarung ini dirancang untuk menerima penyambung kuasa yang biasa digunakan dalam aplikasi pencahayaan LED. Saya telah membunuh sambungan sambungan USB untuk memungkinkan untuk menyambung / memutuskan unit kepala Arduino dengan mudah dan sementara saya pasti menggunakan talian kuasa untuk kuasa dan garis data untuk isyarat 3.3V, saya akan secara jujur menasihati LAGI seperti ini benci seseorang untuk menggoreng port USB atau periferalnya dengan memasukkannya secara tidak sengaja!

Langkah 5: Perkakasan 3 Elektronik Kawalan (Arduino)

Perkakasan 3 Elektronik Kawalan (Arduino)
Perkakasan 3 Elektronik Kawalan (Arduino)
Perkakasan 3 Elektronik Kawalan (Arduino)
Perkakasan 3 Elektronik Kawalan (Arduino)
Perkakasan 3 Elektronik Kawalan (Arduino)
Perkakasan 3 Elektronik Kawalan (Arduino)

Casing untuk Arduino OLED dan logic level converter mempunyai pemasangan gaya Garmin 1/2 putaran standard di bahagian belakang untuk membolehkannya dipasang dengan selamat ke basikal. Pemasangan 'depan depan' akan memungkinkan unit dimiringkan ke atas atau ke bawah menjadi 'sifar' kedudukan pecutan atau garis kod hanya ke sifar automatik pada permulaan akan mudah ditambahkan.

Sarung ini mempunyai tempat untuk papan kekunci membran - ini digunakan untuk menetapkan berat penunggang dan basikal gabungan. Anda boleh menetapkan ini secara teratur terutamanya jika anda tidak berkongsi pelatih dengan sesiapa pun.

Mungkin bagus untuk menerapkan mod 'manual'. Mungkin menekan kedua-dua butang dapat memulakan modus manual dan kemudian butang dapat meningkatkan / menurunkan condong. Saya akan menambahkannya ke senarai yang mesti dilakukan!

Fail STL kes ini, sekali lagi, tersedia di Thingiverse (lihat bahagian persediaan untuk pautan).

Sketsa Arduino dihoskan di GitHub (https://github.com/mockendon/opengradesim).

Anda boleh mencetak klip kecil yang kemas untuk jambatan CABLE anda dari sini

Langkah 6: 'Penurunan Belakang'

'Kejatuhan Belakang'
'Kejatuhan Belakang'
'Kejatuhan Belakang'
'Kejatuhan Belakang'
'Kejatuhan Belakang'
'Kejatuhan Belakang'

Ramai orang membangkitkan masalah gegaran belakang ketika basikal bergerak. Beberapa pelatih mempunyai gandar yang bergerak (seperti Kickr) tetapi banyak yang tidak.

Pada masa ini, penyelesaian terbaik bagi saya ialah memasang beberapa galas alur dalam 61800-2RS standard (kira-kira £ 2 setiap satu) pada adaptor pelepas cepat dan kemudian pasangkan putaran putaran axel pada ini (lihat gambar) dengan lidi QR yang terlalu besar

Galas memerlukan mesin basuh nipis seperti M12 16mm 0.3mm antara penyesuai dan galas.

Mereka sesuai dengan sempurna dan berpusing dengan basikal dan lidi bebas daripada pelatih.

Pada masa ini ini mengubah pengimbangan pada sisi pemacu oleh beberapa mm sehingga anda perlu mengindeks semula

Saya merancang bahagian khusus (lihat rancangan pdf) untuk mesin (pada mesin bubut kakak ipar saya ketika dia mempunyai satu jam untuk membantu!). Ini belum diuji !!! Tetapi mengisar 1mm dari permukaan dalaman penyesuai QR sisi pemacu stok adalah penyelesaian cepat tanpa alat khas;)

Disyorkan: