Mục lục:

Huấn luyện viên thông minh cho xe đạp trong nhà tự làm: 5 bước
Huấn luyện viên thông minh cho xe đạp trong nhà tự làm: 5 bước

Video: Huấn luyện viên thông minh cho xe đạp trong nhà tự làm: 5 bước

Video: Huấn luyện viên thông minh cho xe đạp trong nhà tự làm: 5 bước
Video: Sẽ ra sao nếu xe đạp của bạn có thiết kế từ năm 1870 #shorts #kienthuc 2024, Tháng bảy
Anonim
Huấn luyện viên thông minh cho xe đạp trong nhà DIY
Huấn luyện viên thông minh cho xe đạp trong nhà DIY
Huấn luyện viên thông minh cho xe đạp trong nhà DIY
Huấn luyện viên thông minh cho xe đạp trong nhà DIY
Huấn luyện viên thông minh cho xe đạp trong nhà DIY
Huấn luyện viên thông minh cho xe đạp trong nhà DIY

Giới thiệu

Dự án này bắt đầu như một sửa đổi đơn giản cho một chiếc xe đạp trong nhà Schwinn IC Elite sử dụng một vít đơn giản và miếng nỉ để cài đặt điện trở. Vấn đề tôi muốn giải quyết là độ cao của trục vít quá lớn, vì vậy phạm vi từ việc không thể đạp đến khi bánh xe quay hoàn toàn tự do chỉ là một vài độ trên núm kháng lực. Lúc đầu tôi thay đổi vít thành M6, nhưng sau đó tôi sẽ phải làm một núm, vậy tại sao không chỉ sử dụng một mottor bước NEMA 17 còn lại để thay đổi điện trở? Nếu đã có sẵn một số thiết bị điện tử, tại sao không gắn thêm đồng hồ đo công suất tay quay và kết nối bluetooth với máy tính để làm một chiếc xe tập thông minh?

Điều này tỏ ra khó khăn hơn mong đợi, vì không có ví dụ nào về cách mô phỏng đồng hồ đo điện với arduino và bluetooth. Cuối cùng, tôi đã dành khoảng 20h để lập trình và giải thích các thông số kỹ thuật của BLE GATT. Tôi hy vọng rằng bằng cách cung cấp một ví dụ, tôi có thể giúp ai đó không lãng phí quá nhiều thời gian vào việc cố gắng hiểu chính xác "Trường loại quảng cáo dữ liệu dịch vụ" có nghĩa là gì…

Phần mềm

Toàn bộ dự án trên GitHub:

github.com/kswiorek/ble-ftms

Tôi thực sự khuyên bạn nên sử dụng Visual Studio với plugin VisualGDB nếu bạn định làm điều gì đó nghiêm túc hơn là chỉ sao chép-dán mã của tôi.

Nếu bạn có thắc mắc về chương trình, xin vui lòng hỏi, tôi biết rằng những nhận xét tối giản của tôi có thể không giúp được nhiều.

Tín dụng

Cảm ơn stoppi71 đã hướng dẫn cách làm đồng hồ đo điện. Tôi đã làm tay quay theo thiết kế của anh ấy.

Quân nhu:

Vật liệu cho dự án này phụ thuộc nhiều vào việc bạn đang sửa đổi chiếc xe đạp nào, nhưng có một số bộ phận phổ biến.

Tay quây:

  1. Mô-đun ESP32
  2. HX711 Cảm biến trọng lượng ADC
  3. Đo sức căng
  4. MPU - con quay hồi chuyển
  5. Pin Li-Po nhỏ (khoảng 750mAh)
  6. Tay áo co nhiệt
  7. Trình điều khiển bước A4988
  8. Bộ điều chỉnh 5V
  9. Giắc cắm thùng arduino
  10. Nguồn điện 12V arduino

Bảng điều khiển:

  1. Bước NEMA 17 (cần khá mạnh,> 0,4Nm)
  2. Thanh M6
  3. 12864 lcd
  4. WeMos LOLIN32
  5. Công tắc liên lạc

Trang thiết bị

Để làm được điều này, bạn có thể chỉ sử dụng máy in 3D, tuy nhiên bạn có thể tiết kiệm rất nhiều thời gian bằng cách cắt laser vỏ máy và bạn cũng có thể tạo ra PCB. Các tệp DXF và gerber có trên GitHub, vì vậy bạn có thể đặt hàng cục bộ. Bộ ghép nối từ thanh ren đến động cơ được quay trên máy tiện và đây có thể là vấn đề duy nhất, vì bộ phận này cần khá mạnh để kéo các tấm đệm, nhưng không có nhiều không gian trong chiếc xe đạp cụ thể này.

Kể từ khi chế tạo chiếc xe đạp đầu tiên, tôi đã mua một chiếc máy phay cho phép tôi tạo các khe cắm cho các cảm biến trong tay quay. Nó làm cho việc dán chúng dễ dàng hơn một chút và cũng bảo vệ chúng nếu có thứ gì đó va vào tay quay. (Tôi đã để những cảm biến này rơi vài lần nên tôi muốn được an toàn.)

Bước 1: Crank:

Crank
Crank
Crank
Crank
Crank
Crank

Tốt nhất bạn chỉ cần làm theo hướng dẫn này:

Về cơ bản, bạn cần phải dán các cảm biến vào tay quay ở bốn vị trí và kết nối chúng với các mặt của bảng.

Các kết nối thích hợp đã có sẵn vì vậy bạn chỉ cần hàn các cặp dây trực tiếp vào tám miếng đệm này trên bảng.

Để kết nối với các cảm biến, hãy sử dụng dây mỏng nhất có thể - các miếng đệm rất dễ nâng. Trước tiên, bạn cần phải dán các cảm biến và để lại một lượng vừa đủ bên ngoài để hàn, sau đó phủ epoxy lên phần còn lại. Nếu bạn cố gắng hàn trước khi dán, chúng sẽ bị cong và gãy.

Để lắp ráp PCB:

  1. Chèn ghim vàng từ phía dưới (mặt có dấu vết) vào tất cả các lỗ trừ những lỗ thẳng đứng gần đáy.
  2. Đặt ba bảng (ESP32 ở trên cùng, sau đó là MPU, HX711 ở dưới cùng) để các ghim vàng dính qua cả hai lỗ.
  3. Hàn các tiêu đề vào bảng trên cùng
  4. Cắt bỏ những chiếc ghim vàng ở phía dưới. (Hãy thử cắt chúng trước khi lắp ráp, để bạn biết rằng "những chiếc ghim vàng" của bạn không phải là thép bên trong - nó khiến chúng gần như không thể cắt được và bạn cần phải dũa hoặc mài chúng)
  5. hàn các ghim vàng còn lại vào đáy bảng.
  6. Tải lên phần sụn cho tay quay

Bước cuối cùng là đóng gói toàn bộ quây bằng ống co nhiệt.

Phương pháp làm bảng này không lý tưởng, vì bảng chiếm nhiều không gian để bạn có thể lắp những thứ khác. Tốt nhất là hàn trực tiếp tất cả các thành phần vào bo mạch, nhưng tôi thiếu kỹ năng để tự hàn những SMD nhỏ này. Tôi cần phải đặt hàng lắp ráp nó, và tôi có thể sẽ mắc một số sai lầm và cuối cùng phải đặt hàng chúng ba lần và đợi một năm trước khi chúng đến.

Nếu ai đó có thể thiết kế bo mạch, sẽ thật tuyệt nếu nó có một số vòng bảo vệ pin và một cảm biến sẽ bật ESP nếu tay quay bắt đầu di chuyển.

QUAN TRỌNG

Theo mặc định, cảm biến HX711 được đặt thành 10Hz - rất chậm đối với phép đo công suất. Bạn cần nhấc chân 15 khỏi bo mạch và kết nối nó với chân 16. Điều này thúc đẩy chân cắm CAO và bật chế độ 80Hz. Nhân tiện, 80Hz này thiết lập tốc độ của toàn bộ vòng lặp arduino.

Sử dụng

ESP32 được lập trình để chuyển sang chế độ ngủ sau 30 giây mà không cần kết nối thiết bị bluetooth. Để bật lại, bạn cần nhấn nút đặt lại. Các cảm biến cũng được cấp nguồn từ chân kỹ thuật số, chuyển sang LOW ở chế độ nghỉ. Nếu bạn muốn kiểm tra các cảm biến bằng mã ví dụ từ các thư viện, bạn cần lái pin lên CAO và đợi một chút trước khi cảm biến bật.

Sau khi lắp ráp, các cảm biến cần được hiệu chuẩn bằng cách đọc giá trị mà không có lực và sau đó với trọng lượng được đặt vào (tôi đã sử dụng một quả tạ ấm 12kg hoặc 16kg treo trên bàn đạp). Các giá trị này cần được đặt trong mã powerCrank.

Tốt nhất là bạn nên xé tay quay trước mỗi lần đi xe - nó không thể tự xé khi ai đó đang đạp, nhưng an toàn hơn là xin lỗi và chỉ có thể xé tay quay một lần cho mỗi lần bật. Nếu bạn nhận thấy một số mức công suất lạ, bạn cần lặp lại quá trình này:

  1. Đặt tay quay thẳng xuống cho đến khi đèn bắt đầu nhấp nháy.
  2. Sau một vài giây, đèn sẽ sáng - sau đó đừng chạm vào đèn
  3. Khi đèn tắt, nó đặt lực hiện tại được phát hiện là 0 mới.

Nếu bạn chỉ muốn sử dụng tay quay mà không cần bàn điều khiển, thì mã ở đây trên github. Mọi thứ khác hoạt động giống nhau.

Bước 2: Bảng điều khiển

Bàn điều khiển
Bàn điều khiển
Bàn điều khiển
Bàn điều khiển
Bàn điều khiển
Bàn điều khiển

Vỏ được cắt từ acrylic 3mm, các nút được in 3D và có miếng đệm cho màn hình LCD, được cắt từ acrylic 5mm. Nó được dán bằng keo nóng (nó dính khá tốt với acrylic) và có một "giá đỡ" in 3D để giữ PCB với màn hình LCD. Các chân của màn hình LCD được hàn từ phía dưới để nó không gây nhiễu ESP.

ESP được hàn ngược, vì vậy cổng USB phù hợp với hộp

Các nút riêng biệt PCB được dán bằng keo nóng, vì vậy các nút được bắt vào các lỗ của chúng, nhưng chúng vẫn nhấn vào công tắc. Các nút được kết nối với bảng bằng đầu nối JST PH 2.0 và thứ tự chân dễ dàng suy ra từ sơ đồ

Điều rất quan trọng là phải gắn trình điều khiển bước theo đúng hướng (chiết áp gần ESP)

Toàn bộ phần của thẻ SD bị vô hiệu hóa, vì không ai sử dụng nó trong phiên bản đầu tiên. Mã cần được cập nhật với một số cài đặt giao diện người dùng như trọng lượng người lái và cài đặt độ khó.

Bảng điều khiển được gắn bằng cách sử dụng "cánh tay" lasercut và zipties. Các răng nhỏ ăn sâu vào tay lái và giữ bảng điều khiển.

Bước 3: Động cơ

Chiếc xe máy
Chiếc xe máy
Chiếc xe máy
Chiếc xe máy
Chiếc xe máy
Chiếc xe máy

Động cơ giữ chính nó ở vị trí của núm điều chỉnh bằng một giá đỡ được in 3D. Với trục của nó được gắn một bộ ghép - một mặt có lỗ 5mm với các vít định vị để giữ trục, mặt kia có ren M6 với các vít định vị để khóa nó. Nếu bạn muốn, bạn có thể chế tạo nó trong một máy khoan từ một số cổ phiếu tròn 10mm. Nó không cần phải cực kỳ chính xác vì động cơ không được gắn chặt.

Một đoạn thanh ren M6 được vặn trong bộ ghép và nó kéo đai ốc M6 bằng đồng. Tôi đã gia công nó, nhưng nó có thể dễ dàng làm từ một miếng đồng thau với một cái dũa. Bạn thậm chí có thể hàn một số bit vào một đai ốc bình thường, vì vậy nó sẽ không xoay. Đai ốc in 3D cũng có thể là một giải pháp.

Chủ đề cần phải mịn hơn vít cổ. Độ cao của nó là khoảng 1,3mm, và đối với M6 là 0,8mm. Động cơ không có đủ mô-men xoắn để quay vít cổ.

Đai ốc cần được bôi trơn tốt, vì động cơ hầu như không thể vặn vít ở các cài đặt cao hơn

Bước 4: Cấu hình

Cấu hình
Cấu hình
Cấu hình
Cấu hình

Để tải mã lên ESP32 từ Arduino IDE, bạn cần làm theo hướng dẫn này:

Bảng là "WeMos LOLIN32", nhưng "mô-đun Dev" cũng hoạt động

Tôi khuyên bạn nên sử dụng Visual Studio, nhưng nó thường có thể bị hỏng.

Trước khi sử dụng lần đầu tiên

Tay quay cần được thiết lập theo bước "Tay quay"

Sử dụng ứng dụng "nRF Connect", bạn cần kiểm tra địa chỉ MAC của tay quay ESP32 và đặt nó trong tệp BLE.h.

Trong dòng 19 của trong nhàBike.ino bạn cần đặt, số vòng quay của vít là cần thiết để đặt điện trở từ hoàn toàn lỏng đến tối đa. ("Tối đa" là chủ quan về mục đích, bạn điều chỉnh độ khó với cài đặt này.)

Máy huấn luyện thông minh có "bánh răng ảo" để thiết lập chúng một cách chính xác, bạn cần hiệu chỉnh nó trên dòng 28 và 29. Bạn cần đạp với nhịp không đổi trên một cài đặt điện trở nhất định, sau đó đọc công suất và thiết lập nó trong tệp. Lặp lại điều này một lần nữa với một cài đặt khác.

Nút ngoài cùng bên trái chuyển từ chế độ ERG (lực cản tuyệt đối) sang chế độ mô phỏng (bánh răng ảo). Chế độ mô phỏng không có kết nối máy tính sẽ không làm gì cả vì không có dữ liệu mô phỏng.

Dòng 36. đặt các bánh răng ảo - số lượng và tỷ lệ. Bạn tính chúng bằng cách chia số răng ở bánh trước cho số răng ở bánh sau.

Ở dòng 12. bạn đặt trọng lượng của người lái và xe đạp (Tính bằng [niutơn], khối lượng nhân với gia tốc trọng trường!)

Toàn bộ phần vật lý của điều này có lẽ quá phức tạp và thậm chí tôi không nhớ chính xác nó làm gì, nhưng tôi tính toán mô-men xoắn cần thiết để kéo người đi xe đạp lên dốc hoặc thứ gì đó tương tự (đó là lý do tại sao hiệu chỉnh).

Các thông số này mang tính chủ quan cao, bạn cần thiết lập chúng sau một vài lần lái để chúng hoạt động chính xác.

Cổng COM gỡ lỗi gửi dữ liệu nhị phân trực tiếp mà bluetooth nhận được trong dấu ngoặc kép ('') và dữ liệu mô phỏng.

Trình cấu hình

Bởi vì cấu hình của vật lý được cho là thực tế hóa ra là một rắc rối lớn để làm cho nó cảm thấy thực tế, tôi đã tạo một cấu hình GUI cho phép người dùng xác định đồ họa chức năng chuyển đổi từ cấp độ đồi sang cấp độ kháng tuyệt đối. Nó vẫn chưa hoàn thành hoàn toàn và tôi không có cơ hội để chạy thử nó, nhưng trong tháng tới tôi sẽ chuyển đổi một chiếc xe đạp khác, vì vậy tôi sẽ đánh bóng nó sau đó.

Trên tab "Bánh răng", bạn có thể đặt tỷ số của từng bánh răng bằng cách di chuyển các thanh trượt. Sau đó, bạn cần sao chép bit mã để thay thế các bánh răng được xác định trong mã.

Trên tab "Điểm", bạn được cung cấp một đồ thị của một hàm tuyến tính (vâng, hóa ra chủ đề bị ghét nhất trong toán học thực sự hữu ích) lấy điểm (trục tung) và xuất ra các bước kháng tuyệt đối (trục hoành). Tôi sẽ đi sâu vào toán học một chút sau cho những người quan tâm.

Người dùng có thể xác định chức năng này bằng cách sử dụng hai điểm đặt trên nó. Bên phải có chỗ để thay số hiện tại. Như bạn có thể tưởng tượng, bánh răng đã chọn sẽ thay đổi đường đi, cách cấp bản đồ đến lực cản - trên các bánh răng thấp hơn, việc đạp lên dốc sẽ dễ dàng hơn. Di chuyển thanh trượt sẽ thay đổi hệ số thứ 2, hệ số này ảnh hưởng đến cách bánh răng đã chọn thay đổi chức năng. Dễ nhất là chơi với nó một lúc để xem nó hoạt động như thế nào. Bạn cũng có thể cần thử một vài cài đặt khác nhau để tìm ra cài đặt nào phù hợp nhất với mình.

Nó được viết bằng Python 3 và sẽ hoạt động với các thư viện mặc định. Để sử dụng nó, bạn cần bỏ ghi chú các dòng ngay sau khi "bỏ ghi chú những dòng này để sử dụng bộ cấu hình". Như tôi đã nói, nó chưa được kiểm tra, vì vậy có thể có một số lỗi, nhưng nếu có bất cứ điều gì xảy ra, vui lòng viết bình luận hoặc mở một vấn đề, để tôi có thể sửa nó.

Toán học (và vật lý)

Cách duy nhất mà bộ điều khiển có thể tạo cảm giác như bạn đang lên dốc là vặn vít cản. Chúng ta cần chuyển đổi lớp thành số lần quay. Để dễ dàng thiết lập, toàn bộ phạm vi từ hoàn toàn lỏng lẻo đến không thể quay tay quay được chia thành 40 bước, được sử dụng tương tự trong chế độ ERG, nhưng lần này nó sử dụng số thực thay vì số nguyên. Điều này được thực hiện với một chức năng bản đồ đơn giản - bạn có thể tra cứu nó trong mã. Bây giờ chúng ta đã cao hơn một bước - thay vì xử lý các vòng quay của trục vít, chúng ta đang xử lý các bước tưởng tượng.

Bây giờ nó thực sự hoạt động như thế nào khi bạn lên dốc trên một chiếc xe đạp (giả sử tốc độ không đổi)? Rõ ràng là cần phải có một số lực đẩy bạn lên, nếu không bạn sẽ lăn xuống. Lực này, như định luật đầu tiên của chuyển động cho chúng ta biết, phải có độ lớn bằng nhau nhưng ngược hướng với lực kéo bạn xuống, để bạn chuyển động thẳng đều. Nó sinh ra từ ma sát giữa bánh xe và mặt đất và nếu bạn vẽ biểu đồ của các lực này, nó cần phải bằng trọng lượng của xe đạp và người lái nhân với khối lượng:

F = Fg * G

Bây giờ điều gì làm cho bánh xe tác dụng lực này? Khi chúng ta đang xử lý các bánh răng và bánh xe, sẽ dễ dàng hơn khi nghĩ về mô-men xoắn, đơn giản là lực nhân với bán kính:

t = F * R

Khi có các bánh răng tham gia, bạn truyền một mô-men xoắn lên tay quay, mô-men xoắn này kéo xích và quay bánh xe. Mô-men xoắn cần thiết để quay bánh xe được nhân với tỷ số truyền:

tp = tw * gr

và trở lại từ công thức mô-men xoắn, chúng tôi nhận được lực cần thiết để quay bàn đạp

Fp = tp / r

Đây là thứ mà chúng ta có thể đo bằng đồng hồ đo điện trong tay quay. Vì ma sát động có quan hệ tuyến tính với lực và vì chiếc xe đạp cụ thể này sử dụng lò xo để truyền lực này nên nó tuyến tính với chuyển động của trục vít.

Công suất là lực nhân với vận tốc (giả sử các vectơ cùng hướng)

P = F * V

và vận tốc thẳng của bàn đạp liên quan đến vận tốc góc:

V = ω * r

và do đó chúng ta có thể tính toán lực cần thiết để quay bàn đạp trên một mức lực cản đã định. Vì mọi thứ đều có liên quan tuyến tính, chúng ta có thể sử dụng tỷ lệ để làm như vậy.

Về cơ bản, đây là những gì phần mềm cần để tính toán trong quá trình hiệu chuẩn và sử dụng một cách vòng vo để cho chúng ta một tổ hợp phức tạp, nhưng là một hàm tuyến tính liên quan đến cấp độ kháng. Tôi đã viết mọi thứ trên giấy để tính toán phương trình cuối cùng và tất cả các hằng số trở thành ba hệ số.

Đây là một hàm 3D biểu diễn một mặt phẳng (tôi nghĩ) về mặt kỹ thuật, lấy cấp và tỷ số truyền làm đối số và ba hệ số này có liên quan đến những hệ số cần thiết để xác định một mặt phẳng, nhưng vì các bánh răng là các số rời rạc, nó dễ dàng hơn để biến nó thành một tham số thay vì xử lý các phép chiếu và tương tự. Hệ số thứ nhất và thứ 3 có thể được xác định bằng một đường thẳng và (-1) * hệ số thứ 2 là tọa độ X của điểm, nơi đường thẳng "quay" xung quanh khi thay đổi bánh răng.

Trong hình dung này, các đối số được biểu thị bằng đường thẳng đứng và các giá trị bằng đường ngang, và tôi biết rằng điều này có thể gây khó chịu, nhưng đối với tôi nó trực quan hơn và nó phù hợp với GUI hơn. Đó có lẽ là lý do tại sao các nhà kinh tế học vẽ đồ thị của họ theo cách này.

Bước 5: Kết thúc

Bây giờ bạn cần một số ứng dụng để sử dụng trên huấn luyện viên mới của mình (giúp bạn tiết kiệm khoảng 900 đô la:)). Dưới đây là ý kiến của tôi về một số trong số họ.

  • RGT Cycling - theo ý kiến của tôi là tốt nhất - nó có một tùy chọn hoàn toàn miễn phí, nhưng có một chút bài hát. Thỏa thuận tốt nhất với phần kết nối, vì điện thoại của bạn kết nối qua bluetooth và PC hiển thị bản nhạc. Sử dụng video thực tế với người đi xe đạp AR
  • Rouvy - rất nhiều bản nhạc, chỉ đăng ký trả phí, vì một số lý do ứng dụng PC không hoạt động với điều này, bạn cần sử dụng điện thoại của mình. Có thể có vấn đề khi máy tính xách tay của bạn sử dụng cùng một thẻ cho bluetooth và WiFi, nó thường bị trễ và không muốn tải
  • Zwift - một trò chơi hoạt hình, chỉ trả phí, hoạt động khá tốt với trình đào tạo, nhưng giao diện người dùng khá thô sơ - trình khởi chạy sử dụng Internet Explorer để hiển thị menu.

Nếu bạn thích bản dựng (hoặc không), vui lòng cho tôi biết trong phần nhận xét và nếu bạn có bất kỳ câu hỏi nào, bạn có thể hỏi tại đây hoặc gửi vấn đề lên github. Tôi sẵn lòng giải thích mọi thứ vì nó khá phức tạp.

Đề xuất: