資源簡(jiǎn)介
基于STM32F103R8的PID算法例程,完整工程源碼,PWM輸出控制信號(hào),ADC輸入反饋信號(hào),形成閉環(huán)控制。

代碼片段和文件信息
/********************?STMicroelectronics?********************
*?File?Name??????????:?main.c
*?Author?????????????:?杜應(yīng)彪
*?Date?First?Issued??:?09-12-17
*?Description????????:?Main?program?body
*************************************************************/
/*?Includes?------------------------------------------------------------------*/
#include?“stm32f10x_lib.h“
#include?“Driver/adc.h“
#include?“Driver/PWM.h“
#include?“Driver/pid.h“
/*
ADC=12*(3.3/23.3)*(2.483/4096)=0x2bc?-->ADC>>1=1349
*/?
u16?referenceValue=1375;??//12V經(jīng)3.3/23.3的分壓后通過(guò)ADC計(jì)算的理論值A(chǔ)DC的參考?jí)菏?.5V
//extern?u16?TIM1_CCR1_Val; ??//PWM占空比設(shè)置
//extern?u16?TIM2_CCR1_Val;
//extern?u16?TIM3_CCR1_Val;?
extern?u16?Duty_Value; ??//PWM占空比設(shè)置?
RCC_ClocksTypeDef?RCC_ClockFreq;
ErrorStatus?HSEStartUpStatus;
NVIC_InitTypeDef?NVIC_InitStructure;
extern?TIM1_OCInitTypeDef??TIM1_OCInitStructure;
extern?PID?sPID;
?
/*?Private?function?prototypes?-----------------------------------------------*/
void?RCC_Configuration(void);
void?GPIO_Configuration(void);
void?NVIC_Configuration(void);
void?IRQConfig(void);
????
/*?Private?functions?---------------------------------------------------------*/
void?Delay(u16?msec)
{
??while(msec--);
}
#define?N?12?
//---------------ADC的濾波方法----------------
//--------采用中值平均濾波方法,防止脈沖干擾------
u16?ADC_Filter(void)?
{?
???u8?countij;?
???u16?value_buf[N]temp;?
???u16??sum=0;?
???for??(count=0;count ???{?
??value_buf[count]?=?ADC_ConvertValue()>>1; ???//去掉最低2bit,使其數(shù)據(jù)值穩(wěn)定準(zhǔn)確
??//Delay(10);
???}?
???for?(j=0;j ???{?
??????for?(i=0;i ??????{?
?????????if?(?value_buf[i]>value_buf[i+1]?)?
?????????{?
????????????temp?=?value_buf[i];?
????????????value_buf[i]?=?value_buf[i+1];??
?????????????value_buf[i+1]?=?temp;?
?????????}?
??????}?
???}?
???for(count=2;count ??????sum?+=?value_buf[count];?
???return?(u16)(sum/(N-4));?
}?
/*
//-------求絕對(duì)值--------
u16?my_abs(vs16?value)
{
??if?(value<0)?
????return?(-value);
??else?
????return?value;
}
//---------PID與PWM算法---------------
//---------說(shuō)明:暫有問(wèn)題---------------
u8?My_PIDCtrl(u16?MeasureADCu16?RefADC)
{
???vs16?Err;
???Err=MeasureADC-RefADC;
???if(my_abs(Err)>10)?
????{
??if(MeasureADC>RefADC)
????return?0; ??//當(dāng)采樣的電壓大于參考的電壓值,則應(yīng)該增大PWM
??else?if?(MeasureADC ????return?1;?????//當(dāng)采樣的電壓小于參考的電壓值,則應(yīng)該減小PWM
}
???else
????return?0xaa;
}
?*/
/*******************************************************************************
*?Function?Name??:?main
*?Description????:?Main?program
*?Input??????????:?None
*?Output?????????:?None
*?Return?????????:?None
*******************************************************************************/
int?main(void)
{
int?measurementValue=0;
int?PIDoutputValue=Duty_init;
//u8??ISInc_Dec;
//u8?ii=1;
??/*?System?Clocks?Configuration?*/
??RCC_Configuration();
??/*?GPIO?Configuration?*/
??GPIO_Configuration();
??/*?NVIC?configuration?*/
??NVI
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-11-22?14:51??STM32_PID\
?????目錄???????????0??2014-11-22?14:51??STM32_PID\listing\
?????文件???????36557??2010-01-05?20:09??STM32_PID\listing\STM32F10x.lst
?????文件???????73835??2010-01-05?20:09??STM32_PID\listing\tim1.map
?????目錄???????????0??2014-11-22?14:52??STM32_PID\obj\
?????文件??????????19??2010-01-05?20:10??STM32_PID\obj\ExtDll.iex
?????文件????????5180??2010-01-05?20:09??STM32_PID\obj\STM32F10x.o
?????文件???????41593??2010-01-05?20:09??STM32_PID\obj\adc.crf
?????文件?????????419??2010-01-05?20:09??STM32_PID\obj\adc.d
?????文件???????49736??2010-01-05?20:09??STM32_PID\obj\adc.o
?????文件???????88259??2010-01-05?20:09??STM32_PID\obj\main.crf
?????文件?????????625??2010-01-05?20:09??STM32_PID\obj\main.d
?????文件???????93968??2010-01-05?20:09??STM32_PID\obj\main.o
?????文件?????????816??2010-01-05?20:09??STM32_PID\obj\pid.crf
?????文件??????????56??2010-01-05?20:09??STM32_PID\obj\pid.d
?????文件????????7804??2010-01-05?20:09??STM32_PID\obj\pid.o
?????文件???????60514??2010-01-04?10:49??STM32_PID\obj\pwm.crf
?????文件?????????370??2010-01-04?10:49??STM32_PID\obj\pwm.d
?????文件???????58008??2010-01-04?10:49??STM32_PID\obj\pwm.o
?????文件???????42680??2010-01-05?20:09??STM32_PID\obj\pwm_2.crf
?????文件?????????353??2010-01-05?20:09??STM32_PID\obj\pwm_2.d
?????文件???????42484??2010-01-05?20:09??STM32_PID\obj\pwm_2.o
?????文件???????41600??2010-01-05?20:09??STM32_PID\obj\stm32f10x_adc.crf
?????文件?????????390??2010-01-05?20:09??STM32_PID\obj\stm32f10x_adc.d
?????文件???????51360??2010-01-05?20:09??STM32_PID\obj\stm32f10x_adc.o
?????文件???????32629??2010-01-05?20:09??STM32_PID\obj\stm32f10x_dma.crf
?????文件?????????390??2010-01-05?20:09??STM32_PID\obj\stm32f10x_dma.d
?????文件???????39072??2010-01-05?20:09??STM32_PID\obj\stm32f10x_dma.o
?????文件???????19342??2010-01-05?20:09??STM32_PID\obj\stm32f10x_flash.crf
?????文件?????????367??2010-01-05?20:09??STM32_PID\obj\stm32f10x_flash.d
?????文件???????23576??2010-01-05?20:09??STM32_PID\obj\stm32f10x_flash.o
............此處省略96個(gè)文件信息
評(píng)論
共有 條評(píng)論