亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式系統(tǒng)的多路步進電機控制系統(tǒng)的設(shè)計

        2016-06-01 00:46:51王燕東彭明莎李偉

        王燕東,彭明莎,李偉

        (河北工業(yè)大學(xué) 電子信息工程學(xué)院,天津 300400)

        ?

        嵌入式系統(tǒng)的多路步進電機控制系統(tǒng)的設(shè)計

        王燕東,彭明莎,李偉

        (河北工業(yè)大學(xué) 電子信息工程學(xué)院,天津 300400)

        摘要:本文設(shè)計實現(xiàn)了一種三路步進電機控制系統(tǒng),它基于RT-Thread嵌入式實時系統(tǒng),提高了系統(tǒng)的實時性和后期的功能擴展能力。系統(tǒng)控制電路采用STM32F4系列的微控制器,結(jié)合小功率步進電機驅(qū)動器A4988,完成了硬件電路板設(shè)計。軟件中運用操作系統(tǒng)自帶的finsh機制,實現(xiàn)對指令的初步解析,控制系統(tǒng)可以通過讀取G指令,控制多路電機按照一定軌跡運動,同時可以調(diào)節(jié)電機運動的加減速參數(shù)。實際項目驗證證明該系統(tǒng)具有很好的穩(wěn)定性。

        關(guān)鍵詞:RT-Thread;電機控制;嵌入式系統(tǒng)

        引言

        隨著計算機技術(shù)和微電子技術(shù)的發(fā)展,步進電機作為自動化控制的執(zhí)行單元,越來越多地運用在各種領(lǐng)域中,許多控制領(lǐng)域需要對多臺步進電機進行同步協(xié)調(diào)控制,如軍事、航空、機器人控制。特別是近年來,隨著嵌入式技術(shù)和集成化的發(fā)展,其應(yīng)用范圍逐步擴大,逐漸擴展到普通民用行業(yè),如小型雕刻機、3D打印等。步進電機作為一種將電脈沖信號轉(zhuǎn)換成相應(yīng)的角位移或線位移的機電元件,其最大的優(yōu)點是易于開環(huán)控制、無積累誤差。在應(yīng)用中,對速度、位置的精度控制尤為重要,所以對于電機的控制要具有實時性[1]。

        傳統(tǒng)上,單片機控制適合比較簡單的電機控制系統(tǒng),對于復(fù)雜的系統(tǒng),若電機控制只為其中的一個模塊,既要求電機控制模塊內(nèi)部協(xié)調(diào)運動,又要求與其他模塊保持同步,結(jié)構(gòu)復(fù)雜,實現(xiàn)難度大。

        隨著單片機本身性能的增強,在嵌入式系統(tǒng)的基礎(chǔ)上,完成對多電機的實時協(xié)調(diào)控制具有很多優(yōu)點。嵌入式系統(tǒng)的實時性特點可以使其勝任對多電機的協(xié)調(diào)控制;可裁減性特點可以使得系統(tǒng)容易擴展其他模塊;能夠支持多任務(wù),使得程序開發(fā)更加容易,便于維護,同時能夠提高系統(tǒng)的穩(wěn)定性和可靠性[2]。

        本研究基于嵌入式實時系統(tǒng)設(shè)計出一套多步進電機控制系統(tǒng),此系統(tǒng)基于嵌入式技術(shù)協(xié)同控制三路步進電機,以對多軸系統(tǒng)的速度、位置達到精確控制,并且可以實時調(diào)節(jié)電機的運動速度。本設(shè)計的重點為軟件方面對電機的協(xié)同控制,使得系統(tǒng)對電機的定位精度達到預(yù)期的目的。系統(tǒng)本身很容易地根據(jù)不同功能需求擴展出各種功能,具有一定實用價值。

        1硬件電路設(shè)計

        1.1總體設(shè)計

        圖1 硬件結(jié)構(gòu)圖

        本設(shè)計硬件結(jié)構(gòu)如圖1所示。主控芯片采用內(nèi)置的UART串口與上位機通信,接收上位機發(fā)送的控制指令,并向上位機發(fā)送系統(tǒng)當(dāng)前狀態(tài)。通過SPI接口讀取SD卡中的Gcode文件,主控芯片逐行解析文件中的G指令,根據(jù)G指令中位置偏移和速度,最終得到驅(qū)動電機的脈沖,從而控制3路步進電機按照推薦速度精確達到目的位置。3路限位開關(guān)可以反饋電機的位置信息,主要用于初始化步進電機系統(tǒng),從而規(guī)定電機系統(tǒng)內(nèi)部坐標系。

        本設(shè)計電路中主控制器采用ST公司的STM32F4系列微控制器,電機驅(qū)動芯片采用A4988,作為執(zhí)行機構(gòu)的步進電機使用兩相四線的42步進電機。

        1.2主控芯片

        本系統(tǒng)電路中主控芯片采用基于ARM內(nèi)核的STM32F40x微控制器,芯片內(nèi)部含有1 MB Flash和256 KB RAM,完全可以運行小型的嵌入式系統(tǒng)。該微控制器還包括了大量的片上外設(shè)資源,非常適合控制類應(yīng)用。

        1.3驅(qū)動模塊

        本系統(tǒng)電路中電機驅(qū)動模塊采用Allegro公司的A4988電機驅(qū)動器,該驅(qū)動器是一個完整的帶有內(nèi)置轉(zhuǎn)換器的微電機驅(qū)動器,它可在全、半、1/4、1/8 及 1/16 步進模式時操作雙極步進電動機,具有高達35 V和±2 A的輸出驅(qū)動能力,且控制簡單,只需在驅(qū)動器相應(yīng)引腳輸入一個脈沖即可驅(qū)動步進電動機產(chǎn)生一個微步,程序不必再考慮相序表等電機底層的控制,驅(qū)動模塊電路如圖2所示。

        圖2 驅(qū)動模塊

        2軟件系統(tǒng)設(shè)計

        2.1軟件總體設(shè)計

        根據(jù)設(shè)計需要實現(xiàn)的目標,本文把系統(tǒng)分為不同的子功能,充分利用嵌入式系統(tǒng)多任務(wù)的優(yōu)勢,把各個子功能作為系統(tǒng)中不同的任務(wù)進程實現(xiàn),包括:上位機指令解析任務(wù)、用戶界面顯示、記錄監(jiān)視進程、運動規(guī)劃管理進程、電機驅(qū)動任務(wù),各個任務(wù)通過嵌入式系統(tǒng)的信號量進行同步。為了保證步進電機系統(tǒng)的實時性,其中電機驅(qū)動進程為核心進程,設(shè)定其任務(wù)優(yōu)先級最高,除中斷外,沒有任何進程可以搶占它的CPU控制權(quán)。

        系統(tǒng)設(shè)計有用戶互交界面,終端選用串口工控彩屏,控制簡單,作為系統(tǒng)脫離上位機時的控制方式。

        本文將主要介紹軟件設(shè)計電機運動規(guī)劃和底層驅(qū)動的實現(xiàn):從串口或SD卡讀取運動指令,轉(zhuǎn)換為實際的電機機構(gòu)的移動。

        ① 使用finsh shell機制從串口或直接從SD卡讀取指令,識別指令,隨后存放入指令緩沖區(qū);

        ② 運動規(guī)劃進程取得指令,把它們轉(zhuǎn)化為Block塊對象,其中包含了速度、方向、加速度等信息,并加入Planner中的環(huán)形緩沖隊列中;

        ③ 無論什么時候Planner中存在Block塊對象,電機驅(qū)動進程都將會啟動,讀取塊對象,并啟動定時器中斷。

        2.2嵌入式系統(tǒng)選擇

        在實時嵌入式系統(tǒng)的選擇上,本設(shè)計選用了RT-Thread嵌入式操作系統(tǒng),它是一款類Linux系統(tǒng),它是一款國內(nèi)的開源全搶占的實時操作系統(tǒng)內(nèi)核[3]。RT-Thread實時操作系統(tǒng)內(nèi)核是一個高效的硬實時內(nèi)核,它具備非常優(yōu)異的實時性、穩(wěn)定性、可裁減性,最小可以只有3 KB ROM和1 KB RAM占用。其內(nèi)核包提供了大部分的同步和通信機制,并且任務(wù)調(diào)度算法基于優(yōu)先級的全搶占式線程調(diào)度,最多可支持256個線程優(yōu)先級。此嵌入式系統(tǒng)支持從ARM7到Cortex-M3等多種類型內(nèi)核的處理器。

        除了內(nèi)核之外,此嵌入式系統(tǒng)還用于文件系統(tǒng)、TCP/IP協(xié)議棧、圖形用戶界面、用戶shell組件,本設(shè)計中就運用了系統(tǒng)的shell組件來簡化命令解析功能。

        上位機指令解析任務(wù)依靠嵌入式系統(tǒng)中的finsh shell機制,finsh shell是RT-Thread內(nèi)置的用戶命令行組件,用戶能夠通過串口設(shè)備使用finsh shell,它在系統(tǒng)中被設(shè)計為一個獨立的進程,其進程默認優(yōu)先級為8,進程試圖從外部設(shè)備中獲得用戶的輸入,然后對用戶命令進行解析執(zhí)行。依靠嵌入式系統(tǒng)提供的shell機制,可以輕易地自定義用戶指令,通過如下宏定義實現(xiàn):FINSH_FUNCTION_EXPORT_ALIAS()。

        圖3 Gcode_recev流程圖

        本文中實現(xiàn)一個Gcode_recev(char *movecmd)函數(shù),參數(shù)movecmd為一行或多行G指令,函數(shù)的結(jié)構(gòu)流程圖如圖3所示,其中指令緩沖區(qū)為全局的自定義的結(jié)構(gòu)體。結(jié)構(gòu)體包含一個環(huán)形緩沖區(qū)和一個信號量,通過這個全局變量實現(xiàn)進程間的數(shù)據(jù)共享,并且用信號量避免緩沖區(qū)數(shù)據(jù)的競爭。

        通過宏定義“FINSH_FUNCTION_EXPORT_ALIAS(Gcode_recev,G,"Gcode_recev(“”)")”,我們可以通過串口終端以G(“cmd”)的形式執(zhí)行運動指令,達到調(diào)試的目的。除此之外,系統(tǒng)還實現(xiàn)了關(guān)啟電機、清除運動緩沖、查看參數(shù)等函數(shù)功能。

        2.3運動規(guī)劃管理

        圖4 運動規(guī)劃管理流程圖

        系統(tǒng)的實際使用狀態(tài)通常為一端不斷讀取運動指令,另一端不斷驅(qū)動多路步進電機移動。兩端中間存在一個結(jié)構(gòu)體隊列來緩沖兩端執(zhí)行速度的差異,進程的結(jié)構(gòu)流程圖如圖4所示。

        系統(tǒng)通過串口或SD卡能夠識別的運動指令(通常為G指令),指令中包含了電機移動的目的坐標和速度參數(shù)。讀取一行運動指令后,系統(tǒng)結(jié)合全局信息對指令進行解析,為了防止電機啟動時,啟動速度過快造成失步,或電機停止時速度過快而不能精確定位,步進電機的運動方式采用梯形運動方式。

        在程序中,設(shè)計了Planner_t結(jié)構(gòu)體。stage1部分為一個環(huán)形緩沖區(qū),緩沖區(qū)大小可以根據(jù)實際使用情況定義。代碼如下:

        typedef struct{

        //stage1

        stepBlock_t stepBlock[BUFFER_SIZE];

        int32_thead , tail , len;

        //stage2V……

        }Planner_t;

        而stepBlock_t結(jié)構(gòu)體中包含了各步進電機運動的方向、步數(shù)、主步數(shù)(即各電機運動步數(shù)的最大值)、加速前步數(shù)、減速前步數(shù)、速度等信息,用于底層的電機驅(qū)動函數(shù)代碼如下:

        typedef struct{

        //stage1

        int32_t steps[3];

        bool dir[STEPPER_NUM];

        int32_t steps_event_count;

        //stage2

        int32_t accelerate_until;

        int32_t decelerate_after;

        float acceleration;

        }stepBlock_t;

        2.4電機驅(qū)動

        以上只是對步進電機運動的規(guī)劃,并沒有涉及到底層的電機驅(qū)動,實際的電機驅(qū)動一般采用兩種方式:定時器PWM脈沖或定時器中斷[4]。本文中采用定時器中斷函數(shù)在操作系統(tǒng)下層直接驅(qū)動步進電機,只需在中斷函數(shù)中向某個電機驅(qū)動器CLK引腳發(fā)送一個脈沖,即可驅(qū)動電機一微步。

        在系統(tǒng)中的多個用戶任務(wù)進程中,電機驅(qū)動進程是最重要的,它實際上完成了對步進電機最底層的控制,為了保證當(dāng)前運動指令下電機運行的流暢,此進程對時間要求非常敏感,它在系統(tǒng)中決定了電機運動速度的上限。進程流程圖如圖5所示,此進程用一個不斷循環(huán)的函數(shù)實現(xiàn),對應(yīng)于規(guī)劃管理進程不斷向Planner結(jié)構(gòu)體中填充塊數(shù)據(jù),電機驅(qū)動進程則不斷從Planner中取出塊數(shù)據(jù),根據(jù)Block塊中的參數(shù)啟動Timer定時器,首次設(shè)置定時器參數(shù),最終在定時器中斷服務(wù)函數(shù)中驅(qū)動電機運動。

        圖5 電機驅(qū)動進程

        STM32F40x系列微控制器用于多個定時器資源,并且其時鐘頻率最高可達到84 MHz。本系統(tǒng)中,電機的最大轉(zhuǎn)速為1500 PRM,驅(qū)動器取16細分時,若要達到此速度,需要定時器頻率約為72 kHz,考慮到系統(tǒng)多任務(wù)的復(fù)雜性,也完全可以滿足需要。

        定時器中斷在系統(tǒng)中的應(yīng)用僅保證兩個微步

        Design of Multichannel Stepper Motor Control System Based on Embedded System

        Wang Yandong,Peng Mingsha,Li Wei

        (School of Electoric and Information Engineering,Hebei University of Technology,Tianjin 300400,China)

        Abstract:A three channel stepping motor control system is designed based on RT-thread embedded real-time system in the paper,which improves the real-time of the system and the expansion capability.The system uses the STM32F4 series MCU as the control circuit,and adopts the small power stepper motor driver A4988 to achieve the design of the hardware board.In the software,the operating system coming finsh mechanism is applied to achieve the preliminary analysis of the instruction.The control system can control the multiple motors movement according to certain moving track through reading G command,and it can also adjust the motor acceleration and deceleration parameter.The practical application proves that the control system has good stability.

        Key words:RT-Thread;motor control;embeded system

        中圖分類號:TP39

        文獻標識碼:A

        97夜夜澡人人双人人人喊| 国产一区二区三区成人av| 蜜桃av人妻精品一区二区三区| 亚洲一区av在线观看| 免费观看又污又黄的网站| 精品少妇人妻成人一区二区| 亚洲一区二区三区av天堂| 巨爆中文字幕巨爆区爆乳| av午夜久久蜜桃传媒软件| 国产美女在线精品亚洲二区| 一区二区日本影院在线观看| 自拍偷自拍亚洲精品第按摩| 日韩人妻无码精品久久免费一| 久久频道毛片免费不卡片| 久久伊人中文字幕有码久久国产| 在线观看中文字幕二区| 成人精品视频一区二区三区尤物 | 亚洲国产福利精品一区二区| 在线日本高清日本免费| 日韩女优精品一区二区三区| 日本无码人妻波多野结衣| 国产乱人伦AV在线麻豆A| 亚洲国产线茬精品成av| 国产在线无码一区二区三区视频 | 中文有码人妻字幕在线| 色婷婷综合久久久久中文字幕| 99久久久久国产| 一区二区三区在线免费av | 国产成人无码av| 男女边吃奶边做边爱视频| 蜜桃av无码免费看永久| 亚洲乱码中文字幕视频| 无码少妇一区二区性色av| 国产精品区一区二区三在线播放| 久久国产精品免费久久久| 熟女体下毛荫荫黑森林| 欧美mv日韩mv国产网站| 亚洲AV秘 片一区二区三区| 精品国产一区二区三区av麻| 粉嫩被粗大进进出出视频| 久久久亚洲欧洲日产国产成人无码|