精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

用STM32與PID算法做一個磁懸浮裝置

電子工程師筆記 ? 來源:小白白學電子 ? 作者:小白白學電子 ? 2023-02-16 09:52 ? 次閱讀

今天教大家來做一個磁懸浮玩具

1)磁懸浮的基本原理

磁懸浮有下推式和上拉式兩種基本形式。

所謂下推式,就是控制部分在底座上,懸浮的磁鐵在上面,依靠底座從下往上的排斥磁力推動磁鐵懸浮;而上拉式,是控制部分在上面,懸浮的磁鐵在下面,依靠控制部分從上方的吸引力吸住磁鐵不會落下去。

本文實現的是下推式,僅講解下推式磁懸浮的原理和實現方法。

如下圖,是一個環形磁鐵的磁力線:

poYBAGPtjHqAcfHiAAB607ay9y4472.jpg

如果在它上方放置另一個小磁鐵,N極向下S極向上,那么它會受到下面的環形磁鐵的斥力。越靠近下方的環形磁鐵,斥力就越大。當距離合適時,斥力與上方磁鐵的重力相等時,就能實現懸浮:

pYYBAGPtjIyARhtRAACXv5KbjBo653.jpg

但是,僅僅依靠兩個磁鐵的相互作用是不能保持穩定的,因為兩個磁鐵的斥力只要與重力的方向不在同一直線上,就不能保持平衡,上方的小磁鐵就會向旁邊飛出去。

而下推式磁懸浮的實現方法,就是在上述的系統里,再增加一個控制上方小磁鐵保持在中軸線位置的裝置。這樣,小磁鐵即不能往旁邊移動,垂直方向的重力又和磁鐵斥力相抵消,就 能實現穩定的懸浮了。

具體實現時,如果沒有大環形磁鐵,可以使用一圈小磁鐵代替,效果是一樣,如本文效果圖里用的4個、8個都行,但是一定要排布在對稱位置。

控制小磁鐵位置的裝置,一般由霍爾元件和電磁鐵組成。用兩個霍爾元器件檢測磁場,兩個霍爾元件安裝在環形磁鐵的中心處,且互相垂直,檢測面都與鉛垂線平行。如果上方的小磁鐵在中軸線上,那么系統的磁力線也是鉛垂線方向的,兩個霍爾元件都無輸出;如果小磁鐵偏離了中軸線,那么系統的磁力線方向會偏離鉛垂線方向,霍爾元件就能檢測出往某個方向偏移了。此時,由MCU采集霍爾元件的輸出,控制電磁鐵,產生一個水平方向相反的磁力,將小磁鐵拉回中軸線上就行了。

由于該系統是一個動態平衡的系統,需要不斷地采集、判斷、調整,最好使用PID控制。

了解了原理,下面就一起實現吧。

2)硬件電路圖及調試

由上述的原理講解,我們的硬件只需要處理好兩件事情就行了:一是采集兩個相互垂直安裝的霍爾元件的輸出,以獲取小磁鐵的偏移位置;二是控制兩組相互垂直的電磁鐵,產生水平的磁力。

霍爾元件及其信號放大部分,UGN3503是霍爾元器件,電位器提供一個初始的零位電壓,霍爾的輸出信號通過反向放大后,輸出到STM32AD口采集:

poYBAGPtjLiAUICQAAGuDq4VlL0034.jpg

電磁鐵驅動部分,使用L293D電機驅動芯片來驅動電磁鐵,L293D由STM32輸出的PWM波來驅動:

pYYBAGPtjQaAEAKHAAFjjohISaA560.jpg

電源部分,驅動電磁鐵用9~12V的電壓比較合適,霍爾供電用5V:

pYYBAGPtjReAAX1UAAEAtnbjWJI801.jpg

因為小白白在DIY的時候STM32是外接的最小系統,所以原理圖里沒畫STM32,只留了幾個接點。

注意布局時,霍爾元件和電磁鐵的放置位置,有特殊要求。最終的PCB圖如下:

poYBAGPtjT-AamelAAMR818IHc8174.jpg

U3和U4是兩個檢測磁鐵位置的霍爾元件,需要安裝在環形磁鐵中心附近,并且互相垂直;而且霍爾的平面要在相對角電磁鐵的連線上。

注意兩個霍爾U3和U4的位置:(U5也是個霍爾,本來是預留來檢測是否有磁鐵放在上面的,暫時沒有用上)

LL1~LL4是四個電磁鐵,LL1和LL2一組,LL3和LL4一組,安裝時,同組的需要對角放置;而且要注意安裝時同名端相連,通電后,同組的兩個電磁鐵磁力線能相互連接產生閉合磁力線(也就是一個上方為N極時同組另一個上方為S極)。這樣才能保證同組的電磁鐵產生的磁力在水平方向是相同的。

在電路圖焊接完成后,與STM32F103C8T6最小系統相連,霍爾的輸出AD1、AD2連接到STM32的PA0和PA1;PWM1~4依次連接到STM32的PA15、PB4、PB3、PB5。其他供電部分的連接就不說了。

安裝好環形磁鐵,上電后,在空載狀態下調整U3、U4連接的電位器,使得AD1和AD2都在1.65V左右(也即AD采集時3.3V的中間值)。

到這里,硬件的設計工作就基本完成了。

3)軟件編程實現

軟件的實現也是大致分為兩大功能:一是通過AD采集,獲取磁鐵再水平方向X、Y軸的位置;二是通過兩個方向位置偏移的大小來計算驅動兩個方向電磁鐵的PWM輸出值,這個計算過程使用了PID算法

程序架構是:在主循環里不斷地采集霍爾元件的電壓,也就是AD1、AD2的值;在中斷里計算PID控制算法,設置PWM的輸出。

首先在cubemx里配置ADC,打開AD0、AD1和AD4(實際只用了AD0和AD1,AD4是預留的,采集了但是沒有用于計算),分別配置到圖中的rank1、rank2、rank3下:

poYBAGPtjWWAVh04AAGzqBawSL8696.jpg

使能定時器TIM2中斷:

poYBAGPtjXiAVbr4AAIpsa8OZuU356.jpg

到這里,cubemx里的硬件主要配置就完成了。接下來可以生成keil工程,編寫軟件代碼。

在keil工程里,adc部分,使用如下函數進行AD采集,采集了三個通道,即AD0、AD1、AD4:

poYBAGPtjdKABtgDAADOs7SIQqs041.jpg

然后進行滑動平均濾波,這里最終只保留了AD0和AD1兩路,10bit的精度,存放到了xPos和yPos中,作為兩個方向的位置值。

poYBAGPtjbWALB4qAAFsBYuNV1U755.jpg

filter_adc()函數需要放在主循環中循環調用,不斷更新位置值:

pYYBAGPtjaWAeWO6AAB24vbCLig230.jpg

PID部分主要的實現代碼如下:
pYYBAGPtjguAdSOTAABkUdyGOuM853.jpg
poYBAGPtjhKAQF0zAAGWhyTbxJI809.jpg

注意這里PID實現時對積分項的處理,當誤差的累加值非常大時(也即積分項很大時)不會再累加誤差項,而是限制到一個最大值MAX_INTEGRATION_ERROR,這是一種避免積分飽和的方法。(關于PID的積分飽和,可以參見小白白以前發的文章《PID控制的深入探討(位置式PID、增量式PID、PID的積分飽和)》)

接下來,講一下如何設置PWM輸出值,以及怎么控制電磁鐵磁場的正負向。

由于我們使用了L293D芯片來驅動電磁鐵,以LL1和LL2這一路為例,當PWM2設置為低電平,則PWM1輸出為高時就能驅動電磁鐵;當PWM2設置為高電平,則PWM1輸出為低時,電流與前述狀態相反,就能反向驅動電磁鐵。如下圖所示:

pYYBAGPtjiSAGvyyAABKVbw9LUU977.jpg

同時,我們只需要改變PWM1的脈寬,就能實現電磁鐵的磁場強度控制。

另一路LL3和LL4電磁鐵也是一樣的原理,可以通過PWM3控制磁場強度,通過PWM4來控制磁場方向。

這部分的實現代碼如下,其中PWM1和PWM3的輸出值(也就是代碼中的xPWM和yPWM),是先通過調用PID計算函數得出值,再依據正負向設置到定時器的PWM輸出的,整個函數放在定時器中斷中調用。

pYYBAGPtjk6ATeV7AAFzJiRs1ek961.jpg
pYYBAGPtjlSAZOf0AAIYOSEGI_o785.jpg

最后提醒一下,PID的參數值,是需要調整的,這些值與磁鐵大小、定時器的控制周期長短都是相關的,本文中的取值如下:

#define P_value 4

#define I_value 1

#define D_value 30

4)一些補充內容

在調試時,可以先拿住小磁鐵從上往下移動,當感覺重力被磁力抵消時,再向水平的X、Y方向移動,如果感覺有水平的阻力,那么就成功了一大半了,后面只需要微調參數即可。要注意保護強磁鐵,如果兩個磁鐵不加保護直接吸到一起很可能會被撞碎。

到這里,磁懸浮最基本的功能就做好了,但是還有很多可以優化的地方。

比如現在計算周期用的是2KHz,正好在人的聽覺范圍內,這在使用時,電磁鐵可能會產生一些噪音,可以考慮把控制周期改到20KHz以上,但是要注意PID的參數需要調整。

再比如,多利用一個霍爾元件,可以增加檢測載荷的功能,如果沒有載荷,可以關閉PWM省電。


審核編輯:劉清

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

    關注

    114

    文章

    5153

    瀏覽量

    213448
  • STM32
    +關注

    關注

    2266

    文章

    10876

    瀏覽量

    354925
  • PID算法
    +關注

    關注

    2

    文章

    171

    瀏覽量

    24272
  • 定時器
    +關注

    關注

    23

    文章

    3241

    瀏覽量

    114514
  • 磁懸浮
    +關注

    關注

    10

    文章

    99

    瀏覽量

    19887

原文標題:【DIY】手把手教你:用STM32與PID算法,做一個磁懸浮裝置

文章出處:【微信號:電子工程師筆記,微信公眾號:電子工程師筆記】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DIY 基于STM32PID磁懸浮裝置#硬聲創作季 #stm32單片機

    裝置磁懸浮
    坤愛吃手抓餅
    發布于 :2022年11月08日 11:52:07

    誰能教磁懸浮玩具的...

    本帖最后由 eehome 于 2013-1-5 09:59 編輯 <p>誰能教磁懸浮玩具的原理及制作之類的,本人最近看到磁懸浮玩具很感興趣,想自己做一個,可是本人
    發表于 01-21 17:34

    磁懸浮列車

    地心引力的能力,使車體完全脫離軌道,懸浮在距離軌道約1厘米處,騰空行駛,創造了近乎“零高度”空間飛行的奇跡。由于磁鐵有同性相斥和異性相吸兩種形式,故磁懸浮列車也有兩種相應的形式:種是利用磁鐵同性相斥
    發表于 06-18 16:17

    我想做一個簡易的電磁懸浮裝置

    如題 想做一個簡易的磁懸浮裝置 百度的資料有些電子元件淘寶上沒有 有沒有高人 教我下 非常感謝 QQ:112355766
    發表于 03-22 11:04

    磁懸浮線性霍爾元件 磁懸浮霍爾應用

    ,HW101A檢測到設定懸浮的距離后,轉為電壓信號,輸出模擬量,經過放大電路放大傳到PID,調節電路根據得到的信號進行計算,輸出電流給電磁鐵,而電磁鐵根據電流量的大小來釋放磁場,進
    發表于 01-24 16:01

    需要磁懸浮高度可以達到20cm,載重2kg以上的磁懸浮裝置,誰能做?

    需要磁懸浮高度可以達到20cm,載重2kg以上的磁懸浮裝置,誰能做?
    發表于 09-11 06:52

    STM32下推式磁懸浮裝置介紹

    接下來幾篇文章里我將介紹并開源近期完成的STM32下推式磁懸浮裝置。這個項目做的時間不長(主要是在等PCB),但是坑非常多。而且網上關于STM32
    發表于 07-20 06:33

    Stm32f103上拉式磁懸浮

    本人非相關專業的學生,也不是從業者,出于興趣自己在家搗鼓單片機,目標是Stm32f103控制磁懸浮裝置,基本原理是利用ADC讀取線性霍爾元件的電壓,在利用定時器輸出PWM通過調節占空
    發表于 08-01 09:53

    磁懸浮科普介紹

    磁懸浮科普介紹磁懸浮技術(簡稱EML技術或EMS技術)是指利用磁力克服重力使物體懸浮種技術。磁懸浮列車是由無接觸的磁力支承、磁力導向和驅
    發表于 08-31 06:49

    介紹STM32下推式磁懸浮裝置的PCB設計思路

    前言這是STM32下推式磁懸浮裝置的第二篇文章,接下來將介紹磁懸浮裝置的原理圖、PCB、設計思路。
    發表于 01-14 07:37

    如何制作簡易的磁懸浮

    在折騰數字的PID電機控制之前,我想再弄模擬電路的磁懸浮東東,來加深對PID的理解。這個磁懸浮
    的頭像 發表于 08-06 16:40 ?8.1w次閱讀

    如何實現常導和超導磁懸浮演示試驗裝置的控制論文資料概述

    本文目的是通過磁懸浮技術的理論研究,讓跟多的人認識磁懸浮,了解磁懸浮。通過本文的理論知識的介紹,我自己設計制作了簡單的
    發表于 07-03 08:00 ?17次下載
    如何實現常導和超導<b class='flag-5'>磁懸浮</b>演示試驗<b class='flag-5'>裝置</b>的控制論文資料概述

    STM32下推式磁懸浮裝置(二)原理圖設計思路

    前言這是STM32下推式磁懸浮裝置的第二篇文章,接下來將介紹磁懸浮裝置的原理圖、PCB、設計思路。
    發表于 01-14 12:24 ?68次下載
    <b class='flag-5'>STM32</b>下推式<b class='flag-5'>磁懸浮</b><b class='flag-5'>裝置</b>(二)原理圖設計思路

    DIY磁懸浮裝置

    這個DIY磁懸浮電路的主要部件是霍爾效應傳感器和 MOSFET 晶體管和電磁線圈。我們之前使用電磁線圈構建了其他有趣的項目,例如迷你特斯拉線圈、電磁線圈槍等。
    的頭像 發表于 08-10 16:35 ?1w次閱讀
    DIY<b class='flag-5'>一</b><b class='flag-5'>個</b>電<b class='flag-5'>磁懸浮</b><b class='flag-5'>裝置</b>

    基于Arduino的磁懸浮排斥裝置

    幾年前,我試圖制造種用于排斥磁懸浮裝置,但我擁有的所有電路都很復雜,而且設置非常困難。
    發表于 12-02 15:21 ?12次下載