版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第 14 章 單片機(jī)控制的電動自行車驅(qū)動系統(tǒng)14.4.4 C 語言程序#include 電動車雙閉環(huán)程序,采用雙閉環(huán)方式控制電機(jī),以得到最好的 zh 轉(zhuǎn)速性能,并且可以 限制電機(jī)的最大電流。本應(yīng)用程序用到兩個CO部件,其中CCP傭于PWM輸出,以控制電機(jī)電壓;CCP2用于觸發(fā)AD定時器TMR2 TMR1 INT中斷,RB口電平變化中斷, 看門狗以及 6 個通用/I/O#define AND 0xe0/#define CURA 0X0a/#define CURB 0X09/#define THL 0X6400/#define FULLDUTY 0X0FF/#define SPEA 0X1d/#d
2、efine SPEB 0X1c/#define GCURHIL0 0X0330/#define GCURH 0X33/#define GSPEH 0X67/#define TSON 0X38/狀態(tài)采集 5,6,7 位 電流環(huán)比例和積分系數(shù)之和 電流環(huán)比例系數(shù) 電流環(huán)最大輸出占空比為 1 時的高電平時間 轉(zhuǎn)速環(huán)比例和積分系數(shù)之和 轉(zhuǎn)速環(huán)比例系數(shù) 轉(zhuǎn)速環(huán)最大輸出 最大給定電流 最大轉(zhuǎn)速給定手柄開啟電壓1.1 V , TS0N*2為剎車后手柄開啟電壓,即/2.2 V#define VOLON 0X4c/#define VOLOFF 0X49/低電壓保護(hù)重開電壓 3.0 V 即 33 V低電壓保護(hù)關(guān)斷
3、電壓 2.86 V 即 31.5 Vvolatile unsigned char DELAYH,DELAYL,oldstate,speed, speedcount,tsh,count_ts,count_vol,gcur,currenth, voltage;/ 寄存器定義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)
4、寄存器表初始化子程序 /PIC16F877void INIT877()P0RTC=0X0FF;TRISC=0X02;/PIE1=0X00;TRISA=0XCF;TRISB=0XEF;/關(guān)斷所有 M0SFET 設(shè)置 C 口輸出 中斷寄存器初始化,關(guān)斷所有中斷 設(shè)置 RA4,RA5 輸出/RB 口高三位輸入,采集電機(jī)三相的霍爾信號225PORTC=new(PORTB&AND)5; / 采集第一次霍爾信號,并輸出相應(yīng)的信號,導(dǎo)通T2CON=0X01;CCPR1L=0X0FF;CCP1CON=0X0FF;CCP2CON=0X0B;ADCON0=0X81;TMR2=0X00;TMR1H=0X00;/兩個
5、MOS管/TMR2 4 分頻/初始時PWM輸出全高/CCP1設(shè)置為PWM方式/CCP2 設(shè)置為特殊方式,以觸發(fā) AD/AD時鐘為32分頻,且AD使能,選擇AN0通道采集手 / 柄電壓/TMR2 寄存器初始化/TMR1 寄存器初始化TMR1L=0X00;T1CON=0X00;CCPR2H=0X08;CCPR2L=0X00;PR2=0XC7;ADCON1=0X02;OPTION=0XFB;TMR2ON=1;INTCON=0XD8;ADIE=1; speedcount=0x00; speed=0x7f; spe=1;sp1=1;oldstate=0x0ff; count_ts=0x08; count
6、_vol=0x00;ts=1;ADGO=1;TMR1ON=1;/TMR1 為 1 分頻/電流采樣周期設(shè)置為Tad=512卩s/PWM頻率設(shè)置為5 kHz/AD 結(jié)果左移/INT 上升沿觸發(fā)/PWM開始工作/ 中斷設(shè)置 GIE=1,PEIE=1,RBIE=1/AD 中斷使能/ 轉(zhuǎn)速計數(shù)寄存器/ 轉(zhuǎn)速保持寄存器/ 低速標(biāo)志位/ 低速標(biāo)志位/ 初始狀態(tài)設(shè)置,區(qū)別于其他狀態(tài)/ 電流采樣 8 次 , 采集 1 次手柄/ 采樣 256次手柄 , 采集 1 次電池電壓/ 可以采集手柄值的標(biāo)志位/AD 采樣使能/CCP2 部件開始工作/ 延時子程序 #pragma interrupt_level 1 void
7、 DELAY1(x) char x;DELAYH=x;/ 延時參數(shù)設(shè)置#asmDELAY2 MOVLW 0X06MOVWF _DELAYLDELAY1 DECFSZ _DELAYLGOTODELAY1DECFSZ _DELAYHGOTODELAY2#endasm/ 狀態(tài)采集子程序 void sample()char state1,state2,state3,x;do x=1;state1=(PORTB&AND);DELAY1(x); state2=(PORTB&AND);while(state1-state2);if(state1-oldstate!=0)oldstate=state1;sta
8、te1=(oldstate5);PORTC=newstate1; if(sp1=1)spe=1;sp1=0; else spe=0;sp1=0;speedcount2);speed=speedcount+state3;speedcount=0;/AD 采樣子程序void AD()/ 霍爾信號采集/ 當(dāng)三次采樣結(jié)果不相同時繼續(xù)采集狀態(tài)/ 看本次采樣結(jié)果是否與上次相同,不同/ 則執(zhí)行/ 將本次狀態(tài)設(shè)置為舊狀態(tài)C 口輸出相應(yīng)的信號觸發(fā)兩個 MOS管/ 如果轉(zhuǎn)速很低,則 spe 置 1/ 否則, spe=0, 計轉(zhuǎn)速/speed寄存器為每256卩s加1/清AD中斷標(biāo)志位char x;ADIF=0;if
9、(ts=1)/如果為手柄采樣,則采樣手柄值CHS0=1;/選擇電流采樣通道count_vol=count_vol+1;/電池采樣計數(shù)寄存器spepid=1;/置轉(zhuǎn)速閉環(huán)運算標(biāo)志ts=0;tsh=ADRESH;/存手柄值if(count_vol=0) / 如果電池采樣時間到,則選擇 AN2 通道,采集電池電壓CHS0=0;CHS1=1;volflag=1;x=1;DELAY1(x);ADGO=1;else if(volflag=1) / 電池采樣完畢,進(jìn)行相應(yīng)的處理else speedcount=speedcount+1; if(speedcount0x3d) sp1=1;/currenth=A
10、DRESH;curpid=1; count_ts=count_ts-1; if(count_ts=0) CHS1=0;CHS0=1;volflag=0;voltage=ADRESH;lowpower=1;/ 否則,中斷為采樣電流中斷/speedcount 寄存器加 1,作為測量轉(zhuǎn)速用/如果轉(zhuǎn)速低于1 000 000卩s/(512 卩s*3eh*3)/ 如果手柄時間到,則轉(zhuǎn)入手柄采樣通道則認(rèn)為為低速狀態(tài)CHS0=0;count_ts=0x08;ts=1;x=1;DELAY1(x);ADGO=1;/ 剎車處理子程序 void BREAKON()char x;off=0; shutdown=0; i
11、f(RB0=1) ADIE=0;INTE=0;/off 清零,如果是干擾則不復(fù)位/ 如果剎車信號為真,則停止輸出電壓/關(guān)AD中斷/ 關(guān)剎車中斷CCPR1L=FULLDUTY; / 輸出電壓 0TMR1ON=0; for(;ADGO=1;) ADIF=0; CHS0=0;/關(guān)CCP2不再觸發(fā)ADcontinue;/ 如正在采樣,則等待采樣結(jié)束 /ADIF 位清零/ 選擇通道 0 采樣手柄CHS1=0;x=1;DELAY1(x);do ADGO=1;for(;ADIF=0;)continue; ADIF=0;CCPR1L=FULLDUTY; asm(CLRWDT);tsh=(ADRESH1); w
12、hile(tshTSON|RB0=1);/off=1;/ 欠保護(hù)子程序 void POWER()char x;lowpower=0;voltage=1;if(voltage1);CCPR1L=FULLDUTY; asm(CLRWDT); while(voltageVOLON);/ 當(dāng)手柄值大于 2.2 V 或剎車仍舊繼續(xù)時 ,執(zhí)行以 上語句/ 置復(fù)位標(biāo)志/ 電壓值換為 7 位,以利于單字節(jié)運算/ 電池電壓小于 3*k(V) 時保護(hù)/ 電池電壓小于 35 V 時繼續(xù)保護(hù)off=1;/ 置復(fù)位標(biāo)志/ 電流環(huán)運算子程序 void CURPI() static int curep=0x00,curek
13、=0x00,curuk=0x00;union dataint pwm;char a2;b; curpid=0; curep=curek*CURB; if(currenth=1;curek=gcur-currenth; curuk=curuk+curek*CURA-curep;/ 計算本次偏差/ 按閉環(huán) PI 運算方式得到本次輸出結(jié)果,下/ 面對結(jié)果進(jìn)行處理if(curuk=0) / 如果輸出大于限幅值,則輸出最大電壓 curuk=THL;CCPR1L=0;CCP1X=0;CCP1Y=0;else /否則,按比例輸出相應(yīng)的高電平時間到CCPR寄存器b.pwm=THL-curuk;b.pwm8)&
14、OxOff;將 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)運算子程序 void SPEPI() static int speep=0x00,speek=0x00,speuk=0x00;int tsh1,speed1;/ 轉(zhuǎn)速寄存器定義spepid=0;/ 清轉(zhuǎn)速運算標(biāo)志if(spe=1) speed1=0x00; / 若轉(zhuǎn)速太低,則認(rèn)為轉(zhuǎn)速為零else speed1=0x7f-speed;/ 否則計算實際轉(zhuǎn)速if(speed10) speed1=0;
15、 speep=speek*SPEB; tsh1=tsh-0x38; speek=tsh1-speed1; if(tsh1=GSPEH) tsh1=GSPEH;/ 得到計算用的手柄值/ 當(dāng)手柄值低于 1.1 V 時,則認(rèn)為手柄給定為零 / 否則,計算相應(yīng)的轉(zhuǎn)速環(huán)輸出/ 限制最大轉(zhuǎn)速speuk=speuk+speek*SPEA-speep; / 計算得轉(zhuǎn)速環(huán)輸出 if(speukGCURHILO) / 轉(zhuǎn)速環(huán)輸出限制,即限制最大電流約 12 Aspeuk=GCURHILO;gcur=GCURH;else / 調(diào)速狀態(tài)時的輸出gcur=(speuk4)&0x0ff;/ 主程序 main()for(;)INIT877(); off=0; for(;off=0;)/if(curpid=1) CURPI(); else if(spepid=1) else if(lowpower=1) POWER(); else if(shutdown=1) BREAKON();
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度食堂經(jīng)營權(quán)轉(zhuǎn)讓協(xié)議2篇
- 二零二五版?zhèn)€人車位使用權(quán)轉(zhuǎn)讓合同解除條件與流程3篇
- 二零二五年酒店停車場承包經(jīng)營及智能管理系統(tǒng)合同3篇
- 2025年微信小程序開發(fā)者社區(qū)推廣服務(wù)合同3篇
- 二零二五年度汽車租賃市場拓展合作合同2篇
- 2024版建設(shè)合同補(bǔ)充協(xié)議
- 2025年度離婚協(xié)議書樣本編制與離婚后子女教育機(jī)構(gòu)選擇指導(dǎo)3篇
- 2024消防檢測服務(wù)合同
- 2025年度食品安全溯源體系建立與執(zhí)行合同范本3篇
- 二零二五年度冷鏈物流保鮮倉儲市場調(diào)研與分析合同3篇
- 企業(yè)年會攝影服務(wù)合同
- 電商運營管理制度
- 2025年上半年上半年重慶三峽融資擔(dān)保集團(tuán)股份限公司招聘6人易考易錯模擬試題(共500題)試卷后附參考答案
- 城市公共交通運營協(xié)議
- 內(nèi)燃副司機(jī)晉升司機(jī)理論知識考試題及答案
- 2024北京東城初二(上)期末語文試卷及答案
- 2024設(shè)計院與職工勞動合同書樣本
- 2024年貴州公務(wù)員考試申論試題(B卷)
- 電工高級工練習(xí)題庫(附參考答案)
- 村里干零工協(xié)議書
- 2024年高考八省聯(lián)考地理適應(yīng)性試卷附答案解析
評論
0/150
提交評論