超碰激情 I 成人福利网站 I 淫国产 I 曰批视频免费30分钟成人 I 刘亦菲裸体视频一区二区三区 I 午夜久 I 尤物综合 I 亚洲一区av在线观看 I 欧美亚洲国产精品久久高清 I 欧美老熟妇乱子伦视频 I 无码中出人妻中文字幕av I 久久美女福利视频 I 精品无人区乱码1区2区3区在线 I 性饥渴的农村熟妇 I 色综合综合色 I 少妇人妻88久久中文字幕 I 久久夜色精品国产噜噜av I 老熟妇仑乱视频一区二区 I 男女做爰猛烈叫床视频动态图 I 日本大片一区二区 I 人成午夜免费视频在线观看 I 激情婷婷av I 男女下面一进一出免费视频网站 I 久久影视一区 I 午夜污网站 I 先锋人妻无码av电影 I 久久久久久久岛国免费网站 I 又粗又大又黄又硬又爽免费看 I 人妻无码免费一区二区三区 I www.色成人100 I 欧美高清网站 I 精品国产第一页 I 国产suv一区二区三区88区 I 橹图极品美女无圣光 I 午夜宅男欧美

產(chǎn)品分類(lèi)

當(dāng)前位置: 首頁(yè) > 傳感測(cè)量產(chǎn)品 > 工業(yè)傳感器 > 霍爾傳感器

類(lèi)型分類(lèi):
科普知識(shí)
數(shù)據(jù)分類(lèi):
霍爾傳感器

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

發(fā)布日期:2022-10-09 點(diǎn)擊率:1266


<a title=霍爾傳感器 stm32:stm32—霍爾傳感器的初步使用 第1張" title="霍爾傳感器 stm32:stm32—霍爾傳感器的初步使用 第1張-傳感器知識(shí)網(wǎng)"/>

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

目錄
一、簡(jiǎn)介二、連接三、代碼

一、簡(jiǎn)介

霍爾器件是一種磁傳感器。用它們可以檢測(cè)磁場(chǎng)及其變化,可在各種與磁場(chǎng)有關(guān)的場(chǎng)合中使用。在模塊測(cè)試的時(shí)候也很簡(jiǎn)單,用手在附近其他引腳波動(dòng)也會(huì)造成磁場(chǎng)變化,可以檢測(cè)得出,此外通過(guò)它,將許多非電、非磁的物理量例如力、力矩、壓力、應(yīng)力、位置、位移、速度、加速度、角度、角速度、轉(zhuǎn)數(shù)、轉(zhuǎn)速以及工作狀態(tài)發(fā)生變化的時(shí)間等,也可以通過(guò)本傳感器轉(zhuǎn)變成電量來(lái)進(jìn)行檢測(cè)和控制。

按照霍爾器件的功能可將它們分為:霍爾線(xiàn)性器件和霍爾開(kāi)關(guān)器件。前者輸出模擬量,后者輸出數(shù)字量。本模塊是霍爾開(kāi)關(guān)傳感器

二、連接

將VCC和GND連接在開(kāi)發(fā)板對(duì)應(yīng)的引腳上(此處選擇普中STM32F103開(kāi)發(fā)板),
D0接在PD7上;因?yàn)楸緜鞲衅魇呛突魻栭_(kāi)關(guān)器件,所以雖然有D0口但是沒(méi)有什么用處,只是擺設(shè)。

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

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

#include “frame.h”

//對(duì)霍爾傳感器進(jìn)行初始化

最后,在main.c函數(shù)里面進(jìn)行情況選擇

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

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

1、霍爾傳感器是什么?

答:霍爾傳感器是根據(jù)霍爾效應(yīng)制作的一種磁場(chǎng)傳感器。

用磁鐵去靠近霍爾傳感器時(shí),霍爾傳感器的引腳電平會(huì)產(chǎn)生變化。

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

答:霍爾傳感器可測(cè)速、計(jì)數(shù)、限位上。

舉例限位功能:兩個(gè)霍爾傳感器形成45°的夾角,電機(jī)邊緣粘著一個(gè)磁鐵,一旦電機(jī)轉(zhuǎn)動(dòng)導(dǎo)致磁鐵觸發(fā)任意其中一個(gè)霍爾傳感器,則STM32檢測(cè)到觸發(fā)后立刻停止電機(jī),不能再繼續(xù)往此方向轉(zhuǎn)動(dòng)。以此達(dá)到限制電機(jī)轉(zhuǎn)動(dòng)角度的作用。

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

答:

香瓜買(mǎi)的霍爾傳感器模塊一共有四個(gè)引腳,GND、VCC、D0、A0。

其中只需要用到三根線(xiàn),GND、VCC、D0。(A0不知做啥用的,計(jì)數(shù)?)

使用方法:

1)5V供電。

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

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

4、霍爾傳感器與限位開(kāi)關(guān)有什么區(qū)別?

答:

1)限位開(kāi)關(guān)

①優(yōu)點(diǎn):無(wú)功耗。

②缺點(diǎn):易損壞。

2)霍爾傳感器

①優(yōu)點(diǎn):不易損壞。

②缺點(diǎn):有功耗。

六、實(shí)驗(yàn)步驟

1、編寫(xiě)并添加霍爾傳感器驅(qū)動(dòng)

1)編寫(xiě)驅(qū)動(dòng)GUA_Hall_Sensor.c(存放在“……HARDWARE”)

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

  實(shí)驗(yàn)前提

  1、在進(jìn)行本文步驟前,請(qǐng)先閱讀以下博文:

  暫無(wú)

  2、在進(jìn)行本文步驟前,請(qǐng)先實(shí)現(xiàn)以下博文:

  暫無(wú)

  五、基礎(chǔ)知識(shí)

  1、霍爾傳感器是什么?

  答:霍爾傳感器是根據(jù)霍爾效應(yīng)制作的一種磁場(chǎng)傳感器。

  用磁鐵去靠近霍爾傳感器時(shí),霍爾傳感器的引腳電平會(huì)產(chǎn)生變化。

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

  答:霍爾傳感器可測(cè)速、計(jì)數(shù)、限位上。

  舉例限位功能:兩個(gè)霍爾傳感器形成45°的夾角,電機(jī)邊緣粘著一個(gè)磁鐵,一旦電機(jī)轉(zhuǎn)動(dòng)導(dǎo)致磁鐵觸發(fā)任意其中一個(gè)霍爾傳感器,則STM32檢測(cè)到觸發(fā)后立刻停止電機(jī),不能再繼續(xù)往此方向轉(zhuǎn)動(dòng)。以此達(dá)到限制電機(jī)轉(zhuǎn)動(dòng)角度的作用。

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

  答:

  香瓜買(mǎi)的霍爾傳感器模塊一共有四個(gè)引腳,GND、VCC、D0、A0。

  其中只需要用到三根線(xiàn),GND、VCC、D0。(A0不知做啥用的,計(jì)數(shù)?)

  使用方法:

  1)5V供電。

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

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

  4、霍爾傳感器與限位開(kāi)關(guān)有什么區(qū)別?

  答:

  1)限位開(kāi)關(guān)

  ①優(yōu)點(diǎn):無(wú)功耗。

  ②缺點(diǎn):易損壞。

  2)霍爾傳感器

  ①優(yōu)點(diǎn):不易損壞。

  ②缺點(diǎn):有功耗。

  六、實(shí)驗(yàn)步驟

  1、編寫(xiě)并添加霍爾傳感器驅(qū)動(dòng)

  1)編寫(xiě)驅(qū)動(dòng)GUA_Hall_Sensor.c(存放在“……HARDWARE”)

  /

  //霍爾傳感器引腳

  #define GUA_HALL_SENSOR_PORT GPIOA

  #define GUA_HALL_SENSOR_PIN GPIO_Pin_11

  //消抖總次數(shù)

  #define GUA_HALL_SENSOR_DISAPPERAS_SHAKS_COUNT

  

  staTIc GUA_U32 sGUA_Hall_Sensor_DisapperasShakes_IdleCount=0; //消抖時(shí)的空閑狀態(tài)計(jì)數(shù)值

  staTIc GUA_U32 sGUA_Hall_Sensor_DisapperasShakes_TriggerCount=0; //消抖時(shí)的觸發(fā)狀態(tài)計(jì)數(shù)值

  

  staTIc void GUA_Hall_Sensor_IO_Init(void);

  /

  //類(lèi)型宏

  #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

  //霍爾傳感器的觸發(fā)狀態(tài)

  #define GUA_HALL_SENSOR_STATUS_TRIGGER 0 //霍爾傳感器觸發(fā)

  #define GUA_HALL_SENSOR_STATUS_IDLE 1 //霍爾傳感器沒(méi)觸發(fā)

  #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設(shè)置中添加串口驅(qū)動(dòng)源文件路徑

  2、在應(yīng)用層中調(diào)用

  1)添加驅(qū)動(dòng)頭文件(main.c中)

  #include “GUA_Hall_Sensor.h”

  2)添加驅(qū)動(dòng)初始化代碼(main.c的main函數(shù)中)

  //霍爾傳感器初始化

  GUA_Hall_Sensor_Init();

  3)添加測(cè)試代碼

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

  static void GUA_Test(void)

  {

  U8 nGUA_Ret=0;

  U8 nGUA_Stop=0;

  while(1)

  {

  //檢測(cè)霍爾當(dāng)前狀態(tài)

  nGUA_Ret=GUA_Hall_Sensor_Check_Pin();

  //檢測(cè)到霍爾被觸發(fā)

  if(nGUA_Ret==GUA_HALL_SENSOR_STATUS_TRIGGER)

  {

  nGUA_Stop=1;

  }

  }

  ②調(diào)用測(cè)試代碼(main.c的main函數(shù)中)

  //測(cè)試代碼

  GUA_Test();

  七、注意事項(xiàng)

  暫無(wú)。

  八、實(shí)驗(yàn)結(jié)果

  仿真并設(shè)置斷點(diǎn)在測(cè)試代碼的“nGUA_Stop=1;”中,全速運(yùn)行。

  用磁鐵去靠近模塊上的霍爾傳感器芯片,模塊上的led被點(diǎn)亮表示觸發(fā),同時(shí)工程中消抖之后會(huì)停止在斷點(diǎn)處,表示檢測(cè)到PA11處的霍爾傳感器觸發(fā)導(dǎo)致的低電平。

霍爾傳感器 stm32:霍爾轉(zhuǎn)速傳感器基本介紹

這里我用通用定時(shí)器3的通道1來(lái)測(cè)量轉(zhuǎn)速
霍爾轉(zhuǎn)速傳感器基本介紹霍爾傳感器分類(lèi)和原理關(guān)于為什么選用開(kāi)關(guān)型常開(kāi)PNP型霍爾傳感器
 STM32程序?qū)崿F(xiàn)程序介紹程序源碼TIM3_CAP.HTIM3_CAP.H解讀TIM3_CAP.CTIM3_CAP.C解讀TIM3中斷函數(shù)解讀MAIN.CMAIN.C解讀
  結(jié)果工程文件

霍爾轉(zhuǎn)速傳感器基本介紹
霍爾傳感器分類(lèi)和原理
我用的是開(kāi)關(guān)型常開(kāi)PNP型的霍爾傳感器

開(kāi)關(guān)型的有2種分類(lèi),一種是常開(kāi),另外一種就是常閉了
關(guān)于什么常開(kāi)常閉,請(qǐng)看下圖

常開(kāi)通俗來(lái)講,就是霍爾傳感器沒(méi)有檢測(cè)到磁鐵的時(shí)候開(kāi)關(guān)就是斷開(kāi)的,常閉相反

霍爾傳感器具體分類(lèi)

圖片來(lái)自淘寶鏈接

說(shuō)明

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

STM32程序?qū)崿F(xiàn)
程序介紹
單片機(jī)STM32F103ZE
霍爾5V供電,傳感器數(shù)據(jù)輸出線(xiàn)接PA6
定時(shí)器3 通道1 輸入捕獲模式

程序源碼
TIM3_CAP.H

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

TIM3_CAP.C

TIM3_CAP.C解讀
首先開(kāi)啟定時(shí)器3和GPIOA的時(shí)鐘

接著設(shè)置PA6為下拉輸入,為什么下拉輸入,因?yàn)槲覀冃枰东@高電平,如果你要捕獲低電平,設(shè)置PA6為上拉輸入,然后設(shè)置定時(shí)器下降沿捕獲

設(shè)置定時(shí)器的自動(dòng)重載值和預(yù)分頻值

設(shè)置通道1為輸入不分頻,不濾波

關(guān)于什么是分頻,什么是濾波

濾波
首先看STM32中文參考手冊(cè)中的介紹

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

分頻
貼上官方介紹

就是每幾個(gè)高電平觸發(fā)一次捕獲
如果你設(shè)置每2個(gè)事件觸發(fā)一次捕獲,那么檢測(cè)到2次高電平的時(shí)候才會(huì)把當(dāng)前的計(jì)數(shù)器的數(shù)值保存到TIM3->CCR1寄存器中

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

也就是保存捕獲的時(shí)候計(jì)數(shù)器的數(shù)值

計(jì)數(shù)器的值能捕獲入TIM3_CCR1寄存器和設(shè)置上升沿捕獲

開(kāi)啟定時(shí)器更新中斷和通道1捕獲中斷

設(shè)置中斷分組和優(yōu)先級(jí)

開(kāi)啟定時(shí)器3

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

MAIN.C

MAIN.C解讀
主函數(shù)是檢測(cè)到2次高電平就通過(guò)串口打印出高電平的時(shí)間

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

結(jié)果
LED1每0.2s切換亮滅狀態(tài)一次,故每0.4s亮一次,結(jié)果和下圖一樣

用飛線(xiàn)把PA6(通道1)和PE5(LED1)連接起來(lái)

工程文件

工程文件 鏈接

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

上一篇: 電氣控制線(xiàn)路圖控制原

推薦產(chǎn)品

更多