999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

多通道步進電機控制器設計及Linux驅動的實現

2011-02-19 07:49:58張付祥劉振宇
制造業自動化 2011年3期
關鍵詞:系統

張付祥,劉振宇

ZHANG Fu-xiang,LIU Zhen-yu

(河北科技大學 機械電子工程學院,石家莊 050018)

0 引言

機電一體化系統中有很多情況需要對多臺電機進行控制[1],步進電機控制系統一般基于單片機或者是PC機,由于資源的限制很難實現復雜的步進控制[2]。傳統上基于PC機的步進電機控制系統的核心是步進電機控制卡,很難實現多通道步進電機的驅動控制[3],實現多軸控制則需PMAC卡等[4]多軸運動控制卡,但控制系統實現成本較高。能夠實現多通道步進電機驅動的控制器控制可靠,且能夠方便的通過現場總線組建大型的控制系統[5]。

1 基于FPGA和SPI的多通道步進電機控制器硬件設計

1.1 多通道步進電機控制器原理

多電機控制器針對接受脈沖信號控制的步進電機,與微處理器采用SPI總線的方式傳送數據,通常可以搭建成圖1所示的多通道步進電機控制系統。

系統工作時,具有SPI的微處理器通過其I/O口片選FPGA,多電機控制器處于工作狀態。微處理器通過SPI向FPGA發送電機控制指令,FPGA根據控制指令產生電機方向控制的電平信號和電機速度控制的脈沖信號。控制信號通過FPGA的輸出端口發送到相應的步進電機驅動器,從而完成對多個電機的控制。這里以一片EPF10K10A實現對8個步進電機的控制為例介紹多電機控制器設計及驅動的實現方法。

1.2 FPGA的硬件線路

基于FPGA的電機控制器的硬件建立后,需要對FPGA的管腳進行定義。除去FPGA和系統相關的管腳,需要定義和電機控制有關的管腳。其中f0~f7為可控脈沖頻率輸出,實現電機的速度控制;dir0~dir7為電機方向輸出,實現電機的方向控制;MOSI為SPI接口主設備對從設備的數據輸入;SCLK為SPI接口的時鐘輸入;F2M為外部有源晶振提供的頻率為2MHz的輸入脈沖;CS為片選輸入。

1.3 多通道步進電機控制器設計

使用VerilogHDL語言,采用自頂向下的設計方法,從系統級開始,把系統劃分為兩個基本的單元,最頂層模塊為SPI_Motor,SPI_Motor模塊根據功能再進一步細化為SPI_Core模塊和Counter模塊,系統構成如圖2所示。

系統上電FPGA進行部分初始化,在得到片選信號時,SPI_Core模塊開始接收數據,SPI口一次傳送一個字節的數據,SPI_Core模塊每接收到一個字節的數據就進行一次串并轉換,電機的控制信號是由兩個字節所組成的,需要在數據轉化過程中進行判斷一條命令是否轉換完畢,如果轉換完畢,則通知Counter模塊進行數據接收。Counter模塊在系統上電后開始工作,根據寄存器的初始值進行工作,當接收到轉化后的控制命令時,根據控制命令中所包含的地址信息把數據傳送到相應的寄存器中。方向寄存器中的每一位都有一個輸出,直接跟電機驅動板上的方向端相連,方向寄存器的變化會直接導致相應電機的轉向變化。電機使能寄存器和分頻計數器相互配合工作,當電機使能寄存器設定工作電機時,相應的電機分頻計數器才會工作,分頻計數器在沒有得到允許工作的命令之前進行初始化,得到命令后則根據計數器中的分頻值進行分頻。

圖2 電機控制系統模塊構成圖

Counter模塊的功能是控制8個電機在給定的方向以一定的速度轉動,由8個定時器,一個譯碼器和一個可控分頻器組成。方向控制通過內部寄存器Dir實現。可控分頻器的分頻系數寄存器為9位,初始值為1_0100_1101,對2MHz進行668分頻,得到定時器寄存器的基準時鐘2994HZ。定時器寄存器為12位,其存儲的最小值規定為0000_0000_0000,最大值為1111_1111_1111,如果輸入頻率為2994Hz,則輸出的最大頻率為1497Hz,最小為0.36Hz。并且對每個定時器都有一個使能控制位,從而實現電機轉動的啟動與停止。

Counter模塊可輸出電機控制頻率為:

式中 n1——分頻系數;

n2——定時器寄存器的數值。

系統中電機驅動器的最大輸入脈沖頻率取1500Hz,因此n1在0-324之間變化,n2在315-4095之間變化。

SPI_Core模塊由一個串并轉換任務和數據傳輸控制器組成。SPI_Core模塊接收MOSI上的數據,進行串并轉換,并將轉換后的數據傳送給Counter模塊。串并轉換任務采用有限狀態機來實現,它將MOSI端口輸入的串行數據轉化成并行數據。狀態編碼采用的是獨熱編碼,數據傳輸控制器實現對給定的寄存器傳輸數據,其中ADD_ Encode實現數據傳輸對象的編碼,其具體編碼如表1所示。

表1 內部寄存器編碼表

2 Linux驅動程序開發

2.1 SPI總線的驅動

以S3C2410微處理器為例介紹SPI總線的驅動方法,SPI模塊初始化的過程為:

1)通過SPI波特率寄存器(SPPREn)設置SPI總線的波特率;

2)設置SPI控制寄存器(SPCONn)選擇合適的SPI模式;

3)通過往SPI數據寄存器(SPTDATn)中寫10次0xFF來初始化掛載在SPI總線上的設備;

4)設置GPIO引腳,當引腳低電平時片選掛載在SPI總線上的相應設備。

驅動程序中用到的SPI寄存器有rSPCON0、rSPSTA0、rSPPIN0、rSPPRE0、rSPTDAT0和rSPRDAT0,端口寄存器有rGPECON、rGPEUP、rGPGCON、rGPGUP和rGPGDAT。SPI總線的驅動由初始化函數Init_SPI()實現,采用偽碼編寫函數如下:

Set rSPPRE0

Set SPCON0

For i=1 TO 10

Set rSPTDAT0,0xff

Set rGPECON

Set rGPEUP

Set rGPHCON

Set rGPHUP

SPI總線傳輸數據采用輪詢方式,輪詢函數spi_poll_done()的偽碼如下:

while do

rSPSTA0&0x01

SPI總線的數據傳輸函數spi_tx_date()的偽碼如下:

spi_poll_done();

Set rSPTDAT0,data

spi_poll_done();

2.2 FPGA的驅動

系統采用1個FPGA完成8個電機速度控制,通過motor_data_send()函數完成,其實現偽碼如下:

Set rGPHDAT,CS

For i=0 TO 1

spi_tx_data(TXdata[i])

Set rGPHDAT,unCS

FPGA的驅動程序模塊運行時對FPGA的狀態進行初始化,以保證電機不會誤動作,其函數為Init_Motor()的偽碼如下:

FPGA的設備文件結構中的系統調用方法包括write、open和realease,FPGA的系統調用方法缺少read方法,其中write方法motor_wr()實現的偽碼如下:

Set dbuf,kmalloc(sizeof(unsigned char),GFP_ KERNEL)

copy_from_user(buf,dbuf,1)

Set ADnTXdata[0],dbuf[0]

kfree(dbuf)

open方法motor_open()和close方法motor_ close()為空函數,FPGA的設備驅動程序卸載函數motor_exit()的實現方法和一般的字符設備的實現方法一樣。FPGA的設備驅動程序加載函數motor_ init()比一般字符設備的加載函數要多一個電機的初始化,由函數Init_Motor()完成。

3 試驗研究

為了開發應用程序,使用Linux C語言開發了多通道步進電機控制用的API函數MotorGoto(),其偽碼如下:

Set fd,open("/dev/motor",O_RDWR)

Set Start[0],0

Set Start[1],Tenable

write(fd,Start,2)

Set Dir[0],0x10

Set Dir[1],Dir

write(fd,Dir,2)

Convert n and f to H and L

Set Out[0],H

Set Out[1],L

write(fd,Out,2)

write(fd,Start,2)

close(fd)

電機控制器實驗中,設定可控分頻寄存器對外部2MHz的輸入脈沖進行2分頻作為內部8個定時器的基準脈沖,通過改變n2的值從而改變電機控制器的輸出頻率。對8個步進電機進行控制,電機控制器的輸出頻率從150Hz開始按50Hz遞增一直增至1500Hz。實驗結果8個電機控制器的輸出頻率曲線基本重合在一起,電機控制器的頻率輸出端口具有良好的一致性,說明電機控制器具有很好的精確性和可靠性。

4 結論

用FPGA開發具有SPI接口的多通道步進電機控制器占用較少的微處理器I/O資源,硬件聯接簡單、軟件易于實現,程序運行效率高,可廣泛應用于需要對多個步進電機進行控制的場合,可廣泛應用于機器人、數控機床及其它嵌入式的系統。

[1]許瑞華,何俊華基于NextMoveES運動控制卡的步進電機群控系統[J].微計算機信息,2006,22(1-2):9-10.

[2]黃贊,姚耀文.步進電機伺服系統設計與可視化仿真的實現[J].組合機床與自動化加工技術,2005,30(3):59-62.

[3]趙勇.基于Ethernet的多通道步進電機控制系統[J].電力系統自動化,2005,25(10):71-73.

[4]李淑萍,張筱云.基于PMAC的開放式數控系統研究[J].微電機,2009,42(7):65-68.

[5]王改華,王江衛,劉楚湘,等.基于DeviceNet現場總線的電機控制系統設計[J].工業控制計算機,2008,(10):94-96.

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 亚洲最大在线观看| 亚洲综合日韩精品| 欧美劲爆第一页| 久久精品国产一区二区小说| 久久精品国产精品一区二区| 亚洲成a人片| 在线国产你懂的| 欧美国产日韩另类| 四虎永久在线精品影院| 欧美精品一二三区| 久久久精品无码一区二区三区| 香蕉在线视频网站| 福利片91| 亚洲国产精品一区二区高清无码久久| 狠狠色婷婷丁香综合久久韩国| 91香蕉视频下载网站| 亚洲一级毛片在线观| 日本午夜三级| 中文字幕久久精品波多野结| 精品一区二区三区四区五区| 极品国产在线| 在线观看无码a∨| 久久天天躁狠狠躁夜夜2020一| 美女啪啪无遮挡| 露脸真实国语乱在线观看| 国产午夜人做人免费视频中文 | 午夜欧美理论2019理论| 精品撒尿视频一区二区三区| 少妇精品在线| 亚洲美女AV免费一区| 欧美97欧美综合色伦图 | 亚洲中文字幕23页在线| 亚洲视频无码| 蜜芽国产尤物av尤物在线看| 亚洲精品自拍区在线观看| 久久91精品牛牛| 亚洲美女操| 国产激爽大片高清在线观看| 国产成+人+综合+亚洲欧美| 亚洲成人精品| 青青青国产在线播放| 99re热精品视频中文字幕不卡| 亚洲第一黄色网| 久久青草视频| 色偷偷综合网| 亚洲av日韩综合一区尤物| 国产在线精品人成导航| 黄色网页在线观看| 亚洲欧美激情另类| 国产在线精品网址你懂的| 人人爽人人爽人人片| 亚洲av综合网| 亚洲V日韩V无码一区二区| 亚洲精品动漫| 精品视频一区二区观看| 激情亚洲天堂| 成年人福利视频| 久久香蕉国产线看观看式| 97se亚洲| jizz在线观看| 欧美日韩国产在线播放| 国产三级视频网站| 亚洲第一综合天堂另类专| 精品人妻无码中字系列| 亚洲av成人无码网站在线观看| 亚洲国产成人麻豆精品| 亚洲福利视频一区二区| 亚洲成a人在线观看| 红杏AV在线无码| 久久人搡人人玩人妻精品一| 国产免费福利网站| 亚洲精品福利视频| 国内丰满少妇猛烈精品播| 国产H片无码不卡在线视频| 99在线视频免费观看| 免费人成在线观看成人片| 亚洲欧美人成人让影院| 日韩av手机在线| 亚洲看片网| 亚洲无码免费黄色网址| 国产剧情无码视频在线观看| 2020国产精品视频|