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

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

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

基于STM32F103芯片為控制核心的磁導(dǎo)航AGV驅(qū)動器

電子設(shè)計 ? 來源:eefocus ? 作者:eefocus ? 2021-04-06 14:14 ? 次閱讀

AGV系統(tǒng)在當前柔性制造系統(tǒng)(FMS)和自動化倉儲系統(tǒng)中扮演著重要的角色。AGV具有適應(yīng)性好、柔性程度高、可靠性好、可實現(xiàn)生產(chǎn)和搬運功能的集成化和自動化等優(yōu)點[1]。

AGV的導(dǎo)航方式主要有激光導(dǎo)航、電磁導(dǎo)航、視覺導(dǎo)航、GPS(全球定位系統(tǒng))導(dǎo)航、磁導(dǎo)航等,本文主要針對磁導(dǎo)航方式的AGV進行深入探討,磁導(dǎo)航AGV主要是基于磁導(dǎo)航傳感器感應(yīng)貼在路面上的磁條進行路徑跟蹤并完成其自主行駛的功能。

磁導(dǎo)航傳感器通過檢測鋪設(shè)在地面上的磁條來判斷AGV與目標路徑的偏差,然后輸出電壓模擬量[2]。對于磁導(dǎo)航AGV驅(qū)動器的設(shè)計,為更好地滿足通用性需求,需要對現(xiàn)有驅(qū)動器的組成單元進行總結(jié)和歸納,并且結(jié)合實際需求,找出共同點和不同點,為磁導(dǎo)航AGV通用驅(qū)動器的設(shè)計找到突破口。

通過查閱相關(guān)文獻,對磁導(dǎo)航AGV驅(qū)動器的組成有了一個總體認識,主要包括單片機單元、供電單元、手動控制單元、聲光報警單元、站點識別單元、工位檢測單元、電機驅(qū)動單元、CAN總線單元、避障單元、磁導(dǎo)航單元、姿態(tài)反饋單元、通信單元、安全輔助單元等 [35]。

1 驅(qū)動器硬件電路設(shè)計

在對磁導(dǎo)航AGV驅(qū)動器的組成單元進行分析之后,本文提出了一種基于STM32F103芯片為控制核心的通用驅(qū)動器,它包含以下模塊:單片機模塊、電源模塊、DI/DO模塊、RFID讀寫模塊、DAC輸出模塊、ADC采集模塊、CAN總線通信模塊、高速編碼器,安全模塊以及串口通信模塊,這些模塊與磁導(dǎo)航AGV驅(qū)動器的組成單元之間的對應(yīng)關(guān)系如表1所列。

由表1可以看出,提出的通用驅(qū)動器設(shè)計方案可以滿足磁導(dǎo)航AGV對主要組成單元的需求。該驅(qū)動器可同時控制兩個電機以及采集相應(yīng)的速度,還可同時采集兩路磁條傳感器輸出的模擬電壓,對于執(zhí)行復(fù)雜功能的AGV而言,可以增加驅(qū)動器的數(shù)量以滿足要求,各驅(qū)動器之間可以通過CAN總線保持動作協(xié)調(diào)一致,共同完成指定的動作。

各個模塊對應(yīng)不同的功能和作用,各司其職,互相配合,完成指定的功能。各模塊的主要作用如表2所列。

1.1 單片機模塊

本設(shè)計采用STM32作為控制芯片,此芯片基于ARM CortexM3內(nèi)核,具有高性能、低成本、低功耗的特點。另外,此芯片的可移植性很好,并有許多官方函數(shù)庫可以直接調(diào)用,大大縮短了開發(fā)周期。STM32F103系列有80個可以自由操控的芯片引腳,為通用驅(qū)動器的設(shè)計提供了良好的條件。此驅(qū)動器采用模塊化設(shè)計,有利于驅(qū)動器功能擴展和升級。本驅(qū)動器控制板是由STM32F103的最小系統(tǒng)、電源電路實時時鐘系統(tǒng)、時鐘電路、JTAG接口電路、復(fù)位電路、用戶LED和按鍵電路、串口電路等組成。

1.2 電源模塊

AGV大多數(shù)通過鉛酸蓄電池供電,通過將小電壓大容量的鉛蓄電池串聯(lián)起來就可以構(gòu)成高電壓大容量的電池組,通常所用電池組為24 V,因此通過電壓轉(zhuǎn)換芯片將24 V轉(zhuǎn)換為5 V電壓,再將5 V轉(zhuǎn)換為3.3 V,為STM32芯片、MAX3232等供電。電路中需要加入多組電容,用于消除低頻和高頻的電源波動。

1.3 DI/DO模塊

手動操作器和必要的輸入/輸出信號需要多路DI/DO,因此本驅(qū)動器引出了多達16路的數(shù)字量輸入和16路的數(shù)字量輸出,輸入和輸出電壓為24 V。為了消除外界對驅(qū)動板的影響,在信號輸入部分采用光電耦合器進行隔離,由于電信號傳輸具有單向性等特點,可以達到良好的電絕緣能力和抗干擾能力;在信號輸出部分采用繼電器控制輸出24 V,并達到物理隔離的效果。根據(jù)光電耦合器二極管允許壓降1.15 V和允許電流10 mA,可以計算出輸入端接入的電阻阻值,公式為:

依據(jù)標稱電阻表選擇電阻的阻值為2.2 kΩ。

1.4 CAN總線模塊

由于高性能、高可靠性、及獨特的設(shè)計,CAN總線(控制器局域網(wǎng)絡(luò))越來越受到人們的重視。它可以多主站方式工作,網(wǎng)絡(luò)上任意一個節(jié)點均可以在任意時刻主動地向網(wǎng)絡(luò)上的其他節(jié)點發(fā)送信息,而不分主從;通信方式靈活,可以添加多達255個節(jié)點。本驅(qū)動器中STM32自帶有CAN控制器,只需要接入一個CAN收發(fā)器即可完成CAN模塊的設(shè)計。

1.5 DAC模塊

DAC模塊主要用于控制電機的轉(zhuǎn)速,這與電機驅(qū)動器的選型有關(guān),電機的控制需要輸入0~10 V的模擬量來控制電機的速度,電機速度的可調(diào)節(jié)范圍是70~4 096 rpm,因此DAC輸出的電壓和電機速度存在一定的對應(yīng)關(guān)系,其對應(yīng)關(guān)系如下所示:

其中,n為電機的轉(zhuǎn)速大?。▎挝粸閞/min),U為DAC輸出的電壓大小(單位為 V)。

為了能夠更好地控制電機,需要輸出的電壓穩(wěn)定且有一定的驅(qū)動能力,由此在原理圖設(shè)計時,首先通過電壓轉(zhuǎn)換芯片把24 V轉(zhuǎn)換為±12 V,再將產(chǎn)生的+12 V的電壓轉(zhuǎn)換為5 V模擬量,最后將5 V轉(zhuǎn)換為+1.25 V和+2.5 V的標準參考電壓,其中+2.5 V的參考電壓接入STM32的 VREF+引腳,作為DAC和ADC的參考電壓。

由于芯片輸出的DAC模擬量的帶負載能力較弱且電壓輸出范圍只有0~2.5 V,因此,加入運算放大器以提高帶負載能力,在參考電壓+1.25 V的參考下,將0~2.5 V的輸出范圍變?yōu)?1.25~+1.25 V的輸出范圍,再放大8倍即可達到設(shè)計要求的0~+10 V的輸出范圍。

放大倍數(shù)可以通過調(diào)節(jié)運算放大器外圍電路中的4個電阻的阻值來改變,另外在設(shè)計時,考慮到電阻阻值的不精確,用可調(diào)電阻替換其中一個電阻,最后調(diào)試PCB板時,通過調(diào)節(jié)這個可調(diào)電阻,使輸出電壓可以達到10 V。

1.6 ADC模塊

磁導(dǎo)航AG V中的磁條傳感器輸出來的偏差信號是通過電壓反映出來的,具體的比例關(guān)系如圖1所示。由圖1可以看出偏差與傳感器輸出的電壓在一定范圍內(nèi)成正比,GATE用于指示傳感器是否在磁條上。ADC的參考電壓為+2.5 V,傳感器輸出電壓范圍是0~+10 V,采用電阻分壓的方法將0~10 V變?yōu)?~2.5 V,將測量范圍擴大4倍,如果想改變測量范圍,可以改變分壓電阻的阻值。

1.7 高速編碼器模塊

高速編碼器主要依靠STM32上的高速計時器來完成,采集電機輸出來的脈沖信號,將脈沖信號轉(zhuǎn)換為速度值,可以和DAC形成一個速度閉環(huán)控制。另外,對實時速度在時間上積分就可以得到行走的距離,對AGV的實時控制和顯示有用。脈沖信號和速度的具體對應(yīng)關(guān)系如下:

n為電機的轉(zhuǎn)速大?。▎挝粸閞/min),tp為高速編碼器采集到的信號高電平的時間(單位為μs)。

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

系統(tǒng)軟件設(shè)計采用C語言進行編寫,編譯器采用IAR 5.3,底層驅(qū)動器軟件控制流程如圖2所示,中斷流程如圖3所示。

程序采用模塊化編程,將各個模塊分別寫到不同的子函數(shù)中,這樣便于調(diào)試、移植和修改。本文采用中斷模式來協(xié)調(diào)實現(xiàn)AGV各項功能,中斷模式中的中斷優(yōu)先級根據(jù)任務(wù)的重要程度來確定,緊急信號中斷的優(yōu)先級最高,CAN總線和串口中斷次之,定時器4的中斷優(yōu)先級最低。定時器4每隔50 ms溢出一次,整個程序執(zhí)行一次,執(zhí)行的過程中讀取磁條傳感器狀態(tài)值,確定當前的偏差,根據(jù)糾偏算法控制AGV車的運行狀態(tài)。在糾偏算法中,根據(jù)不同的車型、不同的傳感器位置,建立不同的控制模型,進而更好地控制AGV按照設(shè)定好的路線行進。

對于不同功能的AGV,軟件控制也不相同,上文中的控制流程圖只針對一種車型,對其他車型,控制方式只需加入相應(yīng)功能的程序模塊即可。

3 試驗測試

該通用驅(qū)動器目前已在3種車型上進行過試驗,這3種車型分別是:差速AGV、單舵輪AGV叉車和雙轉(zhuǎn)向架全向AGV,實物圖如圖4所示。前兩種AGV車只需一個驅(qū)動器,雙轉(zhuǎn)向架全向AGV車則需要兩個驅(qū)動器來控制,根據(jù)不同AVG建立不同的數(shù)學模型[6],完成試驗。

為了測試硬件設(shè)計和軟件設(shè)計是否合理,鋪設(shè)了一段環(huán)形磁條測試三種AGV,測試的路徑示意圖如圖5所示。圖5中1、2、3、4處分別放置編號為1、2、3、4的RFID標簽

測試過程如下:

① 將AGV置為手動模式,通過手操器控制AGV運動,能夠快速地完成指定的動作。

② 將AGV置為自動模式,AGV沿著鋪設(shè)的軌跡行走,完成在指定點處執(zhí)行相應(yīng)的動作。

③ 在自動模式下,按下急停按鈕,保證車在緊急狀態(tài)下停止運行。

④ 在自動模式下,在軌跡上放上雜物,AGV在接觸到物品時會自動停止運行。

經(jīng)過測試,3種AGV車都可以沿著鋪設(shè)的磁條穩(wěn)定行進,并在指定的工位執(zhí)行相應(yīng)的動作,實現(xiàn)基本功能。

結(jié)語

本文設(shè)計的磁導(dǎo)航AGV通用驅(qū)動器采用STM32F103作為主控芯片實現(xiàn)AGV基本功能,在3種車型上能夠穩(wěn)定地工作,實現(xiàn)基本功能,并且模塊化設(shè)計給硬件調(diào)試和檢測提供了很大的方便,可擴展性很高。后期可以根據(jù)功能的需求增加或刪減相應(yīng)的模塊,從而降低成本,增強產(chǎn)品的競爭力。

編輯:hfy

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

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356787
  • STM32F103
    +關(guān)注

    關(guān)注

    33

    文章

    478

    瀏覽量

    63736
  • AGV
    AGV
    +關(guān)注

    關(guān)注

    27

    文章

    1322

    瀏覽量

    41165
  • 磁導(dǎo)航
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7709
收藏 人收藏

    評論

    相關(guān)推薦

    stm32F103驅(qū)動LDC1000,返回的proximtyDataMIN frequencyDataMIN proximtyDataMAX frequencyDataMAX均為0怎么解決?

    最近在做關(guān)于stm32F103驅(qū)動LDC1000的實驗,發(fā)現(xiàn)返回的 proximtyDataMINfrequencyDataMINproximtyDataMAX frequencyDataMAX均為0,讀取STATUS寄存
    發(fā)表于 01-02 08:28

    ADS8320如何與STM32f103的SPI連接?

    如題,請教一下ADS8320如何與STM32f103的SPI連接,因為STM32的SPI只支持8位和16的傳輸格式。如果您有驅(qū)動,那定是極好的!
    發(fā)表于 12-24 08:23

    STM32F103模擬SPI驅(qū)動ADS1256,沒有成功的原因?

    STM32F103模擬SPI驅(qū)動ADS1256,沒有成功
    發(fā)表于 11-22 07:11

    STM32F103×8/STM32F103×B MCU手冊

    需要確定系統(tǒng)時鐘源,如使用HSE或HSI,然后配置PLL倍增因子以獲得所需的系統(tǒng)時鐘頻率。這通常通過修改RCC(復(fù)位與時鐘控制)寄存來完成,并可以在STM32CubeMX或標準外設(shè)庫/HAL庫中輕松設(shè)置。2. Q: 為什么
    發(fā)表于 11-18 15:14 ?0次下載

    如何使用STM32F103控制LTC2662?

    使用STM32F103控制LTC2662
    發(fā)表于 07-04 07:46

    STM32F103xC,STM32F103xD,STM32F103xE中文資料

    電子發(fā)燒友網(wǎng)站提供《STM32F103xC,STM32F103xD,STM32F103xE中文資料.pdf》資料免費下載
    發(fā)表于 06-17 14:12 ?4次下載

    如何使用STM32F103硬件SPI驅(qū)動AD5313?

    使用STM32F103硬件SPI驅(qū)動AD5313
    發(fā)表于 06-04 07:17

    32位基于ARM核心的帶512K字節(jié)閃存的微控制器STM32F103xC, STM32F103xD, STM32F103xE數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《32位基于ARM核心的帶512K字節(jié)閃存的微控制器STM32F103xC, STM32F103xD, STM32F103
    發(fā)表于 05-24 14:33 ?0次下載

    利用STM32F103芯片控制BLDC電機,如何實現(xiàn)TIM1下溢中斷觸發(fā)ADC呢?

    現(xiàn)在利用STM32F103芯片控制BLDC電機,但看了官方的規(guī)格書還是不明白如何實現(xiàn)TIM1下溢中斷觸發(fā)ADC呢? 請大俠指導(dǎo)一下,謝謝
    發(fā)表于 05-17 08:53

    stm32f103 CANbus控制器對于擴展幀格式的srr位怎么設(shè)置成低電平?

    這周 用stm32f103芯片自帶的can控制器 驅(qū)動外部的can發(fā)射 ,用擴展幀發(fā)現(xiàn) srr位一直
    發(fā)表于 05-17 07:44

    STM32F103定時變慢的原因?怎么解決?

    STM32F103 利用定時設(shè)置按鍵帶長按功能和短按鍵,按鍵按鍵是系統(tǒng)關(guān)機,短按只是控制led亮滅。但是有時總會出現(xiàn)長按按鍵變成了控制led,長按時間也足夠的長,在觀察led的亮滅的
    發(fā)表于 04-23 06:52

    請問STM32f103怎么控制電調(diào)進而控制電機的正反轉(zhuǎn)?

    STM32f103 怎么控制電調(diào)進而控制電機的正反轉(zhuǎn)?
    發(fā)表于 04-18 06:30

    STM32F407的程序移植到STM32F103芯片上面,需要修改哪些內(nèi)容?

    STM32F407的程序移植到STM32F103芯片上面,需要修改哪些內(nèi)容?
    發(fā)表于 04-10 07:38

    為什么Stm32F103驅(qū)動ov7670有嚴重的分屏現(xiàn)象?

    為什么Stm32F103驅(qū)動ov7670有嚴重的分屏現(xiàn)象。
    發(fā)表于 04-07 07:40

    ARM系列STM32F103芯片的解密方法

    本文介紹ARM系列STM32F103芯片的解密方法,其內(nèi)核是Cortex-M3,內(nèi)存從16K-512K都有。
    發(fā)表于 02-28 11:20 ?1791次閱讀