久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
電子設計競賽pid四軸(王者版)stm32源碼與資料下載
[打印本頁]
作者:
myown
時間:
2017-8-10 21:51
標題:
電子設計競賽pid四軸(王者版)stm32源碼與資料下載
0.png
(55.24 KB, 下載次數: 56)
下載附件
2017-8-10 23:44 上傳
轉速、電流雙閉環直流調速系統
和調節器的工程設計方法
2.1
轉速、電流雙閉環直流調速系統及其靜特性
采用PI調節的單個轉速閉環直流調速系統可以在保證系統穩定的前提下實現轉速無靜差。但是,如果對系統的動態性能要求較高,單閉環系統就難以滿足需要,這主要是因為在單閉環系統中不能控制電流和轉矩的動態過程。電流截止負反饋環節是專門用來控制電流的,并不能很理想地控制電流的動態波形,圖2-1a)。
在起動過程中,始終保持電流(轉矩)為允許的最大值,使電力拖動系統以最大的加速度起動,到達穩態轉速時,立即讓電流降下來,使轉矩馬上與負載相平衡,從而轉入穩態運行。這樣的理想起動過程波形示于圖2-1b。
為了實現在允許條件下的最快起動,關鍵是要獲得一段使電流保持為最大值的恒流過程。按照反饋控制規律,采用某個物理量的負反饋就可以保持該量基本不變,那么,采用電流負反饋應該能夠得到近似的恒流過程。應該在起動過程中只有電流負反饋,沒有轉速負反饋,達到穩態轉速后,又希望只要轉速負反饋,不再讓電流負反饋發揮作用。
0.png
(36.23 KB, 下載次數: 66)
下載附件
2017-8-10 23:45 上傳
stm32單片機源程序如下:
#include"pid.h"
#include"fuzzy.h"
#include"pwm.h"
#include"dac.h"
PIDtypedef PID1; //PID結構體
PIDtypedef PID2;
PIDtypedef PID3;
PIDtypedef PID4;
extern u8 start_flag;
extern u16 pwm1,pwm2,pwm3,pwm4;
void PIDperiodinit(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); //時鐘使能
//定時器TIM6初始化
TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數的預分頻值
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設置時鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計數模式
TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); //根據指定的參數初始化TIMx的時間基數單位
TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE ); //使能指定的TIM3中斷,允許更新中斷
//中斷優先級NVIC設置
NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn; //TIM3中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //先占優先級1級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //從優先級1級
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
// TIM_Cmd(TIM6, ENABLE); //放在主程序中使能
}
void TIM6_IRQHandler(void) // 采樣時間到,中斷處理函數
{
if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)//更新中斷
{
frequency1=1000000/period_TIM4 ; //通過捕獲的波形的周期算出頻率
frequency2=1000000/period_TIM1 ;
frequency3=1000000/period_TIM2 ;
frequency4=1000000/period_TIM5 ;
/********PID1處理**********/
PID1.sum_error+=(incPIDcalc(&PID1,frequency1)); //計算增量并累加
pwm1=PID1.sum_error*4.6875 ; //pwm1 代表將要輸出PWM的占空比
frequency1=0; //清零
period_TIM4=0;
/********PID2處理**********/
PID2.sum_error+=(incPIDcalc(&PID2,frequency2)); //計算增量并累加 Y=Y+Y'
pwm2=PID2.sum_error*4.6875 ; //將要輸出PWM的占空比
frequency2=0;
period_TIM1=0;
/********PID3處理**********/
PID3.sum_error+=(incPIDcalc(&PID3,frequency3)); //常規PID控制
pwm3=PID3.sum_error*4.6875 ; //將要輸出PWM的占空比
frequency3=0;
period_TIM2=0;
/********PID4處理**********/
PID4.sum_error+=(incPIDcalc(&PID4,frequency4)); //計算增量并累加
pwm4=PID4.sum_error*4.6875 ; //將要輸出PWM的占空比
frequency4=0;
period_TIM5=0;
}
TIM_SetCompare(pwm1,pwm2,pwm3,pwm4); //重新設定PWM值
TIM_ClearITPendingBit(TIM6, TIM_IT_Update); //清除中斷標志位
}
void incPIDinit(void)
{
//PID1參數初始化
PID1.sum_error=0;
PID1.last_error=0;
PID1.prev_error=0;
PID1.proportion=0;
PID1.integral=0;
PID1.derivative=0;
PID1.setpoint=0;
//PID2參數初始化
PID2.sum_error=0;
PID2.last_error=0;
PID2.prev_error=0;
PID2.proportion=0;
PID2.integral=0;
PID2.derivative=0;
PID2.setpoint=0;
//PID3參數初始化
PID3.sum_error=0;
PID3.last_error=0;
PID3.prev_error=0;
PID3.proportion=0;
PID3.integral=0;
PID3.derivative=0;
PID3.setpoint=0;
//PID4參數初始化
PID4.sum_error=0;
PID4.last_error=0;
PID4.prev_error=0;
PID4.proportion=0;
PID4.integral=0;
PID4.derivative=0;
PID4.setpoint=0;
}
void PID_setpoint(PIDtypedef*PIDx,u16 setvalue)
{
PIDx->setpoint=setvalue;
}
int incPIDcalc(PIDtypedef *PIDx,u16 nextpoint)
{
int iError,iincpid;
iError=PIDx->setpoint-nextpoint; //當前誤差
/*iincpid= //增量計算
PIDx->proportion*iError //e[k]項
-PIDx->integral*PIDx->last_error //e[k-1]
+PIDx->derivative*PIDx->prev_error;//e[k-2]
*/
iincpid= //增量計算
PIDx->proportion*(iError-PIDx->last_error)
+PIDx->integral*iError
+PIDx->derivative*(iError-2*PIDx->last_error+PIDx->prev_error);
PIDx->prev_error=PIDx->last_error; //存儲誤差,便于下次計算
PIDx->last_error=iError;
return(iincpid) ;
}
void PID_set(float pp,float ii,float dd)
{
PID1.proportion=pp;
PID1.integral=ii;
PID1.derivative=dd;
PID2.proportion=pp;
PID2.integral=ii;
PID2.derivative=dd;
PID3.proportion=pp;
PID3.integral=ii;
PID3.derivative=dd;
PID4.proportion=pp;
PID4.integral=ii;
PID4.derivative=dd;
}
/*最后設定四個輪子的轉速,轉速 1rad/s等價于122.23個脈沖每秒的轉速*/
void set_speed(float W1,float W2,float W3,float W4)
{
float temp;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
pid.rar
(249.46 KB, 下載次數: 45)
2017-8-10 21:49 上傳
點擊文件名下載附件
王者pid
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
五月激情综合网
|
97精品在线
|
一区二区三区网站
|
久热精品视频在线观看
|
欧美成人精品一区二区三区
|
日韩视频在线观看免费
|
日本欧美久久久久免费播放网
|
欧美午夜精品一区二区三区
|
免费网站观看www在线观看
|
在线视频日韩
|
黄色大片av
|
完全免费av
|
国产尤物视频
|
五月婷婷亚洲
|
91色漫
|
人人草在线视频
|
超碰人人干
|
综合五月
|
日日夜夜精品
|
红桃av在线
|
日本国产精品
|
这里只有精品视频
|
亚洲性天堂
|
国产黄色大片
|
天天射av
|
四虎黄色片
|
日韩视频免费在线观看
|
日韩免费在线播放
|
91动漫在线观看
|
高清乱码男女免费观看
|
三级视频网站
|
国产又粗又猛又黄又爽无遮挡
|
一级片大全
|
精品免费视频
|
日韩精品中文字幕在线观看
|
亚洲精品区
|
午夜激情视频
|
久久精品视频网
|
亚洲伦理在线观看
|
一级淫片观看
|
av不卡在线观看
|