一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于多路步進電機控制系統(tǒng)的設(shè)計方案分析

貿(mào)澤電子 ? 來源:djl ? 作者:貿(mào)澤電子王燕東, ? 2019-08-20 17:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文設(shè)計實現(xiàn)了一種三路步進電機控制系統(tǒng),它基于RTThread嵌入式實時系統(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)定性。

隨著計算機技術(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ù)不同功能需求擴展出各種功能,具有一定實用價值。

硬件電路設(shè)計

1.1總體設(shè)計

本設(shè)計硬件結(jié)構(gòu)如圖1所示。

關(guān)于多路步進電機控制系統(tǒng)的設(shè)計方案分析

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

主控芯片采用內(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)部坐標(biāo)系。


本設(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所示。

關(guān)于多路步進電機控制系統(tǒng)的設(shè)計方案分析

圖2 驅(qū)動模塊


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

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

2.1軟件總體設(shè)計

根據(jù)設(shè)計需要實現(xiàn)的目標(biāo),本文把系統(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è)計選用了RTThread嵌入式操作系統(tǒng),它是一款類Linux系統(tǒng),它是一款國內(nèi)的開源全搶占的實時操作系統(tǒng)內(nèi)核[3]。RTThread實時操作系統(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到CortexM3等多種類型內(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è)計為一個獨立的進程,其進程默認(rèn)優(yōu)先級為8,進程試圖從外部設(shè)備中獲得用戶的輸入,然后對用戶命令進行解析執(zhí)行。依靠嵌入式系統(tǒng)提供的shell機制,可以輕易地自定義用戶指令,通過如下宏定義實現(xiàn):FINSH_FUNCTION_EXPORT_ALIAS()。

關(guān)于多路步進電機控制系統(tǒng)的設(shè)計方案分析

圖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ī)劃管理

關(guān)于多路步進電機控制系統(tǒng)的設(shè)計方案分析

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

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

系統(tǒng)通過串口或SD卡能夠識別的運動指令(通常為G指令),指令中包含了電機移動的目的坐標(biāo)和速度參數(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ū)動電機運動。

關(guān)于多路步進電機控制系統(tǒng)的設(shè)計方案分析

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

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

定時器中斷在系統(tǒng)中的應(yīng)用僅保證兩個微步間隔時間的精確性,為了保證嵌入式系統(tǒng)的實時性,定時器的中斷服務(wù)函數(shù)執(zhí)行時間應(yīng)盡量縮短[5],因此在中斷服務(wù)函數(shù)中只做兩件必要的任務(wù):給步進電機脈沖和更新定時器。中斷服務(wù)函數(shù)流程圖如圖6所示。

關(guān)于多路步進電機控制系統(tǒng)的設(shè)計方案分析

圖6 中斷服務(wù)函數(shù)流程圖

結(jié)語

本文在RTThread的嵌入式實時系統(tǒng)的基礎(chǔ)上實現(xiàn)了對多路步進電機的控制,基于嵌入式系統(tǒng),系統(tǒng)功能按模塊設(shè)計實現(xiàn),大大減小了設(shè)計的整體難度,并且有利于系統(tǒng)后期的功能擴展,以較低的成本實現(xiàn)多路步進電機的控制?;诖嗽O(shè)計的3D打印機項目已經(jīng)在使用,且系統(tǒng)運行穩(wěn)定。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關(guān)注

    關(guān)注

    459

    文章

    52471

    瀏覽量

    440441
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3679

    瀏覽量

    131337
  • 步進電機
    +關(guān)注

    關(guān)注

    152

    文章

    3165

    瀏覽量

    149687
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于FPGA的步進電機控制系統(tǒng)設(shè)計方案

    等特點,使其在數(shù)控機床傳送控制等自動控制領(lǐng)域中得到了廣泛的應(yīng)用。但隨著技術(shù)的發(fā)展以及企業(yè)生產(chǎn)的要求,步進電機傳統(tǒng)的以單片機等微處理器為核心單元的控制
    發(fā)表于 06-11 13:47 ?5689次閱讀
    基于FPGA的<b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>控制系統(tǒng)</b>的<b class='flag-5'>設(shè)計方案</b>

    步進電機控制系統(tǒng)設(shè)計

    《計算機控制技術(shù)課程設(shè)計(論文)步進電機控制系統(tǒng)設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《計算機控制技術(shù)課程設(shè)計(論文)
    發(fā)表于 09-01 07:50

    步進電機控制系統(tǒng)的設(shè)計與實現(xiàn)

    論文介紹了步進電機控制原理,利用脈沖疊加原理,以Verilog HDL 為實體設(shè)計輸入,設(shè)計并實現(xiàn)了一套集成于FPGA 內(nèi)部的步進電機
    發(fā)表于 01-18 14:52 ?314次下載

    基于DSP和CAN總線的步進電機控制系統(tǒng)方案

    摘 要:步進電機可直接接收脈沖信號的控制,適合于數(shù)字控制系統(tǒng).針對這一特點,提出了一種使用內(nèi)嵌CAN控制器的數(shù)字信號處理器TMS320LF2
    發(fā)表于 02-25 16:06 ?146次下載

    基于專用控制芯片的步進電機運動控制系統(tǒng)設(shè)計

    為了降低研發(fā)成本,減輕微控制器的壓力,提高系統(tǒng)的穩(wěn)定性和靈活性,提出了一種基于專用控制芯片的步進電機運動
    發(fā)表于 05-30 15:08 ?57次下載
    基于專用<b class='flag-5'>控制</b>芯片的<b class='flag-5'>步進</b><b class='flag-5'>電機</b>運動<b class='flag-5'>控制系統(tǒng)</b>設(shè)計

    步進電機控制系統(tǒng)原理應(yīng)用

    步進電機是一種感應(yīng)電機,廣泛應(yīng)用在各種自動化控制系統(tǒng)中。電子發(fā)燒友網(wǎng)整理了步進電機
    發(fā)表于 06-18 16:52
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>控制系統(tǒng)</b>原理應(yīng)用

    步進電機控制系統(tǒng)

    步進電機控制系統(tǒng) 步進電機控制系統(tǒng) 步進
    發(fā)表于 11-02 18:07 ?56次下載

    步進電機控制系統(tǒng)設(shè)計報告

    步進電機課程設(shè)計------步進電機控制系統(tǒng)設(shè)計報告
    發(fā)表于 06-17 14:59 ?12次下載

    基于單片機的步進電機開環(huán)控制系統(tǒng)

    基于單片機的步進電機開環(huán)控制系統(tǒng)基于單片機的步進電機開環(huán)控制系統(tǒng)
    發(fā)表于 11-30 11:55 ?30次下載

    基于DSP的步進電機控制系統(tǒng)設(shè)計

    基于DSP的步進電機控制系統(tǒng)設(shè)計
    發(fā)表于 10-19 15:42 ?23次下載
    基于DSP的<b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>控制系統(tǒng)</b>設(shè)計

    基于STM32的步進電機控制系統(tǒng)

    摘 要 本文的主要工作是基于STM32步進電機控制系統(tǒng)的設(shè)計。隨著越來越多的高科技產(chǎn)品逐漸融入了日常生活中,步進電機
    發(fā)表于 11-27 18:49 ?93次下載

    如何使用51單片機進行步進電機控制系統(tǒng)的設(shè)計與實現(xiàn)

    結(jié)合 51 單片機的特點,研究設(shè)計步進電機控制系統(tǒng),以 51 單片機 AT89S52 為控制核心,選用 ULN2003A 芯片組成的驅(qū)動電路,提出一種
    發(fā)表于 05-10 08:00 ?16次下載
    如何使用51單片機進行<b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>控制系統(tǒng)</b>的設(shè)計與實現(xiàn)

    步進電機控制系統(tǒng)程序如何設(shè)計

    未來步進電機控制系統(tǒng)的發(fā)展將圍繞著高精度控制、高效能耗、高集成度、高可靠性和安全性以及自適應(yīng)和學(xué)習(xí)能力展開。這些發(fā)展趨勢將推動步進
    的頭像 發(fā)表于 11-16 08:07 ?1568次閱讀
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b><b class='flag-5'>控制系統(tǒng)</b>程序如何設(shè)計

    步進電機控制系統(tǒng)是什么意思

    步進電機控制系統(tǒng),作為現(xiàn)代工業(yè)自動化和精密控制領(lǐng)域的重要組成部分,其工作原理和實現(xiàn)方式一直受到廣泛關(guān)注。步進
    的頭像 發(fā)表于 06-18 18:12 ?1882次閱讀

    步進電機伺服控制系統(tǒng)的作用

    步進電機伺服控制系統(tǒng)是一種精密的電機控制系統(tǒng),它通過精確控制
    的頭像 發(fā)表于 09-04 09:46 ?1212次閱讀