Experiment 1; Looks good

This commit is contained in:
2023-08-09 04:38:55 +03:00
parent 01c8f289ea
commit aa440d63a1
3 changed files with 31 additions and 64 deletions

View File

@@ -190,13 +190,13 @@ const presets_t presets[4] = {
}; };
PIDController pid = { PIDController pid = {
.Kp = 40.0f, .Kp = 8.0f,
.Ki = 1.0f, .Ki = 0.2f,
.Kd = 3.0f, .Kd = 0.5f,
.T = 0.25f, //2 times per second .T = 0.25f, //2 times per second
.tau = 0.2f, //Low-pass filter (0 - no filter) .tau = 0.2f, //Low-pass filter (0 - no filter)
.limMin = -100.0f, .limMin = -100.0f,
.limMax = 1000.0f - P_WIDTH - P_DELAY - 1 // 949.0 .limMax = 100.0f
}; };
/* USER CODE END Variables */ /* USER CODE END Variables */
@@ -536,14 +536,13 @@ void clockTick(void *argument)
//PID //PID
PID_Update(&pid, aimTemperature, Temperature); PID_Update(&pid, aimTemperature, Temperature);
if (pid.out >= 0.0f) { if (pid.out >= 0.0f) {
pulse = (uint16_t)(pid.limMax - pid.out)+P_DELAY; pulse = (uint16_t)pid.out;
if (fanActive) setFansSpeed(0); if (fanActive) setFansSpeed(0);
} }
else { else {
pulse = 1020; pulse = 0;
setFansSpeed((uint8_t)(pid.out * -1)); setFansSpeed((uint8_t)(pid.out * -1));
} }
TIM1->ARR = pulse+P_WIDTH;
TIM1->CCR2 = pulse; TIM1->CCR2 = pulse;
//Draw PID value //Draw PID value
@@ -930,7 +929,7 @@ void stopHeater(void) {
if (osTimerIsRunning(secTimerHandle)) osTimerStop(secTimerHandle); if (osTimerIsRunning(secTimerHandle)) osTimerStop(secTimerHandle);
aimTemperature = 0.0f; aimTemperature = 0.0f;
PID_Init(&pid); PID_Init(&pid);
TIM1->CCR2 = 1020; TIM1->CCR2 = 0;
Running = 0; Running = 0;
} }
/* USER CODE END Application */ /* USER CODE END Application */

View File

@@ -38,10 +38,8 @@ void MX_TIM1_Init(void)
/* USER CODE END TIM1_Init 0 */ /* USER CODE END TIM1_Init 0 */
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_SlaveConfigTypeDef sSlaveConfig = {0}; TIM_SlaveConfigTypeDef sSlaveConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_IC_InitTypeDef sConfigIC = {0};
TIM_OC_InitTypeDef sConfigOC = {0}; TIM_OC_InitTypeDef sConfigOC = {0};
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
@@ -49,36 +47,23 @@ void MX_TIM1_Init(void)
/* USER CODE END TIM1_Init 1 */ /* USER CODE END TIM1_Init 1 */
htim1.Instance = TIM1; htim1.Instance = TIM1;
htim1.Init.Prescaler = 640-1; htim1.Init.Prescaler = 1;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP; htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 1000-1; htim1.Init.Period = 100-1;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0; htim1.Init.RepetitionCounter = 0;
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim1) != HAL_OK) if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
} }
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_IC_Init(&htim1) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
} }
if (HAL_TIM_OnePulse_Init(&htim1, TIM_OPMODE_SINGLE) != HAL_OK) sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
{
Error_Handler();
}
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_COMBINED_RESETTRIGGER;
sSlaveConfig.InputTrigger = TIM_TS_TI1FP1; sSlaveConfig.InputTrigger = TIM_TS_TI1FP1;
sSlaveConfig.TriggerPolarity = TIM_INPUTCHANNELPOLARITY_RISING; sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_RISING;
sSlaveConfig.TriggerFilter = 0; sSlaveConfig.TriggerFilter = 0;
if (HAL_TIM_SlaveConfigSynchro(&htim1, &sSlaveConfig) != HAL_OK) if (HAL_TIM_SlaveConfigSynchro(&htim1, &sSlaveConfig) != HAL_OK)
{ {
@@ -91,16 +76,8 @@ void MX_TIM1_Init(void)
{ {
Error_Handler(); Error_Handler();
} }
sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING; sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI; sConfigOC.Pulse = 0;
sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
sConfigIC.ICFilter = 0;
if (HAL_TIM_IC_ConfigChannel(&htim1, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM2;
sConfigOC.Pulse = 1020;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

View File

@@ -69,21 +69,19 @@ Mcu.Pin30=PB9
Mcu.Pin31=VP_FREERTOS_VS_CMSIS_V2 Mcu.Pin31=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin32=VP_SYS_VS_tim6 Mcu.Pin32=VP_SYS_VS_tim6
Mcu.Pin33=VP_SYS_VS_DBSignals Mcu.Pin33=VP_SYS_VS_DBSignals
Mcu.Pin34=VP_TIM1_VS_ControllerModeCombinedResetTrigger Mcu.Pin34=VP_TIM1_VS_ControllerModeClock
Mcu.Pin35=VP_TIM1_VS_ClockSourceINT Mcu.Pin35=VP_TIM14_VS_ClockSourceINT
Mcu.Pin36=VP_TIM1_VS_OPM Mcu.Pin36=VP_TIM15_VS_ClockSourceINT
Mcu.Pin37=VP_TIM14_VS_ClockSourceINT Mcu.Pin37=VP_TIM16_VS_ClockSourceINT
Mcu.Pin38=VP_TIM15_VS_ClockSourceINT Mcu.Pin38=VP_TIM16_VS_OPM
Mcu.Pin39=VP_TIM16_VS_ClockSourceINT Mcu.Pin39=VP_TIM17_VS_ClockSourceINT
Mcu.Pin4=PC1 Mcu.Pin4=PC1
Mcu.Pin40=VP_TIM16_VS_OPM
Mcu.Pin41=VP_TIM17_VS_ClockSourceINT
Mcu.Pin5=PC2 Mcu.Pin5=PC2
Mcu.Pin6=PC3 Mcu.Pin6=PC3
Mcu.Pin7=PA0 Mcu.Pin7=PA0
Mcu.Pin8=PA1 Mcu.Pin8=PA1
Mcu.Pin9=PA2 Mcu.Pin9=PA2
Mcu.PinsNb=42 Mcu.PinsNb=40
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32G070RBTx Mcu.UserName=STM32G070RBTx
@@ -296,9 +294,8 @@ SH.S_TIM15_CH1.0=TIM15_CH1,PWM Generation1 CH1
SH.S_TIM15_CH1.ConfNb=1 SH.S_TIM15_CH1.ConfNb=1
SH.S_TIM17_CH1.0=TIM17_CH1,PWM Generation1 CH1 SH.S_TIM17_CH1.0=TIM17_CH1,PWM Generation1 CH1
SH.S_TIM17_CH1.ConfNb=1 SH.S_TIM17_CH1.ConfNb=1
SH.S_TIM1_CH1.0=TIM1_CH1,Input_Capture1_from_TI1 SH.S_TIM1_CH1.0=TIM1_CH1,TriggerSource_TI1FP1
SH.S_TIM1_CH1.1=TIM1_CH1,TriggerSource_TI1FP1 SH.S_TIM1_CH1.ConfNb=1
SH.S_TIM1_CH1.ConfNb=2
SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2 SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2
SH.S_TIM1_CH2.ConfNb=1 SH.S_TIM1_CH2.ConfNb=1
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16
@@ -308,19 +305,17 @@ SPI2.Direction=SPI_DIRECTION_2LINES_RXONLY
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler
SPI2.Mode=SPI_MODE_MASTER SPI2.Mode=SPI_MODE_MASTER
SPI2.VirtualType=VM_MASTER SPI2.VirtualType=VM_MASTER
TIM1.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE TIM1.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM1.AutomaticOutput=TIM_AUTOMATICOUTPUT_DISABLE TIM1.AutomaticOutput=TIM_AUTOMATICOUTPUT_DISABLE
TIM1.BreakState=TIM_BREAK_DISABLE TIM1.BreakState=TIM_BREAK_DISABLE
TIM1.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1
TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM1.ICPolarity_CH1=TIM_INPUTCHANNELPOLARITY_RISING TIM1.IPParameters=AutoReloadPreload,Prescaler,Period,BreakState,AutomaticOutput,OCPolarity_2,Channel-PWM Generation2 CH2,OCMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation2 CH2,OC2Preload_PWM
TIM1.IPParameters=AutoReloadPreload,Prescaler,Period,BreakState,AutomaticOutput,Channel-Input_Capture1_from_TI1,ICPolarity_CH1,OCPolarity_2,Channel-PWM Generation2 CH2,OCMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation2 CH2,OC2Preload_PWM
TIM1.OC2Preload_PWM=DISABLE TIM1.OC2Preload_PWM=DISABLE
TIM1.OCMode_PWM-PWM\ Generation2\ CH2=TIM_OCMODE_PWM2 TIM1.OCMode_PWM-PWM\ Generation2\ CH2=TIM_OCMODE_PWM1
TIM1.OCPolarity_2=TIM_OCPOLARITY_HIGH TIM1.OCPolarity_2=TIM_OCPOLARITY_HIGH
TIM1.Period=1000-1 TIM1.Period=100-1
TIM1.Prescaler=640-1 TIM1.Prescaler=1
TIM1.Pulse-PWM\ Generation2\ CH2=1020 TIM1.Pulse-PWM\ Generation2\ CH2=0
TIM14.Channel=TIM_CHANNEL_1 TIM14.Channel=TIM_CHANNEL_1
TIM14.IPParameters=Channel,Prescaler,Period,Pulse TIM14.IPParameters=Channel,Prescaler,Period,Pulse
TIM14.Period=100-1 TIM14.Period=100-1
@@ -357,12 +352,8 @@ VP_TIM16_VS_OPM.Mode=OPM_bit
VP_TIM16_VS_OPM.Signal=TIM16_VS_OPM VP_TIM16_VS_OPM.Signal=TIM16_VS_OPM
VP_TIM17_VS_ClockSourceINT.Mode=Enable_Timer VP_TIM17_VS_ClockSourceINT.Mode=Enable_Timer
VP_TIM17_VS_ClockSourceINT.Signal=TIM17_VS_ClockSourceINT VP_TIM17_VS_ClockSourceINT.Signal=TIM17_VS_ClockSourceINT
VP_TIM1_VS_ClockSourceINT.Mode=Internal VP_TIM1_VS_ControllerModeClock.Mode=Clock Mode
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT VP_TIM1_VS_ControllerModeClock.Signal=TIM1_VS_ControllerModeClock
VP_TIM1_VS_ControllerModeCombinedResetTrigger.Mode=Combined_Reset_Trigger_Mode
VP_TIM1_VS_ControllerModeCombinedResetTrigger.Signal=TIM1_VS_ControllerModeCombinedResetTrigger
VP_TIM1_VS_OPM.Mode=OPM_bit
VP_TIM1_VS_OPM.Signal=TIM1_VS_OPM
board=custom board=custom
rtos.0.ip=FREERTOS rtos.0.ip=FREERTOS
isbadioc=false isbadioc=false