久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
急用,求單片機C編程,用STC89C52單片機實現直流電機的PID控制。通過PWM控制電機。...
[打印本頁]
作者:
hzz156077851
時間:
2013-5-20 12:39
標題:
急用,求單片機C編程,用STC89C52單片機實現直流電機的PID控制。通過PWM控制電機。...
本帖最后由 hzz156077851 于 2013-5-20 13:26 編輯
以下是我編好的調試好的可用的測速及顯示模塊,需要在此基礎上加上PID調速模塊。
要求如下:直流電機增量式PID的速度閉環控制。通過光電傳感器回饋的脈沖(電機沒轉得到2脈沖)測得當前的電機轉速,通過PID調節得到當前的輸出PWM占空比。4位的7段碼LCD顯示當前速度。PID參數可我自己根據電機特性調整。(目前測速和顯示程序已經編寫好)
我的聯系QQ:156077851,電話:15249237747
程序編寫要求:
測速和顯示程序已經編好了,需要在此基礎上實現直流電機的PID閉環調速。是基于STC89C52單片機的程序。
不需要仿真和電路圖。
直流電機使用L298實現PWM調速的。由于單片機上沒有按鍵,要用循環語句讓電機以一個速度恒定的運行8秒,8秒后通過軟件讓電機轉速增加一次并通過PID調速讓其穩定在設定的轉速值(即軟件里面已經事先通過循環語句(或table語句)寫好的轉速設定值)附近,然后再運行個8秒之后電機速度再增加一次,如此直到增加9次后電機停止運行。整個過程直流電機通過軟件實現PWM調速的。電機設定的轉速分別為40,50,60,70,80,90,100,110,120r/s,每個速度各運行8秒。
至于P I D的參數KP(比例系數) KI(積分系數) KD(微分系數)參數的設定我自己通過實驗調試,說是PID調速,其實我們老師要求我們只要用PI調速就可以了。所以微分環節可以不用。
電機的轉速范圍在40-130r/s之間把,別太高,也別低于40,不然電機轉不動;
L298N:
en1:表示直流電機的 使能端 當值為1(高電平)時有效,接在了單片機的P1.2引腳;
zhen1:表示直流電機的 正轉信號輸出端,當值為1(高電平)時有效,接在了單片機的P1.0引腳;
fan1:表示直流電機的 反轉信號輸出端,當值為1(高電平)時有效,接在了單片機的P1.1引腳;
光電測速傳感器的 脈沖信號輸出端 接的是P3.5引腳;
PWM一個周期是20ms;
下面是已經編好的測試通過的可以測速和顯示速度的程序:
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar a,b,c,d;
#define LED_DAT P0
sbit pin_SpeedSenser = P3^5; //速度傳感器脈沖信號輸出端接在T1上
#define TIME_CYLC 100 //12M晶振,定時器10ms 中斷一次 我們1秒計算一次轉速,1000ms/10ms = 100
#define PLUS_PER 2 //碼盤的齒數 ,這里假定碼盤上有2個齒,即傳感器檢測到2個脈沖,認為1圈
#define K 1.0 //校準系數
sbit zhen1=P1^0;
sbit fan1=P1^1;
sbit en1=P1^2;
uchar code loops[] = {0x7f,0xbf,0xdf,0xef}; //定義顯示位控制驅動碼
uchar code table[]={0x14,0xd7,0x4c,0x45,0x87,0x25,0x24,0x57,0x04,0x05}; // 0,1,2,3,4,5,6,7,8,9 7段碼表,這個單片機開發板上的LED數碼管的接法和一般的有點不一樣,這個表是正確的,已經測試過了
uint Tcounter = 0; //時間計數器
bit Flag_Fresh = 0; // 刷新標志
bit Flag_clac = 0; //計算轉速標志
bit Flag_Err = 0; //超量程標志
//在數碼管上顯示一個四位數
void DisplayFresh();
//計算轉速,并把結果放入數碼管緩沖區
void ClacSpeed();
//初始化定時器
void init_timer();
//延時函數
void Delay(uint ms);
void it_timer0() interrupt 1 //定時器0中斷的響應函數
{
TF0 = 0; //定時器 T0用于數碼管的動態刷新
TH0 = 0xD8; //初始化
TL0 = 0xF0;
Flag_Fresh = 1;
Tcounter++;
if(Tcounter>TIME_CYLC)
{
Flag_clac = 1;//周期到,該重新計算轉速了
}
}
void it_timer1() interrupt 3 //中斷地址是0x001b
{
TF1 = 0; //定時器T1用于單位時間內收到的脈沖數,要速度不是很快,T1永遠不會益處
Flag_Err = 1; //如果速度很高,我們應考慮另外一種測速方法:脈沖寬度算轉速
}
void main(void)
{
init_timer();
while(1)
{
zhen1=1;
fan1=0;
en1=1;
Delay(30);
en1=0;
Delay(170);
if(Flag_Fresh)
{
Flag_Fresh = 0;
DisplayFresh(); // 定時刷新數碼管顯示
}
if(Flag_clac)
{
Flag_clac = 0;
ClacSpeed(); //計算轉速,并把結果放入數碼管緩沖區
Tcounter = 0;//周期定時清零
TH1=TL1 = 0x00;//脈沖計數清零
}
if(Flag_Err) //超量程處理
{
//數碼管顯示字母'EEEE',開機時初始化為0000
a = 0x2c;
b = 0x2c;
c = 0x2c;
d = 0x2c;
while(1)
{
DisplayFresh();//等待復位,不再測速
}
}
}
}
//在數碼管上顯示一個四位數
void DisplayFresh()
{
P2 =loops[0] ;
LED_DAT = table[a];
Delay(20);
P2 =loops[1] ;
LED_DAT = table;
Delay(20);
P2 =loops[2] ;
LED_DAT = table[c];
Delay(20);
P2 =loops[3] ;
LED_DAT = table[d];
Delay(20);
}
//計算轉速,并把結果放入數碼管緩沖區
void ClacSpeed()
{
uint speed ;
ulong PlusCounter;
PlusCounter = TH1*256 + TL1;
speed = K*(PlusCounter/PLUS_PER);//K是校準系數,如速度不準,調節K的大小
a = (speed/1000)%10;
b = (speed/100)%10;
c = (speed/10)%10;
d = speed%10;
}
void init_timer() //初始化
{
TMOD = 0x51; //定時10毫秒,TOT1選擇軟件門方式1,T0定時,T1計數,96頁可查
TH0 = 0xD8; //T0初始化
TL0 = 0xF0;
ET0=1; //T0中斷允許
EA=1; //T0中斷
TR0=1; //TO運行
TH1 = 0x00; //T1初始化
TL1 = 0x00;
ET1=1; //T1中斷允許
TR1=1; //T1運行
zhen1=1;
fan1=0;
}
void Delay(uint ms) //0.1ms延時函數
{
uchar x,y;
for(x=ms;x>0;x--)
for(y=11;y>0;y--);
}
作者:
朗朗繁星
時間:
2013-8-7 19:51
學習學習
作者:
jinchouxing
時間:
2013-10-3 15:03
看過了
作者:
HiMing
時間:
2017-5-28 14:58
樓主解決了嗎?這個跟我的畢設一樣
作者:
neostrata
時間:
2017-7-14 23:55
數碼管顯示字母'EEEE' 錯誤解決了嗎?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕免费中文
|
国产一区二区三区在线
|
久久久综合网
|
中文字幕精品一区二区三区在线
|
精品久久久久久久
|
美女黄网
|
国产精品欧美一区二区三区
|
午夜av电影
|
天天草天天干
|
亚洲国产一区在线
|
国产精品毛片久久久久久
|
精品亚洲视频在线
|
成人在线精品
|
成人性生交大片
|
99资源
|
中文字幕av在线
|
99国产精品久久久
|
拍拍无遮挡人做人爱视频免费观看
|
99精品久久久久久中文字幕
|
欧美国产激情
|
k8久久久一区二区三区
|
不卡的av在线
|
极品久久
|
国产亚洲一区二区精品
|
国产高清视频一区
|
中文字幕在线精品
|
欧美午夜精品久久久久久浪潮
|
午夜播放器在线观看
|
黄色片免费看
|
99视频在线免费观看
|
在线观看中文字幕
|
国产精品欧美一区喷水
|
中日韩毛片
|
av网址在线
|
91超碰caoporn97人人
|
99婷婷
|
亚洲精品播放
|
亚洲精品国产电影
|
成人自拍av
|
视频在线亚洲
|
日韩久久精品
|