Mündəricat:
Video: DIY Qapalı Velosiped Ağıllı Təlimçisi: 5 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Giriş
Bu layihə, müqavimət parametrləri üçün sadə bir vida və keçə yastıqlarından istifadə edən Schwinn IC Elite qapalı velosipedində sadə bir dəyişiklik olaraq başladı. Həll etmək istədiyim problem, vintin pilləsinin böyük olması idi, buna görə də pedal çevirə bilməməkdən tutmuş tamamilə sərbəst dönənə qədər olan müqavimət düyməsindəki cəmi iki dərəcə idi. Əvvəlcə vidayı M6 -ya dəyişdim, amma sonra bir düymə düzəltməliyəm, bəs niyə müqaviməti dəyişdirmək üçün NEMA 17 -dən artıq bir step motordan istifadə etməyək? Artıq bir elektronika varsa, niyə ağıllı bir məşqçi etmək üçün kompüterə krank güc sayğacı və bluetooth bağlantısı əlavə etməyəsiniz?
Bu, gözləniləndən daha çətin oldu, çünki güc sayğacının arduino və bluetooth ilə necə təqlid ediləcəyinə dair heç bir nümunə yox idi. BLE GATT xüsusiyyətlərini proqramlaşdırmaq və şərh etmək üçün təxminən 20 saat sərf etdim. Ümid edirəm ki, bir nümunə göstərməklə kiməsə "Xidmət Məlumatları AD Tip Sahəsi" nin tam olaraq nə demək olduğunu anlamaq üçün bu qədər vaxt itirməməsinə kömək edə bilərəm …
Proqram təminatı
Bütün layihə GitHub -da:
github.com/kswiorek/ble-ftms
Kodumu kopyalayıb yapışdırmaqdan daha ciddi bir şey etməyi planlaşdırırsınızsa, Visual Studio-nu VisualGDB plagini ilə istifadə etməyi məsləhət görürəm.
Proqramla bağlı suallarınız varsa, xahiş edirəm soruşun, bilirəm ki, minimalist şərhlərim çox kömək etməyəcək.
Kreditlər
Güc sayğacının necə hazırlanacağına dair bələdçisi üçün stoppi71 -ə təşəkkür edirəm. Krankı onun dizaynına uyğun olaraq etdim.
Təchizat:
Bu layihənin materialları, hansı motosikleti dəyişdirdiyinizdən çox asılıdır, lakin bəzi universal hissələr var.
Krank:
- ESP32 modulu
- HX711 çəki sensoru ADC
- Gərginlik ölçü cihazları
- MPU - giroskop
- Kiçik bir Li-Po batareyası (təxminən 750mAh)
- İstilik daralma qolu
- A4988 step sürücü
- 5V tənzimləyicisi
- Arduino barel yuvası
- 12V arduino enerji təchizatı
Konsol:
- NEMA 17 pilləsi (olduqca güclü olmalıdır,> 0.4Nm)
- M6 çubuğu
- 12864 lcd
- WeMos LOLIN32
- Ədəb açarları
Avadanlıq
Bunu etmək üçün çox güman ki, yalnız bir 3D printerdən istifadə edə bilərsiniz, ancaq korpusu lazerlə kəsərək çox vaxtınıza qənaət edə bilərsiniz və eyni zamanda PCB də edə bilərsiniz. DXF və gerber faylları GitHubdadır, buna görə də bunları yerli olaraq sifariş edə bilərsiniz. Yivli çubuqdan mühərrikə birləşdirici torna üzərində işə salındı və bu, yeganə problem ola bilər, çünki hissələri yastıqları çəkmək üçün kifayət qədər güclü olması lazımdır, lakin bu xüsusi velosipeddə çox yer yoxdur.
İlk velosipedi hazırladıqdan sonra krankdakı sensorlar üçün yuvalar düzəltməyə imkan verən bir freze maşını aldım. Onları yapışdırmağı bir az asanlaşdırır və kranka bir şey dəysə onları da qoruyur. (Bu sensorlar bir neçə dəfə düşdü, buna görə də təhlükəsiz olmaq istədim.)
Addım 1: Krank:
Bu təlimatı izləmək ən yaxşısıdır:
Sensorları kranka dörd yerə yapışdırmalı və lövhənin yanlarına bağlamalısınız.
Düzgün əlaqələr artıq mövcuddur, buna görə də cüt telləri birbaşa lövhədəki bu səkkiz yastığa lehimləməlisiniz.
Sensorlara qoşulmaq üçün mümkün olan ən incə teldən istifadə edin - yastıqları qaldırmaq çox asandır. Əvvəlcə sensorları yapışdırmalı və kifayət qədər kənarda lehim üçün buraxmalısınız, sonra qalanını epoksi ilə örtməlisiniz. Yapıştırmadan əvvəl lehimləməyə çalışsanız, qıvrılır və qırılır.
PCB yığmaq üçün:
- Altından (izləri olan tərəfdən) altındakı şaquli olanlar istisna olmaqla, bütün çuxurlara daxil edin.
- Üç lövhəni (üstündə ESP32, sonra MPU, HX711 altındakı) yerləşdirin ki, qızıl pinlər hər iki çuxurdan yapışsın.
- Başlıqları yuxarıdakı lövhələrə lehimləyin
- Qızıl çubuqları altdan kəsin. (Montajdan əvvəl onları kəsməyə çalışın, buna görə də "qızıl pinlərinizin" içərisində polad olmadığını bilirsiniz - onları kəsmək demək olar ki, mümkünsüz edir və onları əritmək və ya üyütmək lazımdır)
- qalan qızıl çubuqları lövhənin altına yapışdırın.
- Krank üçün firmware yükləyin
Son addım, bütün krankı istilik büzüşmə qolu ilə bağlamaqdır.
Lövhələr hazırlamaq üçün bu üsul ideal deyil, çünki lövhələr başqa şeylərə uyğun ola biləcəyiniz çox yer tutur. Ən yaxşısı, bütün komponentləri birbaşa lövhəyə lehimləmək olardı, amma bu kiçik SMD -ni özüm lehimləmə bacarığım yoxdur. Yığılmış şəkildə sifariş verməli idim və yəqin ki, bəzi səhvlər edərdim və üç dəfə sifariş verərdim və gələnə qədər bir il gözləyərdim.
Biri lövhəni dizayn edə bilsəydi, bir az batareya qoruyucu dövrə və krank hərəkət etməyə başlayanda ESP -ni işə salan bir sensora sahib olsanız çox yaxşı olar.
Vacib
HX711 sensoru standart olaraq 10Hz -ə təyin edilmişdir - güc ölçümü üçün çox yavaşdır. 15 -ci pimi lövhədən qaldırıb 16 -cı pinə bağlamalısınız. Bu, pimi YÜKSƏK idarə edir və 80Hz rejimini işə salır. Bu 80Hz, yeri gəlmişkən, bütün arduino döngəsinin sürətini təyin edir.
İstifadə
ESP32, 30 -cu illərdən sonra heç bir bluetooth cihazı bağlanmadan yatmaq üçün proqramlaşdırılmışdır. Yenidən açmaq üçün sıfırlama düyməsini basmalısınız. Sensorlar da yuxu rejimində LOW -a çevrilən rəqəmsal bir pinlə təchiz edilmişdir. Sensorları kitabxanalardan nümunə kodu ilə sınamaq istəyirsinizsə, pinini YÜKSƏK sürün və sensorlar açılmadan bir az gözləyin.
Quraşdırıldıqdan sonra sensorlar heç bir qüvvə olmadan və sonra çəki ilə oxunaraq kalibr edilməlidir (pedala asılmış 12 kq və ya 16 kq çəki zənbili istifadə etdim). Bu dəyərlər powerCrank koduna daxil edilməlidir.
Hər gəzintidən əvvəl kranı dartmaq ən yaxşısıdır - kimsə pedal çəkərkən özünü dara edə bilməməlidir, amma üzr istəməkdən daha təhlükəsizdir və açılışda yalnız bir dəfə dara etmək mümkündür. Bəzi qəribə güc səviyyələri görsəniz, bu prosesi təkrar etməlisiniz:
- İşıq yanıb -sönənə qədər kranı düz yerə qoyun.
- Bir neçə saniyə sonra işıq yanacaq - ona toxunmayın
- İşıq söndükdə, algılanan qüvvəni yeni 0 olaraq təyin edir.
Yalnız krankdan istifadə etmək istəyirsinizsə, konsol olmadan, kod burada githubdadır. Qalan hər şey eyni şəkildə işləyir.
Addım 2: Konsol
Korpus 3 mm akrildən kəsilmiş, düymələr 3D çapda və 5 mm akrildən kəsilmiş LCD üçün boşluqlar var. İsti yapışqan ilə yapışdırılır (akrilikə yaxşı yapışır) və PCB -ni LCD -yə tutmaq üçün 3D çaplı "mötərizə" var. LCD üçün sancaqlar ESP -ə müdaxilə etməmək üçün alt tərəfdən lehimlənir.
ESP alt-üst lehimli olduğundan USB portu çantaya uyğun gəlir
Ayrı bir düymə PCB isti yapışqan ilə yapışdırılır, buna görə düymələr deliklərində tutulur, amma yenə də açarları basırlar. Düymələr lövhəyə JST PH 2.0 bağlayıcıları ilə bağlanır və pin sırasını sxematik şəkildə çıxarmaq asandır
Step sürücüsünü düzgün istiqamətə quraşdırmaq çox vacibdir (ESP yaxınlığındakı potansiyometr)
İlk versiyada heç kim istifadə etmədiyi üçün SD kartın bütün hissəsi deaktiv edilmişdir. Kod, sürücünün çəkisi və çətinlik qurma kimi bəzi UI parametrləri ilə yenilənməlidir.
Konsol, lasercut "qolları" və zipties istifadə edərək quraşdırılmışdır. Kiçik dişlər sükanı qazır və konsolu tutur.
Addım 3: Motor
Motor özünü 3D çaplı mötərizə ilə tənzimləmə düyməsinin yerində saxlayır. Şaftına bir bağlayıcı quraşdırılmışdır - bir tərəfində mili tutmaq üçün vintləri olan 5 mm -lik bir çuxur, digər tərəfində kilidləmək üçün vintləri olan M6 ipi var. İstəyirsinizsə, yəqin ki, 10 mm -lik yuvarlaq bir stokdan bir qazma maşınında edə bilərsiniz. Mühərrik çox sıx bağlanmadığından son dərəcə dəqiq olmağa ehtiyac yoxdur.
M6 yivli çubuq parçası bağlayıcıya vidalanır və pirinç M6 qozunu çəkir. Mən onu emal etdim, ancaq bir pirinçdən bir fayl ilə asanlıqla hazırlana bilər. Hətta bəzi bitləri normal bir qoza qaynaqlaya bilərsiniz, belə ki, dönməz. 3D çaplı bir qoz da bir həll ola bilər.
İplik hissə vintindən daha incə olmalıdır. Onun meydançası təxminən 1,3 mm, M6 üçün isə 0,8 mm -dir. Mühərrikin vintini çevirmək üçün kifayət qədər fırlanma anı yoxdur.
Qozun yaxşı yağlanması lazımdır, çünki mühərrik yüksək vintləri çətinliklə döndərə bilər
Addım 4: Konfiqurasiya
Arduino IDE-dən ESP32-ə kod yükləmək üçün bu təlimatı izləməlisiniz:
Lövhə "WeMos LOLIN32" dir, lakin "Dev modulu" da işləyir
Visual Studio istifadə etməyi təklif edirəm, amma tez -tez pozula bilər.
İlk istifadə etməzdən əvvəl
Krankın "Krank" addımına uyğun olaraq qurulması lazımdır
"NRF Connect" tətbiqindən istifadə edərək krank ESP32 -nin MAC ünvanını yoxlamalı və BLE.h faylına qoymalısınız.
InteriorBike.ino'nun 19 -cu sətirində, müqaviməti tamamilə boşdan maksimuma təyin etmək üçün vidanın neçə dəfə fırlanması lazım olduğunu təyin etməlisiniz. ("Maksimum" məqsədli olaraq subyektivdir, çətinliyi bu parametrlə tənzimləyirsiniz.)
Ağıllı məşqçinin onları düzgün qurmaq üçün "virtual dişliləri" var, onu 28 və 29 -cu sətirlərdə kalibr etməlisiniz. Müəyyən bir müqavimət ayarı ilə sabit bir kadansla pedal çəkməlisiniz, sonra gücü oxuyun və faylda qurun. Bunu başqa bir parametrlə təkrarlayın.
Ən sol düymə ERG rejimindən (mütləq müqavimət) simulyasiya rejiminə (virtual dişli) keçir. Kompüter bağlantısı olmayan simulyasiya rejimi heç bir iş görmür, çünki simulyasiya məlumatı yoxdur.
Line 36. virtual dişliləri - sayı və nisbətləri təyin edir. Ön dişli dişlərin sayını arxa dişli dişlərin sayına bölərək hesablayırsınız.
12. sətirdə atlı və velosipedin ağırlığını qoyursunuz ([newtonlarda], çəkisi cazibə sürətindən qat -qat çoxdur!)
Bunun bütün fizika hissəsi yəqin ki, çox mürəkkəbdir və hətta tam olaraq nə etdiyini xatırlamıram, ancaq velosipedçini yoxuşa və ya buna bənzər bir şey çəkmək üçün lazım olan torku hesablayıram (buna görə kalibrləmə).
Bu parametrlər çox subyektivdir, düzgün işləmələri üçün bir neçə gəzintidən sonra onları qurmalısınız.
Debug COM portu, bluetooth tərəfindən alınan birbaşa ikili məlumatları quotes ('') və simulyasiya məlumatları ilə göndərir.
Konfiqurator
Guya real fizikanın konfiqurasiyasını gerçəkləşdirmək üçün böyük bir çətinlik olduğu ortaya çıxdığından istifadəçilərə təpənin sinifindən mütləq müqavimət səviyyəsinə çevrilən funksiyanı qrafik olaraq təyin etməyə imkan verən bir GUI konfiquratoru yaratdım. Hələ tamamlanmayıb və sınamaq imkanım yox idi, amma qarşıdakı ayda başqa bir velosiped çevirəcəyəm, ona görə də cilalayacağam.
"Gears" sekmesinde, sürgüləri hərəkət etdirərək hər bir dişli nisbətini təyin edə bilərsiniz. Daha sonra koddakı müəyyən edilmiş dişliləri əvəz etmək üçün kod bitini kopyalamalısınız.
"Qiymət" sekmesinde, dərəcəni (şaquli ox) götürən və mütləq müqavimət addımlarını (üfüqi ox) çıxaran xətti bir funksiyanın qrafiki verilir (bəli, riyaziyyatda ən çox nifrət olunan mövzu həqiqətən faydalıdır). Maraqlananlar üçün bir az sonra riyaziyyata girəcəyəm.
İstifadəçi bu funksiyanı iki nöqtədən istifadə edərək təyin edə bilər. Sağda cari dişli dəyişdirmək üçün bir yer var. Seçdiyiniz dişli, təsəvvür etdiyiniz kimi, müqavimət dərəcəsini necə dəyişdirdiyini dəyişir - aşağı dişlilərdə yoxuşa çıxmaq daha asandır. Kaydırıcının hərəkət etməsi, seçilmiş dişlinin funksiyanı necə dəyişdiyini təsir edən 2 -ci əmsalını dəyişir. Onun necə davrandığını görmək üçün bir müddət onunla oynamaq ən asandır. Sizin üçün ən uyğun olanı tapmaq üçün bir neçə fərqli parametr sınamağınız lazım ola bilər.
Python 3 -də yazılmışdır və standart kitabxanalarla işləməlidir. İstifadə etmək üçün "konfiquratordan istifadə etmək üçün bu sətirləri şərh etmədən" dərhal sonra sətirləri açmalısınız. Dediyim kimi, sınaqdan keçirilməmişdir, buna görə də bəzi səhvlər ola bilər, amma bir şey ortaya çıxsa, lütfən bir şərh yazın və ya bir problem açın, onu düzəldə bilərəm.
Riyaziyyat (və fizika)
Nəzarətçinin yuxarıya doğru getdiyinizi hiss etməsinin yeganə yolu müqavimət vidasını çevirməkdir. Qiyməti rotasiya sayına çevirməliyik. Qurulmasını asanlaşdırmaq üçün, krankı döndərə bilməməkdən tutmuş, bütün addımlar ERG rejimində istifadə olunan 40 mərhələyə bölünür, lakin bu dəfə tam ədədlər əvəzinə həqiqi ədədlərdən istifadə edir. Bu sadə bir xəritə funksiyası ilə edilir - bunu kodda tapa bilərsiniz. İndi biz bir pillə yuxarı qalmışıq - vint inqilabları ilə məşğul olmaq əvəzinə xəyali addımlarla məşğul oluruq.
İndi velosipedlə yoxuşa qalxanda (sabit bir sürətlə) əslində necə işləyir? Aydındır ki, sizi itələyən bir qüvvəyə ehtiyac var, əks halda yuvarlanacaqsınız. Bu hərəkət, ilk hərəkət qanununun bizə bildirdiyi kimi, vahid hərəkətdə olmanız üçün böyüklüyündə bərabər, ancaq sizi aşağı çəkən qüvvənin əksinə olmalıdır. Təkərlə yer arasındakı sürtünmədən yaranır və bu qüvvələrin diaqramını çəksəniz, velosipedin və sürücünün dərəcəsindən qat -qat ağır olmalıdır:
F = Fg*G
İndi təkəri bu qüvvəni tətbiq etməyə nə vadar edir? Dişlilər və təkərlər ilə məşğul olduğumuz üçün, torkla düşünmək daha asandır, bu sadəcə radiusun qüvvəsidir:
t = F*R
Dişlilər iştirak edərkən, kranka zənciri çəkən və təkəri çevirən bir tork verirsiniz. Sükanı çevirmək üçün lazım olan fırlanma anı, dişli nisbətinə vurulur:
tp = tw*qr
və tork formulundan pedalı çevirmək üçün lazım olan gücü alırıq
Fp = tp/r
Bu, krankdakı güc sayğacından istifadə edərək ölçə biləcəyimiz bir şeydir. Dinamik sürtünmə xətti olaraq qüvvəyə bağlı olduğundan və bu xüsusi velosiped bu qüvvəni yaymaq üçün yaylardan istifadə etdiyi üçün vidanın hərəkətinə də xətti olur.
Güc, sürətdən qat -qat çoxdur (vektorların eyni istiqaməti nəzərə alınmaqla)
P = F*V
və pedalın xətti sürəti bucaq sürətinə bağlıdır:
V = ω*r
Beləliklə, pedalları müəyyən bir müqavimət səviyyəsinə çevirmək üçün lazım olan gücü hesablaya bilərik. Hər şey xətti əlaqəli olduğu üçün nisbətlərdən istifadə edə bilərik.
Bu, proqramın kalibrləmə zamanı hesablanması və bizə mürəkkəb bir kompozit əldə etmək üçün dairəvi bir yol istifadə etməsi lazım olan şeydir, lakin müqavimət dərəcəsi ilə əlaqəli xətti bir funksiyadır. Son tənliyi hesabladığım hər şeyi kağız üzərində yazdım və bütün sabitlər üç əmsal oldu.
Texniki olaraq, arqument olaraq sinif və dişli nisbətini götürən bir təyyarəni (məncə) təmsil edən bir 3D funksiyasıdır və bu üç əmsal bir təyyarəni təyin etmək üçün lazım olanlar ilə əlaqədardır, lakin dişlilər ayrı ədədlər olduğundan daha asan idi. proyeksiyalarla məşğul olmaq əvəzinə onu bir parametrə çevirmək. 1-ci və 3-cü əmsallar tək bir xətt ilə müəyyən edilə bilər və (-1)* 2-ci əmsal nöqtənin X koordinatıdır ki, xətti dişli dəyişdirərkən "fırlanır".
Bu görselleştirmədə arqumentlər şaquli xətt və dəyərlər üfüqi bir xətt ilə təmsil olunur və bunun əsəbi ola biləcəyini bilirəm, amma mənim üçün daha asan idi və GUI -yə daha yaxşı uyğun gəlirdi. İqtisadçıların qrafiklərini bu şəkildə çəkmələrinin səbəbi yəqin ki, budur.
Addım 5: Bitirin
İndi yeni məşqçinizlə gəzmək üçün bəzi tətbiqlərə ehtiyacınız var (bu sizi 900 dollara qənaət etdi:)). Burada onlardan bəziləri ilə bağlı fikirlərim var.
- RGT Velosiped sürmə - mənim fikrimcə ən yaxşısı - tamamilə pulsuz bir seçim var, amma bir az izi var. Əlaqə hissəsini ən yaxşı şəkildə həll edir, çünki telefonunuz bluetooth vasitəsi ilə bağlanır və kompüter yolu izləyir. AR velosipedçisi ilə real video istifadə edir
- Rouvy - bir çox musiqi, yalnız pullu abunəlik, nədənsə PC tətbiqi bununla işləmir, telefonunuzdan istifadə etməlisiniz. Laptopunuz bluetooth və WiFi üçün eyni kartı istifadə edərkən problemlər yarana bilər, tez -tez geridə qalır və yükləmək istəmir
- Zwift - cizgi, yalnız pullu, məşqçi ilə olduqca yaxşı işləyir, lakin istifadəçi interfeysi olduqca primitivdir - başlatma menyu göstərmək üçün Internet Explorer -dən istifadə edir.
Tikintidən zövq almısınızsa (və ya etməmisinizsə), zəhmət olmasa şərhlərdə mənə bildirin və hər hansı bir sualınız varsa buradan soruşa və ya github -a problem göndərə bilərsiniz. Hər şeyi olduqca məmnuniyyətlə izah edəcəyəm, çünki olduqca mürəkkəbdir.
Tövsiyə:
Qapalı Döngə Geribildirimi Almaq üçün Servo Necə Modlaşdırılır: 7 Addım
Qapalı Döngə Əlaqəsi Almaq üçün Servo Necə Modlaşdırılır: ► Bir mikrokontrolörlə (Arduino kimi) bir servo idarə edərkən, ona yalnız hədəf yeri (PPM siqnalında) əmrləri verə bilərsiniz. Bu sifarişlə servo bu hədəfə keçəcək. yer. Ancaq ani deyil! Necə olduğunu dəqiq bilmirsən
Ikea Socker əsasında avtomatik qapalı istixana: 5 addım
Ikea Socker əsasında avtomatik qapalı istixana: Salam, bu mənim ilk təlimatımdır. Bu cəmiyyətlə çox şey öyrəndim və düşünürəm ki, təvazökar fikirlərimi geri qaytarmağın vaxtıdır. İngilis dilim üçün üzr istəyirəm, kasıbdır, amma əlimdən gələni edəcəyəm. Fikir toxum yetişdirməyimə imkan verən bir masa üstü istixana etmək və
Köpək Təlimçisi: 5 addım
Dog Dog Trainer: AKC görə, (https://www.akc.org/expert-advice/nutrition/how-many-times-a-day-should-a-dog-eat/) üçün yemək hissəsinin ölçüsü yemlər itlər üçün vacibdir və qutunun ölçüsü də itin gündə yeyə biləcəyi yem sayını məhdudlaşdırır: "Veteriner
Görünməz it təlimçisi: 9 addım
Görünməz Köpək Təlimçisi: Qeyd! Reaktiv Bloklar artıq mövcud deyil, buna görə də bu Təlimatı tamamlaya bilməzsiniz. Bir təzyiq sensoru, led və dinamiklə Pi -ni itinizi divandan düşməyi öyrədən görünməz bir it məşqçisinə çevirə bilərsiniz. İt oturanda
Sadə bir qapalı rəsədxana: 9 addım (şəkillərlə)
Sadə Qapalı Rəsədxana: Bu layihə, bəzi mövcud və asan əldə edilən sensorlar ilə sadə bir rəsədxana necə edəcəyinizi göstərəcək. Həqiqətən də bunu tələbələrimdən biri üçün tikmişəm. Şagird günəş işığının otaq temperaturu və rütubətə necə təsir etdiyini öyrənmək istəyir