PIC16F72電動車控制器源程序_第1頁
PIC16F72電動車控制器源程序_第2頁
PIC16F72電動車控制器源程序_第3頁
PIC16F72電動車控制器源程序_第4頁
PIC16F72電動車控制器源程序_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、PIC16F72電動車控制器源程序PIC16F72單片機(jī)控制的電動自行車C源程序,原理圖及設(shè)計(jì)說明table=98%trtdcolor=blackuPIC16F72單片機(jī)控制的電動自行車C源程序,原理圖及設(shè)計(jì)說明/u/color/td/trtrtdtable=95%trtdPIC16F72單片機(jī)控制的電動自行車驅(qū)動系統(tǒng)C程序PIC單片機(jī)控制的電動自行車驅(qū)動系統(tǒng)C程序.46.#include <pic.h>/電動車雙閉環(huán)程序,采用雙閉環(huán)方式控制電機(jī),以得到最好的zh 轉(zhuǎn)速性能,并且可以/限制電機(jī)的最大電流。本應(yīng)用程序用到兩個(gè)CCP 部件,其中CCP1 用于PWM 輸出,以控/制電機(jī)電

2、壓;CCP2 用于觸發(fā)AD,定時(shí)器TMR2、TMR1,INT 中斷,RB 口電平變化中斷,/看門狗以及6 個(gè)通用I/O 口#define AND 0xe0 /狀態(tài)采集5,6,7 位#define CURA 0X0a /電流環(huán)比例和積分系數(shù)之和#define CURB 0X09 /電流環(huán)比例系數(shù)#define THL 0X6400 /電流環(huán)最大輸出#define FULLDUTY 0X0FF /占空比為1 時(shí)的高電平時(shí)間#define SPEA 0X1d /轉(zhuǎn)速環(huán)比例和積分系數(shù)之和#define SPEB 0X1c /轉(zhuǎn)速環(huán)比例系數(shù)#define GCURHILO 0X0330 /轉(zhuǎn)速環(huán)最大輸出

3、#define GCURH 0X33 /最大給定電流#define GSPEH 0X67 /最大轉(zhuǎn)速給定#define TSON 0X38 /手柄開啟電壓1.1 V,TSON*2 為剎車后手柄開啟電壓,即/2.2 V#define VOLON 0X4c /低電壓保護(hù)重開電壓3.0 V 即33 V#define VOLOFF 0X49 /低電壓保護(hù)關(guān)斷電壓2.86 V 即31.5 Vvolatile unsigned char DELAYH,DELAYL,oldstate,speed,speedcount,tsh,count_ts,count_vol,gcur,currenth,voltage;

4、 /寄存器定義static bit sp1,spe,ts,volflag,spepid,lowpower,off,shutdown,curpid; /標(biāo)志位定義static volatile unsigned char new10=0xaf,0xbe,0xff,0x7e,0xcf,0xff,0xd7,0x77,0xff,0xff; /狀態(tài)寄存器表/-PIC16F877 初始化子程序-void INIT877()PORTC=0X0FF; /關(guān)斷所有MOSFETTRISC=0X02; /設(shè)置C 口輸出PIE1=0X00; /中斷寄存器初始化,關(guān)斷所有中斷TRISA=0XCF; /設(shè)置RA4,RA5

5、 輸出TRISB=0XEF; /RB 口高三位輸入,采集電機(jī)三相的霍爾信號PORTC=new(PORTB&AND)>>5; /采集第一次霍爾信號,并輸出相應(yīng)的信號,導(dǎo)通/兩個(gè)MOS 管T2CON=0X01; /TMR2 4 分頻CCPR1L=0X0FF; /初始時(shí)PWM 輸出全高CCP1CON=0X0FF; /CCP1 設(shè)置為PWM 方式CCP2CON=0X0B; /CCP2 設(shè)置為特殊方式,以觸發(fā)ADADCON0=0X81; /AD 時(shí)鐘為32 分頻,且AD 使能,選擇AN0 通道采集手/柄電壓TMR2=0X00; /TMR2 寄存器初始化TMR1H=0X00; /TMR

6、1 寄存器初始化TMR1L=0X00;T1CON=0X00; /TMR1 為1 分頻CCPR2H=0X08;CCPR2L=0X00; /電流采樣周期設(shè)置為TAD=512 sPR2=0XC7; /PWM 頻率設(shè)置為5 kHzADCON1=0X02; /AD 結(jié)果左移OPTION=0XFB; /INT 上升沿觸發(fā)TMR2ON=1; /PWM 開始工作INTCON=0XD8; /中斷設(shè)置GIE=1,PEIE=1,RBIE=1ADIE=1; /AD中斷使能speedcount=0x00; /轉(zhuǎn)速計(jì)數(shù)寄存器speed=0x7f; /轉(zhuǎn)速保持寄存器spe=1; /低速標(biāo)志位sp1=1; /低速標(biāo)志位old

7、state=0x0ff; /初始狀態(tài)設(shè)置,區(qū)別于其他狀態(tài)count_ts=0x08; /電流采樣8 次,采集1 次手柄count_vol=0x00; /采樣256 次手柄,采集1 次電池電壓ts=1; /可以采集手柄值的標(biāo)志位ADGO=1; /AD采樣使能TMR1ON=1; /CCP2 部件開始工作/-延時(shí)子程序-#pragma interrupt_level 1void DELAY1(x)char x;DELAYH=x; /延時(shí)參數(shù)設(shè)置#asmDELAY2 MOVLW 0X06MOVWF _DELAYLDELAY1 DECFSZ _DELAYLGOTO DELAY1DECFSZ _DELAY

8、HGOTO DELAY2#endasm/-狀態(tài)采集子程序-void sample()char state1,state2,state3,x;do x=1;state1=(PORTB&AND); /霍爾信號采集DELAY1(x);state2=(PORTB&AND);while(state1-state2); /當(dāng)三次采樣結(jié)果不相同時(shí)繼續(xù)采集狀態(tài)if(state1-oldstate!=0) /看本次采樣結(jié)果是否與上次相同,不同/則執(zhí)行oldstate=state1; /將本次狀態(tài)設(shè)置為舊狀態(tài)state1=(oldstate>>5);PORTC=newstate1; /

9、C 口輸出相應(yīng)的信號觸發(fā)兩個(gè)MOS 管if(sp1=1)spe=1;sp1=0;else /如果轉(zhuǎn)速很低,則spe 置1spe=0;sp1=0;speedcount<<=1;state3=(TMR1H>>2); /否則,spe=0,計(jì)轉(zhuǎn)速speed=speedcount+state3; /speed 寄存器為每256 s 加1speedcount=0;/-AD 采樣子程序-void AD()char x;ADIF=0; /清AD 中斷標(biāo)志位if(ts=1) /如果為手柄采樣,則采樣手柄值CHS0=1; /選擇電流采樣通道count_vol=count_vol+1; /電

10、池采樣計(jì)數(shù)寄存器spepid=1; /置轉(zhuǎn)速閉環(huán)運(yùn)算標(biāo)志ts=0;tsh=ADRESH; /存手柄值if(count_vol=0) /如果電池采樣時(shí)間到,則選擇AN2 通道,采集電池電壓CHS0=0;CHS1=1;volflag=1;x=1;DELAY1(x);ADGO=1;else if(volflag=1) /電池采樣完畢,進(jìn)行相應(yīng)的處理CHS1=0;CHS0=1;volflag=0;voltage=ADRESH;lowpower=1;else /否則,中斷為采樣電流中斷speedcount=speedcount+1; /speedcount 寄存器加1,作為測量轉(zhuǎn)速用if(speedco

11、unt>0x3d) sp1=1; /如果轉(zhuǎn)速低于1 000 000 s/(512 s*3eh*3)/ 則認(rèn)為為低速狀態(tài)currenth=ADRESH;curpid=1;count_ts=count_ts-1;if(count_ts=0) /如果手柄時(shí)間到,則轉(zhuǎn)入手柄采樣通道CHS0=0;count_ts=0x08;ts=1;x=1;DELAY1(x);ADGO=1;/-剎車處理子程序-void BREAKON()char x;off=0; /off清零,如果是干擾則不復(fù)位shutdown=0;if(RB0=1) /如果剎車信號為真,則停止輸出電壓ADIE=0; /關(guān)AD 中斷INTE=0

12、; /關(guān)剎車中斷CCPR1L=FULLDUTY; /輸出電壓0TMR1ON=0; /關(guān)CCP2,不再觸發(fā)ADfor(;ADGO=1;) continue;/如正在采樣,則等待采樣結(jié)束ADIF=0; /ADIF 位清零CHS0=0; /選擇通道0 采樣手柄CHS1=0;x=1;DELAY1(x);do ADGO=1;for(;ADIF=0;)continue;ADIF=0;CCPR1L=FULLDUTY;asm("CLRWDT");tsh=(ADRESH>>1);while(tsh>TSON|RB0=1); /當(dāng)手柄值大于2.2 V 或剎車仍舊繼續(xù)時(shí),執(zhí)行以

13、/上語句off=1; /置復(fù)位標(biāo)志/-欠保護(hù)子程序-void POWER()char x;lowpower=0;voltage>>=1; /電壓值換為7 位,以利于單字節(jié)運(yùn)算if(voltage<VOLOFF) /電池電壓小于3*k(V)時(shí)保護(hù)ADIE=0;INTE=0;TMR1ON=0;CCPR1L=FULLDUTY;for(;ADGO=1;)continue;ADIF=0;CHS0=0;CHS1=1;x=1;DELAY1(x);doADGO=1;for(;ADIF=0;)continue;ADIF=0;voltage=(ADRESH>>1);CCPR1L=FU

14、LLDUTY;asm("CLRWDT");while(voltage<VOLON); /電池電壓小于35 V 時(shí)繼續(xù)保護(hù)off=1; /置復(fù)位標(biāo)志/-電流環(huán)運(yùn)算子程序-void CURPI() static int curep=0x00,curek=0x00,curuk=0x00;union dataint pwm;char a2;b; /定義電流環(huán)運(yùn)算寄存器curpid=0; /清電流運(yùn)算標(biāo)志curep=curek*CURB; /計(jì)算上一次偏差與比例系數(shù)的積if(currenth<2)currenth=2; /如果采樣電流為零,則認(rèn)為有一個(gè)小電流以利于/使轉(zhuǎn)速

15、下降currenth>>=1;curek=gcur-currenth; /計(jì)算本次偏差curuk=curuk+curek*CURA-curep; /按閉環(huán)PI 運(yùn)算方式得到本次輸出結(jié)果,下/面對結(jié)果進(jìn)行處理if(curuk<0x00) /如果輸出小于零,則認(rèn)為輸出為零curuk=0;CCPR1L=FULLDUTY;CCP1X=0;CCP1Y=0;else if(curuk-THL>=0) /如果輸出大于限幅值,則輸出最大電壓curuk=THL;CCPR1L=0;CCP1X=0;CCP1Y=0;else /否則,按比例輸出相應(yīng)的高電平時(shí)間到CCPR1 寄存器b.pwm=T

16、HL-curuk;b.pwm<<=1;CCPR1L=b.a1; /CCPR1L=(b.pwm>>8)&0x0ff;將PWM 寄存器的高半字節(jié)if(b.pwm&0x80!=0) CCP1X=1;else CCP1X=0;if(b.pwm&0x40!=0) CCP1Y=1;else CCP1Y=0;/-轉(zhuǎn)速環(huán)運(yùn)算子程序-void SPEPI() static int speep=0x00,speek=0x00,speuk=0x00;int tsh1,speed1; /轉(zhuǎn)速寄存器定義spepid=0; /清轉(zhuǎn)速運(yùn)算標(biāo)志if(spe=1) speed1=

17、0x00; /若轉(zhuǎn)速太低,則認(rèn)為轉(zhuǎn)速為零else speed1=0x7f-speed; /否則計(jì)算實(shí)際轉(zhuǎn)速if(speed1<0) speed1=0;speep=speek*SPEB;tsh1=tsh-0x38; /得到計(jì)算用的手柄值speek=tsh1-speed1;if(tsh1<0) speuk=0;gcur=0; /當(dāng)手柄值低于1.1 V 時(shí),則認(rèn)為手柄給定為零else /否則,計(jì)算相應(yīng)的轉(zhuǎn)速環(huán)輸出if(tsh1>=GSPEH) /限制最大轉(zhuǎn)速tsh1=GSPEH;speuk=speuk+speek*SPEA-speep; /計(jì)算得轉(zhuǎn)速環(huán)輸出if(speuk<=

18、0X00) speuk=0x00;gcur=0x00;/轉(zhuǎn)速環(huán)輸出處理else if(speuk>GCURHILO) /轉(zhuǎn)速環(huán)輸出限制,即限制最大電流約12 Aspeuk=GCURHILO;gcur=GCURH;else /調(diào)速狀態(tài)時(shí)的輸出gcur=(speuk>>4)&0x0ff;/-主程序-main()for(;)INIT877(); /單片機(jī)復(fù)位后,先對其進(jìn)行初始化off=0; /清復(fù)位標(biāo)志for(;off=0;) /復(fù)位標(biāo)志為零,則執(zhí)行下面程序,否則復(fù)位if(curpid=1) CURPI(); /電流PI 運(yùn)算else if(spepid=1) SPEPI(

19、); /轉(zhuǎn)速PI 運(yùn)算else if(lowpower=1) POWER();else if(shutdown=1) BREAKON();asm("CLRWDT");/-中斷服務(wù)子程序-#pragma interrupt_level 1void interrupt INTS(void)if(RBIF=1) RBIF=0;sample();else if(ADIF=1) AD();else if(INTF=1) shutdown=1;INTF=0; /剎車中斷來,置剎車標(biāo)志設(shè)計(jì)思路:目 的目前電動車市場各種功能無刷控制器琳瑯滿目,種類繁多。普通模擬專用芯片已是窮途末路,而利用

20、單片機(jī)控制則能做到“只有想不到,不怕做不到”地步,五花八門的單片機(jī)紛紛推向電動車這個(gè)新興的行業(yè)。我公司根據(jù)電動車市場的流行趨勢,制定了無刷控制器的設(shè)計(jì)方案。功能概述目前電動車市場上的控制器分有刷控制器和無刷控制器兩大類,由于有刷電機(jī)輸出扭距小,效率低,需要定期更換炭刷等諸多缺點(diǎn)而逐步被輸出扭距大、效率高、使用壽命長的無刷電機(jī)取代。根據(jù)電動車車型分簡易車和豪華車型以及電動摩托車,簡易車功率一般在250W以下,而豪華車都在350W以上,設(shè)計(jì)時(shí)必須考慮。簡易車的常用功能有1:1助力、巡航、電量及工作狀態(tài)顯示。工作模式有自動和手動切換兩種。豪華車型根據(jù)客戶的隨意性有很多功能,主要有飛車保護(hù)、軟ABS剎

21、車、反充電、雙動力(檔位切換)、電機(jī)鎖(關(guān)閉電源電機(jī)鎖定)等。為方便調(diào)試和防止非法解密,設(shè)計(jì)采用專用調(diào)試工具,外接一個(gè)帶有鍵盤和顯示器(數(shù)碼管)的工具來設(shè)定一些基本參數(shù),如欠壓値、限流、相位選擇和工作電壓選擇等??梢岳脝纹瑱C(jī)內(nèi)部或外接EEPROM保存設(shè)置參數(shù)。通過該調(diào)試工具達(dá)到系列產(chǎn)品的通用性。主要技術(shù)參數(shù)1 基本功能1.1 工作電壓鍵盤設(shè)定,分12、24、36、48、60、72V檔,根據(jù)輸入電壓采樣值,確定欠壓保護(hù)值,單節(jié)電池保護(hù)電壓為10.5V±0.5V,低于該值關(guān)閉輸出。由于取樣電壓有相應(yīng)的誤差,用鍵盤應(yīng)可以微調(diào)。欠壓工作方式:當(dāng)電源電壓低于設(shè)定值時(shí),關(guān)閉輸出,當(dāng)電源電壓滯回

22、到大于設(shè)定值2V時(shí),開啟輸出。另一種方式為當(dāng)電源電壓低于電池容量的50時(shí),相應(yīng)縮減輸出脈寬,以10個(gè)百分點(diǎn)逐減,到設(shè)定值時(shí)減為零即關(guān)閉輸出,滯回則相反。 1.2 調(diào)速電壓調(diào)速把輸出電壓范圍為14.2V,控制器起點(diǎn)電壓應(yīng)高于1V,控制器的脈寬調(diào)制范圍應(yīng)設(shè)定為1.383.8V,大于3.8V輸出為全打開。1.3 剎車斷電分高電平、低電平和ABS三種方式,高、低電平控制方式由鍵盤設(shè)定,ABS單獨(dú)引腳控制,該功能如不用時(shí),I/O口可以指定其它功能。1.4 限流當(dāng)取樣信號到達(dá)設(shè)定點(diǎn)時(shí),采用對PWM進(jìn)行遞減的方法,來減小電機(jī)電流,使輸出電流不超過設(shè)定值。即最大輸出電流恒定在設(shè)定點(diǎn)。設(shè)定值由鍵盤設(shè)定,以便調(diào)試

23、。1.5 過流保護(hù):由于MCU單片機(jī)A/D采樣速度的因素造成輸出電流大于設(shè)定值,在這種情況下,設(shè)定一個(gè)保護(hù)值,關(guān)閉輸出,一般設(shè)定為大于限流值23A。此值應(yīng)由鍵盤設(shè)定。1.6 堵轉(zhuǎn)保護(hù)限流值保持13秒后,關(guān)閉輸出。1.7 相角選擇60度/120度選擇,鍵盤設(shè)定。1.8 1:1助力輸入3:2占空比的開關(guān)信號15.5Hz對應(yīng)調(diào)速把的電壓信號為23.8V,根據(jù)輸入頻率的變化,改變輸出PWM的占空比,以控制騎行速度。1.9 巡航手動/自動選擇由鍵盤設(shè)定,手動按鈕低電平有效,按鈕按下2秒進(jìn)入手動巡航方式;自動巡航方式為調(diào)速把恒定在某一點(diǎn)8S后(信號電壓必須大于啟動電壓),控制器自動進(jìn)入巡航方式。1. 10

24、限速采用減小PWM脈寬的方法,此值由鍵盤微調(diào),初始值定義為PWM最大值的45。低電平為限速方式。1.11 故障指示閃1正常、閃2剎車、閃3 RAO、 RBO、閃4 下驅(qū)動、閃5上驅(qū)動、閃6缺相、閃7 RBO、閃8欠壓。故障狀態(tài)指示利用專用調(diào)試器的指示燈指示。1.12 飛車保護(hù)調(diào)速電壓4.5V,上電調(diào)速電壓1.5V關(guān)閉輸出保護(hù)。即當(dāng)調(diào)速把地線開路和打開電門鎖前調(diào)速把已轉(zhuǎn)動時(shí)。1.13 反充電滑行充電、EBS剎車充電、滑行充電選擇,用I/O端口選擇,低電平為滑行充電。輸出一個(gè)指示信號,指示燈亮為充電狀態(tài)。2 附加功能2.1 動態(tài)顯示1、故障顯示2、電量及騎行狀態(tài)顯示3、速度顯示(發(fā)光管)2.2 雙

25、動力根據(jù)電機(jī)的轉(zhuǎn)速設(shè)定一個(gè)切換點(diǎn),該切換點(diǎn)的值由鍵盤設(shè)定。2.3 檔位切換由一個(gè)按鈕開關(guān)設(shè)定三檔的速度,初始狀態(tài)為最低速,按鈕的工作方式為按下按鈕開關(guān),松開后進(jìn)入檔位狀態(tài),檔位為循環(huán)方式。檔位速度可由鍵盤微調(diào)。2.4 指針儀表速度分相線輸出、霍爾信號、單片機(jī)輸出。2.5 防盜鎖輸入一個(gè)信號鎖定電機(jī),推動越快阻力越大(此功能或做成電機(jī)鎖,電鎖關(guān)閉后實(shí)現(xiàn))。2.6 參數(shù)設(shè)定顯示窗由兩部分組成第一部分為功能序號,第二部分為參數(shù)值,按鍵由三個(gè)按鈕分別代表模式、加、減,設(shè)置的參數(shù)保存在EEPROM存儲器中。設(shè)定器與單片機(jī)的通訊采用I2 C方式。熟悉單片機(jī)知識階段:由于長時(shí)間未溫習(xí)單片機(jī)的知識,有點(diǎn)生疏,

26、所有實(shí)習(xí)第一周主要以溫習(xí)單片機(jī)的基礎(chǔ)知識為主,對以前所學(xué)知識有個(gè)全面的回顧和鞏固:1. 單片機(jī)的概述2 MCS51單片機(jī)的介紹解決難題階段:第一周對單片機(jī)的基礎(chǔ)知識進(jìn)行了鞏固溫習(xí),發(fā)現(xiàn)以前學(xué)的時(shí)候有些不懂的現(xiàn)在都能明白了,有種豁然開朗的感覺,看來什么東西都得經(jīng)??唇?jīng)?;仡櫜拍軐W(xué)得更牢固更透徹,第二周主要是對單片機(jī)知識更細(xì)致的理解和分析,對當(dāng)時(shí)學(xué)習(xí)是的每個(gè)重點(diǎn)都仔細(xì)的回憶,吃透,同時(shí)把一些容易弄混記錯(cuò)的知識點(diǎn)都進(jìn)行了批注分類,這個(gè)階段主要是對課本的溫習(xí),在圖書館借的資料只是當(dāng)作一般的參考。在學(xué)習(xí)課本的過程中,我發(fā)現(xiàn)了很多知識點(diǎn)比較重要,如單片機(jī)的尋址方式、中斷系統(tǒng)、堆棧、串行口、系統(tǒng)擴(kuò)展等等,其

27、中讓我感覺比較難的是中斷系統(tǒng),因?yàn)橹袛嘞到y(tǒng)比較重要,而且內(nèi)容也比較多,所以我在復(fù)習(xí)的時(shí)候著重學(xué)習(xí)了單片機(jī)的中斷系統(tǒng)。(4)TF1:定時(shí)器 T1 溢出中斷請求。當(dāng)定時(shí)器 T1 產(chǎn)生溢出時(shí),定時(shí)器MCS-51單片機(jī)的中斷系統(tǒng)內(nèi)容比較多,4個(gè)中斷寄存器的每個(gè)位代表的意義和作用就已經(jīng)夠花時(shí)間去理解和區(qū)分的了,在復(fù)習(xí)的時(shí)候?yàn)榱四鼙M快把他們記住還把每個(gè)寄存器的各個(gè)位的定義都抄了一遍,把各個(gè)位的功能作用也都抄了一遍,這樣就有助于記憶,把中斷寄存器的知識復(fù)習(xí)了一遍后就是對中斷響應(yīng)過程的溫習(xí),中斷響應(yīng)過程其實(shí)并不難,只要把課本上的中斷處理流程圖看明白,還有提到的一些注意事項(xiàng)記住就行了,至于定時(shí)器/計(jì)數(shù)器的知識點(diǎn)

28、主要在于理解熟記加練習(xí),在練習(xí)中能更好的去理解他們的工作原理??偨Y(jié)階段:前兩周一直都是以單片機(jī)的基礎(chǔ)知識為復(fù)習(xí)重點(diǎn),本人覺得只有把基礎(chǔ)知識學(xué)扎實(shí)了,設(shè)計(jì)系統(tǒng)來才不會吃力,它也是我是否能把畢業(yè)設(shè)計(jì)做好的前提。第三周我主要是把精力放在了設(shè)計(jì)過程的了解和程序的設(shè)計(jì)上,設(shè)計(jì)過程比較容易學(xué)會,很多資料里都有提到,單片機(jī)系統(tǒng)開發(fā)一般可分為明確任務(wù)、歸并要求、機(jī)型選擇、軟硬件任務(wù)劃分、硬件軟件的設(shè)計(jì)、聯(lián)機(jī)仿真調(diào)試、排除故障、修改程序、固化程序、應(yīng)用系統(tǒng)脫機(jī)運(yùn)行等步驟,綜合來說可分為4個(gè)步驟:1. 總體方案確定:總體設(shè)計(jì)階段包括需求分析和方案論證等。需求分析和方案論證是單片機(jī)系統(tǒng)設(shè)計(jì)工作的開始,也是工作的基礎(chǔ)

29、。只有經(jīng)過深入細(xì)致的需求分析和周密而科學(xué)的方案論證,才能使系統(tǒng)設(shè)計(jì)工作順利完成。方案論證是根據(jù)用戶要求,設(shè)計(jì)出符合現(xiàn)場條件的軟硬件方案;在選擇測量結(jié)果輸出方式上,既要滿足用戶要求,又要使系統(tǒng)簡單、經(jīng)濟(jì)、可靠,這是進(jìn)行方案論證與總體設(shè)計(jì)一貫堅(jiān)持的原則。2. 硬件設(shè)計(jì):硬件設(shè)計(jì)包括兩部分內(nèi)容,一是系統(tǒng)擴(kuò)展,二是系統(tǒng)配置,包括器件選擇、電路設(shè)計(jì)制作等。3. 軟件設(shè)計(jì):軟件設(shè)計(jì)是單片機(jī)開發(fā)研制中工作量最大的,也是最困難的任務(wù)。軟件設(shè)計(jì)步驟一般分為系統(tǒng)定義、軟件結(jié)構(gòu)設(shè)計(jì)、程序設(shè)計(jì)、編寫程序。期間要做的工作量比較大,所以一定要有個(gè)提綱,不至于在中途出錯(cuò)。4. 系統(tǒng)調(diào)試:編制好的程序或焊接好的線路,不能按預(yù)

30、計(jì)的那樣正常工作會經(jīng)常發(fā)生,這就需要查錯(cuò)和調(diào)試。調(diào)試時(shí),應(yīng)將硬件和軟件分成幾部分,逐個(gè)進(jìn)行調(diào)試,各部分都調(diào)試通過后再進(jìn)行聯(lián)調(diào)。 做單片機(jī)系統(tǒng)當(dāng)然不能沒有程序,單片機(jī)程序用的是匯編語言(也可以用C語言),所以匯編語言的學(xué)習(xí)也必不可少。在學(xué)習(xí)匯編語言之前,首先要學(xué)會各種指令,只有對指令有了一定的掌握,才能寫出符合條件的程序,一般程序設(shè)計(jì)有幾個(gè)步驟:(1)分析題意確定算法;(2)根據(jù)算法畫出程序流程圖;(3)編寫程序。前兩個(gè)步驟看似不重要,但它對理清思路,合理排版有很大作用,試想如果不事先確定算法和程序流程圖,在寫程序的時(shí)候肯定會手忙腳亂,如果出錯(cuò)的話也會不知道在哪里出的,這樣的程序肯定不會起作用的

31、,所以在給我們的系統(tǒng)編寫程序的時(shí)候,一定要按著步驟一步一步的來。編寫程序時(shí)還應(yīng)該注重添加注釋,因?yàn)橐粋€(gè)有商用價(jià)值的軟件,往往會被自己或團(tuán)隊(duì)內(nèi)的其他人員反復(fù)借用,反復(fù)修改;明晰的注釋,有利日后借用和修改。注釋關(guān)鍵有幾點(diǎn):內(nèi)存單元分配使用、標(biāo)志定義、子程序的入口和出口、I/O的使用。這些都應(yīng)該有個(gè)明晰的清單,不至于在借用和修改時(shí)發(fā)生沖突,也利于排查軟件故障。對于較長的程序,最好有段落目標(biāo)的標(biāo)注。以上是我在這次實(shí)習(xí)中著重學(xué)習(xí)的東西,其實(shí)還有很多,這里只是一些內(nèi)容比較重要,而且比較難的東西,自己在這段時(shí)間通過系統(tǒng)的學(xué)習(xí)單片機(jī),使我重新認(rèn)識到了單片機(jī)的重要性,以及單片機(jī)在未來的發(fā)展前景,這更加堅(jiān)定了我做

32、單片機(jī)系統(tǒng)的決心,我相信經(jīng)過近一個(gè)月的學(xué)習(xí),我會做出令自己滿意的單片機(jī)系統(tǒng)。 無刷直流電機(jī)基礎(chǔ)引言 無刷直流電機(jī)應(yīng)用及其廣泛,它可在家電、汽車、航空、醫(yī)療、工業(yè)自動化設(shè)備和儀器等各種各樣的行業(yè)中使用。 從它的名稱我們可以看出,無刷直流電機(jī)是不用電刷進(jìn)行換向,而是采用電子器件進(jìn)行換向的。與有刷直流電機(jī)和異步電機(jī)相比,無刷直流電機(jī)有很多優(yōu)點(diǎn),具體表現(xiàn)如下:1、 更好的轉(zhuǎn)矩、轉(zhuǎn)速特性2、 快速的動態(tài)響應(yīng)3、 高效率4、 壽命長5、 工作無噪聲6、 較高的轉(zhuǎn)速范圍本文將重點(diǎn)討論無刷直流電機(jī)的結(jié)構(gòu)、工作原理、特性和它的主要應(yīng)用。附錄B是關(guān)于無刷直流電機(jī)的常用專業(yè)術(shù)語。無刷直流電機(jī)結(jié)構(gòu)和工作原理無刷直流電

33、機(jī)是同步電機(jī)的一種。也就是說定子產(chǎn)生的磁場與轉(zhuǎn)子產(chǎn)生的磁場具有相同的頻率。無刷直流電機(jī)的結(jié)構(gòu)有單相、兩相和三相。無論哪種結(jié)構(gòu)它的定子繞組數(shù)目和其類型相對應(yīng)。三相無刷直流電機(jī)是應(yīng)用最廣泛和最普遍的,本文重點(diǎn)討論三相無刷直流電機(jī)。定子無刷直流電機(jī)的定子是由定子沖片(鋼片疊加而成)和放置在各個(gè)槽中的繞組組成(如圖3所示)。一般無刷直流電機(jī)的定子結(jié)構(gòu)和同功率的異步電機(jī)是相同的,不同只是它繞組的分布方式。大部分無刷直流電機(jī)的三相繞組是繞成星型的。每相繞組都是由若干個(gè)線圈組成的。每極下的繞組數(shù)目都是均等的。無刷直流電機(jī)根據(jù)其定子繞組驅(qū)動電流的不同分為梯形和正弦波電機(jī)。不通的連接方式會產(chǎn)生不同類型的反電動勢

34、,具體參考“反電動勢的定義”章節(jié)。從圖1和圖2中我們可以看出梯形波電機(jī)的反電動勢是梯形的,正弦波電機(jī)的反電動勢是正弦的。同樣,它們的相電流也是梯形和正弦的。但是正弦波電機(jī)的輸出轉(zhuǎn)矩比梯形波電機(jī)的輸出轉(zhuǎn)矩更加平滑。根據(jù)電機(jī)的額定功率,應(yīng)該選擇合適的輸入電壓。汽車、機(jī)器人等產(chǎn)品中電機(jī)的電壓是48V甚至低于48V,而在自動化器械、家用電器等工業(yè)應(yīng)用中電機(jī)的電壓為大于等于100V。 圖3 無刷直流電機(jī)的定子 圖1 梯形波反電動勢 圖2 正弦波反電動勢 轉(zhuǎn)子轉(zhuǎn)子是由永磁體組成的,磁鋼的磁極N和S是交替放置的。根據(jù)所需要的磁場密度選擇合適的永磁體。鐵氧體是很常用的永磁體,隨著的科技的不斷進(jìn)步,稀土永磁體應(yīng)

35、用越來越廣泛。鐵氧體永磁材料和稀土永磁體相比,它的價(jià)格比較低廉,但是磁通密度低,而稀土永磁體價(jià)格高,但是它得最大磁能積大,剩磁高,矯頑力搞。在同樣尺寸下,稀土永磁體比鐵氧體得到更高的轉(zhuǎn)矩。衫鈷永磁體和釹鐵硼永磁體是稀土永磁體中的代表。圖4是幾種不同的轉(zhuǎn)子磁極結(jié)構(gòu)。 a、表面式轉(zhuǎn)子結(jié)構(gòu) b、內(nèi)置式轉(zhuǎn)子結(jié)構(gòu) c、實(shí)心轉(zhuǎn)子結(jié)構(gòu)霍爾傳感器與有刷直流電機(jī)不同,無刷直流電機(jī)的換向是可以電子控制的。無刷直流電機(jī)在運(yùn)行時(shí),必須按一定順序給定子繞組通電。我們?nèi)绻擂D(zhuǎn)子的位置就可以在定子繞組上加相應(yīng)的的信號。轉(zhuǎn)子位置我們可以通過霍爾傳感器來確定。大部分無刷直流電機(jī)中嵌有3個(gè)霍爾傳感器。當(dāng)轉(zhuǎn)子永磁體磁極經(jīng)過霍爾傳

36、感器時(shí),傳感器就會給出一個(gè)高電平或者低電平,表明N極或S極經(jīng)過。根據(jù)霍爾傳感器得到的信號我們可以準(zhǔn)確的確定電機(jī)的換向。 圖5 無刷直流電機(jī)的橫截面圖5是一個(gè)無刷直流電機(jī)的橫截面,從圖中可以看出霍爾傳感器被固定在電機(jī)上。將霍爾傳感器嵌入定子的過程很復(fù)雜,因?yàn)檫@些霍爾傳感器相對轉(zhuǎn)子磁極的位置稍有不對齊,都會在判斷轉(zhuǎn)子位置時(shí)造成錯(cuò)誤。為了簡化在定子上安裝霍爾傳感器的過程,有些電機(jī)可能除了主轉(zhuǎn)子磁體外,還在轉(zhuǎn)子上安裝霍爾傳感器磁體,它們的體積比轉(zhuǎn)子磁體小。每當(dāng)轉(zhuǎn)子轉(zhuǎn)動時(shí),霍爾傳感器就會產(chǎn)生和主磁體一樣的效果?;魻杺鞲衅鞔朋w通常裝在PCB電路板上,固定在非驅(qū)動裝的外殼蓋上,這使得用戶可以整體調(diào)整所有的霍

37、爾傳感器,以便與轉(zhuǎn)子磁體對齊,從而獲得最佳性能。根據(jù)霍爾傳感器的位置,由兩種輸出?;魻杺鞲衅鬏敵鲂盘栔g的相移可以是600或者1200的電角度。電機(jī)制造商據(jù)此定義控制電機(jī)是應(yīng)遵循的換向順序。工作原理每次換向時(shí),首先一相繞組接電源的正極,另一相繞組接負(fù)極,第三相繞組處于失電狀態(tài)。電機(jī)的電磁轉(zhuǎn)矩由定子的合成磁動勢和轉(zhuǎn)子永磁磁場相互作用產(chǎn)生的。理論上來說,當(dāng)定子的合成磁動勢與轉(zhuǎn)子永磁磁場在空間上相位相差900時(shí)電磁轉(zhuǎn)矩就達(dá)到其峰值。而在兩磁場平行時(shí)最弱。為了保證電機(jī)轉(zhuǎn)動,由定子繞組產(chǎn)生的磁場應(yīng)不斷變換位置,因?yàn)檗D(zhuǎn)子會向著與定子磁場平行的方向旋轉(zhuǎn)。轉(zhuǎn)矩/轉(zhuǎn)速特性圖6 是一個(gè)電機(jī)的轉(zhuǎn)矩/轉(zhuǎn)速特性圖,無刷

38、直流電機(jī)有兩個(gè)轉(zhuǎn)矩參數(shù)需要確定:轉(zhuǎn)矩峰值(TP)和額定轉(zhuǎn)矩(Tr)。在連續(xù)運(yùn)行中,負(fù)載會增加直到達(dá)到電機(jī)額定轉(zhuǎn)矩。在無刷直流電機(jī)中,轉(zhuǎn)矩在轉(zhuǎn)速達(dá)到額定值之前保持不變。電機(jī)的最大轉(zhuǎn)速可以達(dá)到150%額定轉(zhuǎn)速,但是此時(shí)轉(zhuǎn)矩將降低。對于頻繁啟東、停止和反轉(zhuǎn)的電機(jī),所需的轉(zhuǎn)矩大于其額定轉(zhuǎn)矩。需要大轉(zhuǎn)矩的時(shí)間通常很短,尤其是在電機(jī)從靜止?fàn)顟B(tài)起動以及加速時(shí)。在此期間,需要額外的轉(zhuǎn)矩來克服負(fù)載和電機(jī)本身的慣性。 圖6 轉(zhuǎn)矩/轉(zhuǎn)速特性無刷直流電機(jī)與其他電機(jī)的對比與有刷直流電機(jī)和異步電機(jī)相比,無刷直流電機(jī)有很多有點(diǎn),也有一些缺點(diǎn)。相同機(jī)座下,無刷直流電機(jī)的輸出功率比有刷直流電機(jī)和異步電機(jī)大,它的使用壽命也較長。

39、由于其轉(zhuǎn)子上有永磁體,這樣與其他電機(jī)相比它的轉(zhuǎn)動慣量就要小點(diǎn),這樣就改進(jìn)了電機(jī)加速與減速的特性,縮短了工作周期。由于沒有電刷裝置,空間相對變大,這就降低了維護(hù)難度。由于去除了電磁干擾,工作噪聲明顯低于有刷直流電機(jī)。表1將無刷直流電機(jī)和有刷直流電機(jī)進(jìn)行了對比,表2是無刷直流電機(jī)和異步電機(jī)之間的對比。 表1 無刷直流電機(jī)和有刷直流電機(jī)的對比特征無刷直流電機(jī)有刷直流電機(jī)換向使用霍爾傳感器電機(jī)換向電刷換向維護(hù)無電刷 維護(hù)少定期維護(hù)壽命較長較短轉(zhuǎn)速/轉(zhuǎn)矩特性額定負(fù)載在任何轉(zhuǎn)速下工作特性都很平滑在高速時(shí),電刷摩擦增加,有效轉(zhuǎn)矩下降輸出功率輸出功率高,由于定子有繞組散熱性能好輸出功率低,工作時(shí)溫度高轉(zhuǎn)動慣量

40、由于轉(zhuǎn)子上的永磁體,動態(tài)響應(yīng)快,轉(zhuǎn)動慣量低受動態(tài)響應(yīng)的影響,轉(zhuǎn)動慣量大調(diào)速范圍寬窄工作噪聲噪聲低電刷產(chǎn)生的電磁干擾,噪聲大成本由于使用永磁體,成本高低控制復(fù)雜簡單控制設(shè)備一個(gè)驅(qū)動控制器,一個(gè)調(diào)速控制器一個(gè)調(diào)速控制器 表2無刷直流電機(jī)和異步電機(jī)的對比特征無刷直流電機(jī)異步電機(jī)轉(zhuǎn)速/轉(zhuǎn)矩特性額定負(fù)載在任何轉(zhuǎn)速下工作特性都很平滑非線性,低速時(shí)轉(zhuǎn)矩較小輸出功率輸出功率高,由于定子有繞組散熱性能好由于定、轉(zhuǎn)子都有繞組,輸出功率低于無刷直流電機(jī)轉(zhuǎn)動慣量動態(tài)響應(yīng)快,轉(zhuǎn)動慣量低動態(tài)響應(yīng)差,轉(zhuǎn)動慣量高起動電流額定,不需要專門的起動電路起動電流大概是額定值的7倍,一般需要星-角起動器控制設(shè)備一個(gè)驅(qū)動控制器,一個(gè)調(diào)速

41、控制器一個(gè)調(diào)速控制器轉(zhuǎn)差同步,無轉(zhuǎn)差有一定轉(zhuǎn)差 換向順序圖7表示霍爾傳感器信號相對反電動勢和相電流變化的示例。圖8展示了按照霍爾傳感器信號應(yīng)遵循的切換順序。圖7中的時(shí)序與圖8是對應(yīng)的。每旋轉(zhuǎn)變化60電角度,其中一個(gè)霍爾傳感器就改變一次工作狀態(tài)。每個(gè)周期變化6次。每轉(zhuǎn)過60個(gè)電角度相電流變化一次。圖9是無刷直流電機(jī)控制器的原理圖。PIC18FXX31 單片機(jī)控制功率開關(guān)管Q0到Q5。這些功率開關(guān)管可以是MOSFEFS管、IGBT或者是簡單的雙極性晶體管。表3和表4是這些功率開關(guān)管在A、B、C三相下導(dǎo)通的順序表。表3是電機(jī)正轉(zhuǎn)下的導(dǎo)通,表4是電機(jī)反轉(zhuǎn)下的導(dǎo)通。從圖9中可以看出,如果標(biāo)有PWMx的信

42、號根據(jù)該順序在導(dǎo)通和關(guān)斷之間切換,則電機(jī)將以額定轉(zhuǎn)速運(yùn)行。電機(jī)在運(yùn)轉(zhuǎn)過程中,定子通入電流,永磁體轉(zhuǎn)子勵(lì)磁,兩個(gè)磁場在空間的作用產(chǎn)生合成磁勢,推動轉(zhuǎn)子向前運(yùn)轉(zhuǎn)。要讓電機(jī)轉(zhuǎn)起來,必須按照一定的順序給電機(jī)三相繞組通電。連接到圖9中模數(shù)轉(zhuǎn)換器通道的電位器用于設(shè)置轉(zhuǎn)速基準(zhǔn)電壓。根據(jù)輸入電壓,我們可以計(jì)算出PWM的占空比。閉環(huán)控制可通過測量電機(jī)的實(shí)際轉(zhuǎn)速來對轉(zhuǎn)速進(jìn)行閉環(huán)控制。首先計(jì)算設(shè)定轉(zhuǎn)速和實(shí)際轉(zhuǎn)速間的誤差??梢杂肞ID控制器放大轉(zhuǎn)速誤差,動態(tài)調(diào)整PWM的占空比。對于低成本、低分辨率的轉(zhuǎn)速要求,可用霍爾信號測量轉(zhuǎn)速反饋??梢杂肞IC18FXX31 單片機(jī)中定時(shí)器計(jì)算霍爾信號兩個(gè)邊沿間的時(shí)間,并用該時(shí)間計(jì)

43、算電機(jī)的實(shí)際轉(zhuǎn)速。對于高分辨率轉(zhuǎn)速測量,可在電機(jī)上安裝光電式編碼器,它能給出具有90度相位差的兩個(gè)信號。用這些信號可以判定轉(zhuǎn)速和轉(zhuǎn)向。 圖7 霍爾傳感器信號、反電動勢、輸出轉(zhuǎn)矩、相電流與時(shí)序的對應(yīng)關(guān)系 圖8 繞組與所加霍爾信號的關(guān)系 圖9 控制原理圖 反電動勢的定義當(dāng)一無刷直流電機(jī)旋轉(zhuǎn)時(shí),每個(gè)繞組都會產(chǎn)生一個(gè)反電動勢,反電動勢的極性是電壓的方向相反,反電動勢主要依靠三個(gè)因素:1、轉(zhuǎn)子角速度;2、永磁體產(chǎn)生的磁場;3、定子繞組的匝數(shù)。當(dāng)電機(jī)設(shè)計(jì)完成后,轉(zhuǎn)子磁場和定子繞組匝數(shù)是一個(gè)常數(shù),則只有轉(zhuǎn)子角速度或者轉(zhuǎn)子速度影響反電動勢的大小,即當(dāng)速度增加時(shí),反電動勢隨之增加,電機(jī)技術(shù)規(guī)范給出一個(gè)參數(shù)“反電

44、動勢系數(shù)”,這個(gè)系數(shù)可以根據(jù)一個(gè)給定轉(zhuǎn)速估計(jì)反電動勢。繞組上的電勢差=激勵(lì)電壓-反電動勢的值,設(shè)計(jì)電機(jī)時(shí),反電動勢系數(shù)是在電機(jī)以額定轉(zhuǎn)速運(yùn)行時(shí)得到。電勢差足夠使得電機(jī)產(chǎn)生一個(gè)額定電流和額定轉(zhuǎn)矩。假如電機(jī)產(chǎn)生一個(gè)大于額定電流的電流,反電動勢將大大增加,因而減少了繞組上的電勢差,即減少了電流,從而導(dǎo)致電磁轉(zhuǎn)矩的下降,當(dāng)激勵(lì)電壓等于總的反電動勢電壓和在電機(jī)中的損耗電勢,可得到轉(zhuǎn)速曲線上的理想空載點(diǎn),此時(shí)電流和轉(zhuǎn)矩均等于零。無刷直流電機(jī)的無位置控制目前,電機(jī)的換向位置由霍爾傳感器得到轉(zhuǎn)子位置決定。無刷直流電機(jī)換向通過觀測反電動勢信號而不采用霍爾傳感器?;魻杺鞲衅髋c反電動勢之間的關(guān)系,通過觀測相電壓得到,如圖7.由前面內(nèi)容可知,每個(gè)換向順序有一個(gè)

溫馨提示

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

最新文檔

評論

0/150

提交評論