VIO:測量範圍:
0~40mV(<小於3%讀數±1個字);
IIO:測量範圍:
0~4μA(<3%讀數±1個字);
AVD:測量範圍:
60dB~120dB±3dB;
KCMR:測量範圍:
60dB~120dB±3dB;
輸出頻率:5Hz
輸出電壓有效值:4 V
頻率與電壓值誤差絕對值均小於1%; 二、設計思路: 本設計以單片機
STC89C52為控制核心,利用數模轉換器ADS1110
以及繼電器,為切換開關, 對被測量信號進行采樣,通過單片機處
理完成對運算放大器LM741的UIO,IIO,AVC,KCMR等參數的測量。 並
通過系統顯示接口,利用液晶顯示裝置將測試的結果進行顯示,同時
本系統還能通過鍵盤進行人機交流,實現按下壹個按鍵就可以對該運
放的某個參數進行測試。 三、系統結構圖 四、方案比較與選擇: 主控芯片部分
方案壹:采用STC89C52單片機。優點是芯片結構簡單,使用相
對容易;缺點是不帶AD轉換電路,需要外接AD轉換芯片,測量精度
相對較低。
方案二:采用淩陽SPCE061A單片機。優點是自帶AD轉換模塊,
測量精度相對較高,能進行音頻處理等多種智能化功能;缺點是結構
復雜,使用起來相對繁瑣。
由於此方案的核心內容在測試電路部分,主控芯片的選擇對結果
的影響相對較小,綜合以上芯片的性能以及自身的情況,選擇使用相
對簡單的STC89C52單片機。
信號發生器的選擇 方案壹:利用傳統的模擬分立元件或單片壓控函數發生器
MAX038,可產生三角波、方波、正弦波,通過調整外圍元件可以改
變輸出頻率、幅度,但采用模擬器件由於元件分散性太大,即使用單
片函數發生器,參數也與外部元件有關,外接電阻電容對參數影響很
大,因而產生的頻率穩定度較差、精度低、抗幹擾能力差、成本也較
高。
方案二:采用ICL8038芯片產生信號。優點是電路簡單,波形好,
控制方便,缺點是頻率有限。
由於需要的頻率不寬,綜合以上考慮,選擇電路簡單,波形好,
控制方便,精度和抗幹擾能力更強的ICL8038作為信號發生器。
顯示模塊的選擇
方案壹:采用液晶顯示模塊SVM12864(LCD)。占用I/O口多,
控制復雜,但可以顯示漢字和簡單圖形等,功能強大
方案二:采用液晶顯示模塊1602。占用I/O口少,控制簡單,每
行可顯示16個字符。
雖然SVM12864功能相對強大,但是采用1602更為合理。因為需
要顯示的參數不多,且都是英文字母和數字,因此選擇控制簡單的
1602液晶顯示模塊。
五、測量原理 2.1 失調電壓
Vios
理想運放當輸入電壓為零時,其輸出電壓也為零,但實際運放電路當輸入電壓為零時,其輸出端仍有壹個偏離零點的直流電壓Vios。這是
由於運放電路參數不對稱所引起的(在室溫25度 和標準電源電壓下)
為了使這壹輸出直流電壓Vios 為零,必須先在輸入端加壹個直流電
壓作為補償電壓! 以抵消偏離零點的輸出電壓。這個加在輸入端的電
壓即為輸入失調電壓Vios(顯然Vios越小,說明運算放大器參數的對
稱性越)
2.2 失調電流Iio
運放的輸入偏置電流是指運放輸入級差分對管的基極電流IB1,IB2,
其中IB1指同相輸入端基極電流,IB2指反相輸入端基極電流運放的輸
入失調電流是指當運放輸出電壓為零時,兩個輸入端靜態電流的差
值,即Iio=IB1- IB2"(顯然:Iio的存在將使輸出端零點偏移! 信號
源阻抗越高,失調電流的影響越嚴重)
2.3 ***模抑制比K C M R
表征運放對***模信號抑制能力的參數叫***模抑制比! 用KCMR表示。
KCMR定義為差模電壓增益Avd 和***模電壓增益Avc 之比,即KCMR =
Avd/Avc。運放對***模信號有很強的抑制能力。
2.4 開環放大倍數的測量
即輸出電壓與輸入電壓的比值。
六、電路設計 3.1 失調電壓
VIO測量電路
輸入失調電壓的測量原理如圖1所示:圖中直流電路通過RI和RF接成閉合環路, 通常RI的取值不超過100歐
測量電路:
測量方法:
根據輸入失調電壓的定義得:
3.2 失調電流IIO測量電路
測量電路:
和上面壹樣, 則:
3.3 ***模抑制比KCMR 測量電路
測試原理如圖所示,由於RF>>RI,電路對差模信號的增益很大,該閉
環電路對差模信號的增益AvD= RF/RI。***模信號的增益AvC=
(VO/VS)。因此,只要從電路上測出VO 和VS,即可求出***模抑制比
KCMR = Avd/Avc
3.4 開環放大倍數的測量
測量電路如圖。
實際的測量電路:由於考慮到輸出處會有自激震蕩產生,因此在OP177的輸出口和正向
輸入端加上壹個電容,用以消除自激震蕩的影響。
實現各個測量電路的轉換,我使用繼電器、通過單片機對引腳的
置位來改變開關的通斷以及接通的相應電路。
S1、S2閉合,S3、S4接地時,測量失調電壓;
S1、S2斷開,S3、S4接地時,測量失調電流;
S1、S2閉合,S3接信號源,S4接地時,測量***模抑制比;
S1、S2閉合,S3接地,S4接信號源時,測量開環放大倍數。
以下為其他模塊的電路:
1.整流轉換電路:
2.單片機控制及液晶顯示模塊電路:
3.信號發生電路
電路總圖:
畫圖原理圖中存在的問題:
由於原理圖的元件庫中沒有ADS1110、繼電器、ICL8038等元件,因此這些元件都需要自己手動畫元件,這也是畫圖中存在的最大問
題。要將該元件的引腳與實際元件的引腳要對應。可以說,在畫原理
圖的過程中沒有存在很大的障礙。 六、軟件仿真 仿真軟件使用的是multisim2001。
在明確了軟件以後,就著手進行各個部件的仿真。由於集成運
放性能參數測試儀的核心內容為測量電路部分,控制以及整流部分對
於電路來說只是起到壹個輔助和提高測量準確度的作用,因此,仿真
內容的重點也在於此。本次仿真只針對測量電路進行,驗證測量電路
方案的準確與否。下面就對四部分測量電路進行仿真。仿真內容中的
被測量集成運算放大器為LM741,將測量結果與LM741元件的提供參
數作對比,即可以對比測量的參數與元件所給的參數是否相同或接
近,從而確定測量電路是否正確,以及電路測試參數的準確性。下面
開始仿真。
1.輸入失調電壓的仿真:
如圖所示,即為輸入失調電壓的仿真電路以及輸出量。
輸出電壓為VE=0.513V,Ri=100歐,Rf=51K歐
則根據輸入失調電壓計算公式:
(VE即為如圖所示的輸出電壓)
輸入失調電壓為1.00mV 。LM741的元件手冊提供的輸入失調電
壓的標準值為1mV,則測量結果在LM741提供的參數範圍之內。可以采
用這個測量電路測量輸入失調電壓。
2.輸入失調電流仿真:
如圖所示,即為輸入失調電流的仿真結果以及輸出量
根據輸出失調電流的測量公式
Ri=100歐,Rf=51K歐,VE2就是圖中電壓表所示的電壓值。VE2也為測量的值,11.979V
VE1為輸入失調電壓測試電路中的輸出值。VE1=0.513V
計算得輸入失調電流Iio=44.0nA。LM741的元件手冊提供的輸入
失調電流的範圍20nV-200nV,則測量結果44.0nA在LM741提供的參數
範圍之內。可以采用這個測量電路測量輸入失調電流。
3.開環電壓增益的仿真。
電路如圖:
根據開環放大倍數的計算公式
計算結果在誤差範圍內。Vs為輸入信號的電壓值,VE為輸出的
電壓值,R1=R2=30K歐,Ri=100歐,Rf=51K歐。Vs=4V,VE=6.548mV。
由於輸入信號電壓顯示的是最大值,因此計算時必須將它轉化為有效
值,則Vs=2.83V。
代入公式計算後,計算得AVD=106.88db LM741的元件手冊提供的開環放大倍數的範圍50db-200db,則測
量結果106.88db在LM741提供的參數範圍之內。可以采用這個測量電
路測量開環放大倍數。
4.***模抑制比測量仿真
測量結果如圖
根據***模抑制比的測量公式:
Vs有效值為2.83V,Ri=100歐,Rf=51K歐。
代入公式,計算得KCMR=93.1db
LM741的元件手冊提供的***模抑制比的最小值為70db,標準值為
90db,則測量結果93.1db接近標準值,在LM741提供的參數範圍之內。
可以采用這個測量電路測量開環放大倍數。
仿真過程中存在的問題:在開始時,我碰到了電阻參數不匹配的問題,壹級運放的電阻原來為100K歐,但是仿真結果與指標差別很
大,因此我就將該電阻減小為51K歐,並將其他相關電阻均減小1倍,
之後得出的參數就符合指標了。由於沒有考慮到輸出處會有自激震蕩
產生,結果造成***模抑制比的測量中存在了很大誤差,在多次測試,
最後決定在OP177的輸出口和正向輸入端加上壹個電容,消除了自激
震蕩的影響,保證了輸出結果的準確性。
電路仿真的心得:通過對上述四個測量電路的仿真,我得出的
結論是,這些測量電路測量出來的結果符合設計要求。可以說,此測
試儀的最核心部分測試電路完全可以采用上面所述的四個測量電路
的方案。但是,在測試過程中也存在壹些小問題,通過仿真也發現了
原先測量電路中存在的不足之處,例如:由於沒有考慮到輸出處會有
自激震蕩產生,結果造成***模抑制比的測量中存在了很大誤差,最後
在OP177的輸出口和正向輸入端加上壹個電容,消除了自激震蕩的影
響,保證了輸出結果的準確性。通過對電路的仿真,我得以修正和優
化原先的測量電路,使得測量電路更加完整、精確,為成功做板以及
硬件和軟件的調試打下堅實的基礎! 七.元件清單 下列元件為需要購買的元件清單
王凱的元件清單
中文名稱 功能 英文名稱 封裝 數量 備註
串行模數轉16位AD轉ADS1110 SOT23 1 換器 化
51單片機 單片機 STC89C52R2 DIP40 1
可調三端穩
壓集成電路
三端穩壓 LM337 TO-220 1
可調三端穩
壓集成電路
三端穩壓 LM317 TO-220 1
波形發生器 波形發生
器
ICL8038 DIP14 1
運算放大器 放大 OP177 DIP8 1
繼電器 開關 5 直流吸合
電壓5V
三極管 放大 8050 TO-92B 5
按鍵 按鍵 4*3mm 5
100歐電阻 電阻 0.25W AXIAL0.4 2
510K歐電阻 電阻 0.25W AXIAL0.4 2
51K歐電阻 電阻 0.25W AXIAL0.4 2
30K歐電阻 電阻 0.25W AXIAL0.4 2
15K歐電阻 電阻 0.25W AXIAL0.4 1
82K歐電阻 電阻 0.25W AXIAL0.4 1
200K可調歐
電阻
電阻 0.25W AXIAL0.4 1
10K歐電阻 電阻 0.25W AXIAL0.4 8 10K歐可調
電阻
電阻 0.25W AXIAL0.4 1
1K歐電阻 電阻 0.25W AXIAL0.4 1
電容 無極電容 100nF RAD0.1 1
電容 無極電容 30pF RAD0.1 2
電容 無極電容 3300pF RAD0.1 1
電容 有極電容 1uF RB.2/.4 2
電容 有極電容 100uF RB.2/.4 1
電容 有極電容 0.1uF RB.2/.4 1
6MHz晶體震
蕩器
晶體震蕩
器
6MHz XTAL1 1
二極管 二極管 1N4148 DIODE0.4 2
液晶顯示模
塊
液晶顯示 1602 1
插針 插針 40顆
芯片插座 插芯片 DIP40 1
三端穩壓集
成塊
穩壓 7805 TO-220 1
三端穩壓集
成塊
穩壓 7812 TO-220 1
三端穩壓集
成塊
穩壓 7912 TO-220 1 精密可調電
位器
5K可調電
位器
SIP3 1
運算放大器 放大 OP07 DIP8 2
八.系統硬件設計 電路的PCB設計 測量電路模塊
主要芯片為兩塊集成運放(其中壹塊為待測的運放)和四個繼電器。 電源模塊
主要部分是穩壓器7805、7812、7912以及6個電解電容。 液晶顯示和控制模塊 主要部分為單片機、液晶顯示1602和四個控制按鍵五個三極管等。 信號發生模塊 主要芯片是波形發生器ICL8038,運放。 整流轉換模塊
主要部分是ADS1110和壹塊運放。 PCB總圖
PCB板的設計心得:我的這塊板的大小為12.5CM×12.2CM,和
其他同學的分模塊制板再通過連線連接的方案相比,我的這塊板要小
很多。對於元件的排列和布置,我本著“屬於同壹模塊的元件盡量排
列在壹起”的原則布置,最後再將四個模塊靠近,這樣不僅做到了各
模塊排列清晰,壹目了然,而且這樣排列更能方便各模塊的分開調試。
圖中,左下角為液晶顯示和電路控制模塊,右上角為測量電路模塊,
右邊為整流轉換模塊,右下角為信號發生電路,上方為電源穩壓模塊。
我的PCB方案將所有元件和模塊集成在壹塊板上,避免了各個模塊間
的連線調試以及模塊間協同工作的可靠性的問題,做到了實用性和美
觀的統壹。因為不需要考慮高頻信號的幹擾,所以元件間的距離間隔可以盡量調小,並且大膽使用了壹定量的跳線。最後,我在板的地線
上覆銅,不僅進壹步減少了幹擾,而且使板更為美觀,同時也為焊板
降低了壹定的難度。以實際做出來的板的效果來看,總體說來,我所
畫的這塊PCB板的效果還是很好的,在調試過程中出現的問題也不多,
而且只要簡單修改就可以正常工作,我對此很滿意的。
畫板過程中碰到的問題:有些元件的封裝,例如ADS1110、繼電
器,在封裝庫內並沒有給出;另外還有壹些元件封裝在封裝庫內沒有
合適的,例如部分電解電容,所以這些元件的封裝都需要自己另外畫。
元件引腳的位置、焊盤的大小必須與實際元件壹致,否則會造成元件
無法安插的板上的問題,而且焊盤的大小要適當加大,在布線的過程
中,應盡量把線布粗,電源線和地線還要另外加粗。另外,為了能將
板盡量地做小,我將原理圖中的四個模塊緊密排列,全部集成在壹塊
板上。由於所有的模塊都集成在壹塊板上,所以做出的這塊板還是存
在壹點的不方便,比如,壹旦某個模塊出現問題,要做出修改就要相
對麻煩壹些,有時甚至會涉及到其他模塊,在實際的電路調試中我就
盡量少地把改動涉及到其他模塊。
九.系統的軟件設計 1.程序設計流程圖:
2.程序清單:
程序采用C語言編譯,根據單片機的特性,我盡量不使用浮點數。
#include<reg51.h>
sbit K0=P2^4;//定義開關K0的引腳編號
sbit K1=P2^5;//定義開關K1的引腳編號
sbit K2=P2^6;//定義開關K2的引腳編號
sbit K3=P2^7;//定義開關K3的引腳編號
sbit SD0=P0^0;//對應繼電器1的輸出口引腳
sbit SD1=P0^1;//對應繼電器2的輸出口引腳
sbit SD4=P0^2;//對應繼電器5的輸出口引腳
sbit SD2=P0^3;//對應繼電器3的輸出口引腳 sbit SD3=P0^4;//對應繼電器4的輸出口引腳
sbit SCL=P0^5;
sbit SDA=P0^6;
sbit E=P3^0;
sbit RW=P3^1;
sbit RS=P3^2;
unsigned char code
JP[]={0xc6,0xce,0xdd,0xbc,0xde,0xdd,0xa4,0xbc,0xdd,0xc3,0xd
e,0xb8,0xda,0x21,0x00};
unsigned char code EN[]="zaku,kohaku";
unsigned char code SRSTDY[]="V_offset=";
unsigned char code SRSTDL[]="I_offset=";
unsigned char code KHZY[]="A_ol=";
unsigned char code GMYZB[]="CCMR=";
void initial(void);
void clear(void);
void display(unsigned char pos,unsigned char word);
void set(unsigned char cmd);
void delay(unsigned char t);
void k0(void);
void k1(void);
void k2(void); void k3(void);
unsigned char c;
void main(void)
{
unsigned char i;
P2=0xff;
c=0x80;
initial();
i=0;
while(JP[i])
{
display(0x80+i,JP[i]);
i++;
}
i=0;
while(EN[i])
{
display(0xc0+i,EN[i]);
i++;
}
while(K0&K1&K2&K3);
clear(); L:if(K0&K1&K2&K3) //檢測是否有按鍵按下
{
delay(0xff);
delay(0xff);
if(!K0)
k0();
if(!K1)
k1();
if(!K2)
k2();
if(!K3)
k3();
}
goto L;
}
void initial() //液晶模塊初始化
{
clear();
set(0x38);
set(0x0c);
set(0x10);
clear(); }
void clear(void) //復位子程序
{
unsigned char t0;
t0=0x40;
P1=0x01;
RS=0;
RW=0;
E=0;
while(t0--)
delay(0xff);
E=1;
}
void display(unsigned char pos, unsigned char word) //
液晶顯示子程序
{
set(pos);
P1=word;
RS=1;
RW=0;
E=0; delay(16);
E=1;
}
void set(unsigned char cmd)
{
P1=cmd;
RS=0;
RW=0;
E=0;
delay(16);
E=1;
}
void delay(unsigned char t) //延時子程序
{
while(t--);
}
void k0(void) //測量失調電壓
{ unsigned char i;
delay(0xff);
SD0=1;
SD1=1; SD2=1;
SD3=1;
SD4=0;
while(SRSTDY[i])
{
display(0x80+i,SRSTDY[i]);
i++;
}
{int a,b,c;
c=100*a;
b=c/(51000+100);
display (0xc0,b);}//在第二行顯示輸入失調電壓
}
void k1(void) //測量失調電流
{ unsigned char i;
delay(0xff);
while(SRSTDL[i])
{ display(0x80+i,SRSTDL[i]);
i++;
}
SD0=1;
SD1=1;
SD2=0;
SD3=0;
SD4=0;
delay(0xffff);
SD0=1;
SD1=1;
SD2=0;
SD3=0;
SD4=1;
{int a,b,c,d,e;
d=100*a;
e=100*b;
c=(d-e)/(51000+100);
display (0xc0,c);}//在第二行顯示輸入失調電流的結果
} void k2(void) //測量開環增益
{ unsigned char i;
delay(0xff);
while(KHZY[i])
{
display(0x80+i,KHZY[i]);
i++;
}
SD0=0;
SD1=1;
SD2=1;
SD3=1;
SD4=0;
{int a,b,d,c;
c=a*100;
b=511*c/283;
//d=20*log 10 b;
display (0xc0,d);}//在第二行顯示開環增益的結果
} void k3(void) //測量***模抑制比
{ unsigned char i;
delay(0xff);
while(GMYZB[i])
{
display(0x80+i,GMYZB[i]);
i++;
}
SD0=1;
SD1=0;
SD2=1;
SD3=1;
SD4=0;
{int a,b,c;
c=1000*a;
b=(51000+100)*c/283000;
display (0xc0,b);}//在第二行顯示***模抑制比 十.系統調試 根據方案要求,系統調試分三大過程,硬件調試、軟件調試、軟
件和硬件聯調。 1. 硬件調試:
由於電路的各個模塊都集成於壹塊板上,為方便電路中各
模塊的調試,我采用焊壹個模塊調壹個模塊的方法,以達到各個
模塊調節的目的。
2. 軟件調試
本系統的軟件系統采用C語言編寫,調試也是分模塊調試。
3. 軟硬聯調
硬件和軟件分別調試成功後再用系統的程序測試,調試。
十壹.設計總結 通過本次課程設計,讓我深入了解了AT89S52的內部結構和運行
原理以及集成運放的性能參數指標。更讓我明白了要靈活運用我們所
學的知識去發現問題、分析問題和解決問題。這次的設計從硬件設計
到軟件設計以及相應的調試都花費了不少心思,也碰到了不少問題,
但都解決了,積累了寶貴的經驗,現總結如下:
1. 我做板的經驗少,在排列元件的時候沒有註意到整潔
美觀的問題,排得比較辛苦,只有多練才能做地更好。
2. 設計電路要考慮實際中的問題,比如繼電器等元件的
封裝都要自己做。
3. 在PCB板放置元件,要考慮元件間的幹擾問題,還有布
線寬度,電源線加粗,地線覆銅,管腳和焊盤要足夠
大。 4. 制板要讓板的布線清晰,打洞要準,總之做板要工整。
5. 編程盡量要使用AT89S52芯片的硬件設備。