標(biāo)題:
STM32F103C8T6單片機(jī)PID控制程序
[打印本頁(yè)]
作者:
lmalma
時(shí)間:
2023-3-12 21:43
標(biāo)題:
STM32F103C8T6單片機(jī)PID控制程序
適合于 STM32 單片機(jī) 型號(hào) F103C8T6 PID控制程序
單片機(jī)源程序如下:
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "PWM.h"
#include "stm32f10x_tim.h"
#include "key.h"
#include "pid.h"
//捕獲TIM4通道二PB7的頻率和占空比
//PA8輸出PWM驅(qū)動(dòng)脈沖
//按鍵一設(shè)置初始轉(zhuǎn)速為3000;按鍵二 增加1000轉(zhuǎn)速 按鍵3 降低1000轉(zhuǎn)速
extern void TIM3_PWM_Init(u16 arr,u16 psc);
extern void TIM4_PWMINPUT_INIT(u16 arr,u16 psc);
extern u16 PWM0_TEMP;
extern u16 period;
extern u16 duty ;
extern u8 CollectFlag ;
float SetSpeed; //定義設(shè)定值
float ActualSpeed; //定義實(shí)際值
float err; //定義偏差值
float err_next; //定義上一個(gè)偏差值
float err_last; //定義最上前的偏差值
float incrementSpeed;
float Kp,Ki,Kd;
unsigned int rpm_set;
int main(void)
{
u8 b,c;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
PID_init();
KEY_Init();
SystemInit();
delay_init(); //延時(shí)初始化
NVIC_Configuration(); //中斷配置
uart_init(9600); //串口初始化
DIR_Init();
TIM4_PWMINPUT_INIT(0xffff,72-1); //pwm輸入初始化以1M的頻率捕捉
TIM1_PWM_Init(1000-1,20); //pwm頻率調(diào)節(jié)
//TIM_SetCompare1(TIM1,2000); //初始轉(zhuǎn)速設(shè)定
delay_ms(300);
delay_ms(1000);
rpm_set=3000; //設(shè)轉(zhuǎn)速給定
TIM3_Int_Init(50000,72-1); //pid運(yùn)算進(jìn)中斷速率設(shè)置
//TIM_SetCompare1(TIM1,800);
while(1)
{
b=KEY_Scan(0);
delay_ms(100);
if(1)
{ //USART_SendData(USART1,'a');
//USART_SendData(USART1,(u8)err);
// printf("duty = %d%% \r\n",duty*100/period); //打印占空比
// printf("s = %dr/min\r\n",3750000/period);//打印周期另一種叫法
if(period<1.0)
printf("#%f",0.0);
else printf("n=%d\n",3750000/period); //打印速度值
}
if(b==1) rpm_set=3000; //設(shè)轉(zhuǎn)速
if(b==2) rpm_set=rpm_set+1000;
if(b==3) rpm_set=rpm_set-1000;
if(rpm_set>=9000) rpm_set=9000;
if(rpm_set<=1000) rpm_set=1000;
}
}
復(fù)制代碼
Keil代碼下載:
STM32F103C8T6PID控制程序.7z
(198.01 KB, 下載次數(shù): 67)
2023-3-13 00:37 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1