簡易數控直流電源_第1頁
簡易數控直流電源_第2頁
簡易數控直流電源_第3頁
簡易數控直流電源_第4頁
簡易數控直流電源_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、所在學校:XX學生姓名:XX輔導老師:XX“簡易數控直流電源”的設計要求一 設計任務設計出有一定輸出電壓范圍和功能的數控電源。其原理示意圖如下:輸 出 電 路數 控 部 分“+” “-” 鍵數 字 顯 示 +5V -15V +15V自 制 穩 壓 電 源 220V二 設計要求1)基本要求(1)輸出電壓:范圍09.9V,步進0.1V,紋波不大于10mV;(2)輸出電流:500mA;(3)輸出電壓值由數碼管顯示;(4)由“”、“”兩鍵分別控制輸出電壓步進增減;(5)為實現上述幾部件工作,自制一穩壓直流電源,輸出±15V,5V。2)發揮部分(1)輸出電壓可預置在09.9V之間的任意一個值;

2、(2)用自動掃描代替人工按鍵,實現輸出電壓變化(步進0.1V不變); (3)擴展輸出電壓種類(比如三角波等)三 評分意見項 目滿 分基本要求方案設計和論證、理論計算與分析、電路圖30實際完成情況50總結報告20發揮部分完成第(1)項5完成第(2)項15完成第(3)項20簡易數控直流電源的設計摘要:本設計以TI的超低功耗的16單片機MSP430F149作為微控制器,利用TIMEER_A的PWM調制來改變輸出電壓的幅度,通過4*4的矩陣鍵盤控制輸出電壓的值,輸出的電壓值可以在七段數碼管上顯示出來。再配置相應的集成運放電路來達到電壓由09.9V的變化。關鍵詞:MSP430F149、PWM、矩陣鍵盤、

3、LED顯示一、 方案設計與論證1、 總體方案設計通過分析實驗要求,可知道電路的整體框圖如下圖一所示:鍵盤數控部分輸出電路 數字顯示圖1簡易數控直流穩壓電源框圖其中鍵盤用于實現信號的輸入以及實現對輸入信號的加、減、清零、置數的功能;顯示部分則實現對輸出電壓的顯示;數控部分則通過程序以及硬件的協同作用,實現對輸入信號的該變;輸出電路則將數控部分輸出的數字信號轉化為模擬信號,輸出一個穩定的輸出電壓。1、 方案一(如圖2所示)此方案的控制部分采用FPGA開發板,通過VHDL語言來進行控制,輸出部分通過DAC0832來進行D/A轉換之后,通過穩壓、限流電路來控制輸出電壓達到實驗的要求,再通過A/D轉換電

4、路來實現輸出電壓的顯示。顯示A/D轉換FPGA開發板鍵 盤穩壓限流電路D/A轉換顯 示輸出 圖2 方案一電路框圖 2、 方案二(如圖3所示)此方案采用MSP430F149為微控制器,通過定時器_A的PWM調制來實現D/A轉換,再通過穩壓、限流電路來控制輸出電壓達到實驗要求,再通過A/D轉換來實現輸出電壓值的顯示。顯示A/D轉換 MSP430F149鍵 盤穩壓限流電路顯 示輸出 圖3 方案二電路框圖3、 方案比較 分析以上兩個方案,發現其各有優點,但是顯然方案二具有更加的優越性。不僅外部電路簡單,而且可以方便實現人性化很強的人機界面(鍵盤輸入和數碼管輸出)。與方案一相比,方案二在實現設計要求上有

5、著很大的優越性:不需要外接D/A轉換芯片;不需要復雜的參考電壓產生電路;不需要外接總線驅動就可以方便實現鍵盤和數碼管顯示;MSP430F149內部有足夠的存儲空間,足以存儲程序和顯示所需要的漢字字模,不需要擴展存儲;MSP430F149有多種低功耗工作模式,通過合理的程序控制可以方便實現低功耗運行。MSP430F149內部有16位的硬件乘法器,可以快速實現乘法運算;MSP430F149使用的指令簡單,只有27條指令,指令周期短,數值計算能力強大。鑒于以上種種優點,我們最終選擇了MSP430F1494單片機作為我們的控制中心,并且采用了第二種方案來實現設計的要求。2、 工作原理及電路設計1、 工

6、作原理PWM信號是一種具有固定周期不定占空比的數字信號,占空比可調的數字信號(如圖所示)。如果PWM 信號的占空比隨時間變化,那么通過濾波之后的輸出信號將是幅度變化的模擬信號。因此通過控制PWM 信號的占空比就可以產生不同的模擬信號。如圖4所示:不同的占空比 圖4 PWM波形示例 MSP430F149 的Timer_A和Timer_B工作在比較模式時可以輸出PWM信號。MSP430F149 的Timer_A和Timer_B,有四種工作模式(停止、增計數、連續計數、增減計數),計數器的時鐘源可選,有多個可配置輸入端的捕獲/比較寄存器,有多種可選的輸出模式。它們支持同時進行的多種時序控制,多個捕獲

7、/比較功能及多種輸出波形(PWM波形)。Timer各部分的功能選擇通過寄存器(TACTL 控制寄存器、CCTLx捕獲比較控制寄存器、CCRx捕獲/比較寄存器、TAIV中斷向量寄存器)控制。要想讓Timer工作在特定的模式下,只需要在相應的寄存器中寫入相應的控制字。 如果定時器中的計時器工作在增計數模式,輸出選用7模式(復位/置位模式),則定時器中的寄存器CCR0用來控制輸出PWM波形的周期T, 而與定時器對應的CCRx 寄存器來控制可變占空比。PWM 信號經過濾波器后,一個PWM 信號周期 T 對應一個抽樣值,所以輸出信號的頻率Fx與該信號每個周期的采樣數N及PWM 信號周期T有關。它們之間存

8、在以下關系: Fx=1/(T*N) (1) 其中的 T 與 CCRO、計數器的計數頻率 Fs 有關: T= CCRO/ Fs (2) 所以, Fx=1/(CCRO/ Fs) N=Fs/(CCRO*N) (3)2、 電路框圖數碼管顯示輸出P4M S P 4 3 0 P34*4鍵盤放大、穩壓、限流電路濾波電 路TA P1.2圖5 總體電路框圖MSP430F149具有很多的輸入輸出端口,可以外接很多的部件,鍵盤、七段數碼管可以直接的接在不同的I/O口。利用定時器A輸出PWM波形,只要直接利用放大、穩壓、限流電路來對電壓進行放大以及對輸出電流的限制。使最后輸出的電壓能夠滿足在0-9.9V直接穩定的變化

9、。3、 單元電路設計1、 鍵盤以及顯示電路 由于對電路要實行清零、置數、加數、減數的控制,因此需要一個4*4的矩陣鍵盤,通過軟件對不同的按鈕設置不同的功能。該鍵盤的電路如圖6所示: 圖6 矩陣鍵盤電路其中“/”鍵實現的是減一;“×”鍵實現的是加一;“”鍵實現的是減十;“+”鍵實現的是加十;“=”鍵實現的是置數;“on/c”鍵實現的是清零;數字鍵用于在置數的時候使用。七段數碼管實現的是對鍵盤控制的數字進行顯示。其電路如7所示: 圖7 氣短數碼管顯示電路PWM輸出電路是通過程序來控制脈沖的占空比,從而通過電容的充放電來使輸出的電壓為一個連續變化的模擬量,該電路如圖8所示:圖8 輸出電路2

10、、 放大、穩壓以及限流電路由于輸出的電壓只有04.95V,不能滿足實驗的要求,所以需要對輸出的電壓進行放大、穩定,在放大的過程中由于輸出的電流很大,則需要進一步對電流的大小進行限定,以防止元器件被燒壞。該電路圖如圖9所示:圖9 放大、穩壓以及限流電路4、 軟件設計通過單片機實現對矩陣鍵盤、脈沖寬度以及七段數碼管的控制,通過鍵盤來控制數碼管顯示的值以及改變脈沖的占空比,使輸出的電壓發生變化。其中鍵盤掃描程序的流程圖如附錄1所示,源程序如附錄2所示。仿真的電路圖如附錄3所示。5、 測量結果鍵盤輸入數碼管顯示穩壓電路輸出Uo穩壓電路輸出Uo理論值絕對誤差999.99.9 V9.9 V0 V909.0

11、9 V9 V0 V808.08.05 V8 V0.05 V707.07.03 V7 V0.03 V606.06.02 V6 V0.02 V505.05 V5 V0 V404.04 V4 V0 V303.03 V3 V0 V202.01.98 V2 V-0.02 V101.00.99 V1 V-0.01 V000.00 .02V0 V0.02 V6、 參考文獻1、 沈建華,楊艷琴 ;MSP430系列16位超低功耗單片機原理與實踐 ; 北京航空航天大學出版社 ;20082、 曹磊 ;MSP430單片機C程序設計與實踐 ;北京航空航天大學出版社 ;2007附錄1:附錄2:#include<ms

12、p430x14x.h>unsigned char LineScan4=0xef,0xdf,0xbf,0x7f; /列值列舉unsigned char Seg= /七段數碼管表 0x00,0x01,0x02,0x03, 0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b, 0x0c,0x0d,0x0e,0x0f;unsigned int Pwm=0;unsigned int m,n;unsigned int flag_set=0;unsigned int flag_ten=0;void Delay(unsigned int wDelay) /延時子程序 whi

13、le(wDelay!=0) wDelay-;unsigned int key_check(void) /檢測是否有按鍵按下 unsigned char temp; P3DIR=0xf0; /定義P1.4P1.7為輸出 temp=P3IN & 0x0f; if(temp!=0x0f) return 1; else return 0; void Clear() Pwm=0; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; CCR1=0;void NumSet() /置數鍵“=”子程序 flag_set=1;void NumAd

14、d1() /加一鍵“×”子程序 if(Pwm>=99) Pwm=Pwm-1; CCR1=CCR1-2; Pwm=Pwm+1; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; CCR1=CCR1+2; void NumAdd10() /加十鍵“+”子程序 if(Pwm<=99 & Pwm>=89) Pwm=Pwm-10; CCR1-=20; Pwm=Pwm+10; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; CCR1=CCR1+2

15、0;void NumSub1() /減一鍵“÷”子程序 if(Pwm=0) Pwm=Pwm+2; CCR1=CCR1+10; Pwm=Pwm-1; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; CCR1=CCR1-2;void NumSub10() /減十鍵“”子程序 if(Pwm<=9 && Pwm>=0) Pwm=Pwm+10; CCR1=CCR1+20; Pwm=Pwm-10; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn

16、; CCR1=CCR1-20;void Num0() /按鍵“0”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=0*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+0; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2; void Num1() /按鍵“1”子程序 if(flag_set=1) flag_ten +=

17、1; if(flag_ten % 2=1) Pwm=1*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+1; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2; void Num2() /按鍵“2”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=2*10+n; m=Pwm/10; n=Pwm%10; Delay(655

18、35); P4OUT = Segm*16+Segn; else Pwm=m*10+2; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2; void Num3() /按鍵“3”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=3*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+3; m=Pwm/10; n=Pwm%10;

19、 Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2; void Num4() /按鍵“4”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=4*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+4; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2;

20、void Num5() /按鍵“5”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=5*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+5; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2; void Num6() /按鍵“6”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten

21、% 2=1) Pwm=6*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+6; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2; void Num7() /按鍵“7”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=7*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Se

22、gm*16+Segn; else Pwm=m*10+7; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2; void Num8() /按鍵“8”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=8*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+8; m=Pwm/10; n=Pwm%10; Delay(65535);

23、P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2; void Num9() /按鍵“9”子程序 if(flag_set=1) flag_ten +=1; if(flag_ten % 2=1) Pwm=9*10+n; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; else Pwm=m*10+9; m=Pwm/10; n=Pwm%10; Delay(65535); P4OUT = Segm*16+Segn; flag_set=0; CCR1=Pwm*2-2; unsigned char s

24、can_key(void) /掃描對應按鍵的鍵號 P3DIR=0xf0;unsigned char count;unsigned char i,temp,m,n; /m為列的值,n為行的值unsigned int flag=0;for(i=0;i<4;i+) /列掃描 P3OUT=LineScani; /獲取掃描的列 temp=P3IN&0x0f; if(temp=0x07) /為第一行 n=0; /記錄按下按鈕的行 flag=1; /標志檢測出來 break; else if(temp=0x0b) /為第二行 n=1; flag=1; break; else if(temp=0x0d) /為第三行 n=2; flag=1; break; else if(temp=0x0e) /為第四行 n=3; flag=1; break; if(flag=1) m=i; flag=0; count=n*4+m; / return n*4+m; switch(count) /判斷按鍵值,指向相應的子程序 case 0:Num7(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論