ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

STM32f1系列压力传感器MPX4250压力检测

2020-04-15 15:02:47  阅读:806  来源: 互联网

标签:10 TIM OLED pressure1 ShowChar 电压 压力 MPX4250 STM32f1


STM32f1是具有arm cortex-M3内核的芯片,具有两个10位(或16位)adc检测功能,这为很多模拟输出的传感器的信号传输提供了便利。
MPX4250是一种线性度极强的一种压力传感器,它的线性范围为20-250kpa,测量范围也比较广泛,适用于大多数场合的压力检测。

废话不多说,先看mpx4250的接线图:mpx4250的接线图
可以看到mpx4250的外接电路还是很方便的,再附上一张仿真接线图:
仿真接线图
这样实物接线应该没有问题了。
可以看到这里可以从1端口输出电压值 。这个电压是可以被32的AD检测的。但是,这个电压又是咋来的?或者直接点,电压与压力对应关系如何??
查看手册我们可以看到这样一幅图:输出电压与压力对应关系
公式
可以看到,这里有三条线,在(20-250)范围内成线性关系。可是为啥是三条,看图中公式可知它是在标准输出±了一个误差值,这里可以看到在0-85C的范围内的Vs=5.1V,那么其他呢,其他值,Error为多少?
温度误差系数
Error值
由上图可知,测量压力时与温度是分不开的(这个下一个讲18b20测温)。
有了这些数据,可以算出压力对应的输出电压,也可以看出,该模块的误差是出厂就带有的,无法消除。而电压值换算出压力值,根据公式反推就好。下面上代码:

	if ( TIM_GetITStatus( ADVANCE_TIM, TIM_IT_Update) != RESET ) 
	{	
		time++;
		num0++;

		

		if(num0 == 2)  ad0 = ADC_ConvertedValue[0];	
		if(num0 >= 3) num0 = 0;
		pressure = (double)((double)ad0/4096/5*5.1-0.04)/0.00369;

		pressure1 = (uint32_t)(pressure*1000);
		TIM_ClearITPendingBit(ADVANCE_TIM , TIM_FLAG_Update);  		 
	}
此为电压值的获取与换算ad值除以4096*5为电压值,乘以5.1(系数)后减去0.04,再除以0.00369就是压力值。
显示程序如下	
		OLED_ShowChar(0,0,'0'+pressure1/100000%10,10);
		OLED_ShowChar(16,0,'0'+pressure1/10000%10,10);
		OLED_ShowChar(32,0,'0'+pressure1/1000%10,10);
		OLED_ShowChar(64,0,'0'+pressure1/100%10,10);

这里单位为PA。
整体电路连接图如下
电路连接图
其他功能以后一一讲解。

标签:10,TIM,OLED,pressure1,ShowChar,电压,压力,MPX4250,STM32f1
来源: https://blog.csdn.net/qq_42704442/article/details/105522143

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有