Skip to content
This repository was archived by the owner on Jun 23, 2023. It is now read-only.

Commit 125e1ac

Browse files
committed
Added torque sensor startup offset. Motor current control mode default to torque mode. Cadence fast stop disabled by default. Corrected auto shutdown timeout
1 parent 93506d4 commit 125e1ac

5 files changed

Lines changed: 19 additions & 25 deletions

File tree

firmware/common/include/eeprom.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515

1616
// For compatible changes, just add new fields at the end of the table (they will be inited to 0xff for old eeprom images). For incompatible
1717
// changes bump up EEPROM_MIN_COMPAT_VERSION and the user's EEPROM settings will be discarded.
18-
#define EEPROM_MIN_COMPAT_VERSION 0x3A
19-
#define EEPROM_VERSION 0x3A
18+
#define EEPROM_MIN_COMPAT_VERSION 0x3B
19+
#define EEPROM_VERSION 0x3B
2020

2121
typedef struct {
2222
graph_auto_max_min_t auto_max_min;
@@ -180,7 +180,7 @@ void eeprom_init_defaults(void);
180180
#define DEFAULT_VALUE_RAMP_UP_AMPS_PER_SECOND_X10 80 // 8.0 amps per second ramp up
181181
#define DEFAULT_VALUE_TARGET_MAX_BATTERY_POWER 60 // e.g. 20 = 20 * 25 = 500, 0 is disabled
182182
#define DEFAULT_VALUE_BATTERY_LOW_VOLTAGE_CUT_OFF_X10 420 // 52v battery, LVC = 42.0 (3.0 * 14)
183-
#define DEFAULT_VALUE_MOTOR_CURRENT_CONTROL_MODE 0 // 0 power; 1 torque
183+
#define DEFAULT_VALUE_MOTOR_CURRENT_CONTROL_MODE 1 // 0 power; 1 torque
184184
#define DEFAULT_VALUE_MOTOR_TYPE 0 // 0 = 48V
185185
#define DEFAULT_VALUE_MOTOR_ASSISTANCE_WITHOUT_PEDAL_ROTATION 0 // 0 to keep this feature disable
186186
#define DEFAULT_VALUE_ASSIST_LEVEL_FACTOR_1 5 // 0.005 and each next increase +33%
@@ -275,7 +275,7 @@ void eeprom_init_defaults(void);
275275
#define DEFAULT_STREET_MODE_SPEED_LIMIT 25 // 25 km/h
276276
#define DEFAULT_STREET_MODE_POWER_LIMIT 10 // 250W --> 250 / 25 = 10
277277
#define DEFAULT_STREET_MODE_THROTTLE_ENABLE 0 // disabled
278-
#define DEFAULT_PEDAL_CADENCE_FAST_STOP_ENABLE 1 // enabled
278+
#define DEFAULT_PEDAL_CADENCE_FAST_STOP_ENABLE 0 // disabled
279279
#define DEFAULT_COAST_BRAKE_ADC 15 // 15: tested by plpetrov user on 28.04.2020:
280280
#define DEFAULT_FIELD_WEAKENING 1 // 1 enabled
281281
#define DEFAULT_ADC_LIGHTS_CURRENT_OFFSET 1

firmware/common/src/configscreen.c

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ static Field batteryMenus[] =
2222
FIELD_EDITABLE_UINT(_S("Max current", "Max curren"), &ui_vars.ui8_battery_max_current, "amps", 1, 20),
2323
FIELD_EDITABLE_UINT(_S("Low cut-off", "Lo cut-off"), &ui_vars.ui16_battery_low_voltage_cut_off_x10, "volts", 160, 630, .div_digits = 1),
2424
FIELD_EDITABLE_UINT(_S("Resistance", "Resistance"), &ui_vars.ui16_battery_pack_resistance_x1000, "mohm", 0, 1000),
25-
FIELD_SCROLLABLE("SOC", batterySOCMenus),
2625
FIELD_READONLY_UINT(_S("Voltage est", "Voltag est"), &ui_vars.ui16_battery_voltage_soc_x10, "volts", false, .div_digits = 1),
2726
FIELD_READONLY_UINT(_S("Resistance est", "Resist est"), &ui_vars.ui16_battery_pack_resistance_estimated_x1000, "mohm", 0, 1000),
2827
FIELD_READONLY_UINT(_S("Power loss est", "Power loss"), &ui_vars.ui16_battery_power_loss, "watts", false, .div_digits = 0),
@@ -37,8 +36,12 @@ static Field motorMenus[] = {
3736
FIELD_EDITABLE_ENUM(_S("Field weakening", "Field weak"), &ui_vars.ui8_field_weakening, "disable", "enable"),
3837
FIELD_END };
3938

40-
static Field torqueSensorCalibrationMenus[] =
39+
static Field torqueSensorMenus[] =
4140
{
41+
FIELD_EDITABLE_UINT(_S("Torque s ADC thresho", "Torq s thr"), &ui_vars.ui8_torque_sensor_adc_threshold, "", 5, 100),
42+
FIELD_EDITABLE_ENUM(_S("Assist w/o pedal rot", "A w/o ped"), &ui_vars.ui8_motor_assistance_startup_without_pedal_rotation, "disable", "enable"), // FIXME, share one array of disable/enable strings
43+
FIELD_EDITABLE_ENUM(_S("Coast brake", "Coast brak"), &ui_vars.ui8_coast_brake_enable, "disable", "enable"),
44+
FIELD_EDITABLE_UINT(_S("Coast brake ADC", "Coa bk ADC"), &ui_vars.ui8_coast_brake_adc, "", 5, 255),
4245
FIELD_EDITABLE_ENUM(_S("Calibration", "Calibrat"), &ui_vars.ui8_torque_sensor_calibration_feature_enabled, "disable", "enable"),
4346
FIELD_EDITABLE_UINT(_S("Torque sensor filter", "Torq s fil"), &ui_vars.ui8_torque_sensor_filter, "", 0, 100),
4447
FIELD_EDITABLE_ENUM(_S("Start pedal ground", "Pedal grou"), &ui_vars.ui8_torque_sensor_calibration_pedal_ground, "left", "right"),
@@ -76,15 +79,6 @@ static Field torqueSensorCalibrationMenus[] =
7679
FIELD_EDITABLE_UINT("Right ADC 8", &ui_vars.ui16_torque_sensor_calibration_table_right[7][1], "", 0, 1023),
7780
FIELD_END };
7881

79-
static Field torqueSensorMenus[] =
80-
{
81-
FIELD_EDITABLE_UINT(_S("Torque sensor ADC threshold", "Torq s thr"), &ui_vars.ui8_torque_sensor_adc_threshold, "", 5, 75),
82-
FIELD_EDITABLE_ENUM(_S("Assist w/o pedal rot", "A w/o ped"), &ui_vars.ui8_motor_assistance_startup_without_pedal_rotation, "disable", "enable"), // FIXME, share one array of disable/enable strings
83-
FIELD_EDITABLE_ENUM(_S("Coast brake", "Coast brak"), &ui_vars.ui8_coast_brake_enable, "disable", "enable"),
84-
FIELD_EDITABLE_UINT(_S("Coast brake ADC", "Coa bk ADC"), &ui_vars.ui8_coast_brake_adc, "", 5, 255),
85-
FIELD_SCROLLABLE("Calibration", torqueSensorCalibrationMenus),
86-
FIELD_END };
87-
8882
static Field assistMenus[] =
8983
{
9084
FIELD_EDITABLE_UINT(_S("Num assist levels", "Num Levels"), &ui_vars.ui8_number_of_assist_levels, "", 1, 20),
@@ -371,6 +365,7 @@ static Field technicalMenus[] = {
371365
static Field topMenus[] = {
372366
FIELD_SCROLLABLE("Wheel", wheelMenus),
373367
FIELD_SCROLLABLE("Battery", batteryMenus),
368+
FIELD_SCROLLABLE("SOC", batterySOCMenus),
374369
FIELD_SCROLLABLE(_S("Motor", "Motor"), motorMenus),
375370
FIELD_SCROLLABLE(_S("Torque sensor", "Torque sen"), torqueSensorMenus),
376371
FIELD_SCROLLABLE(_S("Assist level", "Assist"), assistMenus),

firmware/common/src/eeprom.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ const eeprom_data_t m_eeprom_data_defaults = {
275275
.ui8_adc_lights_current_offset = DEFAULT_ADC_LIGHTS_CURRENT_OFFSET,
276276
.ui8_throttle_virtual_step = DEFAULT_THROTTLE_VIRTUAL_STEP,
277277
.ui8_torque_sensor_filter = DEFAULT_TORQUE_SENSOR_FILTER,
278-
.ui8_torque_sensor_adc_threshold = DEFAULT_TORQUE_SENSOR_FILTER,
278+
.ui8_torque_sensor_adc_threshold = DEFAULT_TORQUE_SENSOR_ADC_THRESHOLD,
279279
.ui8_coast_brake_enable = DEFAULT_COAST_BRAKE_ENABLE,
280280
};
281281

firmware/common/src/mainscreen.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -930,7 +930,7 @@ void trip_time(void) {
930930
static int oldmin = -1; // used to prevent unneeded updates
931931
char timestr[MAX_TIMESTR_LEN]; // 12:13
932932

933-
if(p_time->ui8_minutes != oldmin) {
933+
if (p_time->ui8_minutes != oldmin) {
934934
oldmin = p_time->ui8_minutes;
935935
sprintf(timestr, "%d:%02d", p_time->ui8_hours, p_time->ui8_minutes);
936936
updateReadOnlyStr(&tripTimeField, timestr);
@@ -1095,7 +1095,7 @@ void time(void) {
10951095

10961096
void walk_assist_state(void) {
10971097
// kevinh - note on the sw102 we show WALK in the box normally used for BRAKE display - the display code is handled there now
1098-
if (ui_vars.ui8_walk_assist_feature_enabled) {
1098+
if (ui_vars.ui8_walk_assist_feature_enabled) {
10991099
// if down button is still pressed
11001100
if (ui_vars.ui8_walk_assist && buttons_get_down_state()) {
11011101
ui8_walk_assist_timeout = 2; // 0.2 seconds

firmware/common/src/state.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -337,14 +337,13 @@ void rt_low_pass_filter_battery_voltage_current_power(void) {
337337

338338
// low pass filter battery voltage
339339
ui32_battery_voltage_accumulated_x10000 -=
340-
ui32_battery_voltage_accumulated_x10000
341-
>> BATTERY_VOLTAGE_FILTER_COEFFICIENT;
340+
(ui32_battery_voltage_accumulated_x10000 >> BATTERY_VOLTAGE_FILTER_COEFFICIENT);
341+
342342
ui32_battery_voltage_accumulated_x10000 +=
343-
(uint32_t) rt_vars.ui16_adc_battery_voltage
344-
* ADC_BATTERY_VOLTAGE_PER_ADC_STEP_X10000;
343+
((uint32_t) rt_vars.ui16_adc_battery_voltage * ADC_BATTERY_VOLTAGE_PER_ADC_STEP_X10000);
344+
345345
rt_vars.ui16_battery_voltage_filtered_x10 =
346-
((uint32_t) (ui32_battery_voltage_accumulated_x10000
347-
>> BATTERY_VOLTAGE_FILTER_COEFFICIENT)) / 1000;
346+
(((uint32_t) (ui32_battery_voltage_accumulated_x10000 >> BATTERY_VOLTAGE_FILTER_COEFFICIENT)) / 1000);
348347

349348
// low pass filter battery current
350349
ui16_battery_current_accumulated_x5 -= ui16_battery_current_accumulated_x5
@@ -742,7 +741,7 @@ void automatic_power_off_management(void) {
742741
// check if we should power off the LCD
743742
if (ui16_lcd_power_off_time_counter
744743
>= (ui_vars.ui8_lcd_power_off_time_minutes * 10 * 60)) { // have we passed our timeout?
745-
// lcd_power_off(1);
744+
lcd_power_off(1);
746745
}
747746
}
748747
} else {

0 commit comments

Comments
 (0)