İçindekiler:
- Gereçler
- Adım 1: Bazı Matematik
- 2. Adım: Bazı Verileri Alın
- Adım 3: Donanım 1 Doğrusal Aktüatör
- 4. Adım: Donanım 2 - H-Bridge
- Adım 5: Donanım 3 Kontrol Elektroniği (Arduino)
- Adım 6: 'Arkadan Çıkanlar'
Video: Açık (Bisiklet) Sınıf Simülatörü - OpenGradeSIM: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Tanıtım
Belli bir tanınmış ABD merkezli fitness şirketi (Wahoo) kısa süre önce, kullanıcının bindiği tepenin simüle derecesine göre (Kickr Climb) turbo eğitmen üzerinde bisikletin önünü yükselten ve alçaltan harika bir iç mekan eğitim yardımcısını piyasaya sürdü.
Harika görünüyor ama ne yazık ki bu hepimiz için mevcut değil, çünkü 1) en iyi Wahoo eğitmenine ve 2) bunu size ait kılmak için 500 sterlin nakite ihtiyacınız olacak.
Köprücük kemiğimi kırdım (bir yol bisikletçisini asla bir dağ bisikletine bindirmedim), bu yüzden antrenörde daha fazla mil ve tamir etmek için daha fazla zamanım vardı ve bunun eğlenceli bir proje olabileceğini düşündüm.
Ticari birim -%5 ila +%20 simülasyonu yapıyor, bu yüzden buna yaklaşmak istedim ama bütçenin %10'u ile!
Bu, Tacx Neo'm etrafında tasarlandı, ancak güç ve hız verilerini ANT+ veya BLE aracılığıyla yayınlayan herhangi bir trainer çalıştırılabilir (sanırım!).
Yol bisikletimdeki dingil mesafesi tam olarak 1000 mm olduğundan, 200 mm'lik bir lineer aktüatörün yapabileceği şekilde %20'yi simüle etmek için çatalları 200 mm kaldırmam gerekir (resme bakın). Bisiklet + binici ağırlığının 100 kg'ı aşması pek olası değildir ve bu, akslar arasında dağıtıldığından ve çoğu arkada olduğundan 750N, 75 kg kaldıracaktır ve tamam olmalıdır. Daha hızlı aktüatörler daha fazla para için mevcuttur, ancak bu bana yaklaşık 20 sterline mal oldu ve 10 mm/sn'yi yönetiyor. Basit servo olarak kullanılabilen potansiyometreli aktüatörler de 2 ila 3 kat daha pahalıdır.
Gereçler
Aks adaptör parçasının 3D baskısı (PLA veya ABSetc):
100 mm 3/4 inç 10 swg alüminyum boru stoğu (aks çerçevesi boyunca)
80 mm 6 mm paslanmaz çelik çubuk stoğu
Lineer aktüatör parçası için ayakkabının 3D baskısı (PLA veya ABSetc):
H köprüsü için Kasanın 3D baskısı
Arduino Kasasının 3D baskısı (Tuş takımlı Sürüm 1) https://www.thingiverse.com/thing:3984911 (Gösterildiği gibi Sürüm 2 (https://www.thingiverse.com/thing:3995976)
Elektroniğin her yerinde terlemenizi önlemek için 3 mm şeffaf akrilik 32 x 38 mm lazer kesim parçası (bunu yaptı, ideal değil).
Coşkunuzda Shimano disk frenlerinizin kaliper pistonlarını yanlışlıkla dışarı itmenizi önlemek için bazı kanama blokları (balataları içeride bırakacak şekilde uyarlanmıştır)
Lineer Aktüatör 750N 200mm hareket, örneğin https://www.linear-actuator.net.cn/product/linear… adresinden Al03 Mini Lineer Aktüatörler
L298N H köprüsü (gibi:
Arduino Nano IoT 33 www.rapidonline.com sipariş 73-4863
2 tuşlu membran klavye, örneğin
IIC I2C Mantık Seviyesi Dönüştürücü Çift Yönlü Modül 5V - 3.3V Arduino için örn.
12V 3A DC güç kaynağı - LED aydınlatma için olanlar harika çalışıyor!
NPE KABLOSU Ant+'dan BLE köprüsüne
KABLO köprüsü için 3D yazdırılabilir klip
IIC I2C Arayüzü 128x32 3.3V ile 1.3 OLED LCD Ekran Modülü
Adım 1: Bazı Matematik
Simüle edilen eğimi hesaplamamız gerekiyor. Eğiticinin hız, güç, kadans vb. ile birlikte bu verileri tanıtacağını ummuştum, ancak eğitici güç çıkışını kontrol etmek için kullanılan tablet, bilgisayar vb. üzerindeki yazılıma göre güç çıkışını korumak için direnç ayarlar. Yazılımdan 'simüle edilmiş notu' kolayca yakalamanın hiçbir yolu yoktu, bu yüzden geriye doğru çalışmak zorunda kalacaktım…
Bisiklete ve sürücüye etki eden kuvvetler, direnç kayıplarının ve tepeye tırmanmak için gereken gücün birleşimidir. Eğitmen hız ve güç bildirir. Belirli bir hızda direnç kayıplarını bulabilirsek, kalan güç tepeye tırmanmak için kullanılıyor. Tırmanma gücü, bisikletin ve sürücünün ağırlığına ve çıkış hızına bağlıdır ve böylece eğime geri dönebiliriz.
İlk olarak, tipik hızlarda dirençli güç kaybı için bazı veri noktalarını bulmak için harika https://bikecalculator.com'u kullandım. Sonra hız alanını doğrusal bir ilişki üretecek şekilde dönüştürdüm ve en uygun doğruyu buldum. Çizginin denklemini alarak artık direnç = (0.0102*(Speedkmh^2.8))+9.428'den gücü (W) hesaplayabiliriz.
'Tırmanma' gücünü vermek için ölçülen güçten direncin gücünü alın.
Yükselişin hızını km/saat olarak biliyoruz ve bunu m/s'lik SI birimlerine çeviriyoruz (3,6'ya bölün).
Eğim şuradan bulunur: Eğim (%) =((PowerClimbing/(WeightKg*g))/Speed)*100
serbest düşüş ivmesi g = 9.8m/s/sn veya 9.8 N/kg olduğunda
2. Adım: Bazı Verileri Alın
Eğim hesaplaması hız ve güç gerektirir. Bunu almak için eğiticiye BLE aracılığıyla bağlanmak için bir Arduino Nano 33 IoT kullandım. Bu modül için yerel ArduinoBLE kitaplığının mevcut v.1.1.2 sürümü herhangi bir biçimde kimlik doğrulamayı işlemediği için başlangıçta çok takıldım, bu da çoğu (?) ticari BLE sensörünün onunla eşleşmeyeceği anlamına geliyor.
Çözüm, eğitim uygulamasının iletişim kurması için eğiticinin yerleşik BLE'sini ücretsiz tutan ve BLE'de kimlik doğrulama gerektirmeyen bir NPE Kablosu ANT+ - BLE köprüsü (https://npe-inc.com/cableinfo/) kullanmaktı. yan.
Watt cinsinden güç, iletilen verilerin ikinci ve üçüncü baytlarında 16 bitlik bir tam sayı (küçük endian, yani en az anlamlı sekizli ilk) olarak yer aldığından, BLE güç özelliği oldukça basittir. 3s ortalama güç vermek için hareketli bir ortalama filtresi uyguladım - tıpkı bisiklet bilgisayarımın gösterdiği gibi - çünkü bu daha az düzensiz.
if (powerCharacteristic.valueUpdated()) {
// uint8_t holdpowervalues[6] değeri için bir dizi tanımlayın = {0, 0, 0, 0, 0, 0}; // değeri powerCharacteristic.readValue dizisine oku(holdpowervalues, 6); // Güç, konum 2 ve 3'te watt olarak döndürülür (loc 0 ve 1, 8 bit bayraktır) byte rawpowerValue2 = holdpowervalues[2]; // HEX baytında en az sig baytı çalıştır rawpowerValue3 = holdpowervalues[3]; // çoğu sig baytı HEX'te çalıştır uzun rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // '3s güç' vermek için hareketli ortalama filtresini kullanın powerTrainer = moveAverageFilter_power.process(rawpowerTotal);
BLE hız özelliği (Bisiklet Hızı ve Kadans), SIG'nin spesifikasyonu yazarken ne içtiğini merak etmenizi sağlayan şeylerden biridir.
Karakteristik, ne hız ne de kadans içermeyen 16 baytlık bir dizi döndürür. Bunun yerine, tekerlek devirlerini ve krank devirlerini (toplamları) ve son olay verilerinden bu yana geçen süreyi saniyenin 1024'ünde alırsınız. O zaman daha fazla matematik. Oh, ve baytlar her zaman mevcut değildir, bu nedenle başlangıçta bir bayrak baytı vardır. Oh, ve baytlar küçük endian HEX'tir, bu nedenle ikinci baytı 256, üçüncüsü 65536 vb. ile çarparak geriye doğru okumanız ve ardından bunları bir araya getirmeniz gerekir. Hızı bulmak için, mesafeyi bilmek için standart bir bisiklet tekerleği çevresi varsaymanız gerekir….
if (speedCharacteristic.valueUpdated()) {
// Bu değerin 16 baytlık bir diziye ihtiyacı var uint8_t holdvalues[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Ama ben sadece ilk 7 speedCharacteristic.readValue(holdvalues, 7); bayt rawValue0 = tutma değerleri[0]; // ikili bayraklar 8 bit int bayt rawValue1 = holdvalues[1]; // HEX'te en az anlamlı bayt devir sayısı bayt rawValue2 = holdvalues[2]; // HEX'te sonraki en önemli bayt devir sayısı bayt rawValue3 = holdvalues[3]; // HEX'te sonraki en önemli baytı devirler bayt rawValue4 = holdvalues[4]; // HEX'te en önemli baytı devirler bayt rawValue5 = holdvalues[5]; // son tekerlek olayından bu yana geçen süre en az sig bayt bayt rawValue6 = holdvalues[6]; // son tekerlek olayından bu yana geçen süre, en çok sig bayt if (firstData) { // loc 2, 3 ve 4'te küçük endian hex olarak kümülatif tekerlek devirlerini alın (önce en az anlamlı sekizli) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // Saniyenin 1024'ünde son tekerlek olayından bu yana geçen süreyi al Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = yanlış; } else { // İkinci veri setini al long WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); uzun TimeTemp = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp > WheelRevs1) { // bisikletin hareket ettiğinden emin olun WheelRevs2 = WheelRevsTemp; Zaman_2 = ZamanTemp; firstData = doğru;}
// Uzaklık farkını cm cinsinden bulun ve km'ye dönüştürün kayan mesafeTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);
float kmSeyahat edilen = mesafeSeyahat edilen / 1000000;
// Zamanı saniyenin 1024'ü cinsinden bulun ve saate dönüştürün
float timeDifference = (Time_2 - Time_1); float timeSecs = timeDifference / 1024; float timeHrs = timeSec / 3600;
// hız kmh bul
hızKMH = (kmSeyahat edilen / zamanSaat);
Arduino taslağı GitHub'da (https://github.com/mockendon/opengradesim) barındırılmaktadır.
Adım 3: Donanım 1 Doğrusal Aktüatör
Disk frenli yol bisikletimdeki geçiş aksı, çatallar arasında 100 mm ile 12 mm aksı temizlemek için 19,2 mm'lik bir aks belirtir.
Stok 3/4 inç 10swg alüminyum tüp mükemmel bir uyum ve ebay'de Dave adında hoş bir adam (https://www.ebay.co.uk/str/aluminiumonline) tedarik edildi ve benim için birkaç kiloya kadar kesti.
Aktüatör, 6 mm delikli 20 mm'lik bir çubuğa sahiptir, bu nedenle 3D baskılı parça, alüminyum boruyu 6 mm'lik bir çelik çubuğa bağlar ve kuvvetler %90 sıkıştırma olduğundan, bazı PLA / ABS bu zorluğun üstesinden gelir.
Standart bir hızlı sürüm kurulumu çalıştırırsanız, bunun gibi bir şey (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) bu bileşeni yeniden tasarlamak zorunda kalmaz.
Önyükleme, Tacx eğitmenimle birlikte verilen yükseltici bloğuna sığacak şekilde tasarlanmıştır, ancak muhtemelen birçok benzer yükselticiye sığacaktır veya TinkerCad dosyasını gereksinimlerinize göre düzenleyebilirsiniz.
4. Adım: Donanım 2 - H-Bridge
Çevrimiçi olarak çok yaygın olan bu L298N H köprü kartı, Arduino'ya lineer aktüatör için gereken 12V güç kaynağından güç sağlamak için harika olan yerleşik bir 5V regülatöre sahiptir. Ne yazık ki Arduino Nano IoT kartı 3.3V sinyal veriyor, bu nedenle mantıksal bir seviye dönüştürücüye (veya sinyaller yalnızca tek yönlü olduğundan bir optoizolatöre) ihtiyaç var.
Kasa, LED aydınlatma uygulamalarında yaygın olarak kullanılan güç konektörlerini kabul edecek şekilde tasarlanmıştır. Arduino ana ünitesini kolayca bağlamayı / bağlantısını kesmeyi mümkün kılmak için bir USB uzatma kablosunu kasap yaptım ve güç hatlarını güç için ve 3.3V sinyalleme için veri hatlarını kullanacağımdan eminken, dürüstçe buna KARŞI tavsiyede bulunurdum. Birinin USB bağlantı noktalarını veya çevre birimlerini yanlışlıkla takarak kızartmasından nefret edin!
Adım 5: Donanım 3 Kontrol Elektroniği (Arduino)
Arduino OLED ve mantık seviye dönüştürücü kasasının arkasında, bisiklete güvenli bir şekilde monte edilmesini sağlamak için standart 1/2 dönüşlü Garmin tarzı bir montaj parçası bulunur. Bir 'ön' montaj, ünitenin ivmeölçer konumunu 'sıfır' olacak şekilde yukarı veya aşağı eğilmesine izin verecek veya başlangıçta sadece otomatik sıfıra bir kod satırı eklemek kolay olacaktır.
Kasada bir membran tuş takımı için bir yer var - bu, kombine binici ve bisiklet ağırlığını ayarlamak için kullanılır. Bunu, özellikle bir antrenörü kimseyle paylaşmıyorsanız, programlı olarak ayarlayabilirsiniz.
Bir 'manuel' modu uygulamak güzel olabilir. Belki her iki düğmeye basmak manuel modu başlatabilir ve ardından düğmeler eğimi artırabilir / azaltabilir. Bunu yapılacaklar listesine ekleyeceğim!
Vakanın STL dosyası yine Thingiverse'de mevcuttur (bağlantı için sarf malzemeleri bölümüne bakın).
Arduino taslağı GitHub'da (https://github.com/mockendon/opengradesim) barındırılmaktadır.
KABLO köprünüz için küçük bir klip yazdırabilirsiniz
Adım 6: 'Arkadan Çıkanlar'
Birçok kişi, bisiklet hareket ederken arkadan düşme sürtünme sorununu gündeme getirdi. Bazı eğitmenlerin hareket eden bir aksı vardır (Kickr gibi), ancak çoğu hareket etmez.
Şu anda benim için en iyi çözümüm, hızlı serbest bırakma adaptörlerine bazı standart 61800-2RS sabit yivli rulmanlar (her biri yaklaşık 2 £) monte etmek ve daha sonra büyük boyutlu bir QR şiş ile bunlara (resimlere bakın) aks çıkışlarını monte etmektir.
Yataklar, adaptör ve yatak arasında M12 16mm 0.3mm gibi ince bir pul puluna ihtiyaç duyar.
Mükemmel uyum sağlarlar ve eğiticiden bağımsız olarak bisiklet ve şiş ile birlikte dönerler.
Şu anda bu, sürücü tarafındaki ofseti birkaç mm değiştirdiğinden, yeniden indekslemeniz gerekecek
Makineye özel parçalar tasarlıyorum (pdf planına bakın) (yardım etmek için bir saati olduğunda müstakbel kayınbiraderimin torna tezgahında!). Bunlar henüz test edilmedi!!! Ancak, stok sürücü tarafındaki QR adaptörünün iç yüzeyinden 1 mm'lik taşlama, özel bir alet olmadan hızlı bir düzeltmedir;)
Önerilen:
HiFi Hoparlörler - Birinci Sınıf Yapı Kılavuzu: 8 Adım (Resimlerle)
HiFi Hoparlörler - Birinci Sınıf Yapı için Bir Kılavuz: Kapsamlı deneyim veya uzmanlık gerektirmeyen HiFi hoparlör kabinleri oluşturmak için kaliteli, eksiksiz bilgi bulmaya çalışmak için çok fazla zaman harcadıktan sonra bu Eğitilebilir Yazıyı yazmaya karar verdim. Bazı harika Instructables var
DIY YARIŞ OYUNU SİMÜLATÖRÜ -- F1 SİMÜLATÖRÜ: 5 Adım
DIY YARIŞ OYUNU SİMÜLATÖRÜ || F1 SİMÜLATÖRÜ: Herkese merhaba Kanalıma hoş geldiniz, Bugün size nasıl bir "Yarış Oyunu Simülatörü" oluşturduğumu göstereceğim; Arduino UNO'nun yardımıyla. bu bir yapı blogu değil, sadece simülatörün genel görünümü ve testi. Komple yapı blogu çok yakında
Sınıf Dans Arası: 8 Adım
Classroom Dance Break: Sınıfınızın bir beyin molasına mı ihtiyacı var ve GoNoodle'ı çekmek zaman alıyor mu? Öğrencilerinizi kapıda karşılamak istiyorsunuz ama COVID-19 nedeniyle tokalaşmak, sarılmak ve beşlik çakmak söz konusu değil mi? O zaman işte çözümün! Öğrenciler seçiyor
Endüstriyel Sınıf PLC (Controllino) ile DIY Işık Bariyeri Alarm Sistemi: 5 Adım
Endüstriyel Sınıf PLC (Controllino) ile DIY Işık Bariyeri Alarm Sistemi: Bu projede size bir PLC'yi (Controllino) bir ışık bariyeri, bir siren, bir indükleme anahtarı ve bir stroboskop ışığı oluşturmak için nasıl birleştirdiğimi göstereceğim. davetsiz misafirleri kolayca korkutacak gerçekten sağlam çalışan bir alarm/güvenlik sistemi. ben
Gerçek Zamanlı Hız Ayarlı Bisiklet Simülatörü: 5 Adım
Gerçek Zamanlı Hız Ayarlı Bisiklet Simülatörü: Bu proje, bir hız göstergesi oluşturmak ve YouTube veya diğer medyadaki birinci şahıs bisiklet videolarının video hızını kontrol etmek için manyetik bir kamış anahtarı kullanır. Arduino, mph'yi hesaplar ve ardından bu bilgiyi bir bilgisayar düğmesine basılmasını simüle etmek için kullanır.