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。
整體電路連接圖如下
電路連接圖
其他功能以後一一講解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章