




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、#include #include derivative.h #includeprintp.h#define se1max (int*)(0x0800)#define se3max (int*)(0x0802)#define se5max (int*)(0x0804)#define se7max (int*)(0x0806)#define spoint 294#define H1 10#define H2 10#includefunction.h void init(void);int PWM_MIN=8100,PWM_MID=8800,PWM_MAX=9500;int sdata1spoin
2、t,sdata3spoint,sdata5spoint,sdata7spoint;int yspoint;int SE1,SE3,SE5,SE7;int offset1,offset3,offset5,offset7,lastoffset1,lastoffset3,lastoffset5,lastoffset7;int SE1MAX,SE3MAX,SE5MAX,SE7MAX;int servo_pwm,lastservo_pwm;long int sum1,sum3,sum5,sum7;int speed,prespeed,presetspeed,distance,bendspeed=50;i
3、nt print_flag=0,counter=0,startflag=0,stopflag=0,startdelay,startdelaycount;int k1=24,k3=24,k5=24,k7=24; /校正系數(shù)int stateSE73,stateSE53,stateSE13,stateSE33,diff1,diff3,diff7,diff5;void main(void) int n; init(); PWMDTY01 = PWM_MID; /舵機(jī)PWM波脈寬范圍 ATD0CTL5=0x30; /啟動AD PITCE_PCE0=1; /啟動PIT0 PITCE_PCE1=1; /啟
4、動PIT1 PITCE_PCE2=1; /啟動PIT2 PITCE_PCE3=1; /啟動PIT3EnableInterrupts; for(;) if(print_flag=1) n+; if(n=10) n=0; printp( %d ,PWMDTY01); printp(nn); printp(1=%d 3=%d 5=%d 7=%d ,offset1,offset3,offset5,offset7); /*for(n=0;nspoint;n+) printp(%d ,sdata1n); */ printp(SE1=%d %d %d %d ,SE1,SE3,SE5,SE7); /print
5、p(diff1=%d %d %d %d ,diff1,diff3,diff5,diff7); /printp(n); printp(SEMAX=%d %d %d %d,SE1MAX,SE3MAX,SE5MAX,SE7MAX); printp(speed=%d ,speed); /printp(k1=%d k3=%d k5=%d k7=%d,k1,k3,k5,k7); /printp(nn); /printp(%d ,servo_pwm); / printp(nn); printp(nn); print_flag=0; #pragma CODE_SEG _NEAR_SEG NON_BANKEDv
6、oid interrupt 12 IOC4interrupt(void) int i,j; TFLG1_C4F=1; TIE_C4I=0; /prespeed=presetspeed; startflag+; /按第一下,顯示舵機(jī)的方向,按第二下,延時2S啟動 for(i=0;i500;i+) for(j=0;j0x0d53;j+); TFLG1_C4F=1; TIE_C4I=1; void interrupt 13 IOC5interrupt(void) int i,j; TFLG1_C5F=1; TIE_C5I=0; if(PTJ_PTJ7=0) bendspeed+=3; else pr
7、esetspeed+=3; if(PTT_PTT2=0) presetspeed=70; for(i=0;i500;i+) for(j=0;j=100) startdelay=1; if(startdelay=1) adjust_speed(); void interrupt 68 PIT2interrupt(void) _asm(MOVB #$04,PITTF); if(PORTA_PA0=0) stopflag+; PITCE_PCE2=0; void interrupt 67 PTI1interrupt(void) /*為下一個循環(huán)作準(zhǔn)備* _asm(MOVB #$02,PITTF);
8、counter=0; sum1=0; sum3=0; sum5=0; sum7=0; PITCE_PCE0=1; ATD0CTL2_ASCIE = 1; ATD0CTL5 = 0x30; print_flag=1;void interrupt 66 PIT0interrupt(void) /采樣時間為2ms int i,temp; PITCE_PCE0=0; /關(guān)閉PIT ATD0CTL2_ASCIE=0; /關(guān)閉AD EnableInterrupts; /允許PIT2,3中斷該程序 /*濾波* filter(sdata1); filter(sdata3); filter(sdata5); f
9、ilter(sdata7); /*求峰峰值* for(i=0;i12); SE3=(int)(sum312); SE5=(int)(sum512); SE7=(int)(sum712); /*找出相應(yīng)的最大值* if(PTT_PTT3=0) if(SE1SE1MAX) SE1MAX=SE1; if(SE3SE3MAX) SE3MAX=SE3; if(SE5SE5MAX) SE5MAX=SE5; if(SE7SE7MAX) SE7MAX=SE7; save2flash(SE1MAX,SE3MAX,SE5MAX,SE7MAX); SE1MAX=*se1max; SE3MAX=*se3max; SE
10、5MAX=*se5max; SE7MAX=*se7max; if(SE1=0) SE1=1; if(SE3=0) SE3=1; if(SE5=0) SE5=1; if(SE7=0) SE7=1; /*求偏移* offset1=(int)sqrt(100*(unsigned long int)(SE1MAX)*H1*H1/SE1-H2*H2)*24/k1; offset3=(int)sqrt(100*(unsigned long int)(SE3MAX)*H1*H1/SE3-H2*H2)*24/k3; offset5=(int)sqrt(100*(unsigned long int)(SE5MA
11、X)*H2*H2/SE5-H2*H2)*24/k5; offset7=(int)sqrt(100*(unsigned long int)(SE7MAX)*H2*H2/SE7-H2*H2)*24/k7; if(offset1450) offset1=450; if(offset3450) offset3=450; if(offset5450) offset5=450; if(offset7450) offset7=450; /*求servo_pwm* stateSE10=SE1; stateSE30=SE3; stateSE70=SE7; stateSE50=SE5; diff1=stateSE
12、10-stateSE12; diff3=stateSE30-stateSE32; diff7=stateSE70-stateSE72; diff5=stateSE50-stateSE52; for(i=1;i=0;i-) stateSE1i+1=stateSE1i; stateSE3i+1=stateSE3i; stateSE5i+1=stateSE5i; stateSE7i+1=stateSE7i; if(offset5+offset7400) if(offset7+offset3)(offset5+offset1) servo_pwm=(offset7+offset5-80)+(offse
13、t7-lastoffset7)-(offset5-lastoffset5)*(PWM_MAX-PWM_MID)/200); else servo_pwm=(-offset7-offset5+80)+(offset7-lastoffset7)-(offset5-lastoffset5)*(PWM_MAX-PWM_MID)/200); if(servo_pwm+PWM_MIDPWM_MAX) servo_pwm=PWM_MAX-PWM_MID; if(servo_pwm+PWM_MID=PWM_MAX-PWM_MID+100) servo_pwm=lastservo_pwm; else if(of
14、fset5+offset7)280) /四個電感處在同側(cè) servo_pwm=(offset7-offset5)+(offset7-lastoffset7)-(offset5-lastoffset5)*(PWM_MAX-PWM_MID)/100); else servo_pwm=(offset7-offset5)*3/2+(offset1-offset5+offset7-offset3)*4+(offset7-lastoffset7)-(offset5-lastoffset5)*2)*(PWM_MAX-PWM_MID)/350)+(diff3-diff7)+(diff5-diff1)*5; /
15、*求相應(yīng)的PWMDTY01* if(servo_pwm+PWM_MIDPWM_MAX) servo_pwm=PWM_MAX-PWM_MID; PWMDTY01=PWM_MAX; else if(servo_pwm+PWM_MIDPWM_MIN) servo_pwm=PWM_MIN-PWM_MID; PWMDTY01=PWM_MIN; else PWMDTY01=PWM_MID+servo_pwm; lastservo_pwm=servo_pwm; lastoffset7=offset7; lastoffset5=offset5; prespeed=presetspeed-abs(PWMDTY01-PWM_MID)/(PWM_MAX-PW
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京2024年12月國家藥品監(jiān)督管理局高級研修學(xué)院招考1名編制外人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 4.1中國的機(jī)遇與挑戰(zhàn)課件- -2024-2025學(xué)年統(tǒng)編版道德與法治九年級下冊
- 中國海油2025屆校園招聘統(tǒng)一考試筆試參考題庫附帶答案詳解
- 3.1《中國擔(dān)當(dāng)》教學(xué)設(shè)計- 2024-2025學(xué)年統(tǒng)編版道德與法治九年級下冊
- 安徽省淮南市潘集區(qū)屆2025屆數(shù)學(xué)三下期末調(diào)研模擬試題含解析
- 合肥科技職業(yè)學(xué)院《生物化學(xué)1》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省揚州市2025屆三下數(shù)學(xué)期末經(jīng)典模擬試題含解析
- 山東理工職業(yè)學(xué)院《技術(shù)軟件應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西科技大學(xué)《無形資產(chǎn)評估》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西省呂梁地區(qū)方山縣2024-2025學(xué)年小升初數(shù)學(xué)綜合練習(xí)卷含解析
- 2025年不停電電源(UPS)項目合作計劃書
- 林木采伐安全協(xié)議書范本
- 招聘技巧話術(shù)培訓(xùn)
- 2025年湖南食品藥品職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年常考版參考題庫含答案解析
- 碳酸鈣脫硫劑項目可行性研究報告立項申請報告模板
- 山東省泰安市新泰市2024-2025學(xué)年(五四學(xué)制)九年級上學(xué)期1月期末道德與法治試題(含答案)
- 英語-遼寧省大連市2024-2025學(xué)年高三上學(xué)期期末雙基測試卷及答案
- DB3502T 160-2024 工業(yè)產(chǎn)品質(zhì)量技術(shù)幫扶和質(zhì)量安全監(jiān)管聯(lián)動工作規(guī)范
- 燃?xì)廪r(nóng)村協(xié)管員培訓(xùn)
- 春節(jié)后復(fù)工安全教育培訓(xùn)
- 提高發(fā)票額度的合同6篇
評論
0/150
提交評論