標(biāo)題: 電機(jī)調(diào)唆程序 [打印本頁]
作者: lifeng420922 時(shí)間: 2016-8-25 17:41
標(biāo)題: 電機(jī)調(diào)唆程序
基于labview的PWM電機(jī)調(diào)速
一、簡介:
此設(shè)計(jì)模擬工業(yè)控制現(xiàn)場(chǎng),通過調(diào)節(jié)Labview界面中的模擬儀表,通過RS232串口通信,把轉(zhuǎn)速控制信息通過串口傳送到單片機(jī)中,進(jìn)而利用單片機(jī)控制電動(dòng)機(jī)的轉(zhuǎn)速。
二、Labview前面板設(shè)計(jì):
1.左部分為通訊端口、波特率、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位、延時(shí)等選擇端口。
2.中間為所調(diào)電壓的PWM波形,圖中藍(lán)綠色所示。
3.右部分顯示的是等效電壓的大小,圖中所示為2.35V。
4.下半部分為調(diào)節(jié)電壓的儀表和確定按鈕,當(dāng)調(diào)節(jié)好電壓,按下確定鍵后方能調(diào)節(jié)電機(jī)轉(zhuǎn)速。
三、Labview程序框圖:
1. 串口通訊部分:
2.PWM電壓波形顯示部分:
四、硬件設(shè)計(jì):
單片機(jī)IO端口的電流太小,不足以驅(qū)動(dòng)直流電機(jī);本設(shè)計(jì)通過I0端口外接ULN2003AN驅(qū)動(dòng)直流電動(dòng)機(jī)。
五、單片機(jī)部分程序:
/*********************************************關(guān)于頻率和占空比的確定,對(duì)于12M晶振,假定PWM輸出頻率為1KHZ,這樣定時(shí)中斷次數(shù) *
*設(shè)定為C=10,即0.01MS中斷一次,則TH0=FF,TL0=F6;由于設(shè)定中斷時(shí)間為0.01ms,這樣*
*可以設(shè)定占空比可從1-100變化。即0.01ms*100=1ms
******************************************************************************/
#include<reg52.h> //52單片機(jī)頭文件
#include <intrins.h> //包含有左右循環(huán)移位子函數(shù)的庫
#define uint unsigned int //宏定義
#define uchar unsigned char //宏定義
#define V_TH0 0XFF
#define V_TL0 0XF6
uchar ZKB1;
sbit P1_2=P1^2;
void init_sys(void); /*系統(tǒng)初始化函數(shù)*/
void main() //主函數(shù)
{
init_sys();
while(1)
{
/*對(duì)占空比值限定范圍*/
if (ZKB1>99) ZKB1=1;
if (ZKB1<1) ZKB1=99;
}
}
void timer0(void) interrupt 1 using 2
{
static uchar click=0; /*中斷次數(shù)計(jì)數(shù)器變量*/
TH0=V_TH0; /*恢復(fù)定時(shí)器初始值*/
TL0=V_TL0;
++click;
if (click>=100) click=0;
if (click<=ZKB1) /*當(dāng)小于占空比值時(shí)輸出低電平,高于時(shí)是高電平,從而實(shí)現(xiàn)占空比的調(diào)整*/
P1_2=1;
else
P1_2=0;
}
void ser() interrupt 4
{
RI=0;
ZKB1=SBUF;
}
/*系統(tǒng)初始化函數(shù)*/
void init_sys()
{
ZKB1=40;
TMOD=0x21;//設(shè)置定時(shí)器0工作方式1,定時(shí)器1為工作方式2
TH0=V_TH0; //定時(shí)0.01s
TL0=V_TL0;
TH1=0xF3; //波特率2400
TL1=0xF3;
REN=1; //允許串口接收數(shù)據(jù)
SM0=0;//串口工作方式1,8位數(shù)據(jù)傳送
SM1=1;
EA=1;//開總中斷
ES=1; //串口中斷開
PS=1; //串口中斷優(yōu)先級(jí)最高
ET0=1;//開定時(shí)器0中斷
TR1=1; //開波特率
TR0=1;//啟動(dòng)定時(shí)器0
}
基于labview的PWM電機(jī)調(diào)速
一、簡介:
此設(shè)計(jì)模擬工業(yè)控制現(xiàn)場(chǎng),通過調(diào)節(jié)Labview界面中的模擬儀表,通過RS232串口通信,把轉(zhuǎn)速控制信息通過串口傳送到單片機(jī)中,進(jìn)而利用單片機(jī)控制電動(dòng)機(jī)的轉(zhuǎn)速。
二、Labview前面板設(shè)計(jì):
1.左部分為通訊端口、波特率、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位、延時(shí)等選擇端口。
2.中間為所調(diào)電壓的PWM波形,圖中藍(lán)綠色所示。
3.右部分顯示的是等效電壓的大小,圖中所示為2.35V。
4.下半部分為調(diào)節(jié)電壓的儀表和確定按鈕,當(dāng)調(diào)節(jié)好電壓,按下確定鍵后方能調(diào)節(jié)電機(jī)轉(zhuǎn)速。
三、Labview程序框圖:
1. 串口通訊部分:
2.PWM電壓波形顯示部分:
四、硬件設(shè)計(jì):
單片機(jī)IO端口的電流太小,不足以驅(qū)動(dòng)直流電機(jī);本設(shè)計(jì)通過I0端口外接ULN2003AN驅(qū)動(dòng)直流電動(dòng)機(jī)。
五、單片機(jī)部分程序:
/*********************************************關(guān)于頻率和占空比的確定,對(duì)于12M晶振,假定PWM輸出頻率為1KHZ,這樣定時(shí)中斷次數(shù) *
*設(shè)定為C=10,即0.01MS中斷一次,則TH0=FF,TL0=F6;由于設(shè)定中斷時(shí)間為0.01ms,這樣*
*可以設(shè)定占空比可從1-100變化。即0.01ms*100=1ms
******************************************************************************/
#include<reg52.h> //52單片機(jī)頭文件
#include <intrins.h> //包含有左右循環(huán)移位子函數(shù)的庫
#define uint unsigned int //宏定義
#define uchar unsigned char //宏定義
#define V_TH0 0XFF
#define V_TL0 0XF6
uchar ZKB1;
sbit P1_2=P1^2;
void init_sys(void); /*系統(tǒng)初始化函數(shù)*/
void main() //主函數(shù)
{
init_sys();
while(1)
{
/*對(duì)占空比值限定范圍*/
if (ZKB1>99) ZKB1=1;
if (ZKB1<1) ZKB1=99;
}
}
void timer0(void) interrupt 1 using 2
{
static uchar click=0; /*中斷次數(shù)計(jì)數(shù)器變量*/
TH0=V_TH0; /*恢復(fù)定時(shí)器初始值*/
TL0=V_TL0;
++click;
if (click>=100) click=0;
if (click<=ZKB1) /*當(dāng)小于占空比值時(shí)輸出低電平,高于時(shí)是高電平,從而實(shí)現(xiàn)占空比的調(diào)整*/
P1_2=1;
else
P1_2=0;
}
void ser() interrupt 4
{
RI=0;
ZKB1=SBUF;
}
/*系統(tǒng)初始化函數(shù)*/
void init_sys()
{
ZKB1=40;
TMOD=0x21;//設(shè)置定時(shí)器0工作方式1,定時(shí)器1為工作方式2
TH0=V_TH0; //定時(shí)0.01s
TL0=V_TL0;
TH1=0xF3; //波特率2400
TL1=0xF3;
REN=1; //允許串口接收數(shù)據(jù)
SM0=0;//串口工作方式1,8位數(shù)據(jù)傳送
SM1=1;
EA=1;//開總中斷
ES=1; //串口中斷開
PS=1; //串口中斷優(yōu)先級(jí)最高
ET0=1;//開定時(shí)器0中斷
TR1=1; //開波特率
TR0=1;//啟動(dòng)定時(shí)器0
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |