freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的直流電機(jī)pwm控制系統(tǒng)設(shè)計(jì)-資料下載頁(yè)

2025-11-08 20:59本頁(yè)面

【導(dǎo)讀】直流電機(jī)傳動(dòng)系統(tǒng)是現(xiàn)代傳動(dòng)系統(tǒng)中最主要的機(jī)電能量變化形式之一。會(huì)中廣泛的應(yīng)用,許多系統(tǒng)有調(diào)速的要求:如車輛、電梯、機(jī)床、造紙機(jī)械等等。方面的考慮,也需要對(duì)直流電機(jī)進(jìn)行控制。直流電機(jī)控制系統(tǒng)由控制部分、功率部分。和電機(jī)三大要素組成。各部分之間的不同組合,可構(gòu)成不同的控制系統(tǒng)。直流電機(jī)的控制方法[1]可分為兩方向,即勵(lì)磁控制與電樞電壓控制。換向器結(jié)構(gòu)強(qiáng)度的限制,而且由于勵(lì)磁線圈電感較大,動(dòng)態(tài)響應(yīng)較差。信號(hào)輸入直流電機(jī),通過(guò)改變脈沖信號(hào)開關(guān)的比例,達(dá)到速度控制的效果。ON的時(shí)間內(nèi)施加電壓,OFF的時(shí)間內(nèi)切斷電壓,電機(jī)的轉(zhuǎn)動(dòng)將是斷續(xù)的。本課題研究了一種直流電機(jī)轉(zhuǎn)速的控制系統(tǒng)。該控制系統(tǒng)由上位機(jī)子系統(tǒng)和下位。上位機(jī)子系統(tǒng)為主控單元,下位機(jī)子系統(tǒng)以ARM為核心,上位機(jī)。下位機(jī)采用LPC2114處理器,它執(zhí)行上。位機(jī)指令,通過(guò)直流電機(jī)驅(qū)動(dòng)電路控制直流電機(jī)的運(yùn)轉(zhuǎn)。大的成功,目前已經(jīng)占有75%以上32位RISC嵌入式產(chǎn)品市場(chǎng)。實(shí)時(shí)操作系統(tǒng)三個(gè)發(fā)展階段。

  

【正文】 變量 */ typedef unsigned int uint32。 /*無(wú)符號(hào) 32 位整型變量 */ typedef signed int int32。 /*有符號(hào) 32 位整型變量 */ typedef float fp32。 /*單精度浮點(diǎn)數(shù)( 32 位長(zhǎng)度) */ typedef double fp64。 /*雙精度浮點(diǎn)數(shù)( 64 位長(zhǎng)度) */ ( 2) 堆棧增長(zhǎng)方向 uC/OSII 使用結(jié) 構(gòu)常量 OS_STK_GROWTH 指定堆棧的生長(zhǎng)方式。 ADS的 C 語(yǔ)言編譯器僅支持從上到下長(zhǎng)的堆棧生長(zhǎng)方式,而且必須是滿遞減堆棧,所以O(shè)S_STK_GROWTH 的值為 1。 ( 3) 使用軟中斷 SWI 作底層接口 移植的 uC/OSII 具有 2 個(gè)指令集,用戶任務(wù)具有 2 中處理器模式:用戶模式與系統(tǒng)模式,所以組合起來(lái)共有 4 種工作方式,每種方式對(duì)于系統(tǒng)資源具有不同的訪問控制權(quán)限。移植時(shí)將 uC/OSII 的內(nèi)核固化在 Flash 中,從別的地方將任務(wù)調(diào)入。將軟中斷指令 SWI 作為底層接口,這樣使得底層接口函數(shù)與處理器狀態(tài)無(wú)關(guān),并 且調(diào)用函數(shù)時(shí)不用知道函數(shù)的位置。 移植匯編語(yǔ)言編寫的與處理器相關(guān)的函數(shù) 文件中要移植 4 個(gè)匯編語(yǔ)言編寫的與處理器相關(guān)的函數(shù), 4 個(gè)函 數(shù)如下: ( 1) OSStartHighRdy():運(yùn)行優(yōu)先級(jí)最高的就緒任務(wù) 此函數(shù)是在 OSStart()多任務(wù)啟動(dòng)之后,負(fù)責(zé)從最高優(yōu)先級(jí)任務(wù)的 TCB 任務(wù)控制塊中獲得該任務(wù)的堆棧指針 SP,通過(guò) SP 依次將 CPU 現(xiàn)場(chǎng)恢復(fù),這時(shí)系統(tǒng)就將控制權(quán)交給用戶創(chuàng)建的該任務(wù)進(jìn)程,直到該任務(wù)被阻塞或者被其它高優(yōu)先級(jí)的任務(wù)搶占CPU。該函數(shù)僅僅在多任務(wù)啟動(dòng)時(shí)被執(zhí)行一次, 用來(lái)啟動(dòng)第一個(gè),也是最高優(yōu)先級(jí)的任務(wù)執(zhí)行,之后多任務(wù)的調(diào)度和切換就由 OSCtxSw()函數(shù)來(lái)實(shí)現(xiàn)。 邵陽(yáng)學(xué)院畢業(yè)設(shè)計(jì) (論文 ) 26 ( 2) OSCtxSw():任務(wù)級(jí)的任務(wù)切換函數(shù) 該函數(shù)由 OS_TASK_SW()宏調(diào)用, OS_TASK_SW()負(fù)責(zé)任務(wù)之間的調(diào)度。它的工作是先將當(dāng)前任務(wù)的 CPU 現(xiàn)場(chǎng)保存到該任務(wù)堆棧中,然后獲得最高優(yōu)先級(jí)任務(wù)的堆棧指針,從該堆棧中恢復(fù)此任務(wù)的 CPU 現(xiàn)場(chǎng),使之繼續(xù)執(zhí)行。這樣就完成了一次任務(wù)切換。 ( 3) OSIntCtxSw():中斷級(jí)的任務(wù)切換函數(shù) 該函數(shù)由 OSIntExit()調(diào)用。中斷級(jí)的任務(wù)切 換是在時(shí)鐘中斷 ISR(中斷服務(wù)例程 )中發(fā)現(xiàn)有高優(yōu)先級(jí)任務(wù)等待的時(shí)鐘信號(hào)到來(lái)時(shí),則需要在中斷退出后并不返回被中斷任務(wù),而是直接調(diào)度就緒的高優(yōu)先級(jí)任務(wù)執(zhí)行。這樣做的目的主要是能夠盡快地讓高優(yōu)先級(jí)的任務(wù)得到響應(yīng),保證系統(tǒng)的實(shí)時(shí)性能。它的原理基本上與任務(wù)級(jí)的切換相同,但是由于進(jìn)入中斷時(shí)己經(jīng)保存過(guò)了被中斷任務(wù)的 CPU 現(xiàn)場(chǎng),因此這里就不用再進(jìn)行類似的操作,只需要對(duì)堆棧指針做相應(yīng)的調(diào)整,原因是函數(shù)的嵌套。 ( 4) OSTickISR():時(shí)鐘節(jié)拍中斷服務(wù)函數(shù) 時(shí)鐘節(jié)拍中斷服務(wù)函數(shù)的主要任務(wù)是負(fù)責(zé)處理時(shí)鐘中斷,調(diào)用系統(tǒng) 實(shí)現(xiàn)的OSTimeTick()函數(shù),如果有等待時(shí)鐘信號(hào)的高優(yōu)先級(jí)任務(wù),則需要在中斷級(jí)別上調(diào)度其執(zhí)行。其他相關(guān)的兩個(gè)函數(shù)是 OSIntEnter()和 OSIntExit(),都需要在 ISR 中執(zhí)行。 移植與操作系統(tǒng)相關(guān)的 文件 ( 1) OSTaskStkInit():任務(wù)堆棧初始化函數(shù) 此函數(shù)涉及到任務(wù)初始化時(shí)的一個(gè)堆棧設(shè)計(jì),也就是在堆棧增長(zhǎng)方向上如何定義每個(gè)需要保存的寄存器位置,在 ARM 體系結(jié)構(gòu)下,任務(wù)堆??臻g由高至低依次將保存著 PC, LR, R12, R11, R10, … , R1, R0, CPSR, OsEnterSum。 OsEnterSum不是 CPU 寄存器,它是一個(gè)全局變量,用來(lái)保存關(guān)中斷的次數(shù) 【 10】 。 ( 2) 軟件中斷 C 語(yǔ)言處理函數(shù) 軟件中斷 C 語(yǔ)言處理函數(shù)原型: void SWI_Exception (int SWI_Num,int*Regs);其中參數(shù) SWI_Num 為功能號(hào),而 Regs 為指向堆棧中保存寄存器的值的位置。程序比較簡(jiǎn)單,使用一個(gè) switch 語(yǔ)句把各個(gè)功能分隔開,各個(gè)功能相對(duì)獨(dú)立。 ( 3) 定義允許和禁止中斷宏 與所有的實(shí)時(shí)內(nèi)核一樣, uC/OSII 需要先關(guān)中斷, 再處理臨界段代碼,并且在處理完畢后重新開中斷。這就使得 uC/OSII 能夠保護(hù)臨界段代碼免受多任務(wù)切換或中斷程序的破壞。為了避免不同編譯器廠商提供不同的實(shí)現(xiàn)方法所帶來(lái)的影響,以增邵陽(yáng)學(xué)院畢業(yè)設(shè)計(jì) (論文 ) 27 加可移植性, uC/OSII定義了 2個(gè)宏,用于關(guān) /開中斷: OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()。 ( 4) OSStartHighRdy():運(yùn)行最高優(yōu)先級(jí)任務(wù)函數(shù) uC/OSII 的啟動(dòng)多任務(wù)環(huán)境的函數(shù)為 OSStart(),用戶在調(diào)用 OSStart()之前,必須建立了一個(gè)或更多任務(wù)。 OSStart()最終調(diào)用函數(shù) OSStartHighRdy()運(yùn)行多任務(wù)啟動(dòng)前優(yōu)先級(jí)最高的任務(wù)。 直流電機(jī)控制模 塊 電機(jī)速度控制 PWM 驅(qū)動(dòng)模塊的實(shí)現(xiàn) 電機(jī)速度由 PWM 占空比決定。 LPC2114 的 PWM 功能基于標(biāo)準(zhǔn)的定時(shí)器模塊之上,它同樣具有 32 位定時(shí)器及預(yù)分頻控制電路及 7 個(gè)匹配寄存器,可實(shí)現(xiàn) 6 個(gè)單邊沿 PWM 或 3 個(gè)雙邊沿 PWM 輸出,也可以采用這兩種類型的混合輸出。具有匹配中斷、匹配 PWMTC 復(fù)位、匹配 PWMTC 停止功能。如果不使能 PWM 模式,可作為一個(gè)標(biāo)準(zhǔn)的定時(shí)器。 PWM 的基本寄存器功能框圖如圖 所示。 32 位定時(shí)器 PWMTC 的計(jì)數(shù)頻率由 pclk 經(jīng)過(guò) PWMPR 進(jìn)行分頻控制得到,而定時(shí)器的啟動(dòng) /停止、計(jì)數(shù)復(fù)位由 PWMTCR 控制,當(dāng)有比較事件發(fā)生時(shí), PWMIR會(huì)設(shè)置相關(guān)的中斷標(biāo)志 (因?yàn)椴皇嵌〞r(shí)器溢出而產(chǎn)生中斷,所以圖 中采用虛線連接 )。若已打開中斷允許 (VIC),則會(huì)產(chǎn)生中斷。當(dāng)然,預(yù)分頻控制器 PWMPR 只是控制分頻數(shù),而其對(duì)應(yīng)的分頻計(jì)數(shù)器是 PWMPC,但無(wú)須用戶操作 PWMPC 寄存器。圖 為 PWM 的比較匹配寄存器功能圖。對(duì)于 PWM 的產(chǎn)生是通過(guò) PWM的比較匹配寄存器實(shí)現(xiàn)。定時(shí)器比較匹配由 PWMMCR 進(jìn)行匹配操作設(shè)置,而PWMMR0~6 則為 7 路比較匹配通道的比較值寄存器。當(dāng)比較匹配發(fā)生時(shí),將會(huì)按照 PWMMCR 設(shè)置的方法產(chǎn)生中斷或復(fù)位 PWMTC 等, PWMPCR 可以控制單邊沿或雙邊沿 PWM 輸出,允許或不允許 PWM 輸出。另外,為了確保在 PWMMR0~6的比較值進(jìn)行修改過(guò)程中不影響 PWM 輸出,使用了一個(gè) PWMLER 鎖存使能寄存器。當(dāng)要修改 PWMMR0~6 的比較值時(shí),只有控制 PWMLER 的對(duì)應(yīng)位置位,在匹配 0 事件發(fā)生后此值才會(huì)生效 [12]。 使用單邊 PWM 輸出時(shí),在 PWM 周期開始時(shí)為高電平,匹配后為低電平 ;使用 PWMMR0 作為 PWM 周期控制, PWMMRx 作為占空比控制。 PWM 基本操作方法如下: ( 1) 連接 PWM 功能引腳輸出,即設(shè)置 PINSEL0、 PINSEL1; 邵陽(yáng)學(xué)院畢業(yè)設(shè)計(jì) (論文 ) 28 ( 2) 設(shè)置 PWM 定時(shí)器的時(shí)鐘分頻值 (PWMPR),得到所要的定時(shí)器時(shí)鐘; ( 3) 設(shè)置比較匹配控制 (PWMMCR),并設(shè)置相應(yīng)的比較值 (PWMMRx); ( 4) 設(shè)置 PWM 輸出方式 ; ( 5) 設(shè)置 PWMTCR,啟動(dòng)定時(shí)器,使能 PWM; ( 6) 運(yùn)行過(guò)程中要更改比較值時(shí),更改之后要設(shè)置鎖存使能 圖 PWM的基本寄存器功能框圖 圖 PWM的比較匹配寄存器功能框圖 。 系統(tǒng)采用 PWM PWM6 輸出,可采用相同的周期,初始化程序如下所示: PWMPR=0x00。 /*不分頻,計(jì)數(shù)頻率為 Fpclk*/ PWMMCR=0x02。 /*設(shè)置 PWMMR0 匹配時(shí)復(fù)位 PWMTC*/ PWMMR0=2020。 /*設(shè)置 PWM 周期, PWMMR0=2020*/ PWMMR4=1000。 /*設(shè) 置 PWM4 占空比, PWMMR6=1000*/ PWMMR6=500。 /*設(shè)置 PWM6 占空比, PWMMR6=500*/ 定時(shí)器控制寄存器PWMTCR ( R / W )預(yù)分頻控制PWMPR ( R / W )32 位定時(shí)器 / 計(jì)數(shù)器PWMTCR ( R / W )中斷寄存器PWMTIR ( R / W )匹配比較PCLK重裝映像控制PW M LER ( R / W )比較匹配控制PW M M CR ( R / W )比較匹配值PW M M RO ~ 6 ( R / W )32 位定時(shí)器 / 計(jì)數(shù)器PW M TC ( R / W )比較PW M 輸出方式控制PW M PC R ( R / W )邵陽(yáng)學(xué)院畢業(yè)設(shè)計(jì) (論文 ) 29 PWMLER=0x51。 /*PWMMR0、 PWMMR PWMMR4 鎖存 */ PWMPCR=0x5000。 /*允許 PWM6, PWM4 輸出,單邊沿 PWM*/ PWMTCR=0x09。 /*啟動(dòng)定時(shí)器, PWM 使能 */ 注:前面已設(shè)置 PINSEL0 和 PINSEL1 寄存器。 LPC2114 應(yīng)用 程序流程 使用郵箱實(shí)現(xiàn)任務(wù)間的通信 郵箱能使一個(gè)任務(wù)或者中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送一個(gè)指針型的變量,該指針指向一個(gè)包含了特定“消息”的數(shù)據(jù)結(jié)構(gòu)。一個(gè)郵箱只能包含一個(gè)這樣的指針 (郵箱為滿時(shí) ),或者一個(gè)指向 NULL 的指針 (郵箱為空時(shí) )。系統(tǒng)采用郵箱機(jī)制實(shí)現(xiàn)任務(wù)間的通信。 應(yīng)用程序流程圖 系統(tǒng)流程圖如圖 、圖 所示 [11]。 圖 主程序流程圖 LPC2114 上的主程序執(zhí)行時(shí),啟動(dòng) uC/OSII 系統(tǒng)環(huán)境,建立主任務(wù)TaskStart。 TaskStart 首先會(huì)初始化目標(biāo)板,啟動(dòng)設(shè)置相關(guān)引腳、設(shè)置 PWM 功能及建立郵箱等。 TaskStart 任務(wù)創(chuàng)建接收上位機(jī)數(shù)據(jù)的任務(wù)。接收數(shù)據(jù)任務(wù)檢查上位機(jī)發(fā)來(lái)的數(shù)據(jù)包 (檢查包頭和效驗(yàn)和等 ),如果無(wú)誤,將包中有效信息 (電機(jī)轉(zhuǎn)速 PWM系統(tǒng)軟件初始化( 建立 Ta sk st a rt 任務(wù)等 )啟動(dòng)任務(wù) O S S ta rt ()多任務(wù) O S S ta rt ()權(quán)交操作系統(tǒng)任務(wù)開始操作系統(tǒng)初始化 O S In it ()邵陽(yáng)學(xué)院畢業(yè)設(shè)計(jì) (論文 ) 30 占空比和方向控制信息 )使用郵箱傳遞,并向上位機(jī)發(fā)送應(yīng)答包。 TaskStart 根據(jù)郵箱傳遞的信息,改變 PWM 輸出值和改變 ~ 引腳輸出。 圖 TaskStart任務(wù)流程 初始化目標(biāo)板創(chuàng)建郵箱初始化引腳 、 P WM 輸出建立接收串口數(shù)據(jù)的任務(wù)接收郵箱數(shù)據(jù) 開 始改變 P WM 輸出和改變P 0 . 16 ~ P 0 . 19 引腳輸出邵陽(yáng)學(xué)院畢業(yè)設(shè)計(jì) (論文 ) 31 4 主控程序和通信程序的實(shí)現(xiàn) 本章主要介紹上位機(jī)與 LPC2114 之間的串口通信,包括上位機(jī)的串口操作、LPC2114 的 UART0 串口驅(qū)動(dòng)實(shí)現(xiàn)和自定義通信協(xié)議的實(shí)現(xiàn)。上位機(jī)部分檢驗(yàn)用戶輸入,并轉(zhuǎn)換用戶輸入為 PWM 占空比和電機(jī)轉(zhuǎn)向信息,根據(jù)通信協(xié)議要求的格式打包發(fā)送,并檢驗(yàn)收到的應(yīng)答包,提示通信是否成功。 LPC2114 檢測(cè)到有數(shù)據(jù)傳送到 UART0 時(shí),當(dāng)數(shù)據(jù)格式符合協(xié)議時(shí)就會(huì)產(chǎn)生中斷接收數(shù)據(jù)包,檢查數(shù)據(jù)包以決定是否發(fā)送應(yīng)答包, 同時(shí)根據(jù)接收到的數(shù)據(jù)改變輸出 PWM 占空比和改變控制電機(jī)運(yùn)轉(zhuǎn)方向的引腳輸出值。 總體程序框圖 本調(diào)速控制系統(tǒng)軟件采用模塊化設(shè)計(jì)方法 ,如圖 所示。主程序首先與上位機(jī)進(jìn)行握手通訊 ,再啟動(dòng)定時(shí)中斷。在主程序的循環(huán)內(nèi) ,首先從上位機(jī) (或是單片機(jī)系統(tǒng)自行給定 )獲得電機(jī)轉(zhuǎn)速的命令字 ,包括控制電機(jī)的速度和轉(zhuǎn)動(dòng)方向。接著調(diào)用讀編碼器模塊 ,獲得電機(jī)的實(shí)際轉(zhuǎn)速 ,把給定速度與實(shí)際速度作差 ,得出控制量偏差。然后 ,調(diào)用控制算法 (如 PI)模塊。檢查、等待定時(shí)的到來(lái)。若定時(shí)沒到 ,若定時(shí)到了 ,調(diào)用PWM 驅(qū)動(dòng)模塊 ,驅(qū)動(dòng)電機(jī)。 這就形成了 本控制系統(tǒng)的速度閉環(huán) 。 圖 系統(tǒng)各模塊的工作流程圖 開始初始化
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1