標(biāo)題: 基于HC32F460開發(fā)板的電機(jī)驅(qū)動(dòng)及調(diào)速控制 [打印本頁]
作者: jinglixixi 時(shí)間: 2020-10-4 19:34
標(biāo)題: 基于HC32F460開發(fā)板的電機(jī)驅(qū)動(dòng)及調(diào)速控制
步進(jìn)電機(jī)是一種常用的執(zhí)行器件,使用它能進(jìn)行精準(zhǔn)的定位及轉(zhuǎn)速調(diào)節(jié)等工作。一個(gè)簡(jiǎn)單的步進(jìn)電機(jī)驅(qū)動(dòng)要由步進(jìn)電機(jī)、驅(qū)動(dòng)電路及微控制器構(gòu)成,見圖1所示。
1.jpg (27.93 KB, 下載次數(shù): 64)
下載附件
2020-10-4 19:34 上傳
圖1 步進(jìn)電機(jī)驅(qū)動(dòng)構(gòu)成
在HC32F460開發(fā)板上,提供了電機(jī)驅(qū)動(dòng)控制接口,見圖2所示。
2.jpg (34.81 KB, 下載次數(shù): 67)
下載附件
2020-10-4 19:34 上傳
圖2 電機(jī)驅(qū)動(dòng)控制接口
為了驅(qū)動(dòng)步進(jìn)電機(jī),除了硬件方面的準(zhǔn)備,還需必要的軟件配合。
要編寫步進(jìn)電機(jī)驅(qū)動(dòng)程序主要分為以下幾步:
1)分配引腳
使步進(jìn)電機(jī)的MA~ MD引腳分別與PE8~ PE11相連接
MA---PE8
MB---PE9
MC---PE10
MD---PE11
2)定義輸出高低電平的語句
- #define MAL PORT_ResetBits(PortE, Pin08)
- #define MAH PORT_SetBits(PortE, Pin08)
- #define MBL PORT_ResetBits(PortE, Pin09)
- #define MBH PORT_SetBits(PortE, Pin09)
- #define MCL PORT_ResetBits(PortE, Pin10)
- #define MCH PORT_SetBits(PortE, Pin10)
- #define MDL PORT_ResetBits(PortE, Pin11)
- #define MDH PORT_SetBits(PortE, Pin11)
復(fù)制代碼
3)配置延時(shí)函數(shù)
配置延時(shí)函數(shù)的工作在步進(jìn)電機(jī)的驅(qū)動(dòng)中十分重要,它控制著步進(jìn)電機(jī)運(yùn)轉(zhuǎn)的快慢。
對(duì)于步進(jìn)電機(jī)來說其速度是與驅(qū)動(dòng)脈沖相有關(guān)的,但也并非脈沖越快,電機(jī)的轉(zhuǎn)速越快。因?yàn)殡姍C(jī)電機(jī)屬于機(jī)械器件,要建立相應(yīng)的磁場(chǎng)以達(dá)到相應(yīng)的扭矩才能使電機(jī)轉(zhuǎn)動(dòng)。過快的脈沖只會(huì)使電機(jī)在原地震顫和抖動(dòng),并無法旋轉(zhuǎn)。
4)控制電機(jī)旋轉(zhuǎn)方向
對(duì)于4相5線式步進(jìn)電機(jī)來講,可通過8個(gè)節(jié)拍的脈沖序列來控制其正反轉(zhuǎn)。
正轉(zhuǎn)的驅(qū)動(dòng)函數(shù)為:
- void zx(void)
- {
- unsigned char X,Y;
- for(X=0;X<64;X++)
- {
- for(Y=0;Y<8;Y++)
- {
- MDL;
- MAH; //A
- Ddl_Delay1ms(n);
- MBH; //AB
- Ddl_Delay1ms(n);
- MAL; //B
- Ddl_Delay1ms(n);
- MCH; //BC
- Ddl_Delay1ms(n);
- MBL; //C
- Ddl_Delay1ms(n);
- MDH; //CD
- Ddl_Delay1ms(n);
- MCL; //D
- Ddl_Delay1ms(n);
- MAH; //DA
- Ddl_Delay1ms(n);
- }
- }
- }
復(fù)制代碼
反轉(zhuǎn)的驅(qū)動(dòng)函數(shù)為:
- void fx(void)
- {
- unsigned char X,Y;
- for(X=0;X<64;X++)
- {
- for(Y=0;Y<8;Y++)
- {
- MDH;
- MAH; //A
- Ddl_Delay1ms(n);
- MAL; //AB
- Ddl_Delay1ms(n);
- MCH; //B
- Ddl_Delay1ms(n);
- MDL; //BC
- Ddl_Delay1ms(n);
- MBH; //C
- Ddl_Delay1ms(n);
- MCL; //CD
- Ddl_Delay1ms(n);
- MAH; //D
- Ddl_Delay1ms(n);
- MBL; //DA
- Ddl_Delay1ms(n);
- }
- }
- }
復(fù)制代碼
5)控制電機(jī)運(yùn)行
控制電機(jī)運(yùn)行的關(guān)鍵程序
- OLED_Init();
- OLED_Clear();
- OLED_ShowString(0,0,"HC32F460 TEST",16);
- OLED_ShowString(0,2,"OLED & MOTOR:",16);
- MAL;
- MBL;
- MCL;
- MDL;
- Ddl_Delay1ms(500);
- f=1;
- rdata=5;
- n=3; // n>1
- OLED_ShowNum(112,2,0,2,16);
- for(c=0;c<rdata;c++)
- {
- if(f==0) fx();
- else zx();
- OLED_ShowNum(112,2,c,2,16);
- }
復(fù)制代碼
感興趣的話,還可以添加按鍵來設(shè)置轉(zhuǎn)速和轉(zhuǎn)動(dòng)的圈數(shù)等,那會(huì)使應(yīng)用價(jià)值更高!
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |