概述
涂鴉智能 (NYSE:TUYA) 是一家致力于讓生活更智能的領先技術公司,涂鴉提供能夠智連萬物的云平臺,打造互聯互通的開發標準,連接品牌、OEM 廠商、開發者、零售商和各行業的智能化需求,涂鴉的解決方案賦能并提升合作伙伴和客戶的產品價值,同時通過技術應用使消費者的生活更加便利,涂鴉智能的智慧商業 SaaS 為豐富的垂直行業提供智能解決方案。涂鴉智能領先業界的技術,符合嚴格的數據保護標準和安全性。 壓力傳感器是工業實踐中最為常用的一種傳感器,其廣泛應用于各種工業自控環境,涉及水利水電、鐵路交通、智能建筑、生產自控、航空航天、軍工、石化、油井、電力、船舶、機床、管道等眾多行業。 同時壓力傳感器可以應用于電子稱重系統或者久坐系統,實現了稱重顯示、超限報警、校準、適應各種工作環境、遠程實時監控等多種功能,可以廣泛應用于各種稱重場景。 本章主要是配置開發板對壓力傳感器HX711進行數據讀取以及通過串口打印數據。
資料下載
https://download.csdn.net/download/qq_24312945/84796130
涂鴉智能
想更多了解涂鴉智能化開發方案,獲取相關技術資料或開發物料,可點擊下方報名參加,同時有30元優惠券。。 https://t.tuya.com/AY1D3R9jGr
硬件準備
首先需要準備一個開發板,這里我準備的是NUCLEO-F103RB的開發板:
對于該主控的原理圖,可以在官方種進行下載,下載地址如下: https://www.st.com/zh/evaluation-tools/nucleo-f103rb.html#cad-resources
選擇芯片型號
使用STM32CUBEMX選擇芯片stm32f103rb,如下所示:
配置時鐘源
HSE與LSE分別為外部高速時鐘和低速時鐘,在本文中使用內置的時鐘源,故都選擇Disable選項,如下所示:
配置時鐘樹
STM32F1的最高主頻到72M,但是使用內部時鐘最快只能達到64M,所以配置64即可:
串口配置
本次實驗使用的串口1進行串口通信,波特率配置為115200。
開啟中斷。
生成工程設置
代碼生成設置
最后設置生成獨立的初始化文件:
生成代碼
串口接線配置
由于只用做發送數據,故不需要接開發板的rx。 |開發板 | 串口模塊 | |--|--| |PA9(TX) | RX | |GND | GND |
配置keil
打印代碼
在main.c中,添加頭文件,若不添加會出現 identifier “FILE” is undefined報錯。
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
變量定義:
/* USER CODE BEGIN PV */
#define BUFFERSIZE 255 //可以接收的最大字符個數
uint8_t ReceiveBuff[BUFFERSIZE]; //接收緩沖區
uint8_t recv_end_flag = 0,Rx_len;//接收完成中斷標志,接收到字符長度
/* USER CODE END PV */
函數聲明和串口重定向:
/* USER CODE BEGIN PFP */
#ifdef __GNUC__ //串口重定向
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
/* USER CODE END PFP */
打印數據進行測試。
/* USER CODE BEGIN 2 */
printf("壓力傳感器HX711\\r\\n");
/* USER CODE END 2 */
打印演示效果
壓力傳感器HX711接線說明
橋式傳感器于HX711原理如下所示。 模塊接線方式如下所示。 壓力傳感器與HX711模塊接線。
壓力傳感器 | 串口模塊 |
---|---|
紅線 | E+ |
黑線 | E- |
白線 | A- |
綠線 | A+ |
開發板HX711模塊接線。 |開發板 |串口模塊| |--|--| |VCC| VCC| |DT |PC10| |SCK |PC11| |GND |GND|
STM32CUBEMX配置數據管腳
配置PC10為DT數據腳,配置PC11為SCK時鐘腳。
壓力傳感器HX711通訊
串口通訊線由管腳 PD_SCK 和 DOUT 組成,用來輸出數據,選擇輸入通道和增益。 當數據輸出管腳 DOUT 為高電平時,表明A/D 轉換器還未準備好輸出數據,此時串口時鐘輸入信號 PD_SCK 應為低電平。當 DOUT 從高電平變低電平后,PD_SCK 應輸入 25 至 27 個不等的時鐘脈沖。其中第一個時鐘脈沖的上升沿 將讀出輸出 24 位數據的最高位(MSB),直至第 24 個時鐘脈沖完成,24 位輸出數據從最高位至最低位逐位輸出完成。第 25至 27 個時鐘脈沖用來選擇下一次 A/D 轉換的輸入通道和增益。 PD_SCK 的輸入時鐘脈沖數不應少于 25 或多于 27,否則會造成串口通訊錯誤。 當 A/D 轉換器的輸入通道或增益改變時,A/D 轉換器需要 4 個數據輸出周期才能穩定。 DOUT 在 4 個數據輸出周期后才會從高電平變低電平,輸出有效數據。
壓力傳感器HX711驅動程序
通過參考的驅動程序,修改成自己的代碼。
主程序代碼
/* USER CODE BEGIN 2 */
printf("壓力傳感器HX711\\r\\n");
weight_qupi=ReadCount();//首次讀取重量進行去皮操作
printf("首次去皮weight_qupi=%d\\n",weight_qupi);
HAL_Delay(100);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
weight_shiji=ReadCount();
if(weight_qupi>=weight_shiji)
{
weight_shiji=weight_qupi-weight_shiji;
weight_shiji=weight_shiji/100;
printf("重量為:%dg",weight_shiji);
}
else
{
weight_shiji=weight_shiji-weight_qupi;
weight_shiji=weight_shiji/100;
printf("重量為:-%dg",weight_shiji);
}
HAL_Delay(1000);
}
/* USER CODE END 3 */
實際演示
實際測試重量為1115g。 模塊測試如下所示1157g。
審核編輯:湯梓紅
-
壓力傳感器
+關注
關注
35文章
2156瀏覽量
163315 -
涂鴉智能
+關注
關注
7文章
198瀏覽量
19447
發布評論請先 登錄
相關推薦
評論