国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2016-06-01 00:46:51王燕東彭明莎李偉
關(guān)鍵詞:嵌入式系統(tǒng)

王燕東,彭明莎,李偉

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

?

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

王燕東,彭明莎,李偉

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

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

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

引言

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

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

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

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

1硬件電路設(shè)計(jì)

1.1總體設(shè)計(jì)

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

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

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

1.2主控芯片

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

1.3驅(qū)動(dòng)模塊

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

圖2 驅(qū)動(dòng)模塊

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

2.1軟件總體設(shè)計(jì)

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

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

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

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

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

③ 無論什么時(shí)候Planner中存在Block塊對(duì)象,電機(jī)驅(qū)動(dòng)進(jìn)程都將會(huì)啟動(dòng),讀取塊對(duì)象,并啟動(dòng)定時(shí)器中斷。

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

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

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

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

圖3 Gcode_recev流程圖

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

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

2.3運(yùn)動(dòng)規(guī)劃管理

圖4 運(yùn)動(dòng)規(guī)劃管理流程圖

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

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

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

typedef struct{

//stage1

stepBlock_t stepBlock[BUFFER_SIZE];

int32_thead , tail , len;

//stage2V……

}Planner_t;

而stepBlock_t結(jié)構(gòu)體中包含了各步進(jìn)電機(jī)運(yùn)動(dòng)的方向、步數(shù)、主步數(shù)(即各電機(jī)運(yùn)動(dòng)步數(shù)的最大值)、加速前步數(shù)、減速前步數(shù)、速度等信息,用于底層的電機(jī)驅(qū)動(dòng)函數(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電機(jī)驅(qū)動(dòng)

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

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

圖5 電機(jī)驅(qū)動(dòng)進(jìn)程

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

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

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

中圖分類號(hào):TP39

文獻(xiàn)標(biāo)識(shí)碼:A

猜你喜歡
嵌入式系統(tǒng)
Teaching Research on IoT and—Embedded System of Software Engineering
基于Xilinx口袋實(shí)驗(yàn)室的組合邏輯電路設(shè)計(jì)實(shí)驗(yàn)
面向應(yīng)用的智能專業(yè)嵌入式系統(tǒng)教學(xué)
基于物聯(lián)網(wǎng)的遠(yuǎn)程紅外控制器
嵌入式系統(tǒng)軟件開發(fā)技術(shù)探析
基于AVR單片機(jī)的SPI接口設(shè)計(jì)與實(shí)現(xiàn)
辦公自動(dòng)化系統(tǒng)的設(shè)計(jì)
嵌入式系統(tǒng)在醫(yī)療器械中的應(yīng)用分析
基于物聯(lián)網(wǎng)項(xiàng)目驅(qū)動(dòng)的嵌入式系統(tǒng)教學(xué)改革的研究與實(shí)踐
嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
福州市| 肇东市| 方山县| 陈巴尔虎旗| 金湖县| 临城县| 延川县| 周宁县| 六盘水市| 龙江县| 察雅县| 孟连| 阿瓦提县| 富裕县| 太和县| 鹤峰县| 沈丘县| 诏安县| 丰城市| 绩溪县| 栾城县| 大荔县| 桂东县| 铅山县| 奈曼旗| 云南省| 海丰县| 阿尔山市| 白银市| 黄冈市| 凤台县| 蓝田县| 襄汾县| 信丰县| 崇阳县| 阜新| 巴林右旗| 新郑市| 监利县| 青州市| 公主岭市|