1 Commits

Author SHA1 Message Date
aa440d63a1 Experiment 1; Looks good 2023-08-09 04:38:55 +03:00
3 changed files with 31 additions and 64 deletions

View File

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

View File

@@ -38,10 +38,8 @@ void MX_TIM1_Init(void)
/* USER CODE END TIM1_Init 0 */
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_SlaveConfigTypeDef sSlaveConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_IC_InitTypeDef sConfigIC = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
@@ -49,36 +47,23 @@ void MX_TIM1_Init(void)
/* USER CODE END TIM1_Init 1 */
htim1.Instance = TIM1;
htim1.Init.Prescaler = 640-1;
htim1.Init.Prescaler = 1;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 1000-1;
htim1.Init.Period = 100-1;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
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)
{
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)
{
Error_Handler();
}
if (HAL_TIM_OnePulse_Init(&htim1, TIM_OPMODE_SINGLE) != HAL_OK)
{
Error_Handler();
}
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_COMBINED_RESETTRIGGER;
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;
sSlaveConfig.InputTrigger = TIM_TS_TI1FP1;
sSlaveConfig.TriggerPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_RISING;
sSlaveConfig.TriggerFilter = 0;
if (HAL_TIM_SlaveConfigSynchro(&htim1, &sSlaveConfig) != HAL_OK)
{
@@ -91,16 +76,8 @@ void MX_TIM1_Init(void)
{
Error_Handler();
}
sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
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.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

View File

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