• 方案介紹
    • 一 前言
    • 二 測試效果
    • 三 計(jì)算思路
    • 四 工程代碼
    • 五、參考
  • 附件下載
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

STM32外設(shè)集-使用XH710測量氣壓(測重量同理)驅(qū)動代碼

2024/06/13
2644
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

聯(lián)系方式.docx

共1個(gè)文件

一 前言

今天使用XH710檢測氣壓值,記錄一下測量過程分享大家,計(jì)算思路和測量重量一樣,調(diào)整我們的系數(shù),測量時(shí)需要注意的的點(diǎn),兩個(gè)設(shè)備盡量保持在同一個(gè)水平面進(jìn)行測量,這樣得到的波動值才更精確,最后系數(shù)值算出來的數(shù)據(jù)才更接近我們的真實(shí)值。


二 測試效果

?需要儀器有,一個(gè)針管,一個(gè)氣壓檢測儀,一個(gè)氣壓檢測模塊和MCU,我們通過一個(gè)三閾去連接我們的設(shè)備即可實(shí)現(xiàn)測量基數(shù)

壓力檢測實(shí)驗(yàn)


三 計(jì)算思路

首先我們需要一個(gè)測量氣壓的設(shè)備,通過檢測氣壓的設(shè)備來調(diào)節(jié)系數(shù)比,在將我們的數(shù)據(jù)通過excl進(jìn)行一個(gè)計(jì)算,得出我們需要的系數(shù)值,采集的系數(shù)最后計(jì)算的時(shí)候最好去掉一個(gè)最高值和一個(gè)最低值,防止設(shè)備出錯(cuò)


四 工程代碼

XH711.h

#ifndef __HX711_H
#define __HX711_H

#include "sys.h"
#include "tool.h"

#define HX711_SCK PBout(0) // PB0
#define HX711_DOUT PBin(1) // PB1

extern void Init_HX711pin(void);
extern u32 HX711_Read(void);
extern void Get_Maopi(void);
extern void Get_Weight(void);

extern u32 HX711_Buffer;
extern u32 Weight_Maopi;
extern F32 Weight_Shiwu;
extern u8 Flag_Error;

#endif

XH711.c

我們只需要將excl上計(jì)算的時(shí)間帶入Gap_Value ,就可以得到我們想要的數(shù)據(jù)了

/************************************************************************************

*************************************************************************************/
#include "HX711.h"
#include "delay.h"

u32 HX711_Buffer;
u32 Weight_Maopi;
F32 Weight_Shiwu;
u8 Flag_Error = 0;

// 校準(zhǔn)參數(shù)
// 因?yàn)椴煌?a class="article-link" target="_blank" href="/tag/%E4%BC%A0%E6%84%9F%E5%99%A8/">傳感器特性曲線不是很一致,因此,每一個(gè)傳感器需要矯正這里這個(gè)參數(shù)才能使測量值很準(zhǔn)確。
// 當(dāng)發(fā)現(xiàn)測試出來的重量偏大時(shí),增加該數(shù)值。
// 如果測試出來的重量偏小時(shí),減小改數(shù)值。
// 該值可以為小數(shù)

#define Value 100000
#define Gap_Value 156997.8217

void Init_HX711pin(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能PF端口時(shí)鐘

	// HX711_SCK
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;		  // 端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  // 推挽輸出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // IO口速度為50MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure);			  // 根據(jù)設(shè)定參數(shù)初始化GPIOB

	// HX711_DOUT
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 輸入上拉
	GPIO_Init(GPIOB, &GPIO_InitStructure);

	GPIO_SetBits(GPIOB, GPIO_Pin_0); // 初始化設(shè)置為0
}

//****************************************************
// 讀取HX711
//****************************************************
u32 HX711_Read(void) // 增益128
{
	unsigned long count;
	unsigned char i;
	HX711_DOUT = 1;
	delay_us(1);
	HX711_SCK = 0;
	count = 0;
	while (HX711_DOUT)
		;
	for (i = 0; i < 24; i++)
	{
		HX711_SCK = 1;
		count = count << 1;
		delay_us(1);
		HX711_SCK = 0;
		if (HX711_DOUT)
			count++;
		delay_us(1);
	}
	HX711_SCK = 1;
	count = count ^ 0x800000; // 第25個(gè)脈沖下降沿來時(shí),轉(zhuǎn)換數(shù)據(jù)
	delay_us(1);
	HX711_SCK = 0;
	return (count);
}

//****************************************************
// 獲取毛皮重量
//****************************************************
void Get_Maopi(void)
{
	Weight_Maopi = HX711_Read();
}

//****************************************************
// 稱重
//****************************************************
void Get_Weight(void)
{
	HX711_Buffer = HX711_Read();
	if (HX711_Buffer > Weight_Maopi)
	{
		Weight_Shiwu = HX711_Buffer;
		Weight_Shiwu = Weight_Shiwu - Weight_Maopi; // 獲取實(shí)物的AD采樣數(shù)值。
		Weight_Shiwu = Weight_Shiwu / Gap_Value;

		// 計(jì)算實(shí)物的實(shí)際重量
		// 因?yàn)椴煌膫鞲衅魈匦郧€不一樣,因此,每一個(gè)傳感器需要矯正這里的GapValue這個(gè)除數(shù)。
		// 當(dāng)發(fā)現(xiàn)測試出來的重量偏大時(shí),增加該數(shù)值。
		// 如果測試出來的重量偏小時(shí),減小改數(shù)值。
	}
}

main函數(shù)

首先初始化我們的傳感器設(shè)備,再將我們寫的功能函數(shù)放上去即可

int main()
{
    delay_init();                                   // 延時(shí)函數(shù)初始化
    USART1_Config(115200, 2, 3); // 日志打印串口
    Init_HX711pin();
    Get_Maopi(); // 歸零
    delay_ms(1000);
    delay_ms(1000);
    Get_Maopi(); // 歸零
    while (1) {
  
        Get_Weight();
        printf_log("壓強(qiáng) = %.2f kParn", Weight_Shiwu);
    
        delay_ms(1000);
    }
}

五、參考

HX711壓力傳感器學(xué)習(xí)一(STM32)icon-default.png?t=N7T8https://blog.csdn.net/Miraitowain/article/details/130454687?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170202577716800226594021%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170202577716800226594021&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-1-130454687-null-null.nonecase&utm_term=hx711&spm=1018.2226.3001.4450


完整代碼請關(guān)注公眾號進(jìn)行獲取和咨詢


聯(lián)系方式 微信號:13648103287

  • 聯(lián)系方式.docx
    下載

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
CP2102-GMR 1 Silicon Laboratories Inc USB Bus Controller, CMOS, 5 X 5 MM, LEAD FREE, QFN-28

ECAD模型

下載ECAD模型
$5.73 查看
ATMEGA64A-AU 1 Atmel Corporation RISC Microcontroller, 8-Bit, FLASH, AVR RISC CPU, 16MHz, CMOS, PQFP64, 14 X 14 MM, 1 MM HEIGHT, 0.80 MM PITCH, GREEN, PLASTIC, MS-026AEB, TQFP-64

ECAD模型

下載ECAD模型
$4.99 查看
ATXMEGA128D4-MH 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PQCC44, 7 X 7 MM, 1 MM HEIGHT, 0.50 MM PITCH, GREEN, PLASTIC, MO-220VKKD-3, VQFN-44
$5.3 查看
意法半導(dǎo)體

意法半導(dǎo)體

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車用集成電路領(lǐng)域居世界前列.

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車用集成電路領(lǐng)域居世界前列.收起

查看更多

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!

方案定制,程序設(shè)計(jì)方案、單片機(jī)程序設(shè)計(jì)與講解、APP定制開發(fā)。本公眾號致力于向讀者傳遞關(guān)于程序設(shè)計(jì)和開發(fā)的相關(guān)知識,并分享一些關(guān)于軟件開發(fā)的最佳實(shí)踐。如果您有什么問題或建議,請隨時(shí)聯(lián)系我們。我們將竭誠為您服務(wù)