-
Notifications
You must be signed in to change notification settings - Fork 255
The Lishui Parameter Configuator
Several Display types are supported basically. For most displays only speed and power are displayed and the support level, push assist and light on/off function are sent to the controller. Further settings in the display are ignored.
Displays, that are using the Kingmeter J-LCD protocol
Displays, that are using the Kingmeter KM5S protocol, the KM5S protocol uses an encrypted handshake on some OEM versions, so in some cases the lookup table has to be adapted to the certain display.
Displays, that are using the Bafang protocol
Displays, that are using the Kunteng protocol. Here some more settings can be done in the display, they are stored in the controllers emulated EEPROM.
This setting supports the EBiCS-Flutter app on android, see the EBiCS repo. The EBiCS Flutter protocol uses the ANT+LEV syntax. The autodetect routine can be started from the app.
In debug mode the controller sends UART data on the display connector. Use a UART-USB converter module or a HM-05 bluetooth module for logging the output.
Set the module to 56000 BAUD
See the instruction in the Kunteng wiki, it's the same procedure.
The controller works in "torque simulation" mode, if the option "Torquesensor" is not activated. This chart shows the working principle:
time until the motor stops, if no PAS pulse is detected. 8000 = 1s
the motor power increases with the crank speed in PAS mode. Ramp end defines the cadence where the battery current is reached, that is set for the chosen assist level.
This enables the direction detection for simple PAS models, that are carrying the direction information in the duty cycle of the PAS signal, middle row of the picture. This prevent the motor from starting, if you are pedaling backwards.
print out uint32_PAS_fraction in debug mode to find a proper value
print out uint32_PAS_fraction in debug mode to find a proper value
If the battery voltage drops under this limit, the motor stops working. ADC value, use the calibration value in the Advanced Settings tab for calculation the ADC value from the volts.
Regen is stopped, when the battery voltage gets too high. Be careful to set a proper value, if you are using regen! If the BMS of the battery suddenly cuts the battery from the controller due to overvoltage, you will get magic smoke from the controller!!!
if you want to use a torque sensor, connect the speed signal to the PAS wire and the torque signal to the throttle wire. In this mode, the motor power is calculated from the riders power. The assist level sets the amplification of the riders power. A torquesensor makes a much more natural "bicycle-feeling" than the torque simulation mode. All enhanced systems like Bosch, Yamaha, Panasonic, Brose, BionX... are using torque sensors. Only very cheap "discounter-bikes" or conversion-kits are using PAS with torque simulation.
Some Lishui controllers are offered in a bundle with a suitable bottom bracket torquesensor. The torque signal is connected to the AD1-Pin on the PCB in this case.
this value combines all calibration factors of the sensors. Just take a test ride and increase / decrease the value according to your wishes
this is the ADC-value at closed throttle. Print out adcData[1] in debug mode, to see the value. Set Throttle offset to a little higher value to prevent the motor starting, if the value drifts a little with time or temperature. Read adcData[6] for the torque signal on AD1.
this is the ADC-value at full throttle. Set a little lower than the printed value to get the full current.
Enable this option, if the motor runs in the wrong direction after autodetect
The assist level is scaled with the speed. Same idea as the indiviual ride modes in the Bosch Nyon. The profile is hardcoded at the moment.
The throttle overrides the PAS level, if the signal is higher. Same in Torquesensor mode, if the torque signal is higher, than the power proportional setpoint, the pure torque signal is used. Works as a "startup-boost".
Future option to make throttle legal in Europe. Not implemented yet.
in mm for correct speed calculation
ratio of mechanical gear * number of pole pairs (number of magnets / 2)
in kph
number of speed pulses per revolution, some hub motors have 6 magnets internally, some use single magnet in the spokes like a speedometer
Default value, if autodetect wasn't executed yet. It's strongly recommented to run autodetct once, when setting up the system.
Maximum allowed motorcurrent as ADC value. Use the calibration value from the advanced settings tab for calculation from milliampere
Maximum battery in mA. Caution! There is no temperature protection of motor or controller! Avoid long rides at high current!!! The Lishui 6 FET controllers are rated with 7 amps continous battery current normally. Short peaks of higher current are OK of course.
Motor current ADC value at regen. Constant regen can be activated by the brake lever, linear regen can be used with a thumbthrottle on Pin AD2.
Maximum battery current at regen in mA
Motor current ADC value for push assist function
path to the eclipse.exe from your OpenSTM32 Workbench installation, see main wiki page
self explanatory
Caution, wrong settings can destroy the controller!!!
Do not change values, if you are not sure what you are doing.
offset for dynamic ADC trigger timing at high duty cycles.
trigger point at low duty cycles
period defines the PWM frequency
if the motor runs noisy or with vibrations, the position PLL can be activated. The PLL must be tuned with the parameters PLL p-factor, PLL i-factor and speedshift.
defines the proportional right shift factor.
defines the integral right shift factor.
if the motor runs properly at low speeds but looses syncronity at higher speed, the speedshift factor reduces the shiftfactors with the speed. Keep it at zero, if the motor runs well with zero setting.
normally the throttle controls the motor current in this firmware. You can switch to speed control, this option is not well tested and not recommented.
proportional gain for speed control
integral gain for speed control
connect a throttle to pin AD2 on the PCB, the regen motor current is set by the throttle.
debug function for datalogging with pwm frequency. Assign interested paramters to variables temp1 to temp6. A PAS pulse triggers the printout of the values
disable the dynamic adaption of the ADC trigger for debugging. Be careful, ADC readings of phase current are not correct at high duty cycles in this case. This can cause burned mosfets!!!
this option should be used for motors with freewheel to avoid the motor oszillating if you ride faster than the speedlimit.
number of measured speed values for filtering the speed signal
time between two hallsensor interrupts. Defines the speed, where the commutation switches from 6 step to FOC
if you choose debug as display type and enable autodetect, the autodetect routine is run every time you switch on the system. Starting the autodetect by brakelever + throttle is possible also, see main wiki page
to be continued
lines, that are not described here don't have to be adjusted
#define DISPLAY_TYPE DISPLAY_TYPE_KINGMETER_901U //copy the right display type here.
#define wheel_circumference 2202 //wheel circumference in mm
#define THROTTE_OFFSET 1210 //ADC-value at closed throttle
#define TS_COEF 2000 //coefficient for torque-sensor-mode
#define TS_MODE //Torquesensor-Mode, comment out this line, if you want to use current levels.
#define PAS_TIMEOUT 12000 //time tics @ 16kHz untils motor stops
#define RAMP_END 4000 //time tics @ 16kHz where motor reaches full level power
#define PH_CURRENT_MAX 300 //iq value (phase current in rotating frame), not calibrated yet
#define P_FACTOR_I_Q 1L //proportional factor for PI control of iq
#define I_FACTOR_I_Q 0.1F //integral factor for PI control of iq
#define P_FACTOR_I_D 1L //proportional factor for PI control of id
#define I_FACTOR_I_D 1L //integral factor for PI control of id
#define SPEC_ANGLE -357913941L //motor specific angle, refer to chapter 8.3.3 maped to 2^31
#define CAL_V 7LL // 1V / 40 digits ADC, *1/Sqrt(3) /2048 max DutyCycle
#define CAL_I 5LL // 1A / 20 digits ADC
//Constants for Motor model of observer
#define INDUCTANCE 12LL // 10^4 0.0012 //H = Vs/A
#define RESISTANCE 3500LL // *10^4 0.35 //Ohm = V/A