STM32应用霍尔转速传感器基于输入捕获 |
您所在的位置:网站首页 › 霍尔传感器输出 › 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了 实物图 单片机STM32F103ZE 霍尔5V供电,传感器数据输出线接PA6 定时器3 通道1 输入捕获模式 程序源码 TIM3_CAP.H #ifndef __TIM3_CAP_H #define __TIM3_CAP_H #include "sys.h" extern u32 TIM3_RES;//保存2次高电平之间的时间 extern u16 TIM3_CAP;//保存第二次捕获高电平时候的计数器的数值 extern u8 TIM3_FLAG;//逻辑标志 void tim3_cap_init(u16 arr,u16 psc); #endif TIM3_CAP.H解读定时器只能在捕获到高电平的时候,把当前计数器的数值保存下次,由于我们需要计算2次高电平的时间,所有需要一个逻辑位TIM3_FLAG TIM3_CAP用于保存第2次定时器捕获高电平时候的计数器的数值 TIM3_RES是2次高电平总的计数器的数值 TIM3_RES乘以计数器每计一个数的时间就是总的时间了 TIM3_CAP.C #include "TIM3_CAP.h" //定时器3 通道1 输入捕获模式 u32 TIM3_RES;//保存2次高电平之间的时间 u16 TIM3_CAP;//保存第二次捕获高电平时候的计数器的数值 u8 TIM3_FLAG;//逻辑标志 void tim3_cap_init(u16 arr,u16 psc) { RCC->APB1ENR|=1ODR|=0PSC=psc;//设置预分频值 //*********通道1设置 TIM3->CCMR1|=1 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |