關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于TMS320F240控制步進電機的調焦系統設計

        基于TMS320F240控制步進電機的調焦系統設計

        作者: 時間:2007-09-19 來源:網絡 收藏

        摘要:與傳統的攝影調焦相比較,針對焦距可以靈活調整的要求,提出了調焦的方案,利用F240驅動器UP-4HB03M按照計算所得的調焦軌跡進行調焦。實驗結果表明,本調焦曲線與理想曲線擬合度較好,拍攝已知運動軌跡的目標,達到了滿意效果。
        關鍵詞器;電機

        0引言

        當攝影鏡頭拍攝運動的物體時,如果運動軌跡已知,攝影鏡頭必須對焦距進行調節,從而調整目標的像點的位置,使得目標始終位于焦點上,達到實時拍攝的目標,傳統變焦大多是利用機械裝置完成的,比如凸輪機構,齒條機構;但是由于機械加工工藝復雜,其精度、平穩性和靈活性都難以滿足要求,為此本利用步進電機帶動攝像機完成變焦,由于步進點機精確地按照步進角轉動,并且由DSP進行控制,從而滿足了以上機械裝置無法完成地性能要求。實驗結果表明,本系統調焦曲線與理想曲線擬合度較好,拍攝已知運動軌跡的目標,達到了滿意效果。

        1 調焦系統思想

        在光學系統中,采用一組物鏡,調節軸向位移,物鏡光學系統物象關系是:

        X′=f2 / X

        其中 X′―― 像距(目標像平面到主焦平面的距離);

        X ―― 物距(目標距離);

        f ―― 光學系統焦距 f=常量,像距X′與物距X成反比關系。

        利用已知的攝影調焦曲線確定步進電機轉動所需的步數和時間坐標關系,存入F240數據存儲器中,利用F240運算速度快、片載FLASH存儲器大(16K字)的特點,準確控制步進電機控制器驅動步進電機運轉,通過機械裝置實現攝影鏡頭焦距按照規定的曲線變化,從而實現實時拍攝運動物體的功能。

        2 硬件部分

        2.1步進驅動器UP-4HB03M簡介

        UP-4HB03M是北京聯太工貿有限公司生產的專用步進電機驅動器,4HBO3M適用于兩相六出頭混合式及四相混合式步進電機,PWM恒流控制方式;可選擇半步(四相八拍)或者16細分兩種工作方式;驅動電流為0.3A連續可調,并且具有自動半流鎖定功能;脫機控制及其相位檢測功能;所有控制信號與功率驅動部分光電隔離;散熱外殼與驅動器內部完全電絕緣。

        2.2 簡介

        TMS320F240(以下簡稱F240)由DSP內核和片內外設組成。由于DSP內核具有較快的計算和響應處理速度,可以應付高速應用的要求,同時也為控制軟件的設計提供了更加有力的支持,使控制系統能夠完成更加復雜的功能、實現更好的控制效果。同時TMS320F240具有豐富的片內外設,包括16路10位A/D轉換器、多個可編程的多路復用I/O引腳、硬件UART以及SPI總線等。特別是TMS320F240片內設置了一個事件管理器(EPA),可以提供6路全比較PWM通道,能方便地實現各種PWM波形的發生。這里使用F240主要是考慮F240速度快以及有豐富的I/O引腳資源;程序燒寫方便,利于更新曲線坐標以及修改程序;性價比較高等因素。

        2.3 硬件設計

        本系統的硬件接口電路如圖1所示,74ls14為反相器,接到DSP的I/O口以提高其驅動能力,CH1是一個八腳的插頭,用于外接步進機的各項繞組。步進電機以及攝影鏡頭部分從略。工作過程如下:首先獲得攝影調焦曲線,利用MATLAB軟件,得出時間位移坐標,再換算成步進電機轉動所需的步數時間坐標,以數組的行式保存下來。在F240的數據存儲器中開辟空間存儲步數時間數組,利用F240定時器完成計時,I/O口輸出相應寬度的脈沖信號,驅動步進電機驅動器UP-4HB03M,其中CP為步進脈沖輸入端;FREE為脫機端,高電平有效,FREE=1時,電機處于釋放狀態;V/D為方向控制端,高低電平分別控制電機正反轉。

        圖1 硬件接口電路圖

        3 軟件設計

        由于電機的運行和轉動步數以及兩步之間間隔時間有關系,故采用計時器計時的方法來計算時間,F240初始化程序如下:

        void Initcpu(void) //初始化F240程序

        { *WDCR=0x6f; // 禁止自帶的看門狗功能;

        *CKCR1=0x69; // 外部輸入晶振為20MHZ,F240工作在20MHZ;

        *CKCR0=0xc3; // 系統時鐘為10MHZ;

        *SYSCR=0x4000; } // F240輸出頻率CLKOUT=IOPC1(I/O管腳);

        F240初始化后,計時器的基本計時時間為0.1µs,考慮到F240定時器是16位計數器,這難以滿足計算長時間的需求,所以采用通過計算進入定時器中斷的次數來計算長時間的方法。例如設置定時器周期寄存器值為800即*T1PR=800,那么進一次定時器中斷時間為800*0.1=80µs如果計時為1s的話,則只需進12500次中斷即可,以此類推;故定義的數組內容表示如下:

        int table[ ]= { 25,800,255, //第1行

        . . . . . . } //第n行

        其中25為電機步數;800為定時器周期寄存器值;255每兩步間所要進入定時器中斷的次數。實現準確地控制步進電機控制器關鍵在于由F240 I/O口產生規定的脈沖信號,提供給步進電機控制器從而驅動步進電機正確轉動,程序中包括F240初始化、電機正轉、等待、電機反轉幾個程序模塊。程序流程圖如圖2所示:

        圖2 程序流程圖

        以下是實現電機正轉的程序。程序中變量解釋:step:用于存儲數組中電機步數;every step:用于存儲數組中每兩步間所要進定時中斷的次數;flag:數組行數標志(程序假設需正轉36組)。

        void interrupt INT2_ISR()

        { while (*EVIVRA==0x0027) //是否是定時器中斷

        { if(flag36) //用來完成正轉

        {

        if (steptotal==step) //是否走完數組每行規定的步數

        { flag++; //數組行標志加1

        steptotal=0; //電機轉動步數清零

        step=table[++j]; //更新電機運行步數數據

        *T1PR=table[++j]; //更新定時器定時周期

        everystep=table[++j]; //更新需要進入定時器中斷次數

        *T1CNT=0; } //從零開始計時,啟動定時器

        i++; //循環標志位加1

        if(i==1) *PADATDIR=0xff05; // 提供下降沿,正轉,不脫機

        else{ if (i==everystep)

        { i=0;

        steptotal++; } //電機每轉一步標志位加1

        else

        *PADATDIR=0xff04; //CP腳為高電平為產生下降沿準備,正轉,不脫機

        }

        *IMR=0x02; //開定時器中斷

        enable(); //開啟F240總中斷

        }

        }

        4 實驗結果及其注意事項

        電機轉動的步數和時間坐標都是由主機端通過MATLAB仿真取得的,因此實際調焦曲線的與理想曲線的擬合程度大大提高了;步進電機控制器采用四相八拍運行方式,并且由DSP進行控制,步進機精確地按照步進角(0.9度)轉動。實際應用該調焦系統調整攝影鏡頭,拍攝運動軌跡已知的目標,達到了滿意的效果。

        定時器時間的準確計算對高精度地測量一些物理量是非常重要的。當需要定時器計算的時間比較長時,定時器計數還不夠,這時就需要利用定時器自身的中斷,即短時間定時一到就進入定時器中斷服務子程序,利用進入的次數來達到計時的目的。

        5 結束語

        本文對DSPTMS320F240利用步進驅動器UP-4HB03M控制步進電機進行了研究,改進了傳統的工程中調焦方式,精度大大提高, 經測試系統運行穩定,由于DSP操作方便,而且采用C語言方式編寫,易于日后的代碼修改和程序移植。

        參考文獻

        [1] 黃應哲,董勝源.TMS320C240原理與C語言控制應用實習[M].北京:中國水利水電出版社,2003.3.
        [2] 超小型步進電機驅動器技術手冊.北京 聯太工貿有限公司 2000



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永靖县| 凤台县| 南川市| 兴仁县| 大理市| 南安市| 高邑县| 平遥县| 宣威市| 红安县| 乌海市| 黔江区| 吴江市| 交口县| 满洲里市| 洛南县| 循化| 汝阳县| 拜泉县| 夏邑县| 邹平县| 崇义县| 沈阳市| 湖南省| 肇庆市| 翼城县| 丰镇市| 新巴尔虎右旗| 新竹市| 荣昌县| 东安县| 凌海市| 六枝特区| 确山县| 临漳县| 邵阳市| 榕江县| 乌兰浩特市| 清远市| 孟村| 望奎县|