資源描述:
《步進電機控制實驗.doc》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、DSP實驗報告實驗名稱:步進電機控制實驗系部:物理與機電工程學院專業(yè)班級:學號:學生姓名:指導教師:完成時間:2014-5-7報告成績:評閱意見:評閱教師日期步進電機控制實驗一、實驗目的1.掌握2812通用IO口的使用方法;2.掌握2812對步進電機的控制。二、實驗設備1.一臺裝有CCS軟件的計算機;2.DSP試驗箱的TMS320F2812主控板;3.DSP硬件仿真器。三、實驗原理步進電機工作原理,給步進脈沖電機就轉,不給脈沖電機就不轉,步進脈沖的頻率越高,步進控制電機就轉的越快;改變各相的通電方式可以改變電機的運行方
2、式;改變通電順序可以控制步進電機的運行方式;改變通電順序可以控制步進電機的正反轉。步進電機的控制問題可以總結為兩點:(1)產(chǎn)生工作方式需要的時序脈沖;(2)控制步進電機的速度使它始終遵循加速-勻速-減速的規(guī)律工作。對于I/O口有二類寄存器:1.控制寄存器和數(shù)據(jù)方向寄存器,使用方法如下:首先確定引腳的功能,即IO控制器寄存器,為1表示引腳功能是原模塊的功能,否則為IO功能。2.如果引腳被配置為IO功能,就需要確定它的方向:輸入還是輸出。為1表示是輸出引腳,否則是輸入引腳。對于IO功能的輸入或輸出是通過讀寫相應的數(shù)據(jù)方向寄
3、存器來實現(xiàn)。輸入引腳對應讀操作;輸出引腳對應寫操作。3.步進電機的使用至少需要三個方面的配合,一是電脈沖信號發(fā)生器,它按照給定的設置重復為步進電機輸送電脈沖信號,目前這種信號大多數(shù)由可編程控制器或單片機來完成;二是驅動器(信號放大器),它除了對電脈沖信號進行放大、驅動步進電機轉動以外,還可以通過它改善步進電機的使用性能,事實上它在步進電機系統(tǒng)中起著重要的作用,一般一種步進電機可以根據(jù)不同的工況具有多種驅動器;三是步進電機,它有多種控制原理和型號,現(xiàn)在常用的有反應式、感應子式、混合式等。步進電機的速度控制是通過輸入的脈沖
4、頻率快慢實現(xiàn)的。當發(fā)生脈沖的頻率減小時,步進電機的速度就下降;當頻率增加時,速度就加快。還可以通過頻率的改變而提高步進電機的速度或位置精度。????? 步進電機的位置控制是靠給定的脈沖數(shù)量控制的。給定一個脈沖,轉過一個步距角,當停止的位置確定以后,也就決定了步進電機需要給定的脈沖數(shù)。在包裝機控制中,給定脈沖數(shù)的多少,還與機構的參數(shù)有關,例如螺桿的直徑等。?4.實驗電路5.試驗框圖四、實驗步驟1.連接好仿真器、DSP實驗箱,計算機;2.本實驗工程文件(Example_stepmotor.pjt),編譯,下載程序到DSP
5、;3.全速運行,觀察步進電機的運轉。五、實驗結果及分析步進電機正反轉動:六、實驗心得本次步進電機控制實驗使我對步進電機控制工作原理的有所了解,對實驗進行分析和修改使它與我們的理論相符合,在給步進脈沖時電機就轉,不給脈沖時電機就不轉,步進脈沖的頻率越高,步進控制電機就轉的越快。并改變各相的通電方式可以改變電機的運行方式;在改變通電順序可以控制步進電機的運行方式;改變通電順序可以控制步進電機的正反轉。通過本次實驗中加深對DSP系統(tǒng)的理解、步進電機的控制方式及工作運行方式。進一步掌握用C語言編寫DSP程序的方法,及編譯、除錯
6、能力。附頁:實驗原程序代碼#include"include/DSP281x_Device.h"http://DSP281xHeaderfileIncludeFile#include"include/DSP281x_Examples.h"http://DSP281xExamplesIncludeFilevoiddelay_loop(void);voidGpio_select(void);shortcodetab[17]={0x0001,0x0002,0x0004,0x0008,0x0008,0x0004,0x0002,0x0001,0x00
7、01,0x0002,0x0004,0x0008,0x0001,0x0002,0x0004,0x0008,0x0000};main(){shorti,j;InitSysCtrl();EALLOW;EDIS;Gpio_select();DINT;InitPieCtrl();IER=0x0000;IFR=0x0000;InitPieVectTable();InitXintf();//Forthisexample,inittheXintfGpioDataRegs.GPADAT.all=0;Reg06=0x00;while(1)
8、{for(j=0;j<400;j++){for(i=0;i<4;i++){GpioDataRegs.GPADAT.all=codetab[i];Reg06=0x00;delay_loop();}}for(j=0;j<400;j++){for(i=4;i<8;i++){GpioDataRegs.GPADAT.all=codetab[