Daftar Isi:

Pelatih Cerdas Sepeda Indoor DIY: 5 Langkah
Pelatih Cerdas Sepeda Indoor DIY: 5 Langkah

Video: Pelatih Cerdas Sepeda Indoor DIY: 5 Langkah

Video: Pelatih Cerdas Sepeda Indoor DIY: 5 Langkah
Video: How an Interactive Smart Trainer Works (Indoor Cycling Basics) 2024, November
Anonim
Pelatih Cerdas Sepeda Dalam Ruangan DIY
Pelatih Cerdas Sepeda Dalam Ruangan DIY
Pelatih Cerdas Sepeda Dalam Ruangan DIY
Pelatih Cerdas Sepeda Dalam Ruangan DIY
Pelatih Cerdas Sepeda Dalam Ruangan DIY
Pelatih Cerdas Sepeda Dalam Ruangan DIY

pengantar

Proyek ini dimulai sebagai modifikasi sederhana untuk sepeda dalam ruangan Schwinn IC Elite yang menggunakan sekrup sederhana dan bantalan felt untuk pengaturan resistensi. Masalah yang ingin saya pecahkan adalah bahwa pitch sekrup terlalu besar, jadi rentang dari tidak bisa mengayuh pedal hingga roda berputar sepenuhnya hanya beberapa derajat pada kenop resistensi. Pada awalnya saya mengganti sekrup ke M6, tetapi kemudian saya harus membuat kenop, jadi mengapa tidak menggunakan motor stepper NEMA 17 yang tersisa untuk mengubah resistansi? Jika sudah ada beberapa elektronik, mengapa tidak menambahkan meteran daya engkol dan koneksi bluetooth ke komputer untuk membuat pelatih pintar?

Ini terbukti lebih sulit dari yang diharapkan, karena tidak ada contoh bagaimana meniru meteran listrik dengan arduino dan bluetooth. Saya akhirnya menghabiskan sekitar 20 jam untuk pemrograman dan menafsirkan spesifikasi BLE GATT. Saya harap dengan memberikan contoh, saya dapat membantu seseorang untuk tidak membuang banyak waktu untuk mencoba memahami apa sebenarnya arti "Bidang Jenis AD Data Layanan"…

Perangkat lunak

Seluruh proyek ada di GitHub:

github.com/kswiorek/ble-ftms

Saya sangat merekomendasikan menggunakan Visual Studio dengan plugin VisualGDB jika Anda berencana melakukan sesuatu yang lebih serius daripada hanya menyalin-menempelkan kode saya.

Jika Anda memiliki pertanyaan tentang program ini, silakan tanyakan, saya tahu bahwa komentar minimalis saya mungkin tidak banyak membantu.

Kredit

Terima kasih kepada stoppi71 untuk panduannya tentang cara membuat meteran listrik. Saya melakukan engkol sesuai dengan desainnya.

Perlengkapan:

Bahan untuk proyek ini sangat tergantung pada sepeda apa yang Anda modifikasi, tetapi ada beberapa bagian universal.

Engkol:

  1. Modul ESP32
  2. HX711 Sensor berat ADC
  3. pengukur regangan
  4. MPU - giroskop
  5. Baterai Li-Po kecil (sekitar 750mAh)
  6. Lengan menyusut panas
  7. A4988 driver Stepper
  8. pengatur 5V
  9. Jack barel arduino
  10. catu daya arduino 12V

Menghibur:

  1. NEMA 17 stepper (harus cukup kuat, >0.4Nm)
  2. batang M6
  3. 12864 lcd
  4. WeMos LOLIN32
  5. Sakelar kebijaksanaan

Peralatan

Untuk melakukan ini, Anda mungkin bisa lolos hanya dengan menggunakan printer 3D, namun Anda dapat menghemat banyak waktu dengan memotong casing dengan laser, dan Anda juga dapat membuat PCB. File DXF dan gerber ada di GitHub, jadi Anda bisa memesannya secara lokal. Coupler dari batang berulir ke motor dihidupkan dengan mesin bubut dan ini mungkin satu-satunya masalah, karena bagian tersebut harus cukup kuat untuk menarik bantalan, tetapi tidak ada banyak ruang di sepeda khusus ini.

Sejak membuat sepeda pertama, saya memperoleh mesin penggilingan yang memungkinkan saya membuat slot untuk sensor di engkol. Itu membuat merekatkannya sedikit lebih mudah dan juga melindunginya jika ada sesuatu yang mengenai engkol. (Saya mengalami beberapa kali sensor ini jatuh, jadi saya ingin aman.)

Langkah 1: Engkol:

Engkol
Engkol
Engkol
Engkol
Engkol
Engkol

Sebaiknya ikuti saja tutorial ini:

Anda pada dasarnya perlu merekatkan sensor ke engkol di empat tempat dan menghubungkannya ke sisi papan.

Sambungan yang tepat sudah ada sehingga Anda hanya perlu menyolder pasangan kabel langsung ke delapan bantalan ini di papan.

Untuk menghubungkan ke sensor, gunakan kabel setipis mungkin - bantalannya sangat mudah diangkat. Anda perlu merekatkan sensor terlebih dahulu dan biarkan cukup di luar untuk disolder, lalu tutup sisanya dengan epoksi. Jika Anda mencoba menyolder sebelum menempel, mereka melengkung dan pecah.

Untuk merakit PCB:

  1. Masukkan pin emas dari bawah (sisi dengan bekas) ke semua lubang kecuali yang vertikal di dekat bagian bawah.
  2. Tempatkan tiga papan (ESP32 di atas, lalu MPU, HX711 di bawah) sehingga pin emas menempel melalui kedua lubang.
  3. Solder tajuk ke papan di atas
  4. Potong pin emas dari bawah. (Coba potong terlebih dahulu sebelum perakitan, jadi Anda tahu "pin emas" Anda bukan baja di dalamnya - itu membuat mereka hampir tidak mungkin untuk dipotong dan Anda perlu mengarsipkan atau menggilingnya)
  5. solder pin emas yang tersisa ke bagian bawah papan.
  6. Unggah firmware untuk engkol

Langkah terakhir adalah mengemas seluruh engkol dengan selongsong panas menyusut.

Metode pembuatan papan ini tidak ideal, karena papan memakan banyak ruang di mana Anda bisa memasukkan barang-barang lain. Yang terbaik adalah menyolder semua komponen ke papan secara langsung, tetapi saya tidak memiliki keterampilan untuk menyolder SMD kecil ini sendiri. Saya perlu memesannya dalam bentuk rakitan, dan saya mungkin akan membuat beberapa kesalahan dan akhirnya memesannya tiga kali dan menunggu setahun sebelum mereka tiba.

Jika seseorang dapat merancang papan, akan lebih bagus jika memiliki sirkuit perlindungan baterai dan sensor yang akan menghidupkan ESP jika engkol mulai bergerak.

PENTING

Sensor HX711 secara default diatur ke 10Hz - jauh lebih lambat untuk pengukuran daya. Anda perlu mengangkat pin 15 dari papan dan menghubungkannya ke pin 16. Ini mendorong pin HIGH dan mengaktifkan mode 80Hz. 80Hz ini, omong-omong, mengatur laju seluruh loop Arduino.

Penggunaan

ESP32 diprogram untuk tidur setelah 30 detik tanpa perangkat bluetooth yang terhubung. Untuk menyalakannya kembali Anda perlu menekan tombol reset. Sensor juga ditenagai dari pin digital, yang berubah menjadi RENDAH dalam mode tidur. Jika Anda ingin menguji sensor dengan kode contoh dari perpustakaan, Anda perlu menggerakkan pin TINGGI dan menunggu sebentar sebelum sensor menyala.

Setelah perakitan, sensor perlu dikalibrasi dengan membaca nilainya tanpa kekuatan dan kemudian dengan beban yang diterapkan (saya menggunakan kettlebell 12kg atau 16kg yang digantung di pedal). Nilai-nilai ini harus dimasukkan ke dalam kode powerCrank.

Sebaiknya tare engkol sebelum setiap perjalanan - engkol seharusnya tidak bisa melilit sendiri ketika seseorang mengayuh, tapi lebih baik aman daripada menyesal dan dimungkinkan untuk tare hanya sekali per menyalakan. Jika Anda melihat beberapa level daya yang aneh, Anda perlu mengulangi proses ini:

  1. Letakkan engkol lurus ke bawah sampai lampu mulai berkedip.
  2. Setelah beberapa detik, lampu akan tetap menyala - jangan sentuh itu
  3. Ketika lampu mati, itu mengatur gaya arus yang terdeteksi sebagai 0 baru.

Jika Anda hanya ingin menggunakan engkol, tanpa konsol, kodenya ada di sini di github. Segala sesuatu yang lain bekerja sama.

Langkah 2: Konsol

Konsol
Konsol
Konsol
Konsol
Konsol
Konsol

Casingnya dipotong dari akrilik 3mm, kancingnya dicetak 3D dan ada spacer untuk LCD, dipotong dari akrilik 5mm. Itu dilem dengan lem panas (menempel cukup baik ke akrilik) dan ada "braket" cetak 3D untuk menahan PCB ke LCD. Pin untuk LCD disolder dari sisi bawah sehingga tidak mengganggu ESP.

ESP disolder terbalik, jadi port USB pas di casing

PCB tombol yang terpisah dilem dengan lem panas, sehingga tombol-tombolnya terperangkap di lubangnya, tetapi tombolnya masih menekan sakelar. Tombol terhubung ke papan dengan konektor JST PH 2.0 dan urutan pin mudah disimpulkan dari skema.

Sangat penting untuk memasang driver stepper dalam orientasi yang benar (potensiometer dekat ESP)

Seluruh bagian untuk kartu SD dinonaktifkan, karena tidak ada yang menggunakannya di versi pertama. Kode perlu diperbarui dengan beberapa pengaturan UI seperti bobot pengendara dan pengaturan kesulitan.

Konsol dipasang menggunakan "lengan" dan ritsleting lasercut. Gigi kecil menggali ke dalam setang dan memegang konsol.

Langkah 3: Motor

Motornya
Motornya
Motornya
Motornya
Motornya
Motornya

Motor menahan dirinya di tempat kenop pengatur dengan braket cetak 3D. Untuk porosnya dipasang coupler - satu sisi memiliki lubang 5mm dengan sekrup set untuk menahan poros, yang lain memiliki ulir M6 dengan sekrup set untuk menguncinya. Jika Anda mau, Anda mungkin bisa membuatnya dalam mesin bor dari beberapa stok bulat 10mm. Tidak perlu sangat presisi karena motor tidak dipasang dengan sangat erat.

Sepotong batang berulir M6 disekrup pada coupler dan menarik mur M6 kuningan. Saya mengerjakannya, tetapi dapat dengan mudah dibuat dari sepotong kuningan dengan file. Anda bahkan dapat mengelas beberapa bit ke mur normal, sehingga tidak akan berputar. Kacang cetak 3D juga bisa menjadi solusi.

Benang harus lebih halus dari sekrup stok. Pitchnya sekitar 1.3mm, dan untuk M6 0.8mm. Motor tidak memiliki torsi yang cukup untuk menghidupkan sekrup stok.

Mur perlu dilumasi dengan baik, karena motor hampir tidak dapat memutar sekrup pada pengaturan yang lebih tinggi

Langkah 4: Konfigurasi

Konfigurasi
Konfigurasi
Konfigurasi
Konfigurasi

Untuk mengunggah kode ke ESP32 dari Arduino IDE Anda harus mengikuti tutorial ini:

Papannya adalah "WeMos LOLIN32", tetapi "modul Dev" juga berfungsi

Saya sarankan menggunakan Visual Studio, tetapi sering kali bisa rusak.

Sebelum penggunaan pertama

Engkol perlu diatur sesuai dengan langkah "Crank"

Menggunakan aplikasi "nRF Connect" Anda perlu memeriksa alamat MAC engkol ESP32 dan mengaturnya di file BLE.h.

Pada baris 19 indoorBike.ino Anda perlu mengatur, berapa banyak putaran sekrup yang diperlukan untuk mengatur resistansi dari benar-benar longgar hingga maksimum. ("Maksimum" sengaja dibuat subjektif, Anda menyesuaikan tingkat kesulitan dengan pengaturan ini.)

Pelatih pintar memiliki "roda gigi virtual" untuk mengaturnya dengan benar, Anda perlu mengkalibrasinya pada baris 28 dan 29. Anda perlu mengayuh dengan irama konstan pada pengaturan resistensi yang diberikan, kemudian membaca daya dan mengaturnya dalam file. Ulangi ini lagi dengan pengaturan lain.

Tombol paling kiri beralih dari mode ERG (resistensi mutlak) ke mode simulasi (roda gigi virtual). Mode simulasi tanpa koneksi komputer tidak melakukan apa-apa karena tidak ada data simulasi.

Baris 36. mengatur roda gigi virtual - jumlah dan rasio. Anda menghitungnya dengan membagi jumlah gigi di gigi depan dengan jumlah gigi di gigi belakang.

Pada baris 12. Anda menempatkan berat pengendara dan sepeda (Dalam [newton], massa dikalikan percepatan gravitasi!)

Seluruh bagian fisika ini mungkin terlalu rumit dan bahkan saya tidak ingat persisnya apa, tetapi saya menghitung torsi yang diperlukan untuk menarik pengendara sepeda menanjak atau semacamnya (itulah sebabnya kalibrasi).

Parameter ini sangat subjektif, Anda perlu mengaturnya setelah beberapa perjalanan agar berfungsi dengan benar.

Port COM debug mengirimkan data biner langsung yang diterima oleh bluetooth dalam tanda kutip (' ') dan data simulasi.

Pengonfigurasi

Karena konfigurasi fisika yang dianggap realistis ternyata sangat merepotkan untuk membuatnya terasa realistis, saya membuat konfigurator GUI yang memungkinkan pengguna untuk mendefinisikan secara grafis fungsi yang mengubah dari tingkat bukit ke tingkat resistensi mutlak. Itu belum sepenuhnya selesai dan saya tidak memiliki kesempatan untuk mengujinya, tetapi di bulan mendatang saya akan mengonversi sepeda lain, jadi saya akan memolesnya.

Pada tab "Gears" Anda dapat mengatur rasio setiap gear dengan menggerakkan slider. Anda kemudian perlu menyalin sedikit kode untuk mengganti roda gigi yang ditentukan dalam kode.

Pada tab "Nilai" Anda diberikan grafik fungsi linier (ya, ternyata subjek yang paling dibenci dalam matematika sebenarnya berguna) yang mengambil nilai (sumbu vertikal) dan menghasilkan langkah-langkah resistensi absolut (sumbu horizontal). Saya akan membahas matematika sedikit kemudian bagi mereka yang tertarik.

Pengguna dapat mendefinisikan fungsi ini menggunakan dua titik yang diletakkan di atasnya. Di sebelah kanan ada tempat untuk mengganti gigi saat ini. Roda gigi yang dipilih, seperti yang Anda bayangkan, mengubah cara, cara menilai peta ke resistensi - pada gigi yang lebih rendah lebih mudah untuk mengayuh ke atas bukit. Memindahkan penggeser akan mengubah koefisien ke-2, yang memengaruhi cara roda gigi yang dipilih mengubah fungsinya. Paling mudah untuk memainkannya sebentar untuk melihat bagaimana perilakunya. Anda mungkin juga perlu mencoba beberapa pengaturan berbeda untuk menemukan yang paling cocok untuk Anda.

Itu ditulis dalam Python 3 dan harus bekerja dengan pustaka default. Untuk menggunakannya, Anda perlu menghapus komentar pada baris segera setelah "batalkan komentar pada baris ini untuk menggunakan konfigurator". Seperti yang saya katakan, itu tidak diuji, jadi mungkin ada beberapa kesalahan, tetapi jika ada yang muncul, silakan tulis komentar atau buka masalah, jadi saya bisa memperbaikinya.

Matematika (dan fisika)

Satu-satunya cara pengontrol dapat membuatnya terasa seperti Anda menanjak adalah dengan memutar sekrup penahan. Kita perlu mengonversi grade ke jumlah rotasi. Untuk membuatnya lebih mudah diatur, seluruh rentang dari benar-benar longgar hingga tidak dapat memutar engkol dibagi menjadi 40 langkah, yang sama digunakan dalam mode ERG, tetapi kali ini menggunakan bilangan real alih-alih bilangan bulat. Ini dilakukan dengan fungsi peta sederhana - Anda dapat mencarinya di kode. Sekarang kita satu langkah lebih tinggi - alih-alih berurusan dengan putaran sekrup, kita berurusan dengan langkah-langkah imajiner.

Sekarang bagaimana cara kerjanya saat Anda menanjak dengan sepeda (dengan asumsi kecepatan konstan)? Jelas perlu ada kekuatan yang mendorong Anda ke atas, atau Anda akan berguling ke bawah. Gaya ini, seperti yang dikatakan oleh hukum gerak pertama, harus sama besarnya tetapi berlawanan arah dengan gaya yang menarik Anda ke bawah, agar Anda berada dalam gerakan seragam. Itu berasal dari gesekan antara roda dan tanah dan jika Anda menggambar diagram gaya-gaya ini, itu harus sama dengan berat sepeda dan pengendara dikalikan dengan kemiringan:

F=Fg*G

Sekarang apa yang membuat roda menerapkan gaya ini? Saat kita berurusan dengan roda gigi dan roda, lebih mudah untuk memikirkan torsi, yang merupakan gaya dikalikan radius:

t=F*R

Karena ada roda gigi yang terlibat, Anda memberikan torsi pada engkol, yang menarik rantai dan memutar roda. Torsi yang dibutuhkan untuk memutar roda dikalikan dengan rasio roda gigi:

tp=tw*gr

dan kembali dari rumus torsi kita mendapatkan gaya yang dibutuhkan untuk memutar pedal

Fp=tp/r

Ini adalah sesuatu yang bisa kita ukur dengan menggunakan meteran listrik di engkol. Karena gesekan dinamis secara linier terkait dengan gaya dan karena sepeda khusus ini menggunakan pegas untuk memberikan gaya ini, itu linier dengan pergerakan sekrup.

Daya adalah gaya dikalikan kecepatan (dengan asumsi arah vektor yang sama)

P=F*V

dan kecepatan linier pedal berhubungan dengan kecepatan sudut:

V=ω*r

sehingga kita dapat menghitung gaya yang diperlukan untuk memutar pedal pada tingkat resistensi yang ditetapkan. Karena semuanya berhubungan secara linier, kita dapat menggunakan proporsi untuk melakukannya.

Ini pada dasarnya adalah apa yang dibutuhkan perangkat lunak untuk menghitung selama kalibrasi dan menggunakan cara memutar untuk mendapatkan komposit yang rumit, tetapi fungsi linier yang menghubungkan grade dengan resistensi. Saya menulis semuanya di atas kertas menghitung persamaan akhir dan semua konstanta menjadi tiga koefisien.

Secara teknis ini adalah fungsi 3D yang mewakili bidang (saya pikir) yang mengambil nilai dan rasio roda gigi sebagai argumen, dan ketiga koefisien ini terkait dengan yang diperlukan untuk mendefinisikan bidang, tetapi karena roda gigi adalah angka diskrit, itu lebih mudah untuk menjadikannya parameter daripada berurusan dengan proyeksi dan semacamnya. Koefisien ke-1 dan ke-3 dapat ditentukan dengan satu garis dan (-1)* koefisien ke-2 adalah koordinat X dari titik tersebut, di mana garis "berputar" ketika mengganti persneling.

Dalam visualisasi ini, argumen diwakili oleh garis vertikal dan nilai oleh garis horizontal, dan saya tahu ini mungkin mengganggu, tetapi bagi saya itu lebih intuitif dan lebih cocok dengan GUI. Mungkin itulah alasan mengapa para ekonom menggambar grafik mereka dengan cara ini.

Langkah 5: Selesai

Sekarang Anda memerlukan beberapa aplikasi untuk digunakan pada pelatih baru Anda (yang menghemat sekitar $900:)). Berikut adalah pendapat saya tentang beberapa di antaranya.

  • RGT Cycling - menurut saya yang terbaik - memiliki opsi yang sepenuhnya gratis, tetapi memiliki sedikit trek. Berurusan dengan bagian koneksi yang terbaik, karena ponsel Anda terhubung melalui bluetooth dan PC menampilkan trek. Menggunakan video realistis dengan pengendara sepeda AR
  • Rouvy - banyak trek, hanya berlangganan berbayar, untuk beberapa alasan aplikasi PC tidak berfungsi dengan ini, Anda perlu menggunakan telepon Anda. Mungkin ada masalah ketika laptop Anda menggunakan kartu yang sama untuk bluetooth dan WiFi, sering lag dan tidak mau memuat
  • Zwift - permainan animasi, hanya berbayar, bekerja cukup baik dengan pelatih, tetapi UI cukup primitif - peluncur menggunakan Internet Explorer untuk menampilkan menu.

Jika Anda menikmati build (atau tidak), tolong beri tahu saya di komentar dan jika Anda memiliki pertanyaan, Anda dapat bertanya di sini atau mengirimkan masalah ke github. Saya akan dengan senang hati menjelaskan semuanya karena cukup rumit.

Direkomendasikan: