基于USB通信的多直流電動機控制系統
姜偉凱,李雛
(上海大學,上海200072:)
摘要:將USB數據通信用于直流電動機控制系統,采用PICl8F4550單片機和LM629組建了閉環的高精度數字式直流電動機驅動模塊。通過一個實例,介紹運動參數傳遞的全過程。
關鍵詞:USB通信;直流電機;運動控制
中圈分類號:TM33 文獻標識碼:A 文章編號:1004—7018(2008)06—0040—02  本文利用USB的可拓展性開發可以按照需要擴增和縮減的直流電動機計算機分級控制系統。系統中將一臺個人計算機作為USB系統中的主機。通過USB數據傳遞控制一塊或多塊驅動一執行模塊,如圖1所示。每個模塊含有一片PICl8F4550單片機、兩片LM629直流電動機專用控制芯片、一片L298驅動芯片、兩臺帶有同軸光電碼盤的直流電動機。其中PICl8F4550單片機是USB系統中的關鍵節點。圖1中的USB Hub部件為USB集線器(擴展USB的聯接端口)。
1個人計算機與PICl8F4550單片機之間的USB通信
PICl8F4550是微芯(Mierochip)公司推出的具有全速USB 2.0連接功能的單片機,內置SIE(SerialInterface Engine)引擎,SIE能完成單片機RAM存儲區與USB主機內存之間的數據傳輸。該單片機中有1 kB的RAM可用于USB緩沖器(USB RAM),最多可以配置16個USB通信端點(Endpoint)。當USB主機向PICl8F4550發送數據時,SIE把接收到的數據解碼后移送到相應的通信端點,當單片機發送數據時,SIE把端點數據編碼后發送給USB主機。
USB節點設備種類繁多。為了使主機能夠正確識別特定的節點設備,從而加載合適的USB驅動,規定每一種節點設備都有設備廠商號(Vendor ID)和產品號(Product ID)。在枚舉(enumeration)過程中,計算機通過發送查詢命令來獲得設備的這兩種節點特征以及其它信息。USB主機通過枚舉識別USB設備并給新連接的設備分配相應地址。枚舉完成后,可以在客戶程序中用Mierochip提供的動態鏈接庫(MPUSB.d11)中的函數(MPUSBOpen),打開
連接主機內存和USB RAM中的相應通信端點的虛擬通道(pipeline),并返回一個指向該通道的旬柄(han dle),在以后的編程中,就用該句柄變量代表該通道。
下面列出一個從個人計算機到PICl8F4550單片機的參數傳遞實例:
(1)在客戶程序中,將被發送的參數賦值給一個數組(send—bur)中的各個元素
(2)用MPuSBOpen函數建立一個發送數據的通道OutPipe=USBOpen(0,vid—pid,0ut—pipel,MP—WRITE,0);
其中第一個參數O表示uSB設備序號。參數vjd_pid表示芯片廠商號和產品號。參數out_pipel表示發送管道1。參數MP WRITE表示該管道用于發送數據。函數返回的句柄值OutPipej將用作于MPuSBWrite函數中的參數。
(3)用MPuSBWrite函數把含有控制參數的數組send_buf從uSB主機發送給第一個uSB設備(設備序號O):
uSBWrite (OutPipe, send_buf, 8,&SenADataLength,1000);
(4)在MPLAB—IDtE集成開發環境中編寫用于PIcl8F4550單片機的固件程序。
用數據傳送函數將接收到的參數從uSB RAM(要事先分配地址和容量)復制到一個數組(data.
(5)將數組中元素值賦給指定變量。例如,將加速度、速度參數賦給指定變量
mA=dataPacket[2];
//把發送過來的加速度值保存在變量mA
mV=dataPacket[3];
//把發送過來的****速度值保存在變量mv
(6)用數據傳輸指令將變量的值通過單片機的端口D,發送給芯片LM629。下面是一個發送加速度數據的例子。
LM629_sTATUS_CHK();
//對LM629進行忙(busy)檢測,如LM629不處于忙狀態,則進行發送加速度數據的操作。
|