openrowingmonitor/docs/README_concept2.md

138 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Concept2 Related Information
[ORM Beta 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)