HX711压力传感器学习二(MSP432P401R版)

文章介绍了如何使用STM32微控制器初始化和读取HX711称重传感器的数据,包括设置GPIO引脚、时钟脉冲操作以及从传感器获取重量信息的过程。通过读取并处理传感器的信号,计算出实际重量,并进行了误差校正。
摘要由CSDN通过智能技术生成

代码

HX711GPIO初始化

void Init_HX711pin(void)//初始化
{
	GPIO_setAsOutputPin(GPIO_PORT_P3,GPIO_PIN5);//sck
	GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P3, GPIO_PIN7);//dout
}

称重传感器的信号放大和转换

uint32_t HX711_Read(void)	//增益128
{
	unsigned long count; 
	unsigned char i; 
	GPIO_setOutputHighOnPin(GPIO_PORT_P3, GPIO_PIN7);//HX711_DOUT=1;
	delay_us(1);
	GPIO_setOutputLowOnPin(GPIO_PORT_P3,GPIO_PIN5);//HX711_SCK=0; 
  	count=0; 
  	while(GPIO_getInputPinValue(GPIO_PORT_P3, GPIO_PIN7)); 
  	for(i=0;i<24;i++)
	{ 
			GPIO_setOutputHighOnPin(GPIO_PORT_P3,GPIO_PIN5);//HX711_SCK=1;
	  	count=count<<1; 
		delay_us(1);
		GPIO_setOutputLowOnPin(GPIO_PORT_P3,GPIO_PIN5);//HX711_SCK=0; 
	  	if(GPIO_getInputPinValue(GPIO_PORT_P3, GPIO_PIN7))//HX711_DOUT=1
			count++; 
		delay_us(1);
	} 
 	GPIO_setOutputHighOnPin(GPIO_PORT_P3, GPIO_PIN5);//HX711_SCK=1;
    count=count^0x800000;//第25个脉冲下降沿来时,转换数据
	delay_us(1);
	GPIO_setOutputLowOnPin(GPIO_PORT_P3,GPIO_PIN5);//HX711_SCK=0;
	return(count);
}

 讲解

  1. 首先,将HX711_DOUT引脚置为高电平,表示准备开始读取数据。
  2. 延时1微秒。
  3. 将HX711_SCK引脚置为低电平,表示准备发送时钟脉冲。
  4. 初始化计数器count为0。
  5. 使用while循环等待HX711_DOUT引脚变为低电平,表示数据准备好了。
  6. 进行24次循环,每次读取一位数据。
  7. 在每次循环开始时,将HX711_SCK引脚置为高电平,发送一个时钟脉冲。
  8. 将count左移一位,为新的数据位留出位置。
  9. 延时1微秒。
  10. 将HX711_SCK引脚置为低电平,结束时钟脉冲。
  11. 检查HX711_DOUT引脚的值,如果为高电平,则将count加1,表示该位是1。
  12. 延时1微秒。
  13. 循环结束后,将HX711_SCK引脚置为高电平,发送一个时钟脉冲。
  14. 将count与0x800000异或运算,相当于对第25个脉冲下降沿时的数据进行转换。
  15. 延时1微秒。
  16. 将HX711_SCK引脚置为低电平,结束时钟脉冲。
  17. 返回读取到的数据count。

获取毛皮重量

void Get_Maopi(void)
{
	Weight_Maopi = HX711_Read();	
} 
uint32_t Get_Weight(void)
{
	HX711_Buffer = HX711_Read();
	if(HX711_Buffer > Weight_Maopi)			
	{
		Weight_Shiwu = HX711_Buffer;
		Weight_Shiwu = Weight_Shiwu - Weight_Maopi;				//获取实物的AD采样数值。
	
		Weight_Shiwu = (int32_t)((double)Weight_Shiwu / GapValue);	//计算实物的实际重量
																		//因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的GapValue这个除数。
																		//当发现测试出来的重量偏大时,增加该数值。
																		//如果测试出来的重量偏小时,减小改数值。
		Weight_Shiwu=KLM(Weight_Shiwu);
	}
	return(Weight_Shiwu);
}

如果对HX711称重模块不是很了解的可以参考:HX711压力传感器学习一(STM32)_hx711引脚及其功能_三马分享家的博客-CSDN博客

读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传 读取hx711模数转换模块采集的压力数据通过mqtt协议上传
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值