Πίνακας περιεχομένων:

Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Βήματα
Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Βήματα

Βίντεο: Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Βήματα

Βίντεο: Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 Βήματα
Βίντεο: F7HH0W8K36U3VXJ 2024, Νοέμβριος
Anonim
Image
Image
Προσομοιωτής βαθμού ανοικτού (ποδηλάτου) - OpenGradeSIM
Προσομοιωτής βαθμού ανοικτού (ποδηλάτου) - OpenGradeSIM
Προσομοιωτής βαθμού ανοικτού (ποδηλάτου) - OpenGradeSIM
Προσομοιωτής βαθμού ανοικτού (ποδηλάτου) - OpenGradeSIM

Εισαγωγή

Κάποια γνωστή αμερικανική εταιρεία γυμναστικής (Wahoo) έφερε πρόσφατα μια μεγάλη προπόνηση εσωτερικού χώρου που ανεβάζει και χαμηλώνει το μπροστινό μέρος του ποδηλάτου στο turbo trainer, ανάλογα με την προσομοίωση του λόφου που οδηγεί ο χρήστης (το Kickr Climb).

Φαίνεται καταπληκτικό αλλά δυστυχώς αυτό δεν είναι διαθέσιμο σε όλους μας καθώς θα χρειαστείτε 1) ένα κορυφαίο εκπαιδευτή Wahoo και 2) 500 cash μετρητά για να το κάνετε δικό σας.

Έσπασα μια κλείδα (ποτέ δεν έβαλα ποδηλάτη δρόμου σε ποδήλατο βουνού), οπότε είχα περισσότερα χιλιόμετρα στον προπονητή και περισσότερο χρόνο για να τσιμπήσω και σκέφτηκα ότι αυτό θα μπορούσε να είναι ένα διασκεδαστικό έργο.

Η εμπορική μονάδα προσομοιώνει -5% έως +20%, οπότε ήθελα να πλησιάσω σε αυτό, αλλά στο 10% του προϋπολογισμού!

Αυτό έχει σχεδιαστεί γύρω από το Tacx Neo μου, αλλά κάθε εκπαιδευτής που μεταδίδει τα δεδομένα ισχύος και ταχύτητας μέσω ANT+ ή BLE θα μπορούσε να λειτουργήσει (νομίζω!).

Δεδομένου ότι η βάση του τροχού στο ποδήλατό μου μετράει ακριβώς 1000mm, θα πρέπει να σηκώσω τα πιρούνια κατά 200mm για να προσομοιώσω το 20% (βλ. Εικόνα) έτσι θα έκανε ένας γραμμικός ενεργοποιητής 200mm. Το βάρος της μοτοσυκλέτας + του αναβάτη είναι απίθανο να ξεπεράσει τα 100 κιλά και αφού αυτό κατανέμεται μεταξύ των αξόνων και τα περισσότερα είναι στην πλάτη 750Ν θα σηκώσει 75 κιλά και θα πρέπει να είναι εντάξει. Ταχύτεροι ενεργοποιητές είναι διαθέσιμοι για περισσότερα χρήματα, αλλά αυτός μου κόστισε περίπου 20 £ και διαχειρίζεται 10mm/sec. Οι ενεργοποιητές με ποτενσιόμετρα που μπορούν να χρησιμοποιηθούν ως απλά servos είναι επίσης 2 έως 3 φορές πιο ακριβοί.

Προμήθειες

Τρισδιάστατη εκτύπωση (PLA ή ABSetc) του τμήματος προσαρμογέα διαμέσου άξονα:

100mm απόθεμα σωλήνων αλουμινίου 3/4 ιντσών 10 swg (για πλαίσιο διαμέσου άξονα)

80mm απόθεμα ράβδου από ανοξείδωτο χάλυβα 6mm

Τρισδιάστατη εκτύπωση (PLA ή ABSetc) του παπουτσιού για το τμήμα γραμμικού ενεργοποιητή:

3D εκτύπωση της θήκης για τη γέφυρα H

Τρισδιάστατη εκτύπωση της θήκης για το Arduino (Έκδοση 1 με πληκτρολόγιο) https://www.thingiverse.com/thing:3984911 (Έκδοση 2 όπως φαίνεται (https://www.thingiverse.com/thing:3995976)

Κομμένο με λέιζερ κομμάτι 3mm διαφανές ακρυλικό 32 x 38mm για να μην ιδρώνετε σε όλα τα ηλεκτρονικά (το έκανε αυτό, όχι ιδανικό).

Μερικά μπλοκ αιμορραγίας (προσαρμοσμένα για να αφήνουν τα τακάκια) για να σας εμποδίσουν να σπρώξετε κατά λάθος τα έμβολα της δαγκάνας από τα δισκόφρενα Shimano με ενθουσιασμό

Γραμμικός ενεργοποιητής 750N 200mm διαδρομή π.χ. Al03 Mini Linear Actuators από

Γέφυρα L298N H (όπως:

Arduino Nano IoT 33 www.rapidonline.com παραγγελία 73-4863

Πληκτρολόγιο μεμβράνης 2 πλήκτρων π.χ.

IIC I2C Logic Level Converter Bi-Directional Module 5V to 3.3V For Arduino π.χ.

Τροφοδοτικό 12V 3A DC - αυτά για φωτισμό LED λειτουργούν τέλεια!

NPE CABLE Ant+ to BLE bridge

Τρισδιάστατο εκτυπώσιμο κλιπ για τη γέφυρα CABLE

Μονάδα οθόνης 1.3 OLED LCD με διασύνδεση IIC I2C 128x32 3.3V

Βήμα 1: Μερικά Μαθηματικά

Μερικά Μαθηματικά
Μερικά Μαθηματικά

Πρέπει να υπολογίσουμε την κλίση που προσομοιώνεται. Hopλπιζα ότι ο εκπαιδευτής θα διαφημίσει αυτά τα δεδομένα μαζί με την ταχύτητα, την ισχύ, τον ρυθμό κλπ. Ωστόσο ο εκπαιδευτής απλώς αντιστέκεται στη διατήρηση της ισχύος σύμφωνα με το λογισμικό στο tablet, τον υπολογιστή κ.λπ. που χρησιμοποιείται για τον έλεγχο. Δεν είχα τρόπο να καταγράψω εύκολα τον «προσομοιωμένο βαθμό» από το λογισμικό, οπότε θα έπρεπε να δουλέψω αντίστροφα…

Οι δυνάμεις που δρουν στο ποδήλατο και στον αναβάτη είναι ένας συνδυασμός αντιστασιακών απωλειών και της δύναμης που απαιτείται για την ανάβαση στο λόφο. Ο εκπαιδευτής αναφέρει ταχύτητα και ισχύ. Εάν μπορούμε να βρούμε τις απώλειες αντίστασης σε μια δεδομένη ταχύτητα, τότε η υπόλοιπη ισχύς χρησιμοποιείται για να ανέβει στο λόφο. Η δύναμη ανάβασης εξαρτάται από το βάρος της μοτοσυκλέτας και του αναβάτη και τον ρυθμό ανόδου και έτσι μπορούμε να επιστρέψουμε στην κλίση.

Πρώτα χρησιμοποίησα το εκπληκτικό https://bikecalculator.com για να βρω κάποια σημεία δεδομένων για απώλεια αντίστασης ισχύος σε τυπικές ταχύτητες. Στη συνέχεια, μεταμόρφωσα τον τομέα ταχύτητας για να δημιουργήσω μια γραμμική σχέση και βρήκα την καλύτερη γραμμή προσαρμογής. Λαμβάνοντας την εξίσωση της γραμμής μπορούμε τώρα να υπολογίσουμε την ισχύ (W) από την αντίσταση = (0,0102*(Speedkmh^2,8))+9,428.

Πάρτε τη δύναμη από την αντίσταση από τη μετρημένη ισχύ για να δώσετε δύναμη 'αναρρίχησης'.

Γνωρίζουμε την ταχύτητα ανόδου σε km/hr και τη μετατρέπουμε σε μονάδες SI του m/s (διαιρούμενοι με 3,6).

Η κλίση βρίσκεται από: Κλίση (%) = ((PowerClimbing/(WeightKg*g))/Ταχύτητα)*100

όπου επιτάχυνση της ελεύθερης πτώσης g = 9,8m/s/s ή 9,8 N/kg

Βήμα 2: Λάβετε ορισμένα δεδομένα

Λάβετε κάποια δεδομένα
Λάβετε κάποια δεδομένα

Ο υπολογισμός κλίσης απαιτεί ταχύτητα και ισχύ. Χρησιμοποίησα ένα Arduino Nano 33 IoT για να συνδεθώ με τον εκπαιδευτή μέσω BLE για να το λάβω. Αρχικά κόλλησα πολύ καθώς η τρέχουσα έκδοση v.1.1.2 της εγγενής βιβλιοθήκης ArduinoBLE για αυτήν την ενότητα δεν χειρίζεται τον έλεγχο ταυτότητας σε οποιαδήποτε μορφή, πράγμα που σημαίνει ότι οι περισσότεροι (;) εμπορικοί αισθητήρες BLE δεν θα ζευγαρώσουν μαζί της.

Η λύση ήταν να χρησιμοποιηθεί μια NPE Cable ANT+ to BLE γέφυρα (https://npe-inc.com/cableinfo/) που διατηρεί το ενσωματωμένο BLE του εκπαιδευτή δωρεάν για να επικοινωνεί η εκπαιδευτική εφαρμογή και δεν απαιτεί έλεγχο ταυτότητας στο BLE πλευρά.

Το χαρακτηριστικό ισχύος BLE είναι αρκετά απλό, καθώς η ισχύς σε watt περιέχεται στο δεύτερο και το τρίτο byte των δεδομένων που μεταδίδονται ως ακέραιος 16 bit (μικρό τελικό, δηλαδή λιγότερο σημαντική οκτάδα πρώτα). Εφάρμοσα ένα φίλτρο κινητού μέσου όρου για να δώσω μέση ισχύ 3 δευτερολέπτων - ακριβώς όπως δείχνει ο υπολογιστής ποδηλάτου μου - καθώς αυτό είναι λιγότερο ασταθές.

if (powerCharacteristic.valueUpdated ()) {

// Ορισμός πίνακα για την τιμή uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0}; // Ανάγνωση τιμής σε πίνακα powerCharacteristic.readValue (τιμές holdpowervalues, 6); // Η ισχύς επιστρέφεται ως watt στη θέση 2 και 3 (το loc 0 και 1 είναι σημαίες 8 bit) byte rawpowerValue2 = holdpowervalues [2]; // ισχύς ελάχιστου sig byte σε byte HEX rawpowerValue3 = τιμές holdpower [3]; // ισχύος πιο sig byte σε HEX long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Χρησιμοποιήστε κινούμενο μέσο φίλτρο για να δώσετε power 'train' = 3s = powerArainFilter_power.process (rawpowerTotal);

Το χαρακτηριστικό ταχύτητας BLE (Cycling Speed and Cadence) είναι ένα από αυτά που σας κάνει να αναρωτιέστε τι στο καλό κάπνιζε το SIG όταν έγραψαν τις προδιαγραφές.

Το Χαρακτηριστικό επιστρέφει έναν πίνακα 16 byte που δεν περιέχει ούτε ταχύτητα ούτε ρυθμό. Αντ 'αυτού, λαμβάνετε περιστροφές τροχών και στροφές στροφάλου (σύνολα) και χρόνο από τα δεδομένα του τελευταίου συμβάντος στα 1024 δευτερόλεπτα του δευτερολέπτου. Άρα περισσότερα μαθηματικά τότε. Ω, και τα byte δεν είναι πάντα παρόντα, οπότε υπάρχει ένα byte σημαίας στην αρχή. Ω, και τα byte είναι ελάχιστα endian HEX, οπότε πρέπει να διαβάσετε αντίστροφα πολλαπλασιάζοντας το δεύτερο byte με 256, το τρίτο επί 65536 κ.λπ. και στη συνέχεια να τα προσθέσετε μαζί. Για να βρείτε ταχύτητα πρέπει να υποθέσετε μια τυπική περιφέρεια τροχού ποδηλάτου για να γνωρίζετε την απόσταση….

if (speedCharacteristic.valueUpdated ()) {

// Αυτή η τιμή χρειάζεται έναν πίνακα 16 byte uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}. // Αλλά θα διαβάσω μόνο τα πρώτα 7 speedCharacteristic.readValue (τιμές αναμονής, 7). byte rawValue0 = τιμές διατήρησης [0]; // δυαδικές σημαίες 8 bit int byte rawValue1 = τιμές διατήρησης [1]; // περιστροφές λιγότερο σημαντικό byte σε byte HEX rawValue2 = τιμές διατήρησης [2]; // περιστροφές επόμενο πιο σημαντικό byte σε byte HEX rawValue3 = τιμές διατήρησης [3]; // περιστροφές επόμενο πιο σημαντικό byte σε byte HEX rawValue4 = τιμές διατήρησης [4]; // περιστροφές πιο σημαντικό byte σε byte HEX rawValue5 = τιμές διατήρησης [5]; // χρόνος από το γεγονός του τελευταίου τροχού τουλάχιστον sig byte byte rawValue6 = τιμές διατήρησης [6]; // χρόνος από το τελευταίο συμβάν τροχού πιο sig byte εάν (firstData) {// Λάβετε αθροιστικές περιστροφές τροχών ως μικρό τελικό εξάγωνο στις θέσεις 2, 3 και 4 (πρώτα λιγότερο σημαντική οκτάδα) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // Λάβετε χρόνο από το τελευταίο συμβάν τροχού σε 1024ο δευτερόλεπτο Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = false; } else {// Λήψη δεύτερου συνόλου δεδομένων WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); long TimeTemp = (rawValue5 + (rawValue6 * 256)); εάν (WheelRevsTemp> WheelRevs1) {// βεβαιωθείτε ότι το ποδήλατο κινείται WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = true;}

// Βρείτε τη διαφορά απόστασης σε cm και μετατρέψτε σε km float distanceTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

float kmTravelled = distanceTravelled / 1000000;

// Βρείτε χρόνο σε 1024ο δευτερόλεπτο και μετατρέψτε σε ώρες

float timeDifference = (Time_2 - Time_1); float timeSecs = timeDifference / 1024; float timeHrs = timeSecs / 3600;

// Βρείτε ταχύτητα kmh

speedKMH = (kmTraledled / timeHrs);

Το σκίτσο του Arduino φιλοξενείται στο GitHub (https://github.com/mockendon/opengradesim).

Βήμα 3: Υλικό 1 ο γραμμικός ενεργοποιητής

Υλικό 1 ο Γραμμικός Ενεργοποιητής
Υλικό 1 ο Γραμμικός Ενεργοποιητής
Υλικό 1 ο Γραμμικός Ενεργοποιητής
Υλικό 1 ο Γραμμικός Ενεργοποιητής
Υλικό 1 ο Γραμμικός Ενεργοποιητής
Υλικό 1 ο Γραμμικός Ενεργοποιητής

Ο άξονας διέλευσης στο ποδήλατο δρόμου με δισκόφρενα καθορίζει έναν άξονα 19,2 χιλιοστών για να καθαρίσει τον άξονα των 12 χιλιοστών με 100 χιλιοστά μεταξύ των πιρουνιών.

Ο σωλήνας αλουμινίου απόθεμα 3/4 ιντσών 10swg ταιριάζει τέλεια και ένα ωραίο ψαλίδι που ονομάζεται Dave στο ebay (https://www.ebay.co.uk/str/aluminiumonline) παρέχεται και μου το κόβει σε μήκος για μερικά κιλά.

Ο ενεργοποιητής έχει μια ράβδο 20 mm με μια τρύπα 6 mm, ώστε το τρισδιάστατο τμήμα να συνδέει τον σωλήνα αλουμινίου με μια χαλύβδινη ράβδο 6 mm και επειδή οι δυνάμεις είναι 90% συμπίεσης, κάποιο PLA / ABS ανταποκρίνεται στην πρόκληση.

Εάν εκτελείτε μια τυπική ρύθμιση γρήγορης κυκλοφορίας, κάτι τέτοιο (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) θα αποφύγει τον ανασχεδιασμό αυτού του στοιχείου.

Η εκκίνηση έχει σχεδιαστεί για να ταιριάζει στο μπλοκ ανύψωσης που παρέχεται με τον εκπαιδευτή μου Tacx, αλλά πιθανότατα θα ταιριάζει σε πολλούς παρόμοιους ανυψωτές ή μπορείτε απλώς να επεξεργαστείτε το αρχείο TinkerCad που ταιριάζει στις απαιτήσεις σας.

Βήμα 4: Υλικό 2 - το H -Bridge

Υλικό 2 - το H -Bridge
Υλικό 2 - το H -Bridge
Υλικό 2 - το H -Bridge
Υλικό 2 - το H -Bridge
Υλικό 2 - το H -Bridge
Υλικό 2 - το H -Bridge

Αυτοί οι πίνακες γέφυρας L298N H που είναι πολύ συνηθισμένοι στο διαδίκτυο έχουν ενσωματωμένο ρυθμιστή 5V, ο οποίος είναι ιδανικός για την τροφοδοσία του Arduino από την παροχή ρεύματος 12V που απαιτείται για τον γραμμικό ενεργοποιητή. Δυστυχώς, ο πίνακας Arduino Nano IoT είναι 3,3V σηματοδοτώντας, συνεπώς, την ανάγκη για έναν μετατροπέα λογικού επιπέδου (ή έναν οπτικοαπομονωτή, καθώς τα σήματα είναι μόνο μιας κατεύθυνσης).

Η θήκη έχει σχεδιαστεί για να δέχεται τους συνδετήρες ισχύος που χρησιμοποιούνται συνήθως σε εφαρμογές φωτισμού LED. Έσφαξα ένα καλώδιο επέκτασης USB για να καταστεί δυνατή η εύκολη σύνδεση / αποσύνδεση της μονάδας κεφαλής Arduino και ενώ ήμουν βέβαιος ότι θα χρησιμοποιούσα τις γραμμές τροφοδοσίας για την τροφοδοσία και τις γραμμές δεδομένων για τη σηματοδότηση 3.3V, θα σας συμβούλευα ειλικρινά ΕΝΑΝΤΙΩΣ μισείτε κάποιον να τηγανίσει τις θύρες USB ή τα περιφερειακά του συνδέοντάς τα κατά λάθος!

Βήμα 5: Hardware 3 the Control Electronics (Arduino)

Hardware 3 the Control Electronics (Arduino)
Hardware 3 the Control Electronics (Arduino)
Hardware 3 the Control Electronics (Arduino)
Hardware 3 the Control Electronics (Arduino)
Hardware 3 the Control Electronics (Arduino)
Hardware 3 the Control Electronics (Arduino)

Η θήκη για το μετατροπέα Arduino OLED και λογικού επιπέδου έχει μια τυπική βάση στήριξης Garmin 1/2 στροφής στο πίσω μέρος για να μπορεί να τοποθετηθεί με ασφάλεια στο ποδήλατο. Μια βάση «μπροστά» θα επιτρέψει στη μονάδα να γείρει προς τα πάνω ή προς τα κάτω στο «μηδέν» η θέση του επιταχυνσιόμετρου ή μια γραμμή κώδικα μόνο στο αυτόματο μηδέν στην αρχή θα ήταν εύκολο να προστεθεί.

Η θήκη διαθέτει ένα σημείο για ένα πληκτρολόγιο μεμβράνης - αυτό χρησιμοποιείται για να ρυθμίσετε το συνδυασμένο βάρος αναβάτη και ποδηλάτου. Μπορείτε απλώς να το ρυθμίσετε μέσω προγραμματισμού, ειδικά εάν δεν μοιράζεστε έναν εκπαιδευτή με κανέναν.

Mightσως είναι ωραίο να εφαρμόσετε μια λειτουργία "χειροκίνητου". Perhapsσως το πάτημα και των δύο κουμπιών να ξεκινήσει μια χειροκίνητη λειτουργία και στη συνέχεια τα κουμπιά να αυξήσουν / μειώσουν την κλίση. Θα το προσθέσω στη λίστα υποχρεώσεων!

Το αρχείο STL της υπόθεσης είναι και πάλι διαθέσιμο στο Thingiverse (ανατρέξτε στην ενότητα προμήθειες για σύνδεσμο).

Το σκίτσο του Arduino φιλοξενείται στο GitHub (https://github.com/mockendon/opengradesim).

Μπορείτε να εκτυπώσετε ένα τακτοποιημένο μικρό κλιπ για τη γέφυρα CABLE από εδώ

Βήμα 6: "The Rear Drop Outs"

'The Rear Drop Outs'
'The Rear Drop Outs'
'The Rear Drop Outs'
'The Rear Drop Outs'
'The Rear Drop Outs'
'The Rear Drop Outs'

Πολλοί άνθρωποι έθεσαν το ζήτημα του τρίψιμου του πίσω μέρους καθώς το ποδήλατο κινείται. Ορισμένοι εκπαιδευτές έχουν έναν άξονα που κινείται (όπως το Kickr) αλλά πολλοί όχι.

Επί του παρόντος, η καλύτερη λύση για μένα είναι να τοποθετήσω τυποποιημένα ρουλεμάν βαθιάς αυλάκωσης 61800-2RS (περίπου 2 each το καθένα) στους προσαρμογείς ταχείας αποδέσμευσης και στη συνέχεια να τοποθετήσω τις πτώσεις του άξονα σε αυτές (δείτε φωτογραφίες) με ένα σουβλάκι QR υπερμεγέθους

Τα ρουλεμάν χρειάζονται μια λεπτή ροδέλα π.χ. M12 16mm 0,3 mm μεταξύ του προσαρμογέα και του ρουλεμάν.

Ταιριάζουν τέλεια και περιστρέφονται με το ποδήλατο και το σουβλάκι ανεξάρτητα από τον εκπαιδευτή.

Προς το παρόν αυτό αλλάζει το offset στην πλευρά της μονάδας δίσκου κατά μερικά mm, οπότε θα χρειαστεί να κάνετε ξανά ευρετηρίαση

Σχεδιάζω προσαρμοσμένα ανταλλακτικά (βλ. Σχέδιο pdf) για κατεργασία (στον τόρνο του μελλοντικού κουνιάδου μου, όταν έχει μία ώρα να βοηθήσει!). Αυτά δεν έχουν δοκιμαστεί ακόμα !!! Αλλά η λείανση 1 mm από την εσωτερική επιφάνεια του προσαρμογέα QR από την πλευρά του δίσκου είναι μια γρήγορη λύση χωρίς ειδικά εργαλεία.)

Συνιστάται: