精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

CW32生態社區 ? 2024-11-28 17:28 ? 次閱讀

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

一、模塊來源

模塊實物展示:

wKgZPGdIN6-AUqN9AAAd9Oq1yAo062.jpg


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

二、 規格參數

工作電壓:1.8~3.6V

工作電流:0.25~23uA

濕度誤差:±2%RH

溫度誤差:±0.3℃

輸出方式: IIC

管腳數量:3 Pin

以上信息見廠家資料文件

三、移植過程

我們的目標是將例程移植至CW32F030C8T6開發板上【能夠測量環境溫濕度】。首先要獲取資料,查看數據手冊應如何實現讀取數據,再移植至我們的工程。

3.1查看資料

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

wKgZO2dIN6-Afe27AAAL-oyq1Co819.jpg

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

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

wKgZPGdIN6-ANMQCAACDPH4cxIw894.jpg

8位狀態字,各個位表示的意義。

wKgZPGdIN7CADc1zAABUrFlWYJE324.jpg

示例:

狀態位 = 0x1C

        0X1C = 0001 1100
        bit7  = 設備空閑
        bit6~5= NOR mode
        bit4  = 保留
        BIT3  = 1已校準
        bit0~2= 保留

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

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

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

3.2引腳選擇

wKgZO2dIN7CAZQZrAAFEoE4Rdvw575.jpg

模塊接線圖

3.3查移植至工程

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

在文件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;


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

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

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

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

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

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

}




/******************************************************************
 * 函 數 名 稱:IIC_Send_Ack
 * 函 數 說 明:主機發送應答或者非應答信號
 * 函 數 形 參:0發送應答  1發送非應答
 * 函 數 返 回:無
 * 作       者: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);
}


/******************************************************************
 * 函 數 名 稱:I2C_WaitAck
 * 函 數 說 明:等待從機應答
 * 函 數 形 參:無
 * 函 數 返 回:0有應答  1超時無應答
 * 作       者: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;
}

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

        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


//設置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);       
                     }
//設置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

四、移植驗證

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

/*
 * 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();        // 開發板初始化

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

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

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

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

    }
}

上電現象:每隔大約一秒測量一次溫濕度。

wKgZPGdIN7GAXhvFAADw7nZyMRU410.jpg

模塊移植成功案例代碼:

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

提取碼:LCKF

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2548

    文章

    50740

    瀏覽量

    752138
  • 溫濕度傳感器

    關注

    5

    文章

    575

    瀏覽量

    35670
  • CW32
    +關注

    關注

    1

    文章

    196

    瀏覽量

    592
收藏 人收藏

    評論

    相關推薦

    AHT20溫濕度傳感器的數據采集

    基于I2C硬件協議的AHT20溫濕度傳感器的數據采集一、軟件I2C二、硬件I2C三、基于I2C硬件協議的AHT20溫濕度
    發表于 08-23 06:57

    aht10溫濕度傳感器的特點有哪些呢

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

    W601之AHT10溫濕度傳感器簡介

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

    AHT20溫濕度傳感器簡介

    目錄一、AHT20溫濕度傳感器簡介二、AHT20 封裝設計三、AHT20 元件設計四、原理圖設計五、總結博客內容:學習
    發表于 02-14 07:29

    怎樣去讀取溫濕度傳感器AHT10)及無線發送數據呢

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

    【沁恒微CH32V307評估板試用體驗】使用AHT10獲取溫濕度

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

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

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

    基于51單片機和AHT10溫濕度傳感器溫濕度計源碼

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

    MSP430 F149 單片機 AHT10 溫濕度 LCD1602 顯示

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

    aht10溫濕度傳感器特點及使用介紹

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

    14、W601之AHT10溫濕度傳感器

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

    AHT10溫濕度傳感器的使用

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

    CW32飯盒派開發板 日歷溫濕度

    CW32創建日歷+溫濕度
    的頭像 發表于 05-27 14:07 ?4442次閱讀
    <b class='flag-5'>CW32</b>飯盒派開發板 日歷<b class='flag-5'>溫濕度</b>計

    用國產高精度溫濕度傳感器AHT10,接入機智云實現數據傳輸

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

    基于RVB2601開發板的AHT10溫濕度傳感器

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