<rt id="m4md3"></rt>
  • <bdo id="m4md3"><meter id="m4md3"></meter></bdo>
  • <label id="m4md3"></label>
      <center id="m4md3"><optgroup id="m4md3"></optgroup></center>
      產品分類

      當前位置: 首頁 > 傳感測量產品 > 工業傳感器 > 霍爾傳感器

      類型分類:
      科普知識
      數據分類:
      霍爾傳感器

      霍爾傳感器 stm32:stm32—霍爾傳感器的初步使用

      發布日期:2022-10-09 點擊率:1225


      <a title=霍爾傳感器 stm32:stm32—霍爾傳感器的初步使用 第1張" title="霍爾傳感器 stm32:stm32—霍爾傳感器的初步使用 第1張-傳感器知識網"/>

      霍爾傳感器 stm32:stm32—霍爾傳感器的初步使用

      目錄
      一、簡介二、連接三、代碼

      一、簡介

      霍爾器件是一種磁傳感器。用它們可以檢測磁場及其變化,可在各種與磁場有關的場合中使用。在模塊測試的時候也很簡單,用手在附近其他引腳波動也會造成磁場變化,可以檢測得出,此外通過它,將許多非電、非磁的物理量例如力、力矩、壓力、應力、位置、位移、速度、加速度、角度、角速度、轉數、轉速以及工作狀態發生變化的時間等,也可以通過本傳感器轉變成電量來進行檢測和控制。

      按照霍爾器件的功能可將它們分為:霍爾線性器件和霍爾開關器件。前者輸出模擬量,后者輸出數字量。本模塊是霍爾開關傳感器

      二、連接

      將VCC和GND連接在開發板對應的引腳上(此處選擇普中STM32F103開發板),
      D0接在PD7上;因為本傳感器是和霍爾開關器件,所以雖然有D0口但是沒有什么用處,只是擺設。

      三、代碼
      在huoer.h 文件中,我們先進行宏定義,方便移植

      定義完了之后,再對huoer.c文件中的PC4接收引腳進行初始化

      #include “frame.h”

      //對霍爾傳感器進行初始化

      最后,在main.c函數里面進行情況選擇

      霍爾傳感器 stm32:stm32—霍爾傳感器的初步使用  第2張

      霍爾傳感器 stm32:【STM32】STM32之霍爾傳感器模塊

      1、霍爾傳感器是什么?

      答:霍爾傳感器是根據霍爾效應制作的一種磁場傳感器。

      用磁鐵去靠近霍爾傳感器時,霍爾傳感器的引腳電平會產生變化。

      2、霍爾傳感器主要用在什么地方?

      答:霍爾傳感器可測速、計數、限位上。

      舉例限位功能:兩個霍爾傳感器形成45°的夾角,電機邊緣粘著一個磁鐵,一旦電機轉動導致磁鐵觸發任意其中一個霍爾傳感器,則STM32檢測到觸發后立刻停止電機,不能再繼續往此方向轉動。以此達到限制電機轉動角度的作用。

      3、本文使用的是什么霍爾傳感器模塊?

      答:

      香瓜買的霍爾傳感器模塊一共有四個引腳,GND、VCC、D0、A0。

      其中只需要用到三根線,GND、VCC、D0。(A0不知做啥用的,計數?)

      使用方法:

      1)5V供電。

      2)用跳線連接D0和STM32的IO口(本文連接的是PA11)。

      3)D0默認是高電平,但磁鐵的特定一面(磁鐵另一面無用)去靠近霍爾傳感器模塊時,D0會被拉低。

      4、霍爾傳感器與限位開關有什么區別?

      答:

      1)限位開關

      ①優點:無功耗。

      ②缺點:易損壞。

      2)霍爾傳感器

      ①優點:不易損壞。

      ②缺點:有功耗。

      六、實驗步驟

      1、編寫并添加霍爾傳感器驅動

      1)編寫驅動GUA_Hall_Sensor.c(存放在“……HARDWARE”)

      霍爾傳感器 stm32:淺析STM32之霍爾傳感器模塊

        實驗前提

        1、在進行本文步驟前,請先閱讀以下博文:

        暫無

        2、在進行本文步驟前,請先實現以下博文:

        暫無

        五、基礎知識

        1、霍爾傳感器是什么?

        答:霍爾傳感器是根據霍爾效應制作的一種磁場傳感器。

        用磁鐵去靠近霍爾傳感器時,霍爾傳感器的引腳電平會產生變化。

        2、霍爾傳感器主要用在什么地方?

        答:霍爾傳感器可測速、計數、限位上。

        舉例限位功能:兩個霍爾傳感器形成45°的夾角,電機邊緣粘著一個磁鐵,一旦電機轉動導致磁鐵觸發任意其中一個霍爾傳感器,則STM32檢測到觸發后立刻停止電機,不能再繼續往此方向轉動。以此達到限制電機轉動角度的作用。

        3、本文使用的是什么霍爾傳感器模塊?

        答:

        香瓜買的霍爾傳感器模塊一共有四個引腳,GND、VCC、D0、A0。

        其中只需要用到三根線,GND、VCC、D0。(A0不知做啥用的,計數?)

        使用方法:

        1)5V供電。

        2)用跳線連接D0和STM32的IO口(本文連接的是PA11)。

        3)D0默認是高電平,但磁鐵的特定一面(磁鐵另一面無用)去靠近霍爾傳感器模塊時,D0會被拉低。

        4、霍爾傳感器與限位開關有什么區別?

        答:

        1)限位開關

        ①優點:無功耗。

        ②缺點:易損壞。

        2)霍爾傳感器

        ①優點:不易損壞。

        ②缺點:有功耗。

        六、實驗步驟

        1、編寫并添加霍爾傳感器驅動

        1)編寫驅動GUA_Hall_Sensor.c(存放在“……HARDWARE”)

        /

        //霍爾傳感器引腳

        #define GUA_HALL_SENSOR_PORT GPIOA

        #define GUA_HALL_SENSOR_PIN GPIO_Pin_11

        //消抖總次數

        #define GUA_HALL_SENSOR_DISAPPERAS_SHAKS_COUNT

        

        staTIc GUA_U32 sGUA_Hall_Sensor_DisapperasShakes_IdleCount=0; //消抖時的空閑狀態計數值

        staTIc GUA_U32 sGUA_Hall_Sensor_DisapperasShakes_TriggerCount=0; //消抖時的觸發狀態計數值

        

        staTIc void GUA_Hall_Sensor_IO_Init(void);

        /

        //類型宏

        #ifndef GUA_U8

        typedef unsigned char GUA_U8;

        #endif

        #ifndef GUA_8

        typedef signed char GUA_8;

        #endif

        #ifndef GUA_U16

        typedef unsigned short GUA_U16;

        #endif

        #ifndef GUA_16

        typedef signed short GUA_16;

        #endif

        #ifndef GUA_U32

        typedef unsigned long GUA_U32;

        #endif

        #ifndef GUA_32

        typedef signed long GUA_32;

        #endif

        #ifndef GUA_U64

        typedef unsigned long long GUA_U64;

        #endif

        #ifndef GUA_64

        typedef signed long long GUA_64;

        #endif

        //霍爾傳感器的觸發狀態

        #define GUA_HALL_SENSOR_STATUS_TRIGGER 0 //霍爾傳感器觸發

        #define GUA_HALL_SENSOR_STATUS_IDLE 1 //霍爾傳感器沒觸發

        #define GUA_HALL_SENSOR_STATUS_DISAPPERAS_SHAKS 2 //霍爾傳感器消抖中

        

        GUA_U8 GUA_Hall_Sensor_Check_Pin(void);

        void GUA_Hall_Sensor_Init(void);

        #endif

        3)工程中添加GUA_Hall_Sensor.c

        4)在MDK設置中添加串口驅動源文件路徑

        2、在應用層中調用

        1)添加驅動頭文件(main.c中)

        #include “GUA_Hall_Sensor.h”

        2)添加驅動初始化代碼(main.c的main函數中)

        //霍爾傳感器初始化

        GUA_Hall_Sensor_Init();

        3)添加測試代碼

        ①寫測試代碼(main.c中)

        static void GUA_Test(void)

        {

        U8 nGUA_Ret=0;

        U8 nGUA_Stop=0;

        while(1)

        {

        //檢測霍爾當前狀態

        nGUA_Ret=GUA_Hall_Sensor_Check_Pin();

        //檢測到霍爾被觸發

        if(nGUA_Ret==GUA_HALL_SENSOR_STATUS_TRIGGER)

        {

        nGUA_Stop=1;

        }

        }

        ②調用測試代碼(main.c的main函數中)

        //測試代碼

        GUA_Test();

        七、注意事項

        暫無。

        八、實驗結果

        仿真并設置斷點在測試代碼的“nGUA_Stop=1;”中,全速運行。

        用磁鐵去靠近模塊上的霍爾傳感器芯片,模塊上的led被點亮表示觸發,同時工程中消抖之后會停止在斷點處,表示檢測到PA11處的霍爾傳感器觸發導致的低電平。

      霍爾傳感器 stm32:霍爾轉速傳感器基本介紹

      這里我用通用定時器3的通道1來測量轉速
      霍爾轉速傳感器基本介紹霍爾傳感器分類和原理關于為什么選用開關型常開PNP型霍爾傳感器
       STM32程序實現程序介紹程序源碼TIM3_CAP.HTIM3_CAP.H解讀TIM3_CAP.CTIM3_CAP.C解讀TIM3中斷函數解讀MAIN.CMAIN.C解讀
        結果工程文件

      霍爾轉速傳感器基本介紹
      霍爾傳感器分類和原理
      我用的是開關型常開PNP型的霍爾傳感器

      開關型的有2種分類,一種是常開,另外一種就是常閉了
      關于什么常開常閉,請看下圖

      常開通俗來講,就是霍爾傳感器沒有檢測到磁鐵的時候開關就是斷開的,常閉相反

      霍爾傳感器具體分類

      圖片來自淘寶鏈接

      說明

      DC-直流AC交流NO-常開NC-常閉
      關于為什么選用開關型常開PNP型霍爾傳感器
      單片機只能接收高低電平,0或者是1,
      開關型常開的霍爾傳感器剛好符合單片機的這個特性
      檢測到磁鐵的時候就輸出高電平或者低電平,
      PNP型就是檢測到磁鐵的時候的輸出高電平,沒有檢測到的時候就是低電平
      實驗中,給霍爾傳感器5V供電,檢測到磁鐵,霍爾傳感器就輸入5V,沒有檢測到就是0V了
      實物圖

      STM32程序實現
      程序介紹
      單片機STM32F103ZE
      霍爾5V供電,傳感器數據輸出線接PA6
      定時器3 通道1 輸入捕獲模式

      程序源碼
      TIM3_CAP.H

      TIM3_CAP.H解讀
      定時器只能在捕獲到高電平的時候,把當前計數器的數值保存下次,由于我們需要計算2次高電平的時間,所有需要一個邏輯位TIM3_FLAG
      TIM3_CAP用于保存第2次定時器捕獲高電平時候的計數器的數值
      TIM3_RES是2次高電平總的計數器的數值
      TIM3_RES乘以計數器每計一個數的時間就是總的時間了

      TIM3_CAP.C

      TIM3_CAP.C解讀
      首先開啟定時器3和GPIOA的時鐘

      接著設置PA6為下拉輸入,為什么下拉輸入,因為我們需要捕獲高電平,如果你要捕獲低電平,設置PA6為上拉輸入,然后設置定時器下降沿捕獲

      設置定時器的自動重載值和預分頻值

      設置通道1為輸入不分頻,不濾波

      關于什么是分頻,什么是濾波

      濾波
      首先看STM32中文參考手冊中的介紹

      我的理解就是輸入捕獲采樣頻率也就是速度

      分頻
      貼上官方介紹

      就是每幾個高電平觸發一次捕獲
      如果你設置每2個事件觸發一次捕獲,那么檢測到2次高電平的時候才會把當前的計數器的數值保存到TIM3->CCR1寄存器中

      什么是TIM3->CCR1寄存器呢
      看官方的介紹就知道了

      也就是保存捕獲的時候計數器的數值

      計數器的值能捕獲入TIM3_CCR1寄存器和設置上升沿捕獲

      開啟定時器更新中斷和通道1捕獲中斷

      設置中斷分組和優先級

      開啟定時器3

      TIM3中斷函數解讀
      TIM3_FLAG是8位的,其中第7位用于標志第一次捕獲,如果檢測到第一次捕獲就置1,第8位用于標志第二次捕獲,檢測到了就置1,1~6用于在檢測到第一次捕獲的時候定時器更新的次數

      MAIN.C

      MAIN.C解讀
      主函數是檢測到2次高電平就通過串口打印出高電平的時間

      以下頭文件中是用了原子哥的頭文件

      結果
      LED1每0.2s切換亮滅狀態一次,故每0.4s亮一次,結果和下圖一樣

      用飛線把PA6(通道1)和PE5(LED1)連接起來

      工程文件

      工程文件 鏈接

      下一篇: PLC、DCS、FCS三大控

      上一篇: 電氣控制線路圖控制原

      推薦產品

      更多
      主站蜘蛛池模板: 欧美激情综合亚洲一二区| 亚洲色偷偷狠狠综合网| 青青草原综合久久大伊人| 日韩亚洲综合精品国产| 伊人伊成久久人综合网777| 亚洲国产精品综合久久网络| 久久91精品综合国产首页| 亚洲国产综合人成综合网站00| 久久综合久久美利坚合众国| 色综合视频一区中文字幕| 国产综合一区二区在线观看| 国产成人综合美国十次| 色婷婷狠狠久久综合五月| heyzo专区无码综合| 亚洲狠狠成人综合网| 伊人久久大香线蕉综合电影网| 亚洲综合在线观看视频| 日韩亚洲国产综合久久久| 91色综合综合热五月激情| 国产综合在线观看| 狠狠色丁香婷婷综合尤物| 狠狠色综合久久婷婷色天使| 久久婷婷香蕉热狠狠综合| 伊人网综合在线视频| 国产亚洲精品第一综合| 色综合久久久久无码专区 | 亚洲精品欧美综合四区| 狠狠久久综合伊人不卡| 天天综合日日噜噜噜| 亚洲国产日韩综合久久精品| 亚洲伊人色一综合网| 五月天婷婷综合网| 色爱无码AV综合区| 亚洲综合精品香蕉久久网97| 久久99国产综合精品女同| 91精品婷婷国产综合久久| 亚洲国产成人久久综合一区| 亚州欧州一本综合天堂网| 久久综合狠狠综合久久| 婷婷五月综合丁香在线| 亚洲熟女综合色一区二区三区|