基于dsp的磁懸浮小燈控制系統(tǒng)0001_第1頁
基于dsp的磁懸浮小燈控制系統(tǒng)0001_第2頁
基于dsp的磁懸浮小燈控制系統(tǒng)0001_第3頁
基于dsp的磁懸浮小燈控制系統(tǒng)0001_第4頁
基于dsp的磁懸浮小燈控制系統(tǒng)0001_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于DSP的磁懸浮小燈控制系統(tǒng)I摘要我們組設(shè)計的磁懸浮小燈控制系統(tǒng)是基于 TMS320F28377DSP芯片。本設(shè)計采用了 上下兩個霍爾元件作為感應(yīng)器,通過DSP中的AD模塊去采集這兩路信號,然后經(jīng)過 PID 控制后把輸出通過DSP的 DA模塊將數(shù)據(jù)發(fā)送到驅(qū)動器控制線圈電流大小,以改變磁場 來控制燈的位置使其保持懸浮,整個系統(tǒng)夠成了一個閉環(huán)控制系統(tǒng), 抗干擾能力強(qiáng),新 穎且可廣泛于教育領(lǐng)域,增加學(xué)生的學(xué)習(xí)興趣。Abstract關(guān)鍵詞:TMS320F28337S PID控制 閉環(huán)控制系統(tǒng)基于DSP的磁懸浮小燈控制系統(tǒng)I摘要 .IAbstract .I引言. 1第一章磁懸浮小燈控制系統(tǒng)的結(jié)構(gòu) .1

2、1.1電源部分 . 21.2 AD轉(zhuǎn)換部分 . 21.3 PID 部分. 31.4 DA轉(zhuǎn)換部分 . 41.5驅(qū)動器部分 . 5第二章程序流程圖.6結(jié)論. 6致謝. 6參考文獻(xiàn). 7附錄. 8磁懸浮小燈控制系統(tǒng)整體結(jié)構(gòu)圖,如圖1所示。AOs)PID CodtroNerSaturationDAC CLASSI BL1AD.VALUECl- -Anc ADCCL1磁 Channel: 1引言目前在現(xiàn)實(shí)生活中,磁懸浮技術(shù)得到了廣泛的應(yīng)用 ,本設(shè)計采用把磁懸浮技術(shù)使得小燈并發(fā)亮保持懸浮,改變了傳統(tǒng)的照明技術(shù),其中也用到了PID閉環(huán)控制。非常新穎,且系統(tǒng)比較穩(wěn)定,能夠很好的應(yīng)用于教育領(lǐng)域,增加學(xué)生的學(xué)習(xí)

3、興趣。對 其他領(lǐng)域也有廣泛的啟發(fā)意義。第一章 磁懸浮小燈控制系統(tǒng)的結(jié)構(gòu)分析儀使用DSP28377S開發(fā)平臺作為基礎(chǔ)。整個系統(tǒng)可以分成 5個部分:(1)開關(guān)電源部分:給系統(tǒng)提供24V電源。(2) AD采集部分:使用TMS320X28377S內(nèi)部的AD外設(shè),對待測的的霍爾元件 兩端進(jìn)行模數(shù)轉(zhuǎn)換。得到數(shù)字量表示的電壓值。(3)PID部分:在DSP中,使用AD模塊采集到的外部信號,并轉(zhuǎn)化為數(shù)字信號作為PID控制器的反饋信號,然后設(shè)定期望值,在DSP中經(jīng)過數(shù)字PID計算后通過DA模塊傳送給驅(qū)動器,從而使得驅(qū)動模塊能夠調(diào)整電流的大小, 一控制磁場的強(qiáng)度,是燈保持懸浮。(4)驅(qū)動模塊部分:根據(jù)DA傳送過來的

4、信號輸出相應(yīng)大小電流給線圈。(5) DA輸出部分:使用TMS320F28377S內(nèi)部的DA外設(shè),把經(jīng)過PID計算的輸 出量傳送給外部的驅(qū)動器。OUTPUTSENSOR DOWN圖1磁懸浮小燈控制系統(tǒng)整體結(jié)構(gòu)圖DesiredOFFSETSENSOfi.UPFrd-Order FilerGan2ACC OA8S1-BL1ADC CLASSI BL2Anr ADCCL1Channel: 2Fr-Order FiNerl基于DSP的磁懸浮小燈控制系統(tǒng)211開關(guān)電源部分設(shè)備的電源部分的目的是為了給整個系統(tǒng)體提供24v的電源圖2系統(tǒng)的電源部分12 AD轉(zhuǎn)換部分1.2.11.2.1 ADAD 轉(zhuǎn)換本設(shè)計采用

5、TMS320F28377S內(nèi)部的A/D轉(zhuǎn)換器來采集外部霍爾元件的信號TMS320F28377S內(nèi)部的A/D轉(zhuǎn)換器的特性如下1.12位或16位的轉(zhuǎn)換精度2.最高25MHz的轉(zhuǎn)換速度、3.16路獨(dú)立通道。由于控制系統(tǒng)的整體工作頻率比這芯片內(nèi)部 25MHz的最高轉(zhuǎn)換速度慢。為了得 到更加精確的轉(zhuǎn)換值,可以采用采集10次數(shù)據(jù),講采集到的數(shù)據(jù)就行快速排序,去 掉采集到系統(tǒng)的最高和最低的值,然后將這8次數(shù)據(jù)求其平均值。把這樣處理后的結(jié) 果再當(dāng)做一次采集的數(shù)據(jù)。1.2.21.2.2 ADAD轉(zhuǎn)化的實(shí)現(xiàn)1.配置AD轉(zhuǎn)換的時鐘信號ADCCLK,系統(tǒng)預(yù)分頻。2.配置AD轉(zhuǎn)換的采樣模式,本設(shè)計才用12位通道,單端模

6、式3.配置AD轉(zhuǎn)換的通道以及轉(zhuǎn)換完成后中斷標(biāo)志清零。基于DSP的磁懸浮小燈控制系統(tǒng)31.3 PID控制部分1.3.11.3.1 PIDPID控制原理PID控制器是一個在工業(yè)控制應(yīng)用中常見的反饋回路部件。這個控制器把收集 到的數(shù)據(jù)和一個參考值進(jìn)行比較,然后把這個差別用于計算新的輸入值,這個新的 輸入值的目的是可以讓系統(tǒng)的數(shù)據(jù)達(dá)到或者保持在參考值。和其他簡單的控制運(yùn)算 不同,PID控制器可以根據(jù)歷史數(shù)據(jù)和差別的出現(xiàn)率來調(diào)整輸入值,這樣可以使系 統(tǒng)更加準(zhǔn)確,更加穩(wěn)定??梢酝ㄟ^數(shù)學(xué)的方法證明,在其他控制方法導(dǎo)致系統(tǒng)有穩(wěn) 定誤差或過程反復(fù)的情況下,一個 PID反饋回路卻可以保持系統(tǒng)的穩(wěn)定。1.3.21.

7、3.2 PIDPID控制的實(shí)現(xiàn)在DSP中,使用AD模塊采集到的外部信號,并轉(zhuǎn)化為數(shù)字信號作為 PID控制器 的反饋信號,然后設(shè)定期望值,在 DSP中經(jīng)過數(shù)字PID計算后通過DA模塊傳送給驅(qū) 動器,從而使得驅(qū)動模塊能夠調(diào)整電流的大小, 一控制磁場的強(qiáng)度,是燈保持懸浮。1定義變量floatek1 = 0;/偏差ek-1floatKp = -2.2;/定義比例系數(shù)floatKi = 0;/定義積分常數(shù)floatKd = -0.03;/定義微分常數(shù)floatdelta = 0;/定義誤差floatuk = 0;uk2.采用PD控制實(shí)現(xiàn)程序float PID( float ek)基于DSP的磁懸浮小燈控

8、制系統(tǒng)4delta = ek-ek1;uk = Kp*ek+Kd/T*delta; ek1 = ek;return uk;1.4 DA 部分1.4.11.4.1 DADA 轉(zhuǎn)換1.4.21.4.2 DADA轉(zhuǎn)換實(shí)現(xiàn)1.5驅(qū)動器部分PID轉(zhuǎn)換結(jié)束后,輸出的數(shù)據(jù)就被存放 DA_value中,傳送給驅(qū)動器,圖4驅(qū)動器圖基于DSP的磁懸浮小燈控制系統(tǒng)5第二章程序流程圖磁懸浮小燈系統(tǒng)程序流程圖如下:仁包含所要用到的頭文件FincludeHF20 x_Projehl) 2定義各個變量(如血kp, kjj kd* AD_value) 3定義將用到的子函數(shù)(ConfigijreADC,PIDFDAC_5end

9、)1引始化系統(tǒng)時鐘(InitSysarl()Z初始化中斷向量表(InitPieCtrl(rInrtPtefedTableO)工開定時器中斷(開三級中斷)1. ADMW集來自霍爾元件的兩路信號)2. PID (對采集到的信號進(jìn)行3. DAC_send (把經(jīng)卩處理的數(shù)據(jù)發(fā)送給驅(qū)動器圖5 C程序流程圖結(jié)論本設(shè)計實(shí)現(xiàn)了基于TMS320F28337S的磁懸浮小燈控制系統(tǒng)。使用了 TMS320F28377S內(nèi)部的ADC、DAC資源,整個實(shí)驗設(shè)計首先通過 AD采集外部的 信號,然后經(jīng)過PID計算處理后,再通過DA將數(shù)據(jù)發(fā)送到驅(qū)動器控制線圈電流大 小,以改變磁場來控制燈的位置使其保持懸浮。孌重與子函埶mai

10、nlS 數(shù)中斷函數(shù)基于DSP的磁懸浮小燈控制系統(tǒng)6/ Device Headerfile and Examples In clude File致謝參考文獻(xiàn)1Texas In strume nt TMS320F2837xS Delfi no Microco ntrollersM丄 iterature Number: SPRUHX5C, 20152Texas Instruments. Using PWM Output as a Digital-to-Analog Converter on a TMS320F28377 Digital Signal Controller M. Application

11、 Report: SPRAA88A, 20083Texas Instruments.主程序清單:#in eludeF28x Project.h void ConfigureADC (void );void SetupADCSoftware (void );void error (void );unsignedlong AD_UP10,AD_DOWN10;float offset=1; / / 設(shè)置補(bǔ)償 float Exp=-1.2;/定義期望int AD_value;float Real;/當(dāng)前實(shí)際電壓unsignedlong AD_UP_AVE,AD_DOWN_AVE;floatek1 =

12、0;/ 偏差 ek-1floatKp = -2.2;/定義比例系數(shù)floatKi = 0;/定義積分常數(shù)floatKd = -0.03;/定義微分常數(shù)floatT = 0.001;/定義周期floatsum = 0;floatdelta = 0;floatuk = 0;ukfloat abso (float ek)if ( ek = 65535)i = 65535;else if ( i = 0)i = 0;return i;void DAC_send ( unsigned char Passage,unsignedint dat) _unsignedchar i, mode;un sig n

13、ed int j;switch (Passage)/0 x20 :通道 A 0 x22: 通道 B 0 x24 :通道 C 0 x26 :D.設(shè)置軟件自動更新case 0:mode = 0 x20;break ;case 1:mode = 0 x22;break ;case 2:mode = 0 x24;break ;case 3:mode = 0 x26;break ;基于DSP的磁懸浮小燈控制系統(tǒng)8default breakfor (i=0;i8;i+)/DA8534_DIN(mode&0 x80);j = mode&0 x80;if (j=0)GpioDataRegs.GPADAT.bi

14、t.GPIO16 = 0;ioport_set_pin_level(PIO_PB8_IDX,IOPORT_PIN_LEVEL_LOW); data=0 elseGpioDataRegs.GPADAT.bit.GPIO16 = 1;ioport_set_pin_level(PIO_PB8_IDX,IOPORT_PIN_LEVEL_HIGH); data=1 DELAY_US(2);GpioDataRegs.GPADAT.bit.GPIO18 = 1; ioport_set_pin_level(PIO_PB10_IDX,IOPORT_PIN_LEVEL_HIGH); clk=1 DELAY_US(

15、2);mode = 1;DELAY_US(2);GpioDataRegs.GPADAT.bit.GPIO18 = 0;/ioport_set_pin_level(PIO_PB10_IDX,IOPORT_PIN_LEVEL_LOW); clk=0DELAY_US(2);for (i=0;i16;i+) /DA8534 DIN(dat&0 x8000);j = dat&0 x8000;if (j=0)GpioDataRegs.GPADAT.bit.GPIO16 = 0;ioport_set_pin_level(PIO_PB8_IDX,IOPORT_PIN_LEVEL_LOW); /data=0 e

16、lse/GpioDataRegs.GPADAT.bit.GPIO16 = 1;ioport_set_pin_level(PIO_PB8_IDX,IOPORT_PIN_LEVEL_HIGH); data=1 DELAY_US(2);GpioDataRegs.GPADAT.bit.GPIO18 = 1; ioport_set_pin_level(PIO_PB10_IDX,IOPORT_PIN_LEVEL_HIGH); clk=1 DELAY_US(2);dat = 1;DELAY_US(2);GpioDataRegs.GPADAT.bit.GPIO18 = 0;/ioport_set_pin_le

17、vel(PIO_PB10_IDX,IOPORT_PIN_LEVEL_LOW); clk=0DELAY_US(2);GpioDataRegs.GPADAT.bit.GPIO19 = 1;基于DSP的磁懸浮小燈控制系統(tǒng)9基于DSP的磁懸浮小燈控制系統(tǒng)10/ioport_set_p inevel(PI0_PB11 _I DX,IOPORT_PIN_LEVEL_HIGH); cs=1void quick (unsignedlong *a, int i, int j)int m, n, temp;int k;m=i;n=j;k=a(i+j)/2;do while (amk&mk&ni) n-;if (m

18、=n) temp=am;am=a n;a n=temp;m+;n-; while (m=n);if (mi) quick(a,i,n);_in terrupt廠un sig nedvoidcpu_timer0srlong i;(void )float ek=0;float Output;/ 變化unsigned long DA_value;CpuTimer O.ln terruptCou nt+;GpioDataRegs.GPADAT.bit.GPIO12 = 1;/tur n on led基于DSP的磁懸浮小燈控制系統(tǒng)11基于DSP的磁懸浮小燈控制系統(tǒng)1 0AD_UP_AVE=O;AD_DO

19、WN_AVE=0;for (i=0;i10;i+)/AD sample 10 timesc on vert, wait for completi on, and store results/start con vers ions immediately via software, ADCAAdcaRegs.ADCSOCFRC1.all = 0 x0003;/SOCO and SOC1/start con vers ions immediately via software, ADCB /wait for ADCA to complete, the n ack no wledge flag wh

20、ile (AdcaRegs.ADCINTFLG.bit.ADCINT1 = 0); AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;AD_UPi = AdcaResultRegs.ADCRESULT0; AD_DOWNi = AdcaResultRegs.ADCRESULT1;quick(AD_UP,0,9);/sortquick(AD_DOWN,0,9);AD_UP0=0;/delete maximun & minimunAD_UP9=0;AD_DOWN0=0;AD_DOWN9=0;for (i=0;i10;i+)AD_UP_AVE+=AD_UPi; AD_DOW

21、N_AVE+=AD_DOWNi;AD_value = ( int )( float )(AD_DOWN_AVE)-(AD_UP_AVE)/8.0);Real = AD_value/1000.0; /calculate Real as suspensionpositionof the plantek = Exp - Real;/ek is suspensionpositionerrorOutput = PID(ek)+offset;DA_value = (unsignedlong )(Output*65535/5.0);/convert Output toDA_value for DAC mod

22、uleDA_value = saturatio n(DA_value);/output saturati onDAC_se nd(0,DA_value);/using DA to sendDA_value to DAC moduleGpioDataRegs.GPADAT.bit.GPIO12 = 0;/turn off led/ Ackno wledge this in terrupt to receive more in terrupts from group 1PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;/variables to store conver

23、sion results Uin t16 AdcaResult0;Uin t16 AdcaResult1;Uint16 sdata = 0 x0000;II send dataUi nt16 rdata;II received datavoid main (void )基于DSP的磁懸浮小燈控制系統(tǒng)1 1/ Step 1.1 nitialize System Control:/ PLL, WatchDog, enable Peripheral Clocks/ This example function is found in the F2837xS_SysCtrl.c file.In itSy

24、sCtrl();/ Step 2. Initialize GPIO:/ This example function is found in the F2837xS_Gpio.c file and/ illustrates how to set the GPIO to its default state.In itGpio();/ I ni tSpiaGpio();/ Step 3. Clear all interrupts and initialize PIE vector table:/ Disable CPU in terruptsDINT;/ I nitialize the PIE co

25、n trol registers to their default state./ The default state is all PIE in terrupts disabled and flags/ are cleared.In itPieCtrl();/ Disable CPU interrupts and clear all CPU interrupt flags:IER = 0 x0000;IFR = 0 x0000;/ I nitialize the PIE vector table with poin ters to the shell In terrupt/ Service

26、Routi nes (ISR).In itPieVectTable();/ Interrupts that are used in this example are re-mapped to/ ISR fun cti ons found within this file.EALLOW; / This is needed to write to EALLOW protected registersPieVectTable.TIMER0NT = & cpu_timer0_isr;EDIS; / This is n eeded to disable write to EALLOW protected

27、 registers/ Step 4. Initialize the Device Peripheral. This function can be/ fou nd in F2837xS_CpuTimers.cIn itCpuTimers();/ For this example, only in itialize the Cpu TimersCon figCpuTimer(&CpuTimer0, 200, 500);CpuTimer0Regs.TCR.all = 0 x4000;/ Use write-o nly in struction to set TSS bit/ Step 5. Us

28、er specific code, en able in terrupts:/ En able TINT0 in the PIE: Group 1 in terrupt 7PieCtrlRegs.PIEIER1.bit.lNTx7 = 1;/Con figure the ADCs and power them upCon figureADC();/Setup the ADCs for software con vers ionsSetupADCSoftware();IER |= MNT1;基于DSP的磁懸浮小燈控制系統(tǒng)1 2/ Enable global Interrupts and high

29、er priority real-time debug events:EINT;/ En able Global in terrupt INTMERTM;/ En able Global realtime in terrupt DBGM/ Step 6. IDLE loop. Just sit and loop forever (opti on al):while (1)/Write ADC con figuratio ns and power up the ADC for both ADC A and ADC B void ConfigureADC (void )EALLOW;/write

30、con figurati onsAdcaRegs.ADCCTL2.bit.PRESCALE = 6;/set ADCCLK divider to /4AdcbRegs.ADCCTL2.bit.PRESCALE = 6; /set ADCCLK divider to /4AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE); /AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);/Set pulse positi ons to lateAd

31、caRegs.ADCCTL1.bit .IN TPULSEPOS = 1; AdcbRegs.ADCCTL1.bit.lNTPULSEPOS = 1;/power up the ADCs AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;/delay for 1ms to allow ADC time to power up DELAY_US(1000);EDIS;void SetupADCSoftware (void )Uin t16 acqps;/determ ine mi ni mum acquisiti on wi ndow (in SYSCLKS) based on resoluti onif (ADC_RESOLUTION_12BIT = AdcaRegs.ADCCTL2.bit.RESOLUTION) acqps = 14;75nselse /resolution is 16-bitacqps = 63;

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論