cubemx stm32 a3144模块 霍尔效应传感器 风扇转速驱动代码

本文介绍了一种使用a3144开关型霍尔效应传感器进行风扇转速测量的方法。通过STM32单片机及其开发环境实现,具体包括硬件安装、软件编程流程,并给出了相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a3144

在这里插入图片描述

资料

a3144是一种开关型霍尔效应传感器,由下图所知,他有3个引脚,(从丝印正对来看)从左到右是VCC、GND和输出的型号引脚。

在这里插入图片描述

需要注意的是:这里的的VCC的范围在4.5到24V之间,输出的饱和电压虽然在400mv以下,但是经过我的实验,发现是可以被stm32单片机引脚的输入模式检测到的
在这里插入图片描述

使用方法(这里测速使用)

拿丝印方向正对 磁极的S极,会输出一个高电平

请添加图片描述

cubemx配置

开个定时器,配置1ms进中断

在这里插入图片描述
在这里插入图片描述

开个GPIO口为输入模式

在这里插入图片描述

风扇硬件安装以及代码

硬件部分

安装

在旋转轴两边各贴一个磁铁,对外的磁极为S极

在这里插入图片描述

硬件使用

a3144模块的丝印方向正对风扇

在这里插入图片描述

代码部分

a3144.c

#include "a3144.h"
#include "tim.h"

#define A3144_Port	GPIOB
#define A3144_PIN	GPIO_PIN_13


uint16_t cntFanSpeed = 0;	// 风扇速度
uint16_t cntFanCnt = 0;		// 风扇计数


// 转速计数
void CountFanSpeed(void)
{
	static uint8_t Flip = 0;
	
	if(Flip != HAL_GPIO_ReadPin(A3144_Port, A3144_PIN))	// 判断是否翻转
	{
		Flip = HAL_GPIO_ReadPin(A3144_Port, A3144_PIN);
		cntFanCnt++;
	}
}

// 获取转速
unsigned short int Get_FanSpeed(void)
{
	static uint16_t beforeSpeed = 0, cntClear = 0;
	
	cntClear++;
	if(cntClear == 5) // 判断长时间为零,就是停转了
	{
		cntClear = 0;
		beforeSpeed = 0;
	}
	
	if(cntFanSpeed != 0) // 若是当前转速有计,则获取最新速度
	{
		cntClear = 0;
		
		beforeSpeed = cntFanSpeed;
		cntFanSpeed = 0;
	}
	
	return beforeSpeed;
}

void a3144_Init(void)
{
	HAL_TIM_Base_Start_IT(&htim3);
}

/*定时器中断*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	static uint16_t cnt1s = 0;
	if(htim == &htim3)
	{
		CountFanSpeed();	// 判断翻转计算
		
		cnt1s++;
		if(cnt1s >= 1000)	// 到达1s
		{
			cnt1s = 0;
			cntFanSpeed = cntFanCnt/4;
			cntFanCnt = 0;
		}
	}
}

a3144.h

#ifndef __A3144_H_
#define __A3144_H_


/* a3144初始化 */
void a3144_Init(void);
/* 读引脚电平 */
unsigned short int Get_FanSpeed(void);


#endif /* __A3144_H_ */

main.c

头文件
include "a3144.h"
include "U_Print.h"	// 用户串口打印函数
初始化
a3144_Init();

循环中
U_Printf("Fan speed : %d\r\n", Get_FanSpeed());

效果展示

在这里插入图片描述

资料

芯片数据手册

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入一下?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值