該課題通過對開放式數(shù)控技術(shù)的全面調(diào)研和對運(yùn)動(dòng)控制技術(shù)的深入研究,并針對國內(nèi)運(yùn)動(dòng)控制技術(shù)的研究起步較晚的現(xiàn)狀,結(jié)合激光雕刻領(lǐng)域的具體需要,緊跟當(dāng)前運(yùn)動(dòng)控制技術(shù)研究的發(fā)展趨勢,吸收了世界開放式數(shù)控技術(shù)和相關(guān)運(yùn)動(dòng)控制技術(shù)的最新成果,采納了基于DSP和FPGA的方案,研制了一款比較新穎的、功能強(qiáng)大的、具有很大柔性的四軸多功能運(yùn)動(dòng)控制卡.該論文主要內(nèi)容如下:首先,通過對制造業(yè)、開放式數(shù)控系統(tǒng)、運(yùn)動(dòng)控制卡等行業(yè)現(xiàn)狀的全面調(diào)研,基于對運(yùn)動(dòng)系統(tǒng)控制技術(shù)的深入學(xué)習(xí),在比較了幾種常用的運(yùn)動(dòng)控制方案的基礎(chǔ)上,確定了基于DSP和FPGA的運(yùn)動(dòng)控制設(shè)計(jì)方案,并規(guī)劃了板卡的總體結(jié)構(gòu).其次,針對運(yùn)動(dòng)控制中的一些具體問題,如高速、高精度、運(yùn)動(dòng)平穩(wěn)性、實(shí)時(shí)控制以及多軸聯(lián)動(dòng)等,在FPGA上設(shè)計(jì)了功能相互獨(dú)立的四軸運(yùn)動(dòng)控制電路,仔細(xì)規(guī)劃并定義了各個(gè)寄存器的具體功能,設(shè)計(jì)了功能完善的加/減速控制電路、變頻分配電路、倍頻分頻電路和三個(gè)功能各異的計(jì)數(shù)器電路等,完全實(shí)現(xiàn)了S-曲線升降速運(yùn)動(dòng)、自動(dòng)降速點(diǎn)運(yùn)動(dòng)、A/B相編碼器倍頻計(jì)數(shù)電路等特殊功能.再次,介紹了DSP在運(yùn)動(dòng)控制中的作用,合理規(guī)劃了DSP指令的形成過程,并對DSP軟件的具體實(shí)現(xiàn)進(jìn)行了框架性的設(shè)計(jì).然后,根據(jù)光電隔離原理設(shè)計(jì)了數(shù)字輸入/輸出電路;結(jié)合DAC原理設(shè)計(jì)了四路模擬輸出電路;實(shí)現(xiàn)了PCI接口電路的設(shè)計(jì);并針對常見的干擾現(xiàn)象,提出了有效的抗干擾措施.最后,利用運(yùn)動(dòng)控制卡強(qiáng)大的運(yùn)動(dòng)控制功能,并針對激光雕刻行業(yè)進(jìn)行大幅圖形掃描時(shí)需要實(shí)時(shí)處理大量的圖形數(shù)據(jù)的特別需要,在板卡第四軸完全實(shí)現(xiàn)了激光控制功能,并基于FPGA內(nèi)部的16KBit塊RAM,開辟了大量數(shù)據(jù)區(qū)以便進(jìn)行大幅圖形的實(shí)時(shí)處理.
標(biāo)簽:
FPGA
DSP
運(yùn)動(dòng)控制
上傳時(shí)間:
2013-06-09
上傳用戶:youlongjian0
TLC2543是TI公司的12位串行模數(shù)轉(zhuǎn)換器,使用開關(guān)電容逐次逼近技術(shù)完成A/D轉(zhuǎn)換過程。由于是串行輸入結(jié)構(gòu),能夠節(jié)省51系列單片機(jī)I/O資源;且價(jià)格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應(yīng)用。
TLC2543的特點(diǎn)
(1)12位分辯率A/D轉(zhuǎn)換器;
(2)在工作溫度范圍內(nèi)10μs轉(zhuǎn)換時(shí)間;
(3)11個(gè)模擬輸入通道;
(4)3路內(nèi)置自測試方式;
(5)采樣率為66kbps;
(6)線性誤差±1LSBmax;
(7)有轉(zhuǎn)換結(jié)束輸出EOC;
(8)具有單、雙極性輸出;
(9)可編程的MSB或LSB前導(dǎo);
(10)可編程輸出數(shù)據(jù)長度。
TLC2543的引腳排列及說明
TLC2543有兩種封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳排列如圖1,引腳說明見表1
TLC2543電路圖和程序欣賞
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit clock=P1^0; sbit d_in=P1^1;
sbit d_out=P1^2;
sbit _cs=P1^3;
uchar a1,b1,c1,d1;
float sum,sum1;
double sum_final1;
double sum_final;
uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar wei[]={0xf7,0xfb,0xfd,0xfe};
void delay(unsigned char b) //50us
{
unsigned char a;
for(;b>0;b--)
for(a=22;a>0;a--);
}
void display(uchar a,uchar b,uchar c,uchar d)
{
P0=duan[a]|0x80;
P2=wei[0];
delay(5);
P2=0xff;
P0=duan[b];
P2=wei[1];
delay(5);
P2=0xff;
P0=duan[c];
P2=wei[2];
delay(5);
P2=0xff;
P0=duan[d];
P2=wei[3];
delay(5);
P2=0xff;
}
uint read(uchar port)
{
uchar i,al=0,ah=0;
unsigned long ad;
clock=0;
_cs=0;
port<<=4;
for(i=0;i<4;i++)
{
d_in=port&0x80;
clock=1;
clock=0;
port<<=1;
}
d_in=0;
for(i=0;i<8;i++)
{
clock=1;
clock=0;
}
_cs=1;
delay(5);
_cs=0;
for(i=0;i<4;i++)
{
clock=1;
ah<<=1;
if(d_out)ah|=0x01;
clock=0;
}
for(i=0;i<8;i++)
{
clock=1;
al<<=1;
if(d_out) al|=0x01;
clock=0;
}
_cs=1;
ad=(uint)ah;
ad<<=8;
ad|=al;
return(ad);
}
void main()
{
uchar j;
sum=0;sum1=0;
sum_final=0;
sum_final1=0;
while(1)
{
for(j=0;j<128;j++)
{
sum1+=read(1);
display(a1,b1,c1,d1);
}
sum=sum1/128;
sum1=0;
sum_final1=(sum/4095)*5;
sum_final=sum_final1*1000;
a1=(int)sum_final/1000;
b1=(int)sum_final%1000/100;
c1=(int)sum_final%1000%100/10;
d1=(int)sum_final%10;
display(a1,b1,c1,d1);
}
}
標(biāo)簽:
2543
TLC
上傳時(shí)間:
2013-11-19
上傳用戶:shen1230