




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 基于STM32的BLDC控制系統(tǒng)設(shè)計孫李濤(安陽師范學(xué)院 物理與電氣工程學(xué)院, 河南 安陽 455002)摘要:結(jié)合BLDC控制原理,設(shè)計了基于IR2110的BLDC驅(qū)動電路,實現(xiàn)對由IRF540搭建的主電路的驅(qū)動,通過安裝在BLDC中的霍爾傳感器反饋信號,結(jié)合STM32單片機高級定時器TIM1以及普通定時器TIM2采集的霍爾傳感器狀態(tài)產(chǎn)生六路帶死區(qū)互補的PWM波,實現(xiàn)對BLDC電機控制,并用液晶nokia5110實時顯示電機轉(zhuǎn)速。關(guān)鍵詞:STM32;IR2110;無刷直流電機;有位置傳感器;IRF540;Nokia51101 引言無刷直流 (Brushless Direct Current
2、,BLDC)電機是一種正快速普及的電機類型,它可在家用電器、汽車、航空航天、消費品、醫(yī)療、工業(yè)自動化設(shè)備和儀器等行業(yè)中使用。根據(jù)BLDC主控制器的性能不同,其控制技術(shù)大致有以下幾種。(1)根據(jù)定子繞組中線圈的互聯(lián)方式不同,帶有輸入捕捉、中斷、三相電機控制PWM定時器功能的主控制器可以通過梯形波驅(qū)動控制無刷直流電機。帶有輸入捕捉、中斷、三相電機控制PWM定時器功能的主控制器可以通過正弦波驅(qū)動控制無刷直流電機。(2)具有輸入捕捉、中斷、三相電機控制的帶死區(qū)PWM定時器若控制器帶死區(qū)時間也可以通過簡單矢量控制來控制無刷直流電機驅(qū)動信號。(3)若是高性能MCUMAC、高速A/D轉(zhuǎn)換器、輸入捕捉、中斷、
3、三相電機帶控制的死區(qū)PWM定時器的控制器可以通過矢量控制(FOC)。(4)輸入捕捉、高速A/D 轉(zhuǎn)換器、中斷、三相電機控制PWM定時器無傳感器梯形波驅(qū)動控制。(5)高性能MCUMAC、 高速A/D轉(zhuǎn)換器、中斷、三相電機帶控制的死區(qū)PWM定時器無傳感器矢量控制。本文正是設(shè)計開發(fā)基于STM32的有位置傳感器無刷直流電機的控制系統(tǒng)。2 系統(tǒng)方案設(shè)計2.1方案論證方案1:當(dāng)前計算機技術(shù)的空前發(fā)展為智能控制提供了良好的工作平臺,通過計算機我們可以控制高度復(fù)雜的系統(tǒng),但隨之而來的是高成本,高技術(shù)含量,需要匹配高技術(shù)人才。方案2:STC51單片機具有可靠性高,配套齊全,功能完善,適用性強易學(xué)易用,抗干擾能力
4、強,系統(tǒng)的設(shè)計建造工作量小,維護(hù)方便,容易改造體積小,重量輕,能耗低。但是51單片機資源太少,若想實現(xiàn)無刷直流電機的控制需要外接龐大的外圍電路,性價比不高。方案3:當(dāng)前工業(yè)現(xiàn)場廣泛使用的PLC可編程邏輯控制器,具有功能完善,組合靈活,擴(kuò)展方便,實用性強 ,使用方便,編程簡單,采用簡明的梯形圖,安裝簡單,容易維修 抗干擾能力和可靠性能力都非常強,但是它的成本非常高。方案4:STM32單片機擁有集成了AD、高級定時器TIM1等外設(shè),擁有高性能MCUMAC、高速A/D轉(zhuǎn)換器、輸入捕捉、中斷、三相電機帶控制的死區(qū)PWM定時器等諸多外設(shè),足以完成無刷直流電機的控制。根據(jù)系統(tǒng)設(shè)計要求用方案4已能基本完成對
5、無刷直流電機的控制,并且此方案用到的芯片數(shù)量少,易于控制,維護(hù)性強。2.2方案選擇本設(shè)計是基于單片機的無刷直流電機控制的系統(tǒng),主要由主控制裝置、驅(qū)動裝置、信息通道三部分構(gòu)成。主控制裝置是整個系統(tǒng)的核心裝置,主要實現(xiàn)無刷直流電機換相、計算無刷直流電機轉(zhuǎn)速等功能,位置傳感器霍爾傳感器裝置安裝在無刷直流電機內(nèi),主要用來采集信息用于判斷換相和計算無刷直流電機轉(zhuǎn)速。按鍵模塊用來修改無刷直流電機設(shè)定速度,matlab gui用顯示電機轉(zhuǎn)速變化趨勢,nokia5110用來實時顯示無刷直流電機轉(zhuǎn)速。系統(tǒng)框圖如圖1所示。圖1系統(tǒng)框圖3 無刷直流電機系統(tǒng)的工作原理和控制方法3.1 無刷直流電機的基本工作原理3.1
6、.1無刷直流電機的數(shù)學(xué)模型經(jīng)典的無刷直流電機的三相橋式驅(qū)動電路設(shè)計等效電路如圖2所示。圖2無刷直流電機等效電路圖根據(jù)電機的等效電路圖,可知三相繞組的電壓方程,如下:=+p+(1)該式中 ua、ub、uc 和 ia、ib、ic 分別為三相相電壓和電流;un 為中性電壓。計算可以得到電壓方程為公式(2)=+p+ (2)可以計算出電機的反電動勢方程為: (3)其中為電勢常數(shù), ,為每極的磁通量??梢杂嬎愠鲭姍C的轉(zhuǎn)矩方程為: (4)其中為轉(zhuǎn)矩常數(shù),為電樞電流。3.1.2換相原理永磁無刷直流電機的換相電路是實現(xiàn)其平穩(wěn)換相的關(guān)鍵,用來控制著無刷直流電機三相繞組通電依次順序和時間。常見的通電換相順序如圖3所
7、示:圖3通電換相順序圖常用無刷直流電機的逆變器采用三相橋式主回電路的控制方式一般是二二導(dǎo)通模式。根據(jù)上圖換相時序圖可知,一個周期都存在 6 種導(dǎo)通狀態(tài),以 60°電角度為間隔改變。本系統(tǒng)設(shè)計采用的是傳 統(tǒng)的二二導(dǎo)通模式,即任意時刻都有而且只有 2 只開關(guān)管導(dǎo)通。每個功率管導(dǎo)通 120°電角度,之間間隔 60°電角度,并處于關(guān)斷狀 態(tài),可以很好的避免死區(qū)的產(chǎn)生而發(fā)生主回路直通短路,此種工作方式稱為兩相導(dǎo)通星型三相6狀態(tài)方式。 由此可見逆變器功率管的換相時刻精準(zhǔn)確定就成為了調(diào)速控制的重中之重。下面將主要介紹常用有位置傳感器檢測技術(shù)來確定換相時刻。3.2 有位置傳感器無
8、刷直流電機的控制法無刷直流電動機的位置檢測主要分為采用霍爾傳感器檢測方法和無位置傳感器檢測兩大類。本系統(tǒng)主要采用霍爾傳感器檢測無刷直流電機運行狀態(tài),實現(xiàn)采集換相信息。3.2.1霍爾傳感器狀態(tài)檢測法 當(dāng)電機工作在兩相導(dǎo)通星型三相6狀態(tài)方式時反電動勢波形與功率開關(guān)的導(dǎo)通關(guān)系如下圖4和圖5所示。圖4 霍爾傳感器狀態(tài)圖5功率管導(dǎo)通順序圖無刷直流電機按照上述順序給驅(qū)動器通適當(dāng)?shù)男盘?,可正常順時針轉(zhuǎn)動。第 4 頁4 系統(tǒng)設(shè)計4.1 硬件設(shè)計4.1.1主要模塊設(shè)計 (1)主控制:STM32F103VET6單片機是 32位基于ARM核心的帶閃存、USB、CAN的微控制器C,7個16位定時器、2個ADC、9個通
9、信接口。LQFN100封裝。其引腳排列圖參見附錄圖1。 (2)無刷直流電機驅(qū)動模塊: IR2110既有驅(qū)動能力,又有光電隔離的效果。MOSFET管IRF540開關(guān)管,用來給無刷直流電機換相驅(qū)動。STM32單片機輸出的信號只能作為信號而不能驅(qū)動無刷直流電機,所以需要一個驅(qū)動電路,把信號放大到可以驅(qū)動無刷直流電機。其電路如圖6所示: 圖6 BLDC驅(qū)動電路(3)位置傳感器采集模塊:無刷直流電機霍爾傳感器采集換相信號經(jīng)過濾波和加上拉電阻處理后,傳給STM32單片機。電路如圖7所示:圖7 位置傳感器采集電機換相信號電路(4)RS232通信模塊:max3232收發(fā)器采用專有的低壓差發(fā)送器輸出級,利用雙電
10、荷泵在3.0V至5.5V電源供電時能夠?qū)崿F(xiàn)真正的RS-232性能。介于matlab gui和微控制器STM32之間的信息傳遞處理電路。電路如圖8所示:圖8 RS232通信電路 (5)輔助電源:為微控制器、Nokia5110、max3232等電路提供工作電壓。其電路如圖9所示:圖9 輔助電源 (6)液晶Nokia5110顯示:Nokia5110是一款采用串行接口與主處理器進(jìn)行通信,支持SPI通信協(xié)議,接口信號線數(shù)量少,包括電源和地在內(nèi)的信號線僅有8條。傳輸速率高達(dá)4Mbps,可以全速寫入顯示數(shù)據(jù),無需等待時間。用來實時顯示電機運行狀況。其電路如圖10所示:圖10 液晶Nokia5110顯示電路
11、(7)按鍵模塊:用來設(shè)置電機轉(zhuǎn)速。其電路如圖11所示:圖11 按鍵模塊4.1.2 系統(tǒng)原理圖見附錄圖2。4.2 軟件設(shè)計4.2.1 程序設(shè)計思想系統(tǒng)程序設(shè)計思想采用模塊化編程,根據(jù)STM32系統(tǒng)要求和各電路工作要求模塊主要涉及:Nokia5110顯示、TIM1配置為產(chǎn)生6路互補PWM波、TIM2配置為霍爾傳感器接口、Systick時鐘延時、中斷模塊、串口模塊、PID算法模塊等。圖12 程序流程圖4.2.2 模塊程序設(shè)計 (1)Nokia5110顯示模塊程序Nokia5110是SPI協(xié)議的顯示屏。 圖13 發(fā)送一個字節(jié)圖14 發(fā)送字符串 圖15 程序流水線程序見附錄圖4。(2)TIM1配置為產(chǎn)生
12、6路互補PWM波高級定時器TIM1的結(jié)構(gòu)圖如下圖所示,TIM1的主要作用就是產(chǎn)生6路帶死區(qū)時間、互補的PWM波,并且?guī)в袆x車功能。圖16 高級定時器TIM1結(jié)構(gòu)圖(3)TIM2配置霍爾接口普通定時器TIM2的結(jié)構(gòu)圖如下圖所示,TIM2的主要作用是計算無刷直流電機轉(zhuǎn)速,觸發(fā)COM事件超前改變驅(qū)動狀態(tài)。圖17 普通定時器TIM2結(jié)構(gòu)圖5 系統(tǒng)調(diào)試5.1 無刷直流電機測試無刷直流電機的棕、白、黃分別對應(yīng)著霍爾傳感器A、B、C,手動順時針轉(zhuǎn)動無刷直流電機一周,霍爾傳感器狀態(tài)為(CBA):001、101、100、110、010、011、001、101、100、110、010。即直流無刷電機轉(zhuǎn)動一周,霍爾
13、傳感器狀態(tài)變化2個周期。表1:控制字表CBA控制字00101H10105H10004H11006H01002H01103H5.2 軟硬件調(diào)試遇到問題及解決方法(1)由于畫PCB時,STM32核心板與外圍接口板連接線太細(xì),再加上沒有阻焊層,致使信號線短路和虛焊。結(jié)果導(dǎo)致三相驅(qū)動電路,有一路沒能正常工作。將虛焊和短路解決掉后,電機可以正常轉(zhuǎn)動。(2)加上nokia5110液晶屏實時顯示無刷直流電機轉(zhuǎn)速,轉(zhuǎn)速變化范圍很大,由于霍爾傳感器外圍接口電路受到了外界干擾,影響了普通定時器TIM2的CNT計數(shù)誤差。將外圍電路影響因素消除,液晶屏顯示電機轉(zhuǎn)速穩(wěn)定了。6 結(jié)論該課題的主要任務(wù)是設(shè)計一個以STM32
14、單片機為處理器及以IR2110驅(qū)動IRF540組成的主控制電路的無刷直流電機控制系統(tǒng)。本設(shè)計主要分為硬件部分和軟件部分,硬件部分著重考慮硬件電路的可靠性性,故盡可能加保護(hù)電路,節(jié)省線路板的空間,達(dá)到硬件電路最優(yōu)化設(shè)計。軟件采用C語言編寫,采用模塊化設(shè)計思想,程序可讀性強。通實驗驗證了系統(tǒng)的可行,能滿足設(shè)計要求,達(dá)到設(shè)計的指標(biāo),實現(xiàn)對無刷直流電機的驅(qū)動,并實時顯示電機轉(zhuǎn)速。本次畢設(shè)使我將大學(xué)四年所學(xué)的知識進(jìn)行了匯總,在收集資料,確定方案的過程中,我學(xué)到許多知識,也弄懂了許多以前不是很清楚的問題。在做畢業(yè)設(shè)計的過程中,是我們所學(xué)知識的一次升華,把理論知識運用到了實際當(dāng)中。也使我們從中得到了鍛煉。致
15、謝 在本論文完成之際,謹(jǐn)向所有指導(dǎo)、關(guān)心和幫助過我的老師、同學(xué)和親人表達(dá)由衷的感激之情。 首先,將最誠摯的感謝獻(xiàn)給導(dǎo)師丁電寬副教授、還有神方康復(fù)機器人公司趙宗紅經(jīng)理和阿莫論壇以及阿莫論壇那些開源BLDC的網(wǎng)友們。在自己寫的程序始終無法驅(qū)動無刷直流電機的時候,趙宗紅經(jīng)理雪中送炭送我一份無刷直流電機演示程序。在整個課題研究與設(shè)計過程中,每每遇到問題的時候,總是可以在阿莫論壇搜到解決那些問題的方法和途徑,使我最終能夠順利的完成課題中自己負(fù)責(zé)的設(shè)計工作。其次,要感謝閆迎利副教授、李建法高級實驗師、李艾華高級工程師、苗風(fēng)東老師、孫志富老師、陳永超老師、郭季老師等所有教授我知識的老師,在他們的引導(dǎo)下,我才
16、能有機會并愛上電子設(shè)計。還要感謝趙曉慧老師、來建民老師,在他們提供元器件和制板的幫助下我可以按時完成硬件設(shè)計與制作。衷心感謝我的父母,他們的全力支持和殷切關(guān)懷一直是我奮發(fā)向上的源泉,他們最深切的愛給予了作者戰(zhàn)勝一切困難的勇氣。感謝關(guān)心愛護(hù)我的親朋好友,他們的關(guān)愛和鼓勵也給了我攀登高峰的勇氣和動力。最后,謹(jǐn)將此文獻(xiàn)給所有關(guān)心和幫助過我的老師、同學(xué)、親人和朋友,再次向他們致以崇高的敬意和誠摯的謝意!參考文獻(xiàn)1 Microchip.AN885CN無刷直流(BLDC)電機基礎(chǔ). 2 3 PHILIPS.DATA SHEET PCD8544.4 ST.Refernce Manual(RM0008).5
17、謝楊梅. 無刷直流電動機(BLDCM)轉(zhuǎn)矩脈動抑制的電流跟蹤型 PWM 控制J安徽 電子信息職業(yè)技術(shù)學(xué)院學(xué)報, 2007,(01).6 王向超.永磁同步電機無位置傳感器控制及自適應(yīng)轉(zhuǎn)速控制D. 天津大學(xué),2007,(04).7 8 9 International Rectifier.Application Note AN-985.10 International Rectifier.Application Note AN-978.11 楚斌.IR2110功率驅(qū)動集成芯片應(yīng)用.南京康尼機電新技術(shù)有限公司,江蘇省南京市21 001The Design of Control System of ST
18、M32 Based on BLDC SUN Li-tao(College of Physics & Electrical Engineering, Anyang Normal University, Anyang 455002,China)Abstract:Principle of combination of BLDC control motors based on BLDC drive motors of IR2110 circuit, implement of IRF540 structures of main circuit of the drive, by installin
19、g in BLDC hall sensor feedback signal of the motors, combining with senior STM32 microcontroller timer TIM1 according to the state of hall sensor to produce general TIM2 timer gathering all dead zone complementary PWM wave, realize the BLDC motor control motors, with LCD nokia5110 the motor speed in
20、 real time.Keywords: STM32; IR2110; brushless DC motor; position sensor; IRF540; Nokia5110 附錄:圖1 STC51單片機引腳排列圖圖2系統(tǒng)原理圖圖3 實物圖圖4 nokia5110部分程序void Nokia5110WriteEnglishString(uint8_t X,uint8_t Y,uint8_t *s)Nokia5110DisplayPosition(X,Y);/定位到x列y行while (*s) Nokia5110WriteChar(*s);s+;void Nokia5110WriteByt
21、e(uint8_t dat,uint8_t com)uint8_t i;Nokia5110_CE_Rest;if(com=0)Nokia5110_DC_Rest;elseNokia5110_DC_Set;for(i=0;i<8;i+)if(dat&0x80)Nokia5110_SDIN_Set;elseNokia5110_SDIN_Rest;Nokia5110_SCLK_Rest;dat=dat<<1;Delay_us(2);Nokia5110_SCLK_Set;Nokia5110_CE_Set;高級定時器TIM1和普通定時器TIM2外設(shè)設(shè)置程序#include &q
22、uot;stm32f10x.h"#include "LCD5110.h"#include "usart1.h"#include "SysTick.h"#include "pid.h"#define PWM_DeadTime 100typedef unsignedint INT32U;/uint32_t step;uint8_t speed4;uint8_t speed_wan,speed_qian,speed_bai,speed_shi,speed_ge;enum MotorDirectionMotorR
23、everseFlag,MotorForwardFlag;enum MotorDirection direction_flag=(enum MotorDirection)(1);volatile uint32_t feedback_value;/輸出速度反饋值int PWM_Freq_Value1;int16_t Huoer_Cnt;void RCC_Configuration(void)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB | RCC_APB2Periph_G
24、PIOC |RCC_APB2Periph_TIM1 |RCC_APB2Periph_ADC1, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 |RCC_APB1Periph_USART3, ENABLE);void NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure;/?NVIC? /USART3/NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;/NVIC_InitStructure.NVIC_IRQChannelPree
25、mptionPriority = 0;/NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;/NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;/NVIC_Init(&NVIC_InitStructure);/TIM1 NVIC_InitStructure.NVIC_IRQChannel = TIM1_TRG_COM_IRQn;/?TIM1?NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NV
26、IC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/TIM2NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;/?TIM2?NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVI
27、C_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure); void BSP_PWM_Init (void) /PWMGPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;/基本結(jié)構(gòu)體變量定義TIM_OCInitTypeDef TIM_OCInitStructure;/輸出結(jié)構(gòu)體變量定義TIM_BDTRInitTypeDef TIM_BDTRInitStructure;/死區(qū)剎車結(jié)構(gòu)體變量定義/RCC_ClocksTypeD
28、ef RCC_Clocks;/電機時鐘結(jié)構(gòu)體變量定義GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; /TIM2GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; /TIM1正通道GPIO_InitStructure.GPIO_Mode = GPIO_
29、Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;/TIM1負(fù)通道GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPI
30、O_InitStructure);/定時器1基本配置 TIM_DeInit(TIM1);TIM_TimeBaseStructure.TIM_Prescaler = 1;/TIM /不分頻(趙)TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;/向上計數(shù) TIM_TimeBaseStructure.TIM_Period =2999; / ARR PWM=12kHz/CR1 定時器時鐘頻率和數(shù)字濾波器使用的采樣頻率之間的分頻比例TIM_TimeBaseStructure.TIM_ClockDivision = 0;/*每次從零開始
31、計數(shù)時,產(chǎn)生更新事件(UEV)*/TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);TIM_ARRPreloadConfig(TIM1,ENABLE); / 啟用了ARR的影子寄存器(直到產(chǎn)生中斷時才能更新) /PWM波輸出/*in upcounting mode,channelx is active as long as TIM1_CNT<TIM1_CCR1,else inactive*/TIM_OCInitStructure.TIM_OCM
32、ode = TIM_OCMode_PWM1;/*OC1 signal is output on the corresponding output pin depending on MOE,OSSI, OSSR, OIS1, OIS1N and CC1NE bitsOC1N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bits*/TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Ena
33、ble; TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_Pulse =1400;/ CCR1(CCR2、CCR3)/*as output OC1,OC1N active high*/TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;/High; TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High;/High;/*set OIS1 bit,O
34、C1=1 (after a dead-time if OC1N is implemented) when MOE=0 reset OIS1N bit,OC1N=0 after a dead-time when MOE=0*/TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;TIM_OC1Init(TIM1,&TIM_OCInitStructure); /輸出通道1/* set OC1P bit,Pre
35、load register on TIMx_CCR1 enabled. Read/Write operations access the preload register. TIMx_CCR1 preload value is loaded in the active register at each update event*/TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable); /使能捕獲比較寄存器預(yù)裝載(通道1)TIM_OC2Init(TIM1,&TIM_OCInitStructure);/輸出通道2TIM_OC2PreloadConf
36、ig(TIM1,TIM_OCPreload_Enable);/使能捕獲比較寄存器預(yù)裝載(通道2)TIM_OC3Init(TIM1,&TIM_OCInitStructure); /輸出通道3 TIM_OC3PreloadConfig(TIM1,TIM_OCPreload_Enable);/使能捕獲比較寄存器預(yù)裝載(通道3) /剎車和死區(qū)功能設(shè)置/*set OSSR bit,This bit is used when MOE=1 on channels having a complementary output which are configured as outputs. OSSR i
37、s not implemented if no complementary output is implemented in the timer.When inactive, OC/OCN outputs are enabled with their inactive level as soon as CCxE=1 or CCxNE=1. Then, OC/OCN enable output signal=1*/TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;/*set OSSI bit,This bit is used w
38、hen MOE=0 on channels configured as outputsWhen inactive, OC/OCN outputs are forced first with their idle level as soon as CCxE=1 or CCxNE=1. OC/OCN enable output signal=1)*/TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF; /TIM_LOCKL
39、evel_1;TIM_BDTRInitStructure.TIM_DeadTime =PWM_DeadTime; /0x75; 1.65us TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable; TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low ;/High;/*AOE=1*/TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;/自動輸出使能TIM_BDTRConfig(TIM
40、1, &TIM_BDTRInitStructure);/TIM2->BDTR |=1<<14; /AOE?1 TIM_SelectInputTrigger(TIM1, TIM_TS_ITR1); / TIM1->SMCR |=0x0010;/*trigger interrupt enable*/ TIM1->DIER |=0x0040;/set TIETIM_Cmd(TIM1,ENABLE); /TIM1->CR1 |= 0x0001; TIM_CtrlPWMOutputs(TIM1, ENABLE);/MOE位置1 /TIM1->BDTR|=
41、1<<15;/啟動TIM1和TIM2定時器void start(void)/*Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled*/TIM1->SMCR |=0x0016; /開TIM1計數(shù)器觸發(fā)/*Trigger interrupt enabled*/TIM1->DIER |=0x0040; /開TIM1觸發(fā)中斷 / huan_xiang(); /
42、*Counter enable*/TIM2->CR1|=0x0001; /開TIM2/*Trigger and Update interrupt enabled*/TIM2->DIER|=0x0041; /開TIM2中斷 void huan_xiang()step = GPIO_ReadInputData(GPIOA)&0x0007;if(direction_flag=MotorForwardFlag)switch(step)/根據(jù)轉(zhuǎn)子位置,決定CCER輸出相位和轉(zhuǎn)子偏移量case 0x06: /*0011 0100 0010 0000reset CC3NP CC3P CC
43、3E CC2NP CC2NE CC2E CC1NP CC1NE CC1P CC1Eset CC2P OC2 active low,set CC3NE OC3N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS3, OIS3N and CC3E bitsset CC4P OC4 active low,set CC4E OC4 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR,
44、OIS4, OIS4N and CC4NE bits*/TIM1->CCER =0x3420;/;break;case 0x04:/*0011 0000 0010 0100set CC2P OC2 active low,set CC1NE OC1N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bitsset CC4P OC4 active low,set CC4E OC1 signal is output on the corresp
45、onding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits*/TIM1->CCER =0x3024;/;break;case 0x05:/*0011 0010 0000 0100set CC3P OC3 active low,set CC1NE OC1N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bitsset CC4P OC4 active
46、low,set CC4E OC1 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits*/TIM1->CCER =0x3204;/;break; case 0x01: /*0011 0010 0100 0000set CC3P OC3 active low,set CC2NE OC2N signal is output on the corresponding output pin depending on MOE, OSSI, O
47、SSR, OIS2, OIS2N and CC2E bitsset CC4P OC4 active low,set CC4E OC1 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits*/TIM1->CCER =0x3240;/;break;case 0x03:/*0011 0000 0100 0010set CC1P OC3 active low,set CC2NE OC2N signal is output on the co
48、rresponding output pin depending on MOE, OSSI, OSSR, OIS2, OIS2N and CC2E bitsset CC4P OC4 active low,set CC4E OC1 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits*/TIM1->CCER =0x3042;/;break;case 0x02: /*0011 0100 0000 0010set CC1P OC1 act
49、ive low,set CC3NE OC3N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS3, OIS3N and CC3E bitsset CC4P OC4 active low,set CC4E OC1 signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS4, OIS4N and CC4NE bits*/TIM1->CCER =0x3402;/;break
50、;else/倒轉(zhuǎn)switch(step)/ case 0x06: TIM1->CCER =0x3420; / 3?2;break;case 0x04:TIM1->CCER =0x3024; / 3?6 ;break;case 0x05:TIM1->CCER =0x3204; / 1?6;break;case 0x01: TIM1->CCER =0x3240; / 1?4;break;case 0x03:TIM1->CCER =0x3042;break;case 0x02: TIM1->CCER =0x3402;break;default:TIM1->C
51、CER =0x0000;break;/定時器2采集霍爾信號,產(chǎn)生六步換向的觸發(fā)中斷條件void TIM2_Configuration(void)TIM_TimeBaseInitTypeDef TIM_HALLTimeBaseInitStructure;TIM_ICInitTypeDef TIM_HALLICInitStructure;TIM_OCInitTypeDef TIM_HALLOCInitStructure;/*Deinitializes the TIM2 peripheral registers to their default reset values*/TIM_DeInit(TI
52、M2); /*Fills each TIM_TimeBaseInitStruct member with its default valueSet the default configuration TIM_TimeBaseInitStruct->TIM_Period = 0xFFFF;TIM_TimeBaseInitStruct->TIM_Prescaler = 0x0000;TIM_TimeBaseInitStruct->TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStruct->TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStruct->TIM_Repetiti
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝質(zhì)押合同范本
- 修復(fù)窯洞合同范本
- rel-Cleroindicin-F-Rengyolone-生命科學(xué)試劑-MCE
- PF-06767832-生命科學(xué)試劑-MCE
- 2025晶益通(四川)半導(dǎo)體科技有限公司招聘166人筆試參考題庫附帶答案詳解
- Mephetyl-tetrazole-生命科學(xué)試劑-MCE
- BIHC-生命科學(xué)試劑-MCE
- 班級團(tuán)隊目標(biāo)設(shè)定與執(zhí)行策略
- 農(nóng)田收購合同范本
- 知識產(chǎn)在企業(yè)文化建設(shè)中的價值體現(xiàn)
- 調(diào)崗未到崗解除勞動合同通知書
- 洋車夫課件教學(xué)課件
- 車間鋸木材承包合同協(xié)議書
- 公司與個人的技術(shù)服務(wù)合同書范本
- 數(shù)字出版概論 課件 第八章 數(shù)字出版產(chǎn)品開發(fā)與分析
- 高職建筑設(shè)計專業(yè)《建筑構(gòu)造與識圖》說課課件
- 產(chǎn)品標(biāo)準(zhǔn)化大綱
- 西師版小學(xué)數(shù)學(xué)四年級下冊教案
- 《管理學(xué)基礎(chǔ)(第2版)》高職全套教學(xué)課件
- 國有企業(yè)“三定”工作方案-國有企業(yè)三定方案
- 清華大學(xué)2024年強基計劃數(shù)學(xué)試題(解析)
評論
0/150
提交評論