0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CW32模塊使用案例 AHT10溫濕度傳感器

CW32生態(tài)社區(qū) ? 2024-11-28 17:28 ? 次閱讀

AHT10,新一代溫濕度傳感器在尺寸與智能方面建立了新的標(biāo)準(zhǔn):它嵌入了適于回流焊的雙列扁平無引腳SMD 封裝,底面 4 x 5mm ,高度1.6mm。傳感器輸出經(jīng)過標(biāo)定的數(shù)字信號(hào),標(biāo)準(zhǔn) I 2 C 格式。AHT10 配有一個(gè)全新設(shè)計(jì)的 ASIC專用芯片、一個(gè)經(jīng)過改進(jìn)的MEMS半導(dǎo)體電容式濕度傳感元件和一個(gè)標(biāo)準(zhǔn)的片上溫度傳感元件,其性能已經(jīng)大大提升甚至超出了前一代傳感器的可靠性水平,新一代溫濕度傳感器,經(jīng)過改進(jìn)使其在惡劣環(huán)境下的性能更穩(wěn)定。每一個(gè)傳感器都經(jīng)過校準(zhǔn)和測試,在產(chǎn)品表面印有產(chǎn)品批號(hào)。由于對傳感器做了改良和微型化改進(jìn),因此它的性價(jià)比更高,并且最終所有設(shè)備都將得益于尖端的節(jié)能運(yùn)行模式。 應(yīng)用范圍主要在暖通空調(diào) 、除濕器、測試及檢測設(shè)備、消費(fèi)品、汽車 、自動(dòng)控制、數(shù)據(jù)記錄器、氣象站、家電、濕度調(diào)節(jié)、醫(yī)療及其他相關(guān)溫濕度檢測控制。

一、模塊來源

模塊實(shí)物展示:

wKgZPGdIN6-AUqN9AAAd9Oq1yAo062.jpg


資料下載鏈接:
https://pan.baidu.com/s/1xTX_QCmEmy8DWgxgtgXXFw
提取碼:pp3k

二、 規(guī)格參數(shù)

工作電壓:1.8~3.6V

工作電流:0.25~23uA

濕度誤差:±2%RH

溫度誤差:±0.3℃

輸出方式: IIC

管腳數(shù)量:3 Pin

以上信息見廠家資料文件

三、移植過程

我們的目標(biāo)是將例程移植至CW32F030C8T6開發(fā)板上【能夠測量環(huán)境溫濕度】。首先要獲取資料,查看數(shù)據(jù)手冊應(yīng)如何實(shí)現(xiàn)讀取數(shù)據(jù),再移植至我們的工程。

3.1查看資料

器件地址為 0x38 ,但是最后一位是讀寫位,需要空出一位給讀寫位,因此需要左移一位,即 0x38<<1 得到 0X70

wKgZO2dIN6-Afe27AAAL-oyq1Co819.jpg

采集步驟:(寫=0,讀=1)

起始信號(hào)->器件地址左移1位+寫 -> 等待傳感器應(yīng)答 -> 發(fā)送觸發(fā)測量命令(0XAC)-> 等待傳感器應(yīng)答 -> 發(fā)送數(shù)據(jù)位0X33 -> 等待傳感器應(yīng)答 -> 發(fā)送數(shù)據(jù)位0x00 -> 等待傳感器應(yīng)答 -> 停止信號(hào)(可不加)-> 起始信號(hào) ->器件地址左移1位+讀 -> 等待傳感器應(yīng)答 -> 讀取8位數(shù)據(jù)(狀態(tài)字)-> 主機(jī)發(fā)送應(yīng)答 -> 讀取濕度高位數(shù)據(jù) -> 主機(jī)發(fā)送應(yīng)答 -> 讀取濕度低位數(shù)據(jù) -> 主機(jī)發(fā)送應(yīng)答-> 讀取濕度最后4位數(shù)據(jù)和溫度最高的4位數(shù)據(jù) -> -> 主機(jī)發(fā)送應(yīng)答 -> 讀取溫度8數(shù)據(jù) -> 主機(jī)發(fā)送應(yīng)答-> 讀取溫度8位數(shù)據(jù) -> 主機(jī)發(fā)送應(yīng)答 -> 停止信號(hào)。

wKgZPGdIN6-ANMQCAACDPH4cxIw894.jpg

8位狀態(tài)字,各個(gè)位表示的意義。

wKgZPGdIN7CADc1zAABUrFlWYJE324.jpg

示例:

狀態(tài)位 = 0x1C

        0X1C = 0001 1100
        bit7  = 設(shè)備空閑
        bit6~5= NOR mode
        bit4  = 保留
        BIT3  = 1已校準(zhǔn)
        bit0~2= 保留

濕度換算公式:其中SRH等于讀取到的20位濕度數(shù)據(jù)整合后的數(shù)據(jù)。

RH(%)=(SRH/2的20次方)* 100

溫度換算公式:其中ST等于讀取到的20位溫度數(shù)據(jù)整合后的數(shù)據(jù)。

3.2引腳選擇

wKgZO2dIN7CAZQZrAAFEoE4Rdvw575.jpg

模塊接線圖

3.3查移植至工程

移植步驟中的導(dǎo)入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_aht10.c與bsp_aht10.h。這里不再過多講述,移植完成后面修改相關(guān)代碼。

在文件bsp_aht10.c中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-04-01     LCKFB-LP    first version
 */

#include "bsp_aht10.h"
#include "stdio.h"
#include "board.h"

float Temperature = 0;
float Humidity = 0;


/******************************************************************
 * 函 數(shù) 名 稱:IIC_Start
 * 函 數(shù) 說 明:IIC起始時(shí)序
 * 函 數(shù) 形 參:無
 * 函 數(shù) 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void IIC_Start(void)
{
        SDA_OUT();

        SDA(1);
        SCL(1);
        delay_us(4);

        SDA(0);
        delay_us(4);
        SCL(0);

}
/******************************************************************
 * 函 數(shù) 名 稱:IIC_Stop
 * 函 數(shù) 說 明:IIC停止信號(hào)
 * 函 數(shù) 形 參:無
 * 函 數(shù) 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void IIC_Stop(void)
{
        SDA_OUT();

        SCL(0);
        SDA(0);
        delay_us(4);

        SCL(1);
        SDA(1);
        delay_us(4);

}




/******************************************************************
 * 函 數(shù) 名 稱:IIC_Send_Ack
 * 函 數(shù) 說 明:主機(jī)發(fā)送應(yīng)答或者非應(yīng)答信號(hào)
 * 函 數(shù) 形 參:0發(fā)送應(yīng)答  1發(fā)送非應(yīng)答
 * 函 數(shù) 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void IIC_Send_Ack(unsigned char ack)
{
        SDA_OUT();
        SCL(0);
        SDA(0);
        delay_us(2);
        if(!ack) SDA(0);
        else     SDA(1);
        SCL(1);
        delay_us(2);
        SCL(0);
        SDA(1);
}


/******************************************************************
 * 函 數(shù) 名 稱:I2C_WaitAck
 * 函 數(shù) 說 明:等待從機(jī)應(yīng)答
 * 函 數(shù) 形 參:無
 * 函 數(shù) 返 回:0有應(yīng)答  1超時(shí)無應(yīng)答
 * 作       者:LC
 * 備       注:無
******************************************************************/
unsigned char I2C_WaitAck(void)
{
    char ack = 0;
    unsigned char ack_flag = 10;

    SDA(1);
    delay_us(1);
    SCL(1);
    delay_us(1);

    SDA_IN();
    delay_us(2);

    while( (SDA_GET()==1) && ( ack_flag ) )
    {
            ack_flag--;
            delay_us(3);
    }

    if( ack_flag <= 0 )
    {
            IIC_Stop();
            return 1;
    }
    else
    {
            SCL(0);
            SDA_OUT();
    }
    SDA(0);
    return ack;
}

/******************************************************************
 * 函 數(shù) 名 稱:Send_Byte
 * 函 數(shù) 說 明:寫入一個(gè)字節(jié)
 * 函 數(shù) 形 參:dat要寫人的數(shù)據(jù)
 * 函 數(shù) 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void Send_Byte(uint8_t dat)
{
        int i = 0;
        SDA_OUT();
        SCL(0);//拉低時(shí)鐘開始數(shù)據(jù)傳輸

        for( i = 0; i < 8; i++ )
        {
                SDA( (dat & 0x80) >> 7 );
                delay_us(1);
                SCL(1);
                delay_us(2);
                SCL(0);
                delay_us(2);
                dat>4));
        Humidity = dat / 1048576.0 * 100.0;

        dat = 0;
        dat = ((buff[3] &0x0F) 

在文件bsp_aht10.h中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-20     LCKFB-LP    first version
 */

#ifndef _BSP_AHT10_H_
#define _BSP_AHT10_H_

#include "board.h"


//端口移植

#define RCC_AHT10_ENABLE()  __RCC_GPIOB_CLK_ENABLE()
#define PORT_AHT10          CW_GPIOB

#define GPIO_SDA            GPIO_PIN_9
#define GPIO_SCL            GPIO_PIN_8


//設(shè)置SDA輸出模式
#define SDA_OUT()   {        
                        GPIO_InitTypeDef GPIO_InitStruct;                
                        GPIO_InitStruct.Pins = GPIO_SDA;                 
                        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;      
                        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;         
                        GPIO_Init(PORT_AHT10, &GPIO_InitStruct);       
                     }
//設(shè)置SDA輸入模式
#define SDA_IN()    {        
                        GPIO_InitTypeDef GPIO_InitStruct;                
                        GPIO_InitStruct.Pins = GPIO_SDA;                 
                        GPIO_InitStruct.Mode = GPIO_MODE_INPUT;         
                        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;         
                        GPIO_Init(PORT_AHT10, &GPIO_InitStruct);       
                    }
//獲取SDA引腳的電平變化
#define SDA_GET()       GPIO_ReadPin(PORT_AHT10, GPIO_SDA)
//SDA與SCL輸出
#define SDA(x)          GPIO_WritePin(PORT_AHT10, GPIO_SDA, (x?GPIO_Pin_SET:GPIO_Pin_RESET) )
#define SCL(x)          GPIO_WritePin(PORT_AHT10, GPIO_SCL, (x?GPIO_Pin_SET:GPIO_Pin_RESET) )


void AHT10_GPIO_Init(void);
unsigned char AHT10_Read(void);
float Get_Temperature(void);
float Get_Humidity(void);

#endif

四、移植驗(yàn)證

在自己工程中的main主函數(shù)中,編寫如下。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-20     LCKFB-LP    first version
 */
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "bsp_aht10.h"

int32_t main(void)
{
    board_init();        // 開發(fā)板初始化

    uart1_init(115200);        // 串口1波特率115200

    AHT10_GPIO_Init();//AHT10引腳初始化
    printf("Startrn");
    while(1)
    {
        //采集溫濕度
        AHT10_Read();

        //串口打印溫度數(shù)據(jù)
        printf("溫度 = %.2frn", Get_Temperature() );
        //串口打印濕度數(shù)據(jù)
        printf("濕度 = %.2frn", Get_Humidity() );

        printf("n");
        delay_ms(1000);

    }
}

上電現(xiàn)象:每隔大約一秒測量一次溫濕度。

wKgZPGdIN7GAXhvFAADw7nZyMRU410.jpg

模塊移植成功案例代碼:

鏈接:https://pan.baidu.com/s/13dMHBLOyabVYgR11D20U2Q?pwd=LCKF

提取碼:LCKF

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2551

    文章

    51097

    瀏覽量

    753528
  • 溫濕度傳感器
    +關(guān)注

    關(guān)注

    5

    文章

    579

    瀏覽量

    35721
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    203

    瀏覽量

    640
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AHT20溫濕度傳感器的數(shù)據(jù)采集

    基于I2C硬件協(xié)議的AHT20溫濕度傳感器的數(shù)據(jù)采集一、軟件I2C二、硬件I2C三、基于I2C硬件協(xié)議的AHT20溫濕度
    發(fā)表于 08-23 06:57

    aht10溫濕度傳感器的特點(diǎn)有哪些呢

    aht10溫濕度傳感器特點(diǎn)及使用介紹前言一、ds18b20數(shù)字溫度傳感器外觀二、原理圖三、相關(guān)參數(shù)講解1.引腳2.溫度測量范圍3.通訊方式(單總線)4.優(yōu)點(diǎn)4.特點(diǎn)四、內(nèi)部結(jié)構(gòu)圖總結(jié)前
    發(fā)表于 01-25 07:53

    W601之AHT10溫濕度傳感器簡介

    14、W601之AHT10溫濕度傳感器一、AHT10簡介AHT10 是一款高精度,完全校準(zhǔn),貼片封裝的
    發(fā)表于 02-11 07:45

    AHT20溫濕度傳感器簡介

    目錄一、AHT20溫濕度傳感器簡介二、AHT20 封裝設(shè)計(jì)三、AHT20 元件設(shè)計(jì)四、原理圖設(shè)計(jì)五、總結(jié)博客內(nèi)容:學(xué)習(xí)
    發(fā)表于 02-14 07:29

    怎樣去讀取溫濕度傳感器AHT10)及無線發(fā)送數(shù)據(jù)呢

    1,讀取溫濕度傳感器AHT10)本項(xiàng)目中,采用的是模擬I2C來讀取數(shù)據(jù),用STM32G031標(biāo)準(zhǔn)的I2C來讀不行,不知到為什么,希望看到這個(gè)文章的您多多交流,用標(biāo)準(zhǔn)I2C就非常簡單了。具體的模擬
    發(fā)表于 02-21 07:35

    【沁恒微CH32V307評(píng)估板試用體驗(yàn)】使用AHT10獲取溫濕度

    校準(zhǔn),貼片封裝的溫濕度傳感器,采用標(biāo)準(zhǔn)IIC通信方式,超小的體積、極低的功耗。溫濕度傳感器均在高精度的恒溫恒濕腔室中進(jìn)行出廠校準(zhǔn),直接輸出經(jīng)溫度補(bǔ)償后的
    發(fā)表于 05-31 21:37

    在Art-Pi開發(fā)板上使用AHT10溫濕度模塊

    開發(fā)環(huán)境:rt-thread studio開發(fā)板:Art-PiArt-Pi上沒有溫濕度監(jiān)控的傳感器,需要自己添加,于是近日從某寶上購得AHT10溫濕度
    發(fā)表于 08-17 14:25

    基于51單片機(jī)和AHT10溫濕度傳感器溫濕度計(jì)源碼

    一款基于51單片機(jī)和AHT10溫濕度傳感器溫濕度計(jì)源碼。
    發(fā)表于 10-09 08:39

    MSP430 F149 單片機(jī) AHT10 溫濕度 LCD1602 顯示

    MSP430 F149 單片機(jī) AHT10 溫濕度 LCD1602 顯示
    發(fā)表于 11-19 17:06 ?23次下載
    MSP430 F149 單片機(jī) <b class='flag-5'>AHT10</b> <b class='flag-5'>溫濕度</b> LCD1602 顯示

    aht10溫濕度傳感器特點(diǎn)及使用介紹

    aht10溫濕度傳感器特點(diǎn)及使用介紹前言一、ds18b20數(shù)字溫度傳感器外觀二、原理圖三、相關(guān)參數(shù)講解1.引腳2.溫度測量范圍3.通訊方式(單總線)4.優(yōu)點(diǎn)4.特點(diǎn)四、內(nèi)部結(jié)構(gòu)圖總結(jié)前
    發(fā)表于 12-01 09:21 ?19次下載
    <b class='flag-5'>aht10</b><b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>特點(diǎn)及使用介紹

    14、W601之AHT10溫濕度傳感器

    14、W601之AHT10溫濕度傳感器一、AHT10簡介AHT10 是一款高精度,完全校準(zhǔn),貼片封裝的
    發(fā)表于 12-08 13:21 ?5次下載
    14、W601之<b class='flag-5'>AHT10</b><b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>

    AHT10溫濕度傳感器的使用

    大,價(jià)格大概3塊多一個(gè)吧。在淘寶上搜索溫濕度傳感器,偶然發(fā)現(xiàn)AHT10傳感器,價(jià)格2.5一個(gè),體積小,精度濕度±2%RH,溫度精度±0.3℃
    發(fā)表于 07-20 11:08 ?3791次閱讀

    CW32飯盒派開發(fā)板 日歷溫濕度計(jì)

    CW32創(chuàng)建日歷+溫濕度計(jì)
    的頭像 發(fā)表于 05-27 14:07 ?4469次閱讀
    <b class='flag-5'>CW32</b>飯盒派開發(fā)板 日歷<b class='flag-5'>溫濕度</b>計(jì)

    用國產(chǎn)高精度溫濕度傳感器AHT10,接入機(jī)智云實(shí)現(xiàn)數(shù)據(jù)傳輸

    大,價(jià)格大概3塊多一個(gè)吧。在淘寶上搜索溫濕度傳感器,偶然發(fā)現(xiàn)AHT10傳感器,價(jià)格2.5一個(gè),體積小,精度濕度±2%RH,溫度精度±0.3℃
    的頭像 發(fā)表于 07-21 10:48 ?2318次閱讀
    用國產(chǎn)高精度<b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b><b class='flag-5'>AHT10</b>,接入機(jī)智云實(shí)現(xiàn)數(shù)據(jù)傳輸

    基于RVB2601開發(fā)板的AHT10溫濕度傳感器

    AHT10 是一款高精度,完全校準(zhǔn),貼片封裝的溫濕度傳感器。AHT10 通信方式采用標(biāo)準(zhǔn) IIC 通信方式,支持較寬的工作電源電壓范圍,溫濕度
    發(fā)表于 10-07 15:18 ?862次閱讀
    基于RVB2601開發(fā)板的<b class='flag-5'>AHT10</b><b class='flag-5'>溫濕度</b><b class='flag-5'>傳感器</b>