其他分享
首页 > 其他分享> > STM32f1系列压力传感器MPX4250压力检测

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

作者:互联网

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