AM32 电调学习
1.设置参数
- char dir_reversed = 0;
- char bi_direction = 0;
- char use_sin_start = 0;
- char comp_pwm = 1;
- char VARIABLE_PWM = 1;
- char stuck_rotor_protection = 1; // Turn off for Crawlers
- char advance_level = 2; // 7.5 degree increments 0 , 7.5, 15, 22.5)
- uint16_t TIMER1_MAX_ARR = TIM1_AUTORELOAD; // maximum auto reset register value
自动调整
if (eepromBuffer[24] < 49 && eepromBuffer[24] > 7) {
if (eepromBuffer[24] < 49 && eepromBuffer[24] > 23) {
TIMER1_MAX_ARR = map(eepromBuffer[24], 24, 48, TIM1_AUTORELOAD, TIM1_AUTORELOAD / 2);
}
if (eepromBuffer[24] < 24 && eepromBuffer[24] > 11) {
TIMER1_MAX_ARR = map(eepromBuffer[24], 12, 24, TIM1_AUTORELOAD * 2, TIM1_AUTORELOAD);
}
if (eepromBuffer[24] < 12 && eepromBuffer[24] > 7) {
TIMER1_MAX_ARR = map(eepromBuffer[24], 7, 16, TIM1_AUTORELOAD * 3,
TIM1_AUTORELOAD / 2 * 3);
}
SET_AUTO_RELOAD_PWM(TIMER1_MAX_ARR);
throttle_max_at_high_rpm = TIMER1_MAX_ARR;
duty_cycle_maximum = TIMER1_MAX_ARR;
} else {
tim1_arr = TIM1_AUTORELOAD;
SET_AUTO_RELOAD_PWM(tim1_arr);
}
- uint16_t min_startup_duty = 120;
- uint16_t minimum_duty_cycle = DEAD_TIME;
if (eepromBuffer[25] < 151 && eepromBuffer[25] > 49) {
min_startup_duty = (eepromBuffer[25] + DEAD_TIME);
minimum_duty_cycle = (eepromBuffer[25] / 2 + DEAD_TIME / 3);
stall_protect_minimum_duty = minimum_duty_cycle + 10;
} else {
min_startup_duty = 150;
minimum_duty_cycle = (min_startup_duty / 2) + 10;
}
- uint16_t motor_kv = 2000; motor_kv = (eepromBuffer[26] * 40) + 20;
- motor_poles = eepromBuffer[27];
- char brake_on_stop = 0;
- char stall_protection = 0;
- volumn
if (eepromBuffer[30] > 11) {
setVolume(5);
} else {
setVolume(eepromBuffer[30]);
}
- char TLM_ON_INTERVAL = 0;
- servo_low_threshold = (eepromBuffer[32] * 2) + 750; // anything below this point considered 0
- uint16_t servo_low_threshold = 1100; // anything below this point considered 0
- uint16_t servo_high_threshold = 1900; // anything above this point considered 2000 (max)
- servo_high_threshold = (eepromBuffer[33] * 2) + 1750;
- servo_neutral = (eepromBuffer[34]) + 1374;
- uint16_t servo_neutral = 1500;
- servo_dead_band = eepromBuffer[35];
- uint8_t servo_dead_band = 100;
- char LOW_VOLTAGE_CUTOFF = 0; // Turn Low Voltage CUTOFF on or off
- low_cell_volt_cutoff = eepromBuffer[37] + 250; // 2.5 to 3.5 volts per cell range
- uint16_t low_cell_volt_cutoff = 330; // 3.3volts per cell
- char RC_CAR_REVERSE = 0; // have to set bidirectional, comp_pwm off and stall
- char USE_HALL_SENSOR = 0;
- char sine_mode_changeover_thottle_level = 5; // Sine Startup Range
if (eepromBuffer[40] > 4 && eepromBuffer[40] < 26) { // sine mode changeover 5-25 percent throttle
sine_mode_changeover_thottle_level = eepromBuffer[40];
}
if (eepromBuffer[41] > 0 && eepromBuffer[41] < 11) { // drag brake 1-10
drag_brake_strength = eepromBuffer[41];
}
uint8_t driving_brake_strength = 10
if (eepromBuffer[42] > 0 && eepromBuffer[42] < 10) { // motor brake 1-9
driving_brake_strength = eepromBuffer[42];
dead_time_override = DEAD_TIME + (150 - (driving_brake_strength * 10));
if (dead_time_override > 200) {
dead_time_override = 200;
}
min_startup_duty = eepromBuffer[25] + dead_time_override;
minimum_duty_cycle = eepromBuffer[25] / 2 + dead_time_override;
throttle_max_at_low_rpm = throttle_max_at_low_rpm + dead_time_override;
startup_max_duty_cycle = startup_max_duty_cycle + dead_time_override;
#ifdef STMICRO
TIM1->BDTR |= dead_time_override;
#endif
#ifdef ARTERY
TMR1->brk |= dead_time_override;
#endif
#ifdef GIGADEVICES
TIMER_CCHP(TIMER0) |= dead_time_override;
#endif
}
- uint8_t TEMPERATURE_LIMIT = 255; // degrees 255 to disable
- uint16_t CURRENT_LIMIT = 202;
if (eepromBuffer[44] > 0 && eepromBuffer[44] < 100) {
CURRENT_LIMIT = eepromBuffer[44] * 2;
use_current_limit = 1;
}
- uint8_t sine_mode_power = 5;
if (eepromBuffer[45] > 0 && eepromBuffer[45] < 11) {
sine_mode_power = eepromBuffer[45];
}
- dshot servopwm edt_arm
if (eepromBuffer[46] >= 0 && eepromBuffer[46] < 10) {
switch (eepromBuffer[46]) {
case AUTO_IN:
dshot = 0;
servoPwm = 0;
EDT_ARMED = 1;
break;
case DSHOT_IN:
dshot = 1;
EDT_ARMED = 1;
break;
case SERVO_IN:
servoPwm = 1;
break;
case SERIAL_IN:
break;
case EDTARM:
EDT_ARM_ENABLE = 1;
EDT_ARMED = 0;
dshot = 1;
break;
};
} else {
dshot = 0;
servoPwm = 0;
EDT_ARMED = 1;
}
- char low_rpm_throttle_limit = 1;
if (motor_kv < 300) {
low_rpm_throttle_limit = 0;
}
- low_rpm_level = motor_kv / 100 / (32 / motor_poles);
- high_rpm_level = motor_kv / 17 / (32 / motor_poles);
-
- reverse_speed_threshold = map(motor_kv, 300, 3000, 1000, 500);
- bi_direction
if (!comp_pwm) {
bi_direction = 0;
}