實踐之基于ADI Blackfin ADSP 的直流電機(jī)驅(qū)動
上午一直跟同學(xué)們討論關(guān)于直流電機(jī)驅(qū)動的問題,下午終于實現(xiàn)了,寫出來給大家分享一下。
主要用直流電機(jī)實現(xiàn)車庫的控制,以下為實現(xiàn)原理:
1、直流電動機(jī)的PWM電路原理
晶體管的導(dǎo)通時間也被稱為導(dǎo)通角а,若改變調(diào)制晶體管的開與關(guān)的時間,也就是說通過改變導(dǎo)通角а的大小,如下圖所示,來改變加在負(fù)載上的平均電壓的大小,以實現(xiàn)對電動機(jī)的變速控制,稱為脈寬調(diào)制(PWM)變速控制。在PWM變速控制中,系統(tǒng)采用直流源,放大器的頻率是固定,變速控制通過調(diào)節(jié)脈寬來實現(xiàn)。構(gòu)成PWM的功率轉(zhuǎn)換電路或者采用"H"橋式驅(qū)動,或者采用"T"式驅(qū)動。由于"T"式電路要求雙電源供電,而且功率晶體管承受的反向電壓為電源電壓的兩倍。因此只適用于小功率低電壓的電動機(jī)系統(tǒng)。而"H"橋式驅(qū)動電路只需一個電源,功率晶體管的耐壓相對要求也低些,所以應(yīng)用得較廣泛,尤其用在耐高壓的電動機(jī)系統(tǒng)中。
脈寬調(diào)制(PWM)變速原理圖
2、直流電動機(jī)的PWM等效電路
如下圖所示:是一個直流電動機(jī)的PWM控制電路的等效電路。在這個等效電路中,傳送到負(fù)載(電動機(jī))上的功率值決定于開關(guān)頻率、導(dǎo)通角度及負(fù)載電感的大小。開關(guān)頻率的大小主要和所用功率器件的種類有關(guān),對于雙極結(jié)型晶體管(GTR),一般為lkHz
至5kHz,小功率時(100W,5A以下)可以取高些,這決定于晶體管的特性。對于絕緣柵雙極晶體管(IGBT),一般為5kHz至l2kHz;對于場效應(yīng)晶體管(MOSFET),頻率可高達(dá)2OkHz。另外,開關(guān)頻率還和電動機(jī)電感有關(guān),電感小的應(yīng)該取得高些。
驅(qū)動的實現(xiàn):
ucLinux 下的直流電機(jī)程序包括模塊驅(qū)動程序和應(yīng)用程序兩部分。Module 驅(qū)動程序?qū)崿F(xiàn)了以
下方法:
static struct file_operations Blackfin_dcm_fops = {
owner: THIS_MODULE,
open:Blackfin_dcm_open,
ioctl:Blackfin_dcm_ioctl,
release: Blackfin_dcm_release,
};
開啟設(shè)備時,配置 IO 口為定時器工作方式:
({ GPBCON &=~ 0xf; GPBCON |= 0xa; })
配置定時器的各控制寄存器:
({ TCFG0 &= ~(0x00ff0000);
TCFG0 |= (DCM_TCFG0);
TCFG1 &= ~(0xf);
TCNTB0 = DCM_TCNTB0; /* less than 10ms */
TCMPB0 = DCM_TCNTB0/2;
TCON &=~(0xf);
TCON |= (0x2);
TCON &=~(0xf);
TCON |= (0x19); })
在Blackfin_dcm_ioctl中提供調(diào)速功能接口:
case DCM_IOCTRL_SETPWM:
return dcm_setpwm((int)arg);
應(yīng)用程序dcm_main.c中調(diào)用:
ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (setpwm * factor));
從而實現(xiàn)直流電機(jī)速度的調(diào)整。