熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 基于RTThread嵌入式實時系統的三路步進電機控制系統設計

基于RTThread嵌入式實時系統的三路步進電機控制系統設計

時間:2018-12-14 13:55:29來源:網絡

導語:?本文設計實現了一種三路步進電機控制系統,它基于RTThread嵌入式實時系統,提高了系統的實時性和后期的功能擴展能力。

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

引言

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

傳統上,單片機控制適合比較簡單的電機控制系統,對于復雜的系統,若電機控制只為其中的一個模塊,既要求電機控制模塊內部協調運動,又要求與其他模塊保持同步,結構復雜,實現難度大。

隨著單片機本身性能的增強,在嵌入式系統的基礎上,完成對多電機的實時協調控制具有很多優點。嵌入式系統的實時性特點可以使其勝任對多電機的協調控制;可裁減性特點可以使得系統容易擴展其他模塊;能夠支持多任務,使得程序開發更加容易,便于維護,同時能夠提高系統的穩定性和可靠性[2]。

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

硬件電路設計

1.1總體設計

主控芯片采用內置的UART串口與上位機通信,接收上位機發送的控制指令,并向上位機發送系統當前狀態。通過SPI接口讀取SD卡中的Gcode文件,主控芯片逐行解析文件中的G指令,根據G指令中位置偏移和速度,最終得到驅動電機的脈沖,從而控制3路步進電機按照推薦速度精確達到目的位置。3路限位開關可以反饋電機的位置信息,主要用于初始化步進電機系統,從而規定電機系統內部坐標系。

本設計電路中主控制器采用ST公司的STM32F4系列微控制器,電機驅動芯片采用A4988,作為執行機構的步進電機使用兩相四線的42步進電機。

1.2主控芯片

本系統電路中主控芯片采用基于ARM內核的STM32F40x微控制器,芯片內部含有1MBFlash和256KBRAM,完全可以運行小型的嵌入式系統。該微控制器還包括了大量的片上外設資源,非常適合控制類應用。

1.3驅動模塊

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

本設備采用1/16細分模式,MS1、MS2、MS3引腳需置高電平,主控制器只需控制電機驅動芯片上的ENABLE、DIR、STEP三個引腳即可完全控制此步進電機。ENABLE為步進電機控制器的使能端;DIR為電機的方向控制端,用于控制電機的轉動方向;STEP為電機的步數控制端,輸入脈沖來控制電機的步數以及轉速。

軟件系統設計

2.1軟件總體設計

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

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

本文將主要介紹軟件設計電機運動規劃和底層驅動的實現:從串口或SD卡讀取運動指令,轉換為實際的電機機構的移動。

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

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

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

2.2嵌入式系統選擇

在實時嵌入式系統的選擇上,本設計選用了RTThread嵌入式操作系統,它是一款類Linux系統,它是一款國內的開源全搶占的實時操作系統內核[3]。RTThread實時操作系統內核是一個高效的硬實時內核,它具備非常優異的實時性、穩定性、可裁減性,最小可以只有3KBROM和1KBRAM占用。其內核包提供了大部分的同步和通信機制,并且任務調度算法基于優先級的全搶占式線程調度,最多可支持256個線程優先級。此嵌入式系統支持從ARM7到CortexM3等多種類型內核的處理器。

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

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

本文中實現一個Gcode_recev(char*movecmd)函數,參數movecmd為一行或多行G指令,函數的結構流程,其中指令緩沖區為全局的自定義的結構體。結構體包含一個環形緩沖區和一個信號量,通過這個全局變量實現進程間的數據共享,并且用信號量避免緩沖區數據的競爭。

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

2.3運動規劃管理

系統的實際使用狀態通常為一端不斷讀取運動指令,另一端不斷驅動多路步進電機移動。兩端中間存在一個結構體隊列來緩沖兩端執行速度的差異。

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

在程序中,設計了Planner_t結構體。stage1部分為一個環形緩沖區,緩沖區大小可以根據實際使用情況定義。代碼如下:

typedefstruct{

//stage1

stepBlock_tstepBlock[BUFFER_SIZE];

int32_thead,tail,len;

//stage2V

……

}Planner_t;

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

typedefstruct{

//stage1

int32_tsteps[3];

booldir[STEPPER_NUM];

int32_tsteps_event_count;

//stage2

int32_taccelerate_until;

int32_tdecelerate_after;

floatacceleration;

}stepBlock_t;

2.4電機驅動

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

在系統中的多個用戶任務進程中,電機驅動進程是最重要的,它實際上完成了對步進電機最底層的控制,為了保證當前運動指令下電機運行的流暢,此進程對時間要求非常敏感,它在系統中決定了電機運動速度的上限。進程流程圖如圖5所示,此進程用一個不斷循環的函數實現,對應于規劃管理進程不斷向Planner結構體中填充塊數據,電機驅動進程則不斷從Planner中取出塊數據,根據Block塊中的參數啟動Timer定時器,首次設置定時器參數,最終在定時器中斷服務函數中驅動電機運動。

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

定時器中斷在系統中的應用僅保證兩個微步間隔時間的精確性,為了保證嵌入式系統的實時性,定時器的中斷服務函數執行時間應盡量縮短[5],因此在中斷服務函數中只做兩件必要的任務:給步進電機脈沖和更新定時器。

結語

本文在RTThread的嵌入式實時系統的基礎上實現了對多路步進電機的控制,基于嵌入式系統,系統功能按模塊設計實現,大大減小了設計的整體難度,并且有利于系統后期的功能擴展,以較低的成本實現多路步進電機的控制。基于此設計的3D打印機項目已經在使用,且系統運行穩定。

標簽:

點贊

分享到:

上一篇:低壓電器行業中通用機柜的制作

下一篇:基于ARM和CPLD的智能輪式移動...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 绥阳县| 渭源县| 广东省| 阜新| 丹棱县| 得荣县| 恩平市| 安福县| 工布江达县| 永登县| 荃湾区| 恩平市| 历史| 阳江市| 阳新县| 万安县| 靖西县| 海淀区| 崇文区| 连江县| 新泰市| 德格县| 富平县| 宁陵县| 济宁市| 江山市| 奉化市| 民乐县| 鄂州市| 岑巩县| 宁安市| 安顺市| 城市| 衡山县| 江口县| 重庆市| 防城港市| 巴中市| 恩施市| 二连浩特市| 铜川市|