diff --git a/docs/README_concept2.md b/docs/README_concept2.md new file mode 100644 index 0000000..5f6fd31 --- /dev/null +++ b/docs/README_concept2.md @@ -0,0 +1,135 @@ +# Concept2 Related Information + +[ORM Bata Repo](https://github.com/JaapvanEkris/openrowingmonitor) + +## [Settings](./docs/rower_settings.md) + +### [Profile for Concept2](https://github.com/laberning/openrowingmonitor/issues/77) + +#### Model C + +The Model C has 3 magnets on the flywheel giving: + numOfImpulsesPerRevolution: 3, + minimumTimeBetweenImpulses: 0.010, + maximumTimeBetweenImpulses: 0.044, + +'autoAdjustDragFactor: true' here as well, which is doable for the Concept2: +Setting it to true, will allow Open Rowing Monitor to automatically calculate +the drag factor based on the flywheelInertia and the on the measured values in +the stroke recovery phase. See: ./rower_settings.md + +[Concept2 Model C Config from beta repo.](https://github.com/JaapvanEkris/openrowingmonitor/blob/main/config/rowerProfiles.js) + +```javascript + // Concept2 RowErg, Model B and C + Concept2_Model_C: { + numOfImpulsesPerRevolution: 3, + sprocketRadius: 1.4, + minimumTimeBetweenImpulses: 0.014, + maximumTimeBetweenImpulses: 0.040, + smoothing: 1, + flankLength: 6, + minumumForceBeforeStroke: 50, + minumumRecoverySlope: 0.00070, + minimumStrokeQuality: 0.36, + autoAdjustRecoverySlope: true, + autoAdjustRecoverySlopeMargin: 0.01, + minimumDriveTime: 0.400, // minimum time of the drive phase + minimumRecoveryTime: 0.900, // minimum time of the recovery phase + dragFactor: 110, + autoAdjustDragFactor: true, + dragFactorSmoothing: 3, + minimumDragQuality: 0.95, + flywheelInertia: 0.10148, + maximumStrokeTimeBeforePause: 6.0, + magicConstant: 2.8 + } +``` + +## Hardware + +### Model C Hardware + +For the Rpi to register the logical high for the pin (it has a practical logical +high voltage of above 1.6-1.8v but according to the specs 2.5v is where 100% +that high is registered). + +A Concept2 Model C output peaks at ~20mV when rowing at moderate intensity, even +if it peaked at 50mV when rowed by an Olympian that is still far too low for the +desired 2.5V to consistently read high on a RPi GPIO. + +The module C uses a reluctance sensor + +* [Monitor Pickup and Screw Kit—Model A, C Part Number: 1748](https://shop-uk.concept2.com/parts/121-monitor-pickup-and-screw-kitmodel-a-c.html?search_query=1748&results=1) + +A wire coil with a ferrite core 105ohms) if you replace the magnets ensure that +the ‘south’ is facing the sensor. + +Here's the C pulse train: +[2023-11-28_05-35-19_rowingData.csv](https://github.com/laberning/openrowingmonitor/files/13484079/2023-11-28_05-35-19_rowingData.csv) +![Model C Pulse train](./img/Model-C_pulse-train.png) + +#### [MAX9924 Variable Reluctance Sensor Interface](https://www.analog.com/media/en/technical-documentation/data-sheets/MAX9924-MAX9927.pdf) + +£4 per piece on aliexpress + +These are signal conditioning IC's that connect to the Reluctance sensor and +provide a pwm signal to the microcontroller + +The MAX9924 uses a zero crossing with dynamic threshold to avoid the zero- +crossings in the noise, but still work with a range of signal strength. + +* [MAX9924 ORM PiHat](https://oshwlab.com/jpbpcb/rower2) + * [Extra discussion](https://github.com/laberning/openrowingmonitor/discussions/157) + See: /space/code_repositories/hardware/kicad/open_rowing_monitor + * The Extra linked page also has a config.js for a Model C using the max9924. + The layout does not use a ground plane. +* [MAX9924UEVKIT](https://www.analog.com/media/en/technical-documentation/data-sheets/MAX9924UEVKIT.pdf) See: /space/code_repositories/hardware/kicad/MAX9924UEVKIT + +#### [MAX9926 Variable Reluctance Sensor Interface](https://www.analog.com/media/en/technical-documentation/data-sheets/MAX9924-MAX9927.pdf) + +$0.81 per piece on aliexpress + +This are the two sensor capable IC's which allows them to be used for quadrature +direction sensing of one sensor or reading from two sensors. + +* [MAX9926UEVKIT](https://www.analog.com/media/en/technical-documentation/data-sheets/MAX9926UEVKIT.pdf) See: /space/code_repositories/hardware/kicad/MAX9926UEVKIT/ +* [rusefi max9926](https://rusefi.com/forum/viewtopic.php?t=994) + +### Model D + +The Model D has 6 magnets on the flywheel with a coil/generator setup giving: + numOfImpulsesPerRevolution: 6, + minimumTimeBetweenImpulses: 0.005, + maximumTimeBetweenImpulses: 0.022, + +The Model D has some uptake issues in its generator: the first x pulses are very +weak, but when the flywheel gains momentum, it will peak at 15V. + +### [Arduino Monitor for Concept2 Model B C D](https://www.instructables.com/ARDUINO-MONITOR-FOR-CONCEPT2-MODEL-B-C-D/) + +This project uses an arduino mega 2560 with has 5V tolerant pins but uses analog read. + +#### Model B and C + +Just add 100k resistor inline with the cable that comes from flyweel (2.5mm TRS +jack) to the analog read pin (1) on the arduino. +![Instructables image](https://content.instructables.com/FWW/4NM2/J8F62QWG/FWW4NM2J8F62QWG.jpg) + +#### Drag factor + +For a new Concept2, the Drag Factor ranges between 80 (Damper setting 1) and 220 (Damper setting 10): + +* [concept 2 model c damper level 01 oscilloscope data.txt](https://github.com/laberning/openrowingmonitor/files/9336167/concept.2.model.c.damper.level.01.oscilloscope.data.txt) +* concept 2 model c damper level 10 [oscilloscope data.txt](https://github.com/laberning/openrowingmonitor/files/9336169/concept.2.model.c.damper.level.10.oscilloscope.data.txt) + +Model A,C,D,and E has 14 tooth gear + +[Model B drag factor is different](https://web.archive.org/web/20230601051848/https://board.crossfit.com/showthread.php?t=20648) +requiring a little recalculating. + +The resistance is determined by cubing the number of teeth on the sprockets. + +13 x 13 x 13 = 2197 (Model B, small wheel) +14 x 14 x 14 = 2744 (Models C/D/E) +15 x 15 x 15 = 3375 (Model B, big wheel)