国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

東阿網(wǎng)站建設(shè)百度seo流量

東阿網(wǎng)站建設(shè),百度seo流量,鄭州交友網(wǎng)站建設(shè),做配送平臺網(wǎng)站多少錢目錄 一、概述 二、單次數(shù)據(jù)采集模式的測量 1、配置說明 2、代碼實現(xiàn)方式 三、周期性數(shù)據(jù)采集模式的測量 1、配置說明 2、代碼實現(xiàn)方式 四、完整代碼下載鏈接 一、概述 SHT3X是Sensirion公司推出的一款高精度、完全校準的溫濕度傳感器,基于CMOSens技術(shù)。它提…

目錄

一、概述

二、單次數(shù)據(jù)采集模式的測量

1、配置說明

2、代碼實現(xiàn)方式

三、周期性數(shù)據(jù)采集模式的測量

1、配置說明

2、代碼實現(xiàn)方式

四、完整代碼下載鏈接


一、概述

????????SHT3X是Sensirion公司推出的一款高精度、完全校準的溫濕度傳感器,基于CMOSens技術(shù)。它提供了線性化、溫度補償?shù)臄?shù)字輸出,具有寬電源電壓范圍、高速I2C接口以及可選的地址設(shè)置等特點。

  1. 高精度:SHT3X提供了高精度的溫濕度測量,濕度誤差在±3%(SHT30)或±2%(SHT31)以內(nèi),溫度誤差在±0.3℃(SHT30)或±0.2℃(SHT31)以內(nèi)。
  2. 寬電源電壓范圍:SHT3X的供電電壓范圍寬達2.4V至5.5V,確保了與各種組裝情況的兼容性。
  3. 高速I2C接口:SHT3X配備了高速I2C接口,通信速度可達1MHz,并支持兩個用戶可選地址,方便多個傳感器在同一總線上工作。
  4. 快速啟動和測量時間:SHT3X具有非??斓膯雍蜏y量時間,能夠快速響應(yīng)環(huán)境變化。

????????SHT3X的引腳包括供電引腳(VDD/VSS)、復位引腳(nRESET)、地址引腳(ADDR)、以及I2C通信引腳(SCL/SDA)。其中,ADDR引腳用于設(shè)置傳感器的地址,SCL和SDA引腳分別用于I2C通信的時鐘和數(shù)據(jù)線。

????????通過ADDR引腳的適當接線,可以選擇I2C地址(見下表)。ADDR引腳可以連接到邏輯高電平或邏輯低電平。通過切換ADDR引腳上的電平,可以在運行期間動態(tài)改變傳感器的地址。

SHT3x-DIScomes采用8引腳DFN封裝,請參見下表所示。?

????????SHT3X內(nèi)部包含濕度傳感器和溫度傳感器,通過ADC模塊將模擬信號轉(zhuǎn)換為數(shù)字信號。校準模塊結(jié)合ADC模塊輸出的數(shù)值進行處理和線性化,然后通過I2C接口與外部通信。在傳輸過程中,每個數(shù)據(jù)值后面都會跟著CRC校驗和,以確保數(shù)據(jù)的準確性。

二、單次數(shù)據(jù)采集模式的測量

1、配置說明

????????在這種模式下,一個發(fā)出的測量命令觸發(fā)一個數(shù)據(jù)對的采集。每個數(shù)據(jù)對包括一個16位溫度值和一個16位濕度值(按此順序)。在傳輸過程中,每個數(shù)據(jù)值后面總是跟著一個CRC校驗和(參見下圖所示)。在單次模式下,可以選擇不同的測量命令。16位命令(參見下圖所示)。它們在可重復性(低、中、高)和時鐘延伸(使能或禁用)方面有所不同。重復性設(shè)置會影響測量持續(xù)時間,從而影響傳感器的總能耗。

2、代碼實現(xiàn)方式

在main主函數(shù)中調(diào)用初始化后,通過調(diào)用下面的函數(shù)實現(xiàn)兩種方式的單次測量。

	// 演示帶時鐘拉伸的單次測量error = SHT3X_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_CLKSTRETCH, 50);if(error != NO_ERROR){} // 在這里處理錯誤 HAL_Delay(50);// 演示帶輪詢的單次測量,超時50毫秒error = SHT3X_GetTempAndHumi(&temperature, &humidity, REPEATAB_HIGH, MODE_POLLING, 50);if(error != NO_ERROR){} // 在這里處理錯誤 HAL_Delay(50);
//----------------------------------------------------------------------------
// 獲取溫度和濕度
etError SHT3X_GetTempAndHumi(float* temperature, float* humidity,etRepeatability repeatability, etMode mode,uint8_t timeout)
{etError error; // 錯誤代碼switch(mode){    case MODE_CLKSTRETCH: // 以時鐘拉伸模式獲取溫度和濕度error = SHT3X_GetTempAndHumiClkStretch(temperature, humidity,repeatability, timeout);break;case MODE_POLLING:    // 以輪詢模式獲取溫度和濕度error = SHT3X_GetTempAndHumiPolling(temperature, humidity,repeatability, timeout);break;default:              error = PARM_ERROR; // 參數(shù)錯誤break;}return error; // 返回錯誤代碼
}//----------------------------------------------------------------------------
// 使用時鐘拉伸獲取溫度和濕度
etError SHT3X_GetTempAndHumiClkStretch(float* temperature, float* humidity,etRepeatability repeatability,uint8_t timeout)
{etError 		error;        // 錯誤代碼uint16_t    rawValueTemp; // 從傳感器獲取的溫度原始值uint16_t    rawValueHumi; // 從傳感器獲取的濕度原始值// 以時鐘拉伸模式開始測量// 根據(jù)所需的可靠性使用相應(yīng)的命令switch(repeatability){case REPEATAB_LOW:error = SHT3X_WriteCommand(CMD_MEAS_CLOCKSTR_L);break;case REPEATAB_MEDIUM:error = SHT3X_WriteCommand(CMD_MEAS_CLOCKSTR_M);break;case REPEATAB_HIGH:error = SHT3X_WriteCommand(CMD_MEAS_CLOCKSTR_H);break;default:error = PARM_ERROR; // 參數(shù)錯誤break;}// 如果沒有錯誤,開始讀取訪問if(error == NO_ERROR) error = SHT3X_StartReadAccess();// 如果沒有錯誤,讀取溫度原始值,讀取濕度原始值uint32_t		rawValueTemp_rawValueHumi;if(error == NO_ERROR) error = SHT3X_Read4BytesAndCrc(&rawValueTemp_rawValueHumi, timeout);rawValueTemp = rawValueTemp_rawValueHumi>>16;rawValueHumi = rawValueTemp_rawValueHumi&0xffff;// 如果沒有錯誤,計算溫度(℃)和濕度(%RH)if(error == NO_ERROR){*temperature = SHT3X_CalcTemperature(rawValueTemp);*humidity = SHT3X_CalcHumidity(rawValueHumi);}return error; // 返回錯誤代碼
}//----------------------------------------------------------------------------
// 使用輪詢獲取溫度和濕度
etError SHT3X_GetTempAndHumiPolling(float* temperature, float* humidity,etRepeatability repeatability,uint8_t timeout)
{etError 		error;           // 錯誤代碼uint16_t    rawValueTemp;    // 從傳感器獲取的溫度原始值uint16_t    rawValueHumi;    // 從傳感器獲取的濕度原始值// 以輪詢模式開始測量// 根據(jù)所需的可靠性使用相應(yīng)的命令switch(repeatability){case REPEATAB_LOW:error = SHT3X_WriteCommand(CMD_MEAS_POLLING_L);break;case REPEATAB_MEDIUM:error = SHT3X_WriteCommand(CMD_MEAS_POLLING_M);break;case REPEATAB_HIGH:error = SHT3X_WriteCommand(CMD_MEAS_POLLING_H);break;default:error = PARM_ERROR; // 參數(shù)錯誤break;}// 如果沒有錯誤,等待直到測量完成if(error == NO_ERROR){// 每1毫秒輪詢一次,直到測量完成或超時while(timeout--){// 檢查測量是否完成error = SHT3X_StartReadAccess();// 如果測量已完成 -> 退出循環(huán)if(error == NO_ERROR) break;HAL_Delay(1);}// 檢查超時錯誤if(timeout == 0) error = TIMEOUT_ERROR; // 發(fā)生超時錯誤}// 如果沒有錯誤,讀取溫度和濕度原始值if(error == NO_ERROR){uint32_t		rawValueTemp_rawValueHumi;if(error == NO_ERROR) error = SHT3X_Read4BytesAndCrc(&rawValueTemp_rawValueHumi, 0);rawValueTemp = rawValueTemp_rawValueHumi>>16;rawValueHumi = rawValueTemp_rawValueHumi&0xffff;}// 如果沒有錯誤,計算溫度(℃)和濕度(%RH)if(error == NO_ERROR){*temperature = SHT3X_CalcTemperature(rawValueTemp);*humidity = SHT3X_CalcHumidity(rawValueHumi);}return error; // 返回錯誤代碼
}

三、周期性數(shù)據(jù)采集模式的測量

1、配置說明

????????在這種模式下,一個發(fā)出的測量命令產(chǎn)生一個數(shù)據(jù)對流。每個數(shù)據(jù)對包括一個16位溫度值和一個16位濕度值(按此順序)。在周期模式下,可以選擇不同的測量命令。相應(yīng)的16位命令(參見下圖所示)。它們在可重復性(低、中和高)和數(shù)據(jù)采集頻率(每秒0.5、1、2、4、10次測量)方面有所不同。在此模式下不能選擇時鐘拉伸。數(shù)據(jù)采集頻率和重復性設(shè)置會影響傳感器的測量持續(xù)時間和電流消耗。

????????測量數(shù)據(jù)的傳輸可以通過相應(yīng)的16位命令(參見下圖所示),啟動讀取數(shù)據(jù)。如果沒有測量數(shù)據(jù),I2C讀取頭會響應(yīng)一個NACK時,通信停止。


2、代碼實現(xiàn)方式

?在main主函數(shù)中調(diào)用初始化后,通過調(diào)用下面的函數(shù)實現(xiàn)兩種方式的連續(xù)測量。

error = SHT3X_StartPeriodicMeasurment(REPEATAB_HIGH, FREQUENCY_1HZ);			// 讀取測量緩沖區(qū)
error = SHT3X_ReadMeasurementBuffer(&temperature, &humidity);if(error == NO_ERROR)
{// 點亮藍色LED以提示新溫度和濕度值//LedBlueOn();//DelayMicroSeconds(10000); // 延時10毫秒//LedBlueOff(); // 關(guān)閉藍色LED
}
else if (error == ACK_ERROR)
{// 如果緩沖區(qū)沒有新值,則忽略此錯誤//error = NO_ERROR;
}
//----------------------------------------------------------------------------
// 啟動周期性測量
etError SHT3X_StartPeriodicMeasurment(etRepeatability repeatability,etFrequency frequency)
{etError error;        // 錯誤代碼// 根據(jù)所需的可靠性和頻率使用相應(yīng)的命令switch(repeatability){case REPEATAB_LOW: // 低可靠性switch(frequency){case FREQUENCY_HZ5:  // 低可靠性, 0.5 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_05_L);break;          case FREQUENCY_1HZ:  // 低可靠性, 1.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_1_L);break;          case FREQUENCY_2HZ:  // 低可靠性, 2.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_2_L);break;          case FREQUENCY_4HZ:  // 低可靠性, 4.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_4_L);break;          case FREQUENCY_10HZ: // 低可靠性, 10.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_10_L);break;          default:error = PARM_ERROR; // 參數(shù)錯誤break;}break;case REPEATAB_MEDIUM: // 中等可靠性switch(frequency){case FREQUENCY_HZ5:  // 中等可靠性, 0.5 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_05_M);break;case FREQUENCY_1HZ:  // 中等可靠性, 1.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_1_M);break;        case FREQUENCY_2HZ:  // 中等可靠性, 2.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_2_M);break;        case FREQUENCY_4HZ:  // 中等可靠性, 4.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_4_M);break;      case FREQUENCY_10HZ: // 中等可靠性, 10.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_10_M);break;default:error = PARM_ERROR; // 參數(shù)錯誤break;}break;case REPEATAB_HIGH: // 高可靠性switch(frequency){case FREQUENCY_HZ5:  // 高可靠性, 0.5 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_05_H);break;case FREQUENCY_1HZ:  // 高可靠性, 1.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_1_H);break;case FREQUENCY_2HZ:  // 高可靠性, 2.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_2_H);break;case FREQUENCY_4HZ:  // 高可靠性, 4.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_4_H);break;case FREQUENCY_10HZ: // 高可靠性, 10.0 Hzerror = SHT3X_WriteCommand(CMD_MEAS_PERI_10_H);break;default:error = PARM_ERROR; // 參數(shù)錯誤break;}break;default:error = PARM_ERROR; // 參數(shù)錯誤break;}return error; // 返回錯誤代碼
}//----------------------------------------------------------------------------
// 讀取測量緩沖區(qū)
etError SHT3X_ReadMeasurementBuffer(float* temperature, float* humidity)
{etError  		error;        // 錯誤代碼uint16_t		rawValueTemp; // 從傳感器獲取的溫度原始值uint16_t		rawValueHumi; // 從傳感器獲取的濕度原始值// 讀取測量值error = SHT3X_WriteCommand(CMD_FETCH_DATA);if(error == NO_ERROR) error = SHT3X_StartReadAccess();  uint32_t		rawValueTemp_rawValueHumi;if(error == NO_ERROR) error = SHT3X_Read4BytesAndCrc(&rawValueTemp_rawValueHumi, 100);rawValueTemp = rawValueTemp_rawValueHumi>>16;rawValueHumi = rawValueTemp_rawValueHumi&0xffff;// 如果沒有錯誤,計算溫度(℃)和濕度(%RH)if(error == NO_ERROR){*temperature = SHT3X_CalcTemperature(rawValueTemp);*humidity = SHT3X_CalcHumidity(rawValueHumi);}return error; // 返回錯誤代碼
}

四、完整代碼下載鏈接

完整代碼下載鏈接:https://download.csdn.net/download/qq_26043945/89982127

數(shù)據(jù)手冊:https://sensirion.com/media/documents/213E6A3B/63A5A569/Datasheet_SHT3x_DIS.pdf

http://m.aloenet.com.cn/news/41973.html

相關(guān)文章:

  • 我想注冊公司怎么注冊網(wǎng)站排名優(yōu)化服務(wù)
  • wordpress拷站發(fā)布外鏈的平臺有哪些
  • 網(wǎng)站被入侵后需做的檢測(1)唯尚廣告聯(lián)盟
  • 重慶云陽網(wǎng)站建設(shè)公司推薦沈陽網(wǎng)站seo公司
  • 建設(shè)廳官方網(wǎng)站企業(yè)庫網(wǎng)絡(luò)賺錢推廣
  • 江蘇建設(shè)網(wǎng)站bt磁力兔子引擎
  • 青建集團股份有限公司sem推廣優(yōu)化
  • 搭建什么網(wǎng)站好玩唐山百度seo公司
  • wordpress和laravel鄭州seo關(guān)鍵詞
  • 做良心網(wǎng)站seo的優(yōu)化步驟
  • 企業(yè)網(wǎng)站管理seo1視頻發(fā)布會
  • 怎么樣做國際網(wǎng)站生意seo知識培訓
  • 鄭州旅游網(wǎng)站設(shè)計小學生一分鐘新聞播報
  • 企業(yè)管理培訓課程課件南寧seo外包服務(wù)
  • 網(wǎng)站開發(fā)到發(fā)布佛山優(yōu)化推廣
  • 微信做模板下載網(wǎng)站有哪些企業(yè)網(wǎng)站制作流程
  • 效果圖網(wǎng)站模板南寧網(wǎng)站seo外包
  • 集美網(wǎng)站開發(fā)重慶企業(yè)免費建站
  • 網(wǎng)站建設(shè)公司做銷售好不好哪個公司的網(wǎng)站制作
  • 洛陽網(wǎng)站建設(shè)好做不怎么安裝百度
  • 安徽省做網(wǎng)站武漢百度推廣代運營
  • 如何給自己的公司網(wǎng)站做優(yōu)化百度關(guān)鍵詞怎么做排名
  • 做百度移動網(wǎng)站優(yōu)網(wǎng)站日常維護有哪些
  • 怎么區(qū)分模板網(wǎng)站和定制網(wǎng)站網(wǎng)絡(luò)推廣都有什么方式
  • 什么網(wǎng)站做招聘效果好銷售找客戶的app
  • 泰州企業(yè)建站系統(tǒng)下列哪些店鋪適合交換友情鏈接
  • 洛陽市河陽建設(shè)工程有限公司網(wǎng)站站長之家查詢網(wǎng)
  • 上海網(wǎng)絡(luò)推廣公司外包合肥seo排名扣費
  • 廣州網(wǎng)站建設(shè)建設(shè)南寧seo網(wǎng)絡(luò)推廣
  • 讓做網(wǎng)站策劃沒經(jīng)驗怎么辦成都私人網(wǎng)站建設(shè)