![PWM直流調(diào)速系統(tǒng)項目設(shè)計--畢業(yè)論文_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/22/493877f0-1a6d-4853-bc1e-d7a2b06c2819/493877f0-1a6d-4853-bc1e-d7a2b06c28191.gif)
![PWM直流調(diào)速系統(tǒng)項目設(shè)計--畢業(yè)論文_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/22/493877f0-1a6d-4853-bc1e-d7a2b06c2819/493877f0-1a6d-4853-bc1e-d7a2b06c28192.gif)
![PWM直流調(diào)速系統(tǒng)項目設(shè)計--畢業(yè)論文_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/22/493877f0-1a6d-4853-bc1e-d7a2b06c2819/493877f0-1a6d-4853-bc1e-d7a2b06c28193.gif)
![PWM直流調(diào)速系統(tǒng)項目設(shè)計--畢業(yè)論文_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/22/493877f0-1a6d-4853-bc1e-d7a2b06c2819/493877f0-1a6d-4853-bc1e-d7a2b06c28194.gif)
![PWM直流調(diào)速系統(tǒng)項目設(shè)計--畢業(yè)論文_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/22/493877f0-1a6d-4853-bc1e-d7a2b06c2819/493877f0-1a6d-4853-bc1e-d7a2b06c28195.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、.PWM直流調(diào)速系統(tǒng)設(shè)計PWM直流調(diào)速系統(tǒng)設(shè)計( 電氣工程學(xué)院)摘要:根據(jù)直流電機調(diào)速的相關(guān)知識,以及PWM基本原理和實現(xiàn)方法,本文介紹了一種基于單片機的直流電機調(diào)速系統(tǒng),選擇STM32單片機作為系統(tǒng)的控制核心, 利用軟件產(chǎn)生PWM信號,采用位置式PID算法控制直流電機的速度調(diào)節(jié),提高了調(diào)速系統(tǒng)的精度,增強了對直流電機速度的可控性。關(guān)鍵詞:STM32單片機、直流電機、調(diào)速在各類機電設(shè)備中,直流電動機以其良好的調(diào)速特性、啟動和制動性能。在輕工、冶金、石油、機械制造等現(xiàn)代工業(yè)部門中得到廣泛應(yīng)用。本文所設(shè)計的直流電機調(diào)速系統(tǒng),是以STM32單片機作為電機調(diào)速系統(tǒng)的核心控制器,使用PWM信號來控制直流
2、電機的速度等方面來實現(xiàn)的。一、緒論1、項目過程概述單片機直流調(diào)速系統(tǒng)可實現(xiàn)對直流電動機的平滑調(diào)速。PWM是通過控制固定電壓的直流電源開關(guān)頻率,從而改變負(fù)載兩端的電壓,進而達到控制要求的一種電壓調(diào)整方法。通過改變PWM“占空比”來改變平均電壓的大小,從而控制電動機的轉(zhuǎn)速。本系統(tǒng)以STM32為核心,通過單片機控制,C語言編程實現(xiàn)對直流電機的平滑調(diào)速。2、項目目的 1)掌握PWM直流調(diào)速系統(tǒng)的設(shè)計原理和具體設(shè)計方案;2)掌握元器件的選型依據(jù)與原則;3)掌握AutoCAD軟件的使用和原理框圖的繪制方法;4)掌握Altium Dsigner軟件的使用及PCD原理圖的繪制方法;5)學(xué)會至少運用一種編程軟件
3、;6)掌握所設(shè)計系統(tǒng)的安裝與調(diào)試;3、主要元器件名稱數(shù)量名稱數(shù)量導(dǎo)線若干整流橋1個排針1排驅(qū)動1個保險座1個電容2個保險管1個穩(wěn)壓器2個電阻2個12v測速電機1個開發(fā)板1個電位器1個電源線1根仿真器1個電木板1個萬用板2個4*4矩陣鍵盤1個開關(guān)1個2、 主要內(nèi)容1、電源部分:交流電源220V通過變壓器將電壓降為30V和15V后,在經(jīng)過整流橋變?yōu)橹绷麟妷?,之后?jīng)過兩個穩(wěn)壓管,分別提供12V和5V的直流電壓。原理圖如下所示。2、驅(qū)動部分:驅(qū)動部分處于控制與執(zhí)行之間,電機驅(qū)動芯片驅(qū)動電機,一款H 橋元件的直流電機驅(qū)動芯片,其中四個二極管對芯片起保護作用。芯片可連續(xù)提供5 A 的電流, 驅(qū)動負(fù)載能力較
4、強。芯片通過信號INlIN4控制H橋的輸入端(本項目只用到IN1和IN2),該芯片的兩個輸出端引腳直接接小功率直流電機兩端后就可以控制電機正反轉(zhuǎn),調(diào)整電動機轉(zhuǎn)速。其中輸出腳用來連接電流檢測電阻,Vss接邏輯控制的電源。3、按鍵部分:根據(jù)設(shè)計需求,本系統(tǒng)中使用了16個獨立按鍵用以實現(xiàn)對電機正反轉(zhuǎn)的設(shè)定以及對電機啟動、停止、加速、減速等的控制。4、顯示屏部分:1602LCD采用標(biāo)準(zhǔn)的16腳接口,各引腳說明如下表所示:5、 編碼器部分:系統(tǒng)中運用轉(zhuǎn)速反饋通過偏差進行PID運算,因此需要速度采集電路。本次設(shè)計中應(yīng)用了比較常見的光電測速方法來實現(xiàn),其具體做法是將電機軸上固定一圓盤,且其邊緣上有N個等分凹
5、槽,在圓盤的一側(cè)固定一個發(fā)光二極管,其位置對準(zhǔn)凹槽處,在另一側(cè)和發(fā)光二極光平行的位置上固定一光敏三極管,如果電動機轉(zhuǎn)到凹槽處時,發(fā)光二極管通過縫隙將光照射到光敏三極管上,三極管導(dǎo)通,反之三極管截止,電機每轉(zhuǎn)一圈在脈沖的輸出端就會產(chǎn)生N個低電平。這樣就可根據(jù)低電平的數(shù)量來計算電機此時轉(zhuǎn)速了。3、 總電路框圖設(shè)計1、系統(tǒng)整體控制方案的分析:本直流電機調(diào)速系統(tǒng)以單片機系統(tǒng)為依托,根據(jù)PWM調(diào)速的基本原理,以直流電機電樞上電壓的占空比來改變平均電壓的大小,從而控制電動機的轉(zhuǎn)速為依據(jù),實現(xiàn)對直流電動機的平滑調(diào)速,并通過單片機控制速度的變化。光電編碼器將測得的電機轉(zhuǎn)速信號變成電信號反饋給STM32單片機。
6、單片機系統(tǒng)自行給定轉(zhuǎn)速(內(nèi)給定),或者從占空比輸入電路獲得電機給定轉(zhuǎn)速(外給定)。系統(tǒng)根據(jù)給定的電機轉(zhuǎn)速信號與反饋速度信號比較,得出偏差,經(jīng)過增量式PID運算得出控制變量改變PWM波占空比,也就是改變了直流電機電樞兩端的平均電壓,進而調(diào)節(jié)的電機的轉(zhuǎn)速,實現(xiàn)了STM32單片機對直流電機的PWM閉環(huán)調(diào)速。2、系統(tǒng)整體接線圖及原理圖光電編碼器四、軟件設(shè)計本系統(tǒng)編程部分工作在keil4開發(fā)環(huán)境下完成,采用模塊化的設(shè)計方法,與各子程序作為實現(xiàn)各部分功能和過程的入口,完成PWM脈寬調(diào)速的控制。1、 按鍵配置程序#include "key.h"int Target_Speed=0; /設(shè)
7、定速度控制的目標(biāo)速度為50個脈沖每10msfloat Encoder_Speed=0;/左右編碼器的脈沖速度int Moto1=0;float Kp=0.35,Ki=0.8,Kd=0.4;u8 keyval=0;static u16 temp1;/* 名稱 : Keyscan()* 功能 : 實現(xiàn)按鍵的讀取。下面這個子程序是按處理 矩陣鍵盤 的基本方法處理的。* 輸入 : 無* 輸出 : 按鍵值*/u8 Keyscan(void) u8 i,j;for(j=0;j<4;j+) GPIO_ResetBits(GPIOE,0x01<<(j+11);for(i=0;i<4;i
8、+) if(GPIO_ReadInputDataBit(GPIOE,0x01<<(7+i)=0)Delay_ms(10); /延時消抖if(GPIO_ReadInputDataBit(GPIOE,0x01<<(7+i)=0)while(GPIO_ReadInputDataBit(GPIOE,0x01<<(7+i)=0); /松手檢測return (i+j*4+1); GPIO_SetBits(GPIOE,GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);return 0; /*鍵值處理函數(shù)*/void keyc
9、huli(u8 keyval)/根據(jù)鍵值做出相應(yīng)處理 switch(keyval)case 1:Target_Speed-=200;break;case 2:Target_Speed+=200;break;case 3:Target_Speed=0;Target_Speed=Amplitude(Target_Speed,Target_Amplitude);/給定限幅break;case 4:Target_Speed=4000;Target_Speed=Amplitude(Target_Speed,Target_Amplitude);/給定限幅break;case 5:Target_Speed+
10、=1000;Target_Speed=Amplitude(Target_Speed,Target_Amplitude);/給定限幅break;case 6:Target_Speed+=100;Target_Speed=Amplitude(Target_Speed,Target_Amplitude);/給定限幅break;case 7:Target_Speed+=10;Target_Speed=Amplitude(Target_Speed,Target_Amplitude);/給定限幅break;case 8:Target_Speed+=1;Target_Speed=Amplitude(Targ
11、et_Speed,Target_Amplitude);/給定限幅break;case 9:Target_Speed-=1000;Target_Speed=Amplitude(Target_Speed,Target_Amplitude);break;case 10:Target_Speed-=100;Target_Speed=Amplitude(Target_Speed,Target_Amplitude);break;case 11:Target_Speed-=10;Target_Speed=Amplitude(Target_Speed,Target_Amplitude);break;case
12、12:arget_Speed-=1;Target_Speed=Amplitude(Target_Speed,Target_Amplitude);break;case 13:Kd-=0.1;break;case 14:Kd+=0.1;break;case 15:Ki-=0.1;break;case 16:Ki+=0.1;break;default:break;LCD_disp_SPEED(8,0,Encoder_Speed);LCD_disp_Encoder_SPEED(8,1,Target_Speed);int Amplitude(int motol,int Amplitude)/SPEED限
13、幅if(motol<-Amplitude) motol=-Amplitude;if(motol>Amplitude) motol=Amplitude;return motol;2、位置式PI控制器入口參數(shù):編碼器測量位置信息,目標(biāo)位置返回值:電機PWM根據(jù)位置式離散PID公式 pwm=Kp*e(k)+Ki*e(k)+Kde(k)-e(k-1)e(k)代表本次偏差 e(k-1)代表上一次的偏差 e(k)代表e(k)以及之前的偏差的累積和;其中k為1,2,k;pwm代表輸出在我們的位置控制閉環(huán)系統(tǒng)里面,只使用PI控制pwm=Kp*e(k)+Ki*e(k)int Position_PI(
14、int Encoder,int Target) static int Bias,Speed,Integral_bias,Last_bias;Bias=Target-Encoder; /計算偏差I(lǐng)ntegral_bias+=Bias; /求出偏差的積分Speed=Kp*Bias+Ki*Integral_bias+Kd*(Bias-Last_bias); /位置式PI控制器Last_bias=Bias;return Speed; /增量輸出void TIM2_IRQHandler(void)static u16 temp1;if (TIM_GetITStatus(TIM2,TIM_IT_Updat
15、e)!=RESET) TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update); Encoder_Speed=300*Read_Encoder()/256;Moto1=Position_PI(Encoder_Speed,Target_Speed);/位置式PI控制器Moto1=Amplitude(Moto1,Speed_Amplitude);/SPEED限幅PWM_SPEED(Moto1); 3、LCD設(shè)置void LCD_init(void) /初始化 LCD_writecmd(0x38);Delay_ms(5);LCD_writecmd(0x38);Delay
16、_ms(5);LCD_writecmd(0x38);Delay_ms(5);LCD_writecmd(0x38); /顯示模式設(shè)置LCD_writecmd(0x08); /顯示關(guān)閉 LCD_writecmd(0x0c); /顯示開、光標(biāo)不顯示 LCD_writecmd(0x06); /顯示光標(biāo)移動設(shè)置 LCD_writecmd(0x01); /顯示清屏 void LCD_check_busy(void) LCD_EL; LCD_RSL; LCD_RWH; GPIOD->ODR|=0X00FF; LCD_EH; while(BUSY=1);void LCD_writecmd(u8 cmd)
17、 /低8位 u16 temp; temp=GPIOD->ODR&0XFF00; temp+=cmd; GPIOD->ODR=temp; LCD_RSL; LCD_RWL; LCD_EL; Delay_ms(1); LCD_EH;Delay_ms(1);void LCD_writedata(u8 dat) u16 temp; temp=GPIOD->ODR&0XFF00; temp+=dat; GPIOD->ODR=temp; LCD_RSH; LCD_RWL; LCD_EL;Delay_ms(1); LCD_EH;Delay_ms(1);void LCD
18、_disp_char(u8 x,u8 y,u8 dat) u8 address; if(y=0) address=0x80+x; else address=0xc0+x; LCD_writecmd(address); LCD_writedata(dat);void LCD_disp_string(u8 x,u8 y,u8 *string)u8 address;if(y=0) address=0x80+x; else address=0xc0+x; LCD_writecmd(address);while(*string) LCD_writedata(*string); string+; void
19、 LCD_ClearScreen(void)LCD_writecmd(0x01);void LCD_disp_WELCOME(void) LCD_disp_string(5,0,"WELCOME"); LCD_disp_string(3,1,"The 5 Group");void LCD_disp_SPEED(u8 x,u8 y,int speed)u8 s5;if(speed>0)s0='+'else speed=-speed;s0='-'s1=(u8)(speed/1000)+0x30);s2=(u8)(spee
20、d%1000)/100)+0x30);s3=(u8)(speed%100)/10)+0x30);s4=(u8)(speed%10)+0x30);LCD_disp_string(x,y,s);LCD_disp_string(2,1,"INPUT"); LCD_disp_string(2,0,"OUTPUT");void LCD_disp_Encoder_SPEED(u8 x,u8 y,int Encoder_Speed)u8 s5;if(Encoder_Speed>0)s0='+'else Encoder_Speed=-Encoder
21、_Speed;s0='-'s1=(u8)(Encoder_Speed/1000)+0x30);s2=(u8)(Encoder_Speed%1000)/100)+0x30);s3=(u8)(Encoder_Speed%100)/10)+0x30);s4=(u8)(Encoder_Speed%10)+0x30);LCD_disp_string(x,y,s);4、 延時程序void Delay_us(u16 xus)u16 x,y;for(x=xus; x>0; x-)for(y=14; y>0; y-);void Delay_ms(u32 xms)u32 x,y;for
22、(x=xms; x>0; x-)for(y=14396; y>0; y-);5、 PWM產(chǎn)生程序:本設(shè)計中采用STM32F103的定時器TIM3定時器來產(chǎn)生PWM波形void TIM2_NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptio
23、nPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);void TIM2_Configuration(void) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE); TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Period=20000;/* 自動重裝載寄存
24、器周期的值(計數(shù)值) */ /* 累計 TIM_Period個頻率后產(chǎn)生一個更新或者中斷 */ TIM_TimeBaseStructure.TIM_Prescaler= (720 - 1); /* 時鐘預(yù)分頻數(shù) 72M/72 */ TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /* 采樣分頻 */ TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* 向上計數(shù)模式 */ TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructur
25、e); TIM_ClearFlag(TIM2, TIM_FLAG_Update);/* 清除溢出中斷標(biāo)志 */ TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); TIM_Cmd(TIM2, ENABLE);/* 開啟時鐘 */void TIM3_Config(void) / make PWM /* PWM信號電平跳變值 */GPIO_InitTypeDef GPIO_InitStructure; GPIO_AFIODeInit();/* TIM3 clock enable */PCLK1經(jīng)過2倍頻后作為TIM3的時鐘源等于72MHzRCC_APB1PeriphC
26、lockCmd(RCC_APB1Periph_TIM3, ENABLE); /* GPIOA and GPIOB clock enable */RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOC, ENABLE); GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); /重新映射到PB4和5/*GPIOA Configuration: TIM3 channel 1 and 2 as alternate function push-pull */GPIO_InitStruct
27、ure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; / 復(fù)用推挽輸出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure); /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = 10000; /當(dāng)定時器從0計數(shù)到999,即為1000次,為一個定時周期TIM_TimeBase
28、Structure.TIM_Prescaler = 71; /設(shè)置預(yù)分頻:不預(yù)分頻,即為72MHz 每0.01s產(chǎn)生一個中斷TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;/設(shè)置時鐘分頻系數(shù):不分頻TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /向上計數(shù)模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);TIM_ClearFlag(TIM3, TIM_FLAG_Update); /* 清除溢出中斷標(biāo)志 *
29、/TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);/* PWM1 Mode configuration: Channel1 */TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; /配置為PWM模式1TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse =0; /設(shè)置跳變值,當(dāng)計數(shù)器計數(shù)到這個值時,電平發(fā)生跳變TIM_OCInitStructure.TIM_OCPolarity = TIM
30、_OCPolarity_High; /當(dāng)定時器計數(shù)值小于CCR1_Val時為低電平 TIM_OC1Init(TIM3, &TIM_OCInitStructure); /使能通道1TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);/* PWM1 Mode configuration: Channel2 */TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse =0; /設(shè)置通道2的電平跳變值,輸出另外一個占空比的P
31、WMTIM_OC2Init(TIM3, &TIM_OCInitStructure); /使能通道2TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM3, ENABLE); / 使能TIM3重載寄存器ARR/* TIM3 enable counter */ TIM_Cmd(TIM3, ENABLE); /使能定時器3void PWM_SPEED(int speed)if(speed>0)/正轉(zhuǎn) TIM_OCInitStructure.TIM_Pulse = 0;TIM_OC2Init(T
32、IM3, &TIM_OCInitStructure);TIM_OCInitStructure.TIM_Pulse =speed; TIM_OC1Init(TIM3, &TIM_OCInitStructure); /使能通道3else/反轉(zhuǎn) TIM_OCInitStructure.TIM_Pulse = 0;TIM_OC1Init(TIM3, &TIM_OCInitStructure);speed=-speed;TIM_OCInitStructure.TIM_Pulse = speed; TIM_OC2Init(TIM3, &TIM_OCInitStructure); /使能通道36、 主程序:系統(tǒng)的主程序是一個循環(huán)程序int main(void)u8 keyval=0;LED
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人與個人投資合作合同
- 中外技術(shù)研發(fā)合作合同范本
- 個人貸款合同模板版
- 個人與公司間的借款合同范本
- 個人與企業(yè)土地購置合同
- 上海市常用勞務(wù)合同范本
- 個人房產(chǎn)抵押借款合同
- 汽車泵租賃合同
- XX鎮(zhèn)村民共建道路合同協(xié)議書2025
- 個人摩托車抵押貸款合同范本
- 2022年中國電信維護崗位認(rèn)證動力專業(yè)考試題庫大全-上(單選、多選題)
- 《電氣作業(yè)安全培訓(xùn)》課件
- 水平二(四年級第一學(xué)期)體育《小足球(18課時)》大單元教學(xué)計劃
- 《關(guān)于時間管理》課件
- 醫(yī)藥高等數(shù)學(xué)智慧樹知到課后章節(jié)答案2023年下浙江中醫(yī)藥大學(xué)
- 城市道路智慧路燈項目 投標(biāo)方案(技術(shù)標(biāo))
- 水泥采購?fù)稑?biāo)方案(技術(shù)標(biāo))
- 醫(yī)院招標(biāo)采購管理辦法及實施細則(試行)
- 初中英語-Unit2 My dream job(writing)教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 廣州市勞動仲裁申請書
- 江西省上饒市高三一模理綜化學(xué)試題附參考答案
評論
0/150
提交評論