Merge pull request #383 from TechAUmNu/dev_fw_5_03

Tweak settings for A50S hardware
This commit is contained in:
Benjamin Vedder 2022-01-09 20:23:49 +01:00 committed by GitHub
commit 76f100f61a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 53 additions and 53 deletions

View File

@ -33,21 +33,21 @@
* 0 (1): IN0 SENS1
* 1 (2): IN1 SENS2
* 2 (3): IN2 SENS3
* 3 (1): IN10 CURR1
* 4 (2): IN11 CURR2
* 5 (3): IN12 CURR3 (not used)
* 3 (1): IN10 CURR1
* 4 (2): IN11 CURR2
* 5 (3): IN12 CURR3 (not used)
* 6 (1): IN5 ADC_EXT1
* 7 (2): IN6 ADC_EXT2
* 8 (3): IN3 TEMP_MOS
* 9 (1): IN14 TEMP_MOTOR
* 10 (2): IN15 ADC_EXT3
* 11 (3): IN13 AN_IN
* 9 (1): IN14 TEMP_MOTOR
* 10 (2): IN15 ADC_EXT3
* 11 (3): IN13 AN_IN
* 12 (1): Vrefint
* 13 (2): IN0 SENS1
* 14 (3): IN1 SENS2
* 15 (1): IN8 TEMP_MOS_2
* 16 (2): IN9 TEMP_MOS_3
* 17 (3): IN3 SENS3
* 15 (1): IN8 TEMP_MOS_2
* 16 (2): IN9 TEMP_MOS_3
* 17 (3): IN3 SENS3
*/
#define HW_ADC_CHANNELS 18
@ -61,8 +61,8 @@
#define ADC_IND_CURR1 4
#define ADC_IND_CURR2 3
#define ADC_IND_CURR3 5
#define ADC_IND_VIN_SENS 11
#define ADC_IND_EXT 6
#define ADC_IND_VIN_SENS 11
#define ADC_IND_EXT 6
#define ADC_IND_EXT2 7
#define ADC_IND_EXT3 10
#define ADC_IND_TEMP_MOS 8
@ -75,13 +75,13 @@
// Component parameters (can be overridden)
#ifndef V_REG
#define V_REG 3.30
#define V_REG 3.30
#endif
#ifndef VIN_R1
#define VIN_R1 12000.0
#define VIN_R1 12000.0
#endif
#ifndef VIN_R2
#define VIN_R2 620.0
#define VIN_R2 620.0
#endif
#ifndef CURRENT_AMP_GAIN
#define CURRENT_AMP_GAIN 20.0
@ -99,8 +99,8 @@
#define NTC_RES(adc_val) ((4095.0 * 10000.0) / adc_val - 10000.0)
#define NTC_TEMP(adc_ind) (1.0 / ((logf(NTC_RES(ADC_Value[adc_ind]) / 10000.0) / 3380.0) + (1.0 / 298.15)) - 273.15)
#define NTC_RES_MOTOR(adc_val) (10000.0 / ((4095.0 / (float)adc_val) - 1.0)) // Motor temp sensor on low side
#define NTC_TEMP_MOTOR(beta) (1.0 / ((logf(NTC_RES_MOTOR(ADC_Value[ADC_IND_TEMP_MOTOR]) / 10000.0) / beta) + (1.0 / 298.15)) - 273.15)
#define NTC_RES_MOTOR(adc_val) (10000.0 / ((4095.0 / (float)adc_val) - 1.0)) // Motor temp sensor on low side
#define NTC_TEMP_MOTOR(beta) (1.0 / ((logf(NTC_RES_MOTOR(ADC_Value[ADC_IND_TEMP_MOTOR]) / 10000.0) / beta) + (1.0 / 298.15)) - 273.15)
// Voltage on ADC channel
#define ADC_VOLTS(ch) ((float)ADC_Value[ch] / 4096.0 * V_REG)
@ -118,10 +118,10 @@
#endif
// Unused
#define LED_GREEN_GPIO GPIOB
#define LED_GREEN_GPIO GPIOB
#define LED_GREEN_PIN 0
#define LED_RED_GPIO GPIOB
#define LED_RED_PIN 1
#define LED_RED_PIN 1
#define LED_GREEN_ON() palSetPad(LED_GREEN_GPIO, LED_GREEN_PIN)
#define LED_GREEN_OFF() palClearPad(LED_GREEN_GPIO, LED_GREEN_PIN)
@ -130,17 +130,17 @@
// Phase filter
#define PHASE_FILTER_OFF() palSetPad(GPIOB, 3); palSetPad(GPIOB, 4); palSetPad(GPIOB, 5)
#define PHASE_FILTER_ON() palClearPad(GPIOB, 3); palClearPad(GPIOB, 4); palClearPad(GPIOB, 5)
#define PHASE_FILTER_ON() palClearPad(GPIOB, 3); palClearPad(GPIOB, 4); palClearPad(GPIOB, 5)
// Current filter
#define CURRENT_FILTER_OFF() palSetPad(GPIOH, 1); palSetPad(GPIOC, 2)
#define CURRENT_FILTER_ON() palClearPad(GPIOH, 1); palClearPad(GPIOC, 2)
#define CURRENT_FILTER_OFF() palSetPad(GPIOH, 1); palSetPad(GPIOC, 2)
#define CURRENT_FILTER_ON() palClearPad(GPIOH, 1); palClearPad(GPIOC, 2)
// Aux
#define AUX_GPIO GPIOC
#define AUX_PIN 12
#define AUX_ON() palSetPad(AUX_GPIO, AUX_PIN)
#define AUX_OFF() palClearPad(AUX_GPIO, AUX_PIN)
#define AUX_GPIO GPIOC
#define AUX_PIN 12
#define AUX_ON() palSetPad(AUX_GPIO, AUX_PIN)
#define AUX_OFF() palClearPad(AUX_GPIO, AUX_PIN)
// COMM-port ADC GPIOs
#define HW_ADC_EXT_GPIO GPIOA
@ -149,7 +149,7 @@
#define HW_ADC_EXT2_PIN 6
// UART Peripheral
#define HW_UART_DEV SD3
#define HW_UART_DEV SD3
#define HW_UART_GPIO_AF GPIO_AF_USART3
#define HW_UART_TX_PORT GPIOB
#define HW_UART_TX_PIN 10
@ -158,7 +158,7 @@
// SPI pins
#define HW_SPI_DEV SPID1
#define HW_SPI_DEV SPID1
#define HW_SPI_GPIO_AF GPIO_AF_SPI1
#define HW_SPI_PORT_NSS GPIOB
#define HW_SPI_PIN_NSS 11
@ -171,7 +171,7 @@
// I2C Peripheral
#define HW_I2C_DEV I2CD2
#define HW_I2C_DEV I2CD2
#define HW_I2C_GPIO_AF GPIO_AF_I2C2
#define HW_I2C_SCL_PORT GPIOB
#define HW_I2C_SCL_PIN 10
@ -185,7 +185,7 @@
#define HW_HALL_ENC_PIN2 7
#define HW_HALL_ENC_GPIO3 GPIOC
#define HW_HALL_ENC_PIN3 8
#define HW_ENC_TIM TIM3
#define HW_ENC_TIM TIM3
#define HW_ENC_TIM_AF GPIO_AF_TIM3
#define HW_ENC_TIM_CLK_EN() RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE)
#define HW_ENC_EXTI_PORTSRC EXTI_PortSourceGPIOC
@ -200,17 +200,17 @@
#define HW_USE_SERVO_TIM4
#define HW_ICU_TIMER TIM4
#define HW_ICU_TIM_CLK_EN() RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE)
#define HW_ICU_DEV ICUD4
#define HW_ICU_DEV ICUD4
#define HW_ICU_CHANNEL ICU_CHANNEL_1
#define HW_ICU_GPIO_AF GPIO_AF_TIM4
#define HW_ICU_GPIO GPIOB
#define HW_ICU_PIN 6
#define HW_ICU_GPIO GPIOB
#define HW_ICU_PIN 6
// Measurement macros
#define ADC_V_L1 ADC_Value[ADC_IND_SENS1]
#define ADC_V_L2 ADC_Value[ADC_IND_SENS2]
#define ADC_V_L3 ADC_Value[ADC_IND_SENS3]
#define ADC_V_ZERO (ADC_Value[ADC_IND_VIN_SENS] / 2)
#define ADC_V_L1 ADC_Value[ADC_IND_SENS1]
#define ADC_V_L2 ADC_Value[ADC_IND_SENS2]
#define ADC_V_L3 ADC_Value[ADC_IND_SENS3]
#define ADC_V_ZERO (ADC_Value[ADC_IND_VIN_SENS] / 2)
// Macros
#define READ_HALL1() palReadPad(HW_HALL_ENC_GPIO1, HW_HALL_ENC_PIN1)
@ -218,26 +218,26 @@
#define READ_HALL3() palReadPad(HW_HALL_ENC_GPIO3, HW_HALL_ENC_PIN3)
// Override dead time. See the stm32f4 reference manual for calculating this value.
#define HW_DEAD_TIME_NSEC 0.0 // FD6288Q has 200ns built in deadtime
#define HW_DEAD_TIME_NSEC 0.0 // FD6288Q has 200ns built in deadtime
// Default setting overrides
#ifndef MCCONF_L_MIN_VOLTAGE
#define MCCONF_L_MIN_VOLTAGE 8.0 // Minimum input voltage
#define MCCONF_L_MIN_VOLTAGE 8.0 // Minimum input voltage
#endif
#ifndef MCCONF_L_MAX_VOLTAGE
#define MCCONF_L_MAX_VOLTAGE 56.0 // Maximum input voltage
#define MCCONF_L_MAX_VOLTAGE 55.0 // Maximum input voltage
#endif
#ifndef MCCONF_DEFAULT_MOTOR_TYPE
#define MCCONF_DEFAULT_MOTOR_TYPE MOTOR_TYPE_FOC
#define MCCONF_DEFAULT_MOTOR_TYPE MOTOR_TYPE_FOC
#endif
#ifndef MCCONF_FOC_F_ZV
#define MCCONF_FOC_F_ZV 35000.0
#define MCCONF_FOC_F_ZV 25000.0 // Switching frequency reduced to allow rise time of low side shunts
#endif
#ifndef MCCONF_L_MAX_ABS_CURRENT
#define MCCONF_L_MAX_ABS_CURRENT 80.0 // The maximum absolute current above which a fault is generated
#define MCCONF_L_MAX_ABS_CURRENT 80.0 // The maximum absolute current above which a fault is generated
#endif
#ifndef MCCONF_FOC_SAMPLE_V0_V7
#define MCCONF_FOC_SAMPLE_V0_V7 false // Run control loop in both v0 and v7 (requires phase shunts)
#define MCCONF_FOC_SAMPLE_V0_V7 false // Run control loop in both v0 and v7 (requires phase shunts)
#endif
#ifndef MCCONF_L_CURRENT_MAX
#define MCCONF_L_CURRENT_MAX 20.0 // Current limit in Amperes (Upper)
@ -246,37 +246,37 @@
#define MCCONF_L_CURRENT_MIN -20.0 // Current limit in Amperes (Lower)
#endif
#ifndef MCCONF_L_IN_CURRENT_MAX
#define MCCONF_L_IN_CURRENT_MAX 20.0 // Input current limit in Amperes (Upper)
#define MCCONF_L_IN_CURRENT_MAX 20.0 // Input current limit in Amperes (Upper)
#endif
#ifndef MCCONF_L_IN_CURRENT_MIN
#define MCCONF_L_IN_CURRENT_MIN -10.0 // Input current limit in Amperes (Lower)
#define MCCONF_L_IN_CURRENT_MIN -10.0 // Input current limit in Amperes (Lower)
#endif
// Setting limits
#ifdef HW_A50S_12S
#define HW_NAME "A50S V2.1 12S"
#define HW_NAME "A50S V2.1 12S"
#define HW_LIM_CURRENT -40.0, 40.0
#define HW_LIM_CURRENT_IN -30.0, 30.0
#define HW_LIM_CURRENT_ABS 0.0, 80.0
#define HW_LIM_VIN 4.0, 56.0
#define HW_LIM_ERPM -200e3, 200e3
#define HW_LIM_VIN 4.0, 56.0
#define HW_LIM_ERPM -200e3, 200e3
#define HW_LIM_DUTY_MIN 0.0, 0.1
#define HW_LIM_DUTY_MAX 0.0, 0.99
#define HW_LIM_DUTY_MAX 0.0, 0.93 // Duty cycle limited to allow rise time of low side shunts
#define HW_LIM_TEMP_FET -40.0, 100.0
#endif
#ifdef HW_A50S_6S
#define HW_NAME "A50S V2.1 6S"
#define HW_NAME "A50S V2.1 6S"
#define HW_LIM_CURRENT -50.0, 50.0
#define HW_LIM_CURRENT_IN -30.0, 30.0
#define HW_LIM_CURRENT_ABS 0.0, 80.0
#define HW_LIM_VIN 4.0, 28.0
#define HW_LIM_ERPM -200e3, 200e3
#define HW_LIM_VIN 4.0, 28.0
#define HW_LIM_ERPM -200e3, 200e3
#define HW_LIM_DUTY_MIN 0.0, 0.1
#define HW_LIM_DUTY_MAX 0.0, 0.99
#define HW_LIM_DUTY_MAX 0.0, 0.93 // Duty cycle limited to allow rise time of low side shunts
#define HW_LIM_TEMP_FET -40.0, 100.0
#endif