• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于STM32的步進(jìn)電機(jī)控制器設(shè)計(jì)

    2019-06-01 03:49:54熊遠(yuǎn)生劉春元蔡偉忠
    制造業(yè)自動(dòng)化 2019年5期
    關(guān)鍵詞:低電平驅(qū)動(dòng)器細(xì)分

    熊遠(yuǎn)生,劉春元,蔡偉忠

    (嘉興學(xué)院 機(jī)電工程學(xué)院,嘉興 314001)

    0 引言

    步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的角度和輸入驅(qū)動(dòng)脈沖的個(gè)數(shù)成正比,其轉(zhuǎn)動(dòng)速率可以通過(guò)驅(qū)動(dòng)脈沖的頻率來(lái)控制,有較高的定位精度,無(wú)位置累積誤差及特有的開(kāi)環(huán)運(yùn)行機(jī)制,與閉環(huán)控制系統(tǒng)相比,可減少系統(tǒng)成本,并提高了可靠性,具有較高的控制精度;因此,在精度要求不高的運(yùn)動(dòng)控制系統(tǒng)中,在工業(yè)領(lǐng)域得到了大量應(yīng)用[1,2]。

    為進(jìn)一步提高控制精度,在實(shí)際應(yīng)用中廣泛應(yīng)用步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)器,細(xì)分驅(qū)動(dòng)器一般提供三個(gè)輸入接口信號(hào),ENA信號(hào)為脫機(jī)信號(hào)(低電平有效),當(dāng)此輸入控制端為低時(shí),電機(jī)勵(lì)磁電流被關(guān)斷,電機(jī)處于脫機(jī)自由狀態(tài),此信號(hào)在大多數(shù)應(yīng)用時(shí)一般懸空,DIR信號(hào)方向電平信號(hào)輸入端,高低電平控制電機(jī)正/反轉(zhuǎn),PUL步進(jìn)脈沖信號(hào)輸入,每個(gè)信號(hào)提供兩個(gè)輸入端,內(nèi)部用光耦實(shí)現(xiàn)隔離。

    在工業(yè)控制中,有很多應(yīng)用場(chǎng)合需要在上位機(jī)控制多個(gè)步進(jìn)電機(jī)同時(shí)工作,如在水位傳感器的初始螺栓位置調(diào)整中,為提高工作效率,希望10個(gè)步進(jìn)電機(jī)在上位機(jī)控制下帶動(dòng)10個(gè)傳感器同時(shí)進(jìn)行位置調(diào)整。但是上位機(jī)一般不能直接連接細(xì)分驅(qū)動(dòng)器,通常采用PLC的普通輸出端口連接細(xì)分驅(qū)動(dòng)器的DIR信號(hào),PLC的脈沖輸出端口連接細(xì)分驅(qū)動(dòng)器的PUL信號(hào),PLC與上位機(jī)之間通過(guò)RS485連接。但PLC價(jià)格相對(duì)較貴,編程靈活性不高。

    本文針對(duì)在控制中需要控制多個(gè)步進(jìn)電機(jī)的需求,設(shè)計(jì)了一種基于STM32的步進(jìn)電機(jī)控制器,采用RS485與上位機(jī)相連,STM32輸出端口經(jīng)過(guò)放大后連接細(xì)分驅(qū)動(dòng)器的DIR信號(hào)和PUL信號(hào),將FreeModbus協(xié)議移植到STM32上,使用Modbus協(xié)議和上位機(jī)通信,接收DIR信號(hào)、PUL信號(hào)和設(shè)置參數(shù)等信息,通過(guò)軟件實(shí)現(xiàn)輸出脈沖頻率可調(diào)、已輸出脈沖個(gè)數(shù)可查詢、輸出脈沖可終止等功能。

    1 總體方案設(shè)計(jì)

    在需要上位機(jī)對(duì)多個(gè)步進(jìn)電機(jī)控制的場(chǎng)合,系統(tǒng)應(yīng)用方案如圖1所示,上位機(jī)通過(guò)USB轉(zhuǎn)485和N個(gè)步進(jìn)電機(jī)控制器進(jìn)行485組網(wǎng),上位機(jī)使用Modbus協(xié)議和N個(gè)步進(jìn)電機(jī)控制器進(jìn)行通信,步進(jìn)電機(jī)控制器在收到方向和轉(zhuǎn)動(dòng)步數(shù)等信息后,將方向信號(hào)以高低電平的形式發(fā)送給相應(yīng)的細(xì)分驅(qū)動(dòng)器,將轉(zhuǎn)動(dòng)步數(shù)以脈沖個(gè)數(shù)的形式發(fā)送給相應(yīng)的細(xì)分驅(qū)動(dòng)器,細(xì)分驅(qū)動(dòng)器在方向信號(hào)和脈沖信號(hào)的控制下,帶動(dòng)相應(yīng)的步進(jìn)電機(jī)轉(zhuǎn)動(dòng)。

    圖1 系統(tǒng)應(yīng)用方案圖

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

    基于STM32的步進(jìn)電機(jī)控制器硬件框圖如圖2所示。系統(tǒng)由24V供電,經(jīng)過(guò)降壓處理后提供5V和3.3V直流電,上位機(jī)通過(guò)USB轉(zhuǎn)485接口后與步進(jìn)電機(jī)控制器的RS485接口連接,STM32的IO口經(jīng)過(guò)驅(qū)動(dòng)后,通過(guò)輸出接口連接細(xì)分驅(qū)動(dòng)器的ENA、DIR和PUL接口,撥碼開(kāi)關(guān)輸入用于設(shè)置步進(jìn)電機(jī)控制器地址。

    圖2 基于STM32的步進(jìn)電機(jī)控制器硬件框圖

    系統(tǒng)電源電路如圖3所示,該電路主要是由78M05和LM1117兩個(gè)三端穩(wěn)壓器構(gòu)成。24V的直流電壓經(jīng)過(guò)78M05穩(wěn)壓器降壓變成5V,其中D1是整流二極管,R1、R2和R3起分壓散熱的作用,5V電壓再經(jīng)過(guò)LM1117-3.3穩(wěn)壓器降成3.3V。

    圖3 電源電路

    CPU電路如圖4所示,采用STM32F030F4P6芯片作為主控芯片,以RC電路作為上電復(fù)位電路,時(shí)鐘電路采用8MHz晶振,引出SW接口作為調(diào)試借口,對(duì)CPU的BOOT0引腳采用跳線的方法,根據(jù)需要可接高電平或低電平,采用一個(gè)發(fā)光二極管LED1對(duì)3.3V電源進(jìn)行指示。

    485接口電路如圖5所示,采用SP3485實(shí)現(xiàn)串口到485的轉(zhuǎn)換,采用STM32F030F4P6芯片PA0腳控制傳輸方向,R22和R20分別起到上拉電阻和下拉電阻的作用,R21做為終端匹配電阻,只是在網(wǎng)絡(luò)的首末端才焊接。F1和F2為自恢復(fù)保險(xiǎn)絲,和T1、T2一起對(duì)電路起保護(hù)作用。

    輸出接口電路如圖6所示,采用三極管來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)驅(qū)動(dòng)器的輸入光耦,STM32F030F4P6芯片的I/O口通過(guò)控制三極管的基極實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)驅(qū)動(dòng)器的輸入光耦的通斷控制,將電平信號(hào)和脈沖信號(hào)傳送給步進(jìn)電機(jī)驅(qū)動(dòng)器。

    圖4 CPU電路

    圖5 485接口電路

    圖6 輸出接口電路

    撥碼開(kāi)關(guān)電路如圖7所示,采用上拉電阻的方法,當(dāng)撥碼開(kāi)關(guān)OFF時(shí),程序中對(duì)相應(yīng)輸入復(fù)位,撥碼開(kāi)關(guān)ON時(shí),程序中對(duì)相應(yīng)輸入置位。1~5位撥碼開(kāi)關(guān)用于地址輸入,分別對(duì)應(yīng)1~32,當(dāng)1~5位撥碼開(kāi)關(guān)全OFF時(shí),對(duì)應(yīng)地址為32,其余地址直接對(duì)應(yīng)其輸入二進(jìn)制的組合。

    圖7 撥碼開(kāi)關(guān)電路

    3 系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)

    FreeModbus是一個(gè)針對(duì)嵌入式應(yīng)用的通用Modbus協(xié)議。Modbus通信協(xié)議棧包括兩層:Modbus應(yīng)用層和網(wǎng)絡(luò)層。FreeModbus提供了RTU/ASCII傳輸模式及TCP協(xié)議支持[3,4]。

    移植FreeModbus協(xié)議時(shí)對(duì)硬件的需求包括,具有一個(gè)支持接收緩沖區(qū)滿中斷和發(fā)送緩存區(qū)空中斷的異步串行接口、有一些能夠容納Modbus數(shù)據(jù)幀的RAM空間和一個(gè)定時(shí)器。

    中斷控制配置,在FreeModbus的標(biāo)準(zhǔn)移植接口文件port.h中,設(shè)置兩個(gè)臨界保護(hù)函數(shù)的宏定義,實(shí)現(xiàn)全局中斷的打開(kāi)和關(guān)閉。相關(guān)程序如下:

    #define ENTER_CRITICAL_SECTION( ) __disable_irq();

    #de fi ne EXIT_CRITICAL_SECTION( ) __enable_irq();

    在物理層,用戶只需完成串行口及超時(shí)定時(shí)器的配置即可。具體應(yīng)修改接口文件portserial.c和porttimer.c。

    1)eMBErrorCode eMBInit()完成物理層的初始化。主要包括:BOOL xMBPortSerialInit()串口初始化,設(shè)定I/O口功能、波特率、數(shù)據(jù)位數(shù)、校驗(yàn)方式;BOOL xMBPortTimersInit定時(shí)器初始化,設(shè)定定時(shí)器,設(shè)定t3.5定時(shí)需要的定時(shí)常數(shù);

    2)eMBErrorCode eMBEnable()使能協(xié)議棧。

    3)void vMBPortTimersDisable()關(guān)閉超時(shí)定時(shí)器,在此函數(shù)中清零定時(shí)器計(jì)數(shù)值,關(guān)閉定時(shí)器中斷;

    4)BOOL xMBPortSerialPutByte()發(fā)送一字節(jié)數(shù)據(jù),需要先使能485芯片的發(fā)送信號(hào),調(diào)用USART_SendData()完成數(shù)據(jù)發(fā)送后,適當(dāng)延時(shí)后使能485芯片的接收信號(hào);BOOL xMBPortSerialGetByte()接收一字節(jié)數(shù)據(jù),調(diào)用USART_ReceiveData()完成數(shù)據(jù)接收;

    5)void UART1_IRQ()通過(guò)調(diào)用USART_GetITStatus()實(shí)現(xiàn)對(duì)發(fā)送和接收狀態(tài)的判斷,進(jìn)行相應(yīng)的處理。

    應(yīng)用層配置,在執(zhí)行eMBEnable()使能協(xié)議棧后,不斷循環(huán)調(diào)用eMBErrorCode eMBPoll()檢測(cè)事件,通過(guò)四個(gè)接口函數(shù)eMBRegInputCB(),eMBRegHoldingCB(),eMBRegCoilsCB()和eMBRegDiscreteCB()實(shí)現(xiàn)對(duì)離散輸入、輸出線圈、輸入寄存器和保持寄存器的讀寫(xiě)操作。

    步進(jìn)電機(jī)控制器的功能處理主要用eMBRegHold ingCB()完成,eMBRegHoldingCB()對(duì)應(yīng)06功能嗎時(shí)用來(lái)處理設(shè)置輸出脈沖頻率、輸出脈沖個(gè)數(shù)、輸出脈沖方向和輸出脈沖終止,eMBRegHoldingCB()對(duì)應(yīng)03功能嗎時(shí)用來(lái)處理查詢輸出脈沖頻率、已輸出脈沖個(gè)數(shù)、輸出脈沖方向、輸出脈沖終止標(biāo)志,地址分別對(duì)應(yīng)40001到40004。

    完成軟硬件設(shè)計(jì)后,搭建的實(shí)驗(yàn)系統(tǒng)如圖8所示,上位機(jī)采用USB轉(zhuǎn)485和兩臺(tái)步進(jìn)電機(jī)控制器組網(wǎng),上位機(jī)上運(yùn)行Modbus Poll軟件,設(shè)置相應(yīng)參數(shù)后,步進(jìn)電機(jī)能按期望的頻率,方向和脈沖個(gè)數(shù)工作。

    4 結(jié)束語(yǔ)

    圖8 步進(jìn)電機(jī)控制器實(shí)驗(yàn)系統(tǒng)

    本文設(shè)計(jì)了一種基于STM32的步進(jìn)電機(jī)控制器,將FreeModbus協(xié)議移植到STM32上,實(shí)現(xiàn)了通過(guò)Modbus對(duì)多臺(tái)步進(jìn)電機(jī)的控制,實(shí)驗(yàn)結(jié)果表明,設(shè)計(jì)的步進(jìn)電機(jī)控制器是可行的。

    猜你喜歡
    低電平驅(qū)動(dòng)器細(xì)分
    數(shù)字電路中“邏輯非”的用法辨析
    鐵道車(chē)輛高/低電平信號(hào)智能發(fā)生器設(shè)計(jì)
    藏起驅(qū)動(dòng)器號(hào)確保數(shù)據(jù)安全
    深耕環(huán)保細(xì)分領(lǐng)域,維爾利為環(huán)保注入新動(dòng)力
    2017款凱迪拉克2.8L/3.0L/3.2L/3.6L車(chē)型低電平參考電壓總線電路圖
    壓電陶瓷驅(qū)動(dòng)器的遲滯特性
    1~7月,我國(guó)貨車(chē)各細(xì)分市場(chǎng)均有增長(zhǎng)
    整體低迷難掩細(xì)分市場(chǎng)亮點(diǎn)
    SiC基和Si基永磁同步電動(dòng)機(jī)驅(qū)動(dòng)器的比較
    新型低電壓大變形微驅(qū)動(dòng)器數(shù)值求解及仿真
    肥乡县| 聂拉木县| 界首市| 新化县| 平远县| 丰顺县| 绥化市| 武安市| 正宁县| 元谋县| 勐海县| 日土县| 乌鲁木齐市| 四子王旗| 长垣县| 株洲县| 贵溪市| 万宁市| 德惠市| 汉川市| 华亭县| 务川| 嵊州市| 靖安县| 朝阳区| 巴楚县| 左云县| 南京市| 鄂州市| 岳西县| 古浪县| 洛川县| 乐业县| 商南县| 乃东县| 桑植县| 蒙自县| 奉新县| 莒南县| 平原县| 庆云县|