一、溫濕度采集傳感器(HDC1080)
1.簡要概述
HDC1080是一種內建溫度傳感器的數字濕度傳感器,具有出色的測量精度和超低的功耗。其具有14位測量分辨率,相對濕度精度為±2%,溫度精度為±0.2°C,工作時平均電流在0.7-1.3uA級。
傳感器供電電壓為2.7V至5.5V,具有較高的電壓相容性,通過單片機讀取資料一般不再需要額外設定電平轉換控制晶片。
圖為傳感器功能框圖和典型應用
圖為HDC1080傳感器管腳圖:
HDC1080的管腳較為簡單,為3*3mm小型器件封裝,總共有6個管腳:
SDA,SCL為IIC通信管腳,與單片機IIC接口相連,一般要求接上拉電阻,相容5V和3.3V;
VDD,GND為電源和地管腳,VCC可接5V或3.3V電源;
NC為閑置管腳,一般懸浮或接地。
2.程式設計應用
HDC1080作為從裝置通過IIC總線與主機通信,上電後至多15ms傳感器便可進入工作狀态。
讀取傳感器的資料需要通路HDC1080上的特定寄存器(寄存器位址為7位二進制數),将所需的寄存器位址值寫入指針寄存器,寄存器位元組首先發送MSB,然後是LSB。
如圖為寫指令時序圖:
1.主機發出起始信号,發送7位從裝置位址和寫寄存器指令,從機接收後發出應答信号
2.主機發送8位寄存器位址,從機接收并發出應答信号
3.主機發送高八位資料,從機接收并發出應答信号
4.主機發送低八位資料,從機接收并發出應答信号,主機發出停止信号。
如圖為讀指令時序圖:
1.主機發出起始信号,發送7位從裝置位址和寫寄存器指令,從機接收後發出應答信号
2.主機發送需要讀取的寄存器位址,從機接收後傳回應答信号
3.主機發出起始信号,發送7位從裝置位址和讀寄存器指令,從機接收發出應答信号
4.從機發送,主機接收高八位資料并發出應答信号
5.從機發送,主機接收低八位資料并發出應答信号,主機發出停止傳輸信号
如圖為HDC1080寄存器位址及各寄存器作用表格,由此我們可以定義;
# define HDC1080_TEMPERATURE 0x00
# define HDC1080_HUMIDITY 0x01
# define HDC1080_CONFIGURATION 0x02
# define HDC1080_MANUFACTURER_ID 0xFE
# define HDC1080_DEVICE_ID 0xFF
# define HDC1080_SERIAL_ID_FIRST 0xFB
# define HDC1080_SERIAL_ID_MID 0xFC
# define HDC1080_SERIAL_ID_LAST 0xFD
根據寫寄存器時序可寫:
void HDC1080_WriteReg(u8 Addr,u16 Data)
{
unsigned char data[2];
data[0] = (uint8_t)((Data& 0xFF00) >> 8); //高八位
data[1] = (uint8_t)(Data & 0x00FF); //低八位
IIC_Start();
IIC_Send_Byte(0x80); //·位址為10000000
IIC_Wait_Ack(); //等待從機應答信号
IIC_Send_Byte(Addr); //寫寄存器位址
IIC_Wait_Ack();
IIC_Send_Byte(data[0]); //發送高八位
IIC_Wait_Ack();
IIC_Send_Byte(data[1]); //發送低八位
IIC_Wait_Ack();
IIC_Stop(); //停止信号
}
根據讀寄存器時序可寫:
u16 HDC1080_ReadReg(u8 Addr)
{
unsigned char data[2];;
IIC_Start();
IIC_Send_Byte(0x80); //·位址為10000000
IIC_Wait_Ack();
IIC_Send_Byte(Addr);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0x81); //·位址為10000001
IIC_Wait_Ack();
data[1]=IIC_Read_Byte(1);
data[0]=IIC_Read_Byte(1);
IIC_NAck();
IIC_Stop();
return data;
}
溫度和濕度寄存器為二進制格式的16位結果寄存器(2個LSB D1和D0始終為0)。采集結果始終為14位值。結果的準确性與選擇的轉換時間有關,計算公式如下:
其他更詳盡的資料請自行參考資料手冊。
參考資料:
1.HDC1080資料手冊
2.部落格:AnthonyYMH的HDC1080溫濕度驅動 IIC I2C STM32,連結:https://blog.csdn.net/weixin_38075894/article/details/100625752?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163161913016780265415420%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163161913016780265415420&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-100625752.pc_search_es_clickV2&utm_term=hdc1080%E9%A9%B1%E5%8A%A8&spm=1018.2226.3001.4187