Съдържание:

Направи си сам интелигентен треньор за вътрешни велосипеди: 5 стъпки
Направи си сам интелигентен треньор за вътрешни велосипеди: 5 стъпки

Видео: Направи си сам интелигентен треньор за вътрешни велосипеди: 5 стъпки

Видео: Направи си сам интелигентен треньор за вътрешни велосипеди: 5 стъпки
Видео: Тя е на 9 Години, но Нейният Стомах е Като Бременна 2024, Септември
Anonim
Направи си сам интелигентен треньор за вътрешни велосипеди
Направи си сам интелигентен треньор за вътрешни велосипеди
Направи си сам интелигентен треньор за вътрешни велосипеди
Направи си сам интелигентен треньор за вътрешни велосипеди
Направи си сам интелигентен треньор за вътрешни велосипеди
Направи си сам интелигентен треньор за вътрешни велосипеди

Въведение

Този проект стартира като проста модификация на вътрешен велосипед Schwinn IC Elite, който използва обикновени винтове и филцови подложки за настройките на съпротивлението. Проблемът, който исках да реша, беше, че стъпката на винта беше твърде голяма, така че обхватът от това, че не можеш да въртиш педала, до въртенето на колелото напълно свободно, беше само няколко градуса върху копчето за съпротивление. Първоначално смених винта на M6, но след това ще трябва да направя копче, така че защо просто не използвам стъпков мотор отляво над NEMA 17, за да променя съпротивлението? Ако вече има някаква електроника, защо да не добавите измервател на мощността на коляновия вал и Bluetooth връзка към компютър, за да направите интелигентен треньор?

Това се оказа по -трудно от очакваното, защото нямаше примери как да емулираме измервател на мощност с arduino и bluetooth. В крайна сметка отделих около 20 часа за програмиране и тълкуване на спецификациите на BLE GATT. Надявам се, че като дам пример, мога да помогна на някого да не губи толкова много време в опити да разбере какво точно означава „поле за данни за данни за услуги“…

Софтуер

Целият проект е на GitHub:

github.com/kswiorek/ble-ftms

Горещо препоръчвам да използвате Visual Studio с плъгин VisualGDB, ако планирате да правите нещо по-сериозно, отколкото просто да копирате кода ми.

Ако имате въпроси относно програмата, моля, попитайте, знам, че моите минималистични коментари може да не помогнат много.

Кредити

Благодаря на stoppi71 за неговото ръководство за това как да направите електромер. Направих манивелата според неговия дизайн.

Консумативи:

Материалите за този проект силно зависят от това кой мотор модифицирате, но има някои универсални части.

Манивела:

  1. Модул ESP32
  2. HX711 Датчик за тегло ADC
  3. Тенометри
  4. MPU - жироскоп
  5. Малка Li-Po батерия (около 750mAh)
  6. Термосвиваема втулка
  7. A4988 Стъпков шофьор
  8. 5V регулатор
  9. Жак за барел arduino
  10. 12V захранване arduino

Конзола:

  1. NEMA 17 степер (трябва да бъде доста мощен,> 0.4Nm)
  2. Прът M6
  3. 12864 lcd
  4. WeMos LOLIN32
  5. Тактови превключватели

Оборудване

За да направите това, вероятно бихте могли да се измъкнете, като използвате само 3D принтер, но можете да спестите много време, като режете корпуса с лазер, а също така можете да направите печатни платки. Файловете DXF и gerber са на GitHub, така че можете да ги поръчате локално. Съединителят от резбования прът към двигателя беше включен на струг и това може да е единственият проблем, тъй като детайлът трябва да е доста здрав, за да дърпа подложките, но няма много място в този конкретен мотор.

Откакто направих първия мотор, придобих фреза, която ми позволява да правя слотове за сензорите в манивелата. Това прави залепването им малко по -лесно и също така ги предпазва, ако нещо удари манивелата. (Няколко пъти са ми падали тези сензори, затова исках да съм в безопасност.)

Стъпка 1: Манивелата:

Манивелата
Манивелата
Манивелата
Манивелата
Манивелата
Манивелата

Най-добре е просто да следвате този урок:

По принцип трябва да залепите сензорите към манивелата на четири места и да ги свържете към страните на дъската.

Правилните връзки вече са налице, така че просто трябва да запоите двойките проводници директно към тези осем подложки на платката.

За да се свържете със сензорите, използвайте възможно най -тънкия проводник - подложките се повдигат много лесно. Първо трябва да залепите сензорите и да оставите достатъчно от тях навън за запояване, след което да покриете останалата част с епоксидна смола. Ако се опитате да запоите преди залепване, те се къдрят и се счупват.

За да сглобите печатната платка:

  1. Поставете щипки отдолу (страната със следи) във всички отвори, с изключение на вертикалните близо до дъното.
  2. Поставете трите платки (ESP32 отгоре, след това MPU, HX711 отдолу), така че щифтовете да се придържат през двата отвора.
  3. Запоявайте заглавките към дъските отгоре
  4. Отрежете златните щипки от дъното. (Опитайте да ги изрежете първо преди сглобяването, за да знаете, че вашите "златни щифтове" не са стоманени вътре - това ги прави почти невъзможно да се режат и трябва да ги напилите или смилате)
  5. запоявайте останалите златни щифтове в долната част на дъската.
  6. Качете фърмуера за манивелата

Последната стъпка е да опаковате цялата манивела с термосвиваема втулка.

Този метод за изработка на дъската не е идеален, тъй като дъските заемат много място, в което можете да поставите други неща. Най -добре би било да запоя всички компоненти директно към платката, но ми липсва умението да запоявам тези малки SMD. Трябваше да го поръчам сглобен и вероятно щях да направя някои грешки и в крайна сметка да ги поръчам три пъти и да изчакам една година преди да пристигнат.

Ако някой би могъл да проектира платката, би било чудесно, ако имаше някаква схема за защита на батерията и сензор, който да включи ESP, ако манивелата започне да се движи.

ВАЖНО

Сензорът HX711 по подразбиране е настроен на 10Hz - това е много бавно за измерване на мощността. Трябва да вдигнете щифт 15 от платката и да го свържете към щифт 16. Това задвижва щифта ВИСОКО и позволява режим 80Hz. Между другото, този 80Hz определя скоростта на целия контур на arduino.

Употреба

ESP32 е програмиран да заспи след 30s без свързано Bluetooth устройство. За да го включите отново, трябва да натиснете бутона за нулиране. Сензорите също се захранват от цифров щифт, който се превръща в НИСКО в спящ режим. Ако искате да тествате сензорите с примерния код от библиотеки, трябва да задвижите щифта HIGH и да изчакате малко преди сензорите да се включат.

След сглобяването сензорите трябва да бъдат калибрирани чрез отчитане на стойността без сила и след това с приложено тегло (използвах гира 12 кг или 16 кг, окачена на педала). Тези стойности трябва да бъдат въведени в кода на powerCrank.

Най -добре е да тарирате манивелата преди всяко каране - тя не би трябвало да може да се тарира, когато някой върти педали, но по -добре безопасно, отколкото съжаление и е възможно да се тарира само веднъж на включване. Ако забележите странни нива на мощност, трябва да повторите този процес:

  1. Поставете манивелата направо надолу, докато светлината започне да мига.
  2. След няколко секунди светлината ще остане включена - тогава не я докосвайте
  3. Когато светлината се изключи, тя определя текущата сила, открита като нова 0.

Ако искате просто да използвате манивелата, без конзолата, кодът е тук на github. Всичко останало работи по същия начин.

Стъпка 2: Конзолата

Конзолата
Конзолата
Конзолата
Конзолата
Конзолата
Конзолата

Калъфът е изрязан от 3 мм акрил, бутоните са 3D отпечатани и има дистанционни елементи за LCD, изрязани от 5 мм акрил. Той е залепен с горещо лепило (прилепва доста добре към акрила) и има 3D отпечатана "скоба", която да държи платката към LCD. Щифтовете за LCD дисплея са запоени от долната страна, така че да не пречи на ESP.

ESP е запоен с главата надолу, така че USB портът се побира в кутията

Отделната платка с бутони е залепена с горещо лепило, така че бутоните се улавят в дупките им, но те все още натискат превключвателите. Бутоните са свързани към платката с JST PH 2.0 конектори и редът на изводите е лесен за извеждане от схемата

Много е важно да монтирате стъпковия драйвер в правилната ориентация (потенциометърът близо до ESP)

Цялата част за SD картата е деактивирана, тъй като никой не я използва в първата версия. Кодът трябва да бъде актуализиран с някои настройки на потребителския интерфейс, като тегло на ездача и настройка на трудност.

Конзолата се монтира с помощта на лазерно изрязани „ръце“и ципове. Малките зъби се забиват в кормилото и държат конзолата.

Стъпка 3: Моторът

Мотора
Мотора
Мотора
Мотора
Мотора
Мотора

Двигателят се държи на мястото на копчето за регулиране с 3D отпечатана скоба. Към неговия вал е монтиран съединител - едната страна има 5 мм отвор с фиксиращи винтове за задържане на вала, а другата има резба М6 с винтове за фиксиране. Ако искате, вероятно можете да го направите в бормашина от някакъв 10 мм кръгъл материал. Не е необходимо да е изключително прецизен, тъй като моторът не е монтиран много плътно.

В съединителя се завинтва парче резба с резба М6 и дърпа месинговата гайка М6. Обработих го, но може да се направи също толкова лесно от парче месинг с пила. Можете дори да заварите някои битове към нормална гайка, така че да не се върти. 3D отпечатана гайка също може да бъде решение.

Резбата трябва да е по -фина от винта. Стъпката му е около 1,3 мм, а за М6 е 0,8 мм. Двигателят няма достатъчен въртящ момент, за да завърти винта.

Гайката трябва да бъде добре смазана, тъй като двигателят едва може да завърти винта при по -високите настройки

Стъпка 4: Конфигурация

Конфигурация
Конфигурация
Конфигурация
Конфигурация

За да качите код в ESP32 от IDE на Arduino, трябва да следвате този урок:

Платката е "WeMos LOLIN32", но "Dev модулът" също работи

Предлагам да използвате Visual Studio, но често може да се счупи.

Преди първата употреба

Манивелата трябва да се настрои според стъпката "Crank"

С помощта на приложението „nRF Connect“трябва да проверите MAC адреса на манивелата ESP32 и да го зададете във файла BLE.h.

В ред 19 на indoorBike.ino трябва да зададете колко завъртания на винта са необходими, за да настроите съпротивлението от напълно хлабаво до максимално. („Максимумът“е субективен нарочно, вие регулирате трудността с тази настройка.)

Интелигентният тренажор има "виртуални предавки", за да ги настрои правилно, трябва да го калибрирате по линии 28 и 29. Трябва да педалирате с постоянен ритъм на дадена настройка на съпротивлението, след това да прочетете мощността и да я зададете във файла. Повторете това отново с друга настройка.

Крайният ляв бутон превключва от режим ERG (абсолютно съпротивление) към режим на симулация (виртуални предавки). Режимът на симулация без компютърна връзка не прави нищо, тъй като няма данни за симулация.

Ред 36. задава виртуалните предавки - броя и съотношенията. Изчислявате ги, като разделите броя на зъбите в предната предавка на броя на зъбите в задната предавка.

В ред 12. поставяте теглото на ездача и мотора (В [нютони], масата удължава гравитационното ускорение!)

Цялата физическа част от това вероятно е твърде сложна и дори не помня какво точно прави, но изчислявам необходимия въртящ момент, за да издърпам велосипедиста нагоре или нещо подобно (затова калибрирането).

Тези параметри са силно субективни, трябва да ги настроите след няколко пътувания, за да работят правилно.

COM портът за отстраняване на грешки изпраща директни двоични данни, получени от bluetooth в кавички ('') и симулационни данни.

Конфигураторът

Тъй като конфигурацията на предполагаемо реалистичната физика се оказа огромна караница, за да се почувства реалистична, създадох GUI конфигуратор, който трябва да позволи на потребителите графично да определят функцията, която се превръща от степента на хълма в абсолютното ниво на съпротивление. Все още не е напълно завършен и нямах възможност да го тествам, но през предстоящия месец ще преобразувам друг мотор, така че тогава ще го полирам.

В раздела "Gears" можете да зададете съотношението на всяка предавка чрез преместване на плъзгачите. След това трябва да копирате бита код, за да замените дефинираните зъбни колела в кода.

В раздела "Оценка" ви е дадена графика на линейна функция (да, оказва се, че най -омразният предмет в математиката е наистина полезен), който взема оценката (вертикална ос) и извежда стъпки на абсолютно съпротивление (хоризонтална ос). Ще отида в математиката малко по -късно за тези, които се интересуват.

Потребителят може да дефинира тази функция, като използва двете точки, лежащи върху нея. Вдясно има място за смяна на текущата предавка. Избраната предавка, както можете да си представите, променя начина, по който степента се съпоставя с съпротивление - на по -ниски предавки е по -лесно да се въртят педалите нагоре. Преместването на плъзгача променя втория коефициент, който влияе върху това как избраната предавка променя функцията. Най -лесно е да си поиграете с него известно време, за да видите как се държи. Може също да се наложи да опитате няколко различни настройки, за да намерите най -доброто за вас.

Той е написан на Python 3 и трябва да работи с библиотеки по подразбиране. За да го използвате, трябва да декомментирате редовете веднага след „разкомментирайте тези редове, за да използвате конфигуратора“. Както казах, не е тестван, така че може да има някои грешки, но ако се появи нещо, моля, напишете коментар или отворете проблем, за да мога да го поправя.

Математиката (и физиката)

Единственият начин, по който контролерът може да направи усещането, че тръгвате нагоре, е чрез завъртане на винта за съпротивление. Трябва да преобразуваме оценката в броя на завъртанията. За да се улесни настройката, целият диапазон от напълно разхлабен до невъзможност за завъртане на манивелата е разделен на 40 стъпки, същите, използвани в режим ERG, но този път той използва реални числа вместо цели числа. Това става с проста функция на картата - можете да я потърсите в кода. Сега сме с една стъпка по -високо - вместо да се занимаваме с оборотите на винта, ние се занимаваме с въображаеми стъпки.

Сега как всъщност работи, когато се качвате с мотор нагоре (приемайки постоянна скорост)? Очевидно трябва да има някаква сила, която да ви притиска нагоре, в противен случай бихте се свлекли надолу. Тази сила, както ни казва първият закон за движение, трябва да бъде равна по величина, но противоположна по посока на силата, която ви дърпа надолу, за да бъдете в равномерно движение. То идва от триенето между колелото и земята и ако начертаете диаграмата на тези сили, тя трябва да бъде равна на теглото на мотора и на ездача, умножен по степента:

F = Fg*G

Какво кара колелото да прилага тази сила? Тъй като имаме работа със зъбни колела и колела, е по -лесно да мислим по отношение на въртящия момент, който е просто силата, умножена по радиуса:

t = F*R

Тъй като има включени предавки, вие придавате въртящ момент на манивелата, който дърпа веригата и завърта колелото. Въртящият момент, необходим за завъртане на колелото, се умножава по предавателното отношение:

tp = tw*gr

и обратно от формулата на въртящия момент получаваме силата, необходима за завъртане на педала

Fp = tp/r

Това е нещо, което можем да измерим с помощта на електромера в манивелата. Тъй като динамичното триене е линейно свързано със силата и тъй като този конкретен мотор използва пружини за придаване на тази сила, той е линеен спрямо движението на винта.

Силата е сила, умножена по скоростта (приемайки същата посока на векторите)

P = F*V

и линейната скорост на педала е свързана с ъгловата скорост:

V = ω*r

и така можем да изчислим силата, необходима за завъртане на педалите на зададено ниво на съпротивление. Тъй като всичко е линейно свързано, можем да използваме пропорции за това.

Това беше по същество това, което софтуерът трябваше да изчисли по време на калибрирането и да използва кръгов път, за да получи сложен композит, но линейна функция, свързваща степента с съпротивлението. Написах всичко на хартия, изчислих крайното уравнение и всички константи станаха три коефициента.

Това е технически 3D функция, представляваща равнина (мисля), която приема степента и предавателното отношение като аргументи и тези три коефициента са свързани с тези, необходими за дефиниране на равнина, но тъй като предавките са дискретни числа, беше по -лесно да го направим параметър, вместо да се занимаваме с проекции и подобни. Първият и третият коефициенти могат да бъдат определени с един ред и (-1)* вторият коефициент е координатата X на точката, където линията се "върти" наоколо при смяна на предавките.

В тази визуализация аргументите са представени от вертикалната линия, а стойностите от хоризонталната и знам, че това може да е досадно, но за мен беше по -интуитивно и пасваше по -добре на графичния интерфейс. Това вероятно е причината икономистите да рисуват графиките си по този начин.

Стъпка 5: Край

Сега имате нужда от някои приложения, с които да се возите на новия си треньор (което ви спести около $ 900:)). Ето моите мнения за някои от тях.

  • RGT Cycling - според мен най -доброто - има напълно безплатна опция, но има малко няколко песни. Най -добре се справя с частта за връзка, защото телефонът ви се свързва чрез bluetooth и компютър показва песента. Използва реалистично видео с AR колоездач
  • Rouvy - много песни, само платен абонамент, по някаква причина компютърното приложение не работи с това, трябва да използвате телефона си. Възможно е да има проблеми, когато вашият лаптоп използва същата карта за bluetooth и WiFi, той често изостава и не иска да се зарежда
  • Zwift - анимирана игра, само платена, работи доста добре с обучителя, но потребителският интерфейс е доста примитивен - стартера използва Internet Explorer за показване на менюто.

Ако ви е харесало изграждането (или не), моля, кажете ми в коментарите и ако имате въпроси, можете да зададете тук или да изпратите проблем на github. С удоволствие ще обясня всичко, тъй като е доста сложно.

Препоръчано: