找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 9589|回復(fù): 24
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)SHT20+BH1750+BMP180溫濕度、氣壓、光照度三合一設(shè)計(jì)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
  最近一直想做一個(gè)可以檢測(cè)溫濕度的,光照強(qiáng)度,還有氣壓檢測(cè)的儀表。而且要精度高反應(yīng)快的傳感器,在網(wǎng)上找了一圈,看的眼花繚亂,符合要求的價(jià)格都不低,無(wú)意中看到某寶看到一個(gè)溫濕度、氣壓、光照度三合一的傳感模塊,最重要的是模塊上面集成的溫濕度芯片是我首選的SHT20,還有光照強(qiáng)度傳感器BH1750. ,都符合自己的要求,這2款芯片在大學(xué)的時(shí)候就有所了解,算是溫度檢測(cè)和光照檢測(cè)領(lǐng)域里,精度高,體積非常小,性?xún)r(jià)比很高的一款。氣壓傳感器一般都是采用BMP180或者BMP085,這2個(gè)芯片也差不多的,現(xiàn)在用BMP180的感覺(jué)要多一些。非常符合設(shè)計(jì)需要。 再加上這個(gè)模塊是串口輸出,直接就可以讀取數(shù)據(jù)啦。哈哈哈,根本不需要自己去進(jìn)行3個(gè)傳感器的驅(qū)動(dòng)代碼編程,。(其實(shí)之前我也買(mǎi)個(gè)單獨(dú)的模塊回來(lái),本來(lái)打算3個(gè)模塊并聯(lián)使用,,奈何程序花了好幾天時(shí)間都沒(méi)有調(diào)試通過(guò),后來(lái)模塊直接都不知道丟哪里去了。)。于是果斷重新就此準(zhǔn)備自己重新制作一個(gè)。        因?yàn)槭悄K,沒(méi)有相關(guān)的顯示屏,硬著頭皮問(wèn)賣(mài)家能不能拿送個(gè)顯示屏................結(jié)果和預(yù)想的一樣。需要單獨(dú)購(gòu)買(mǎi)。好吧,又買(mǎi)了一塊單片機(jī)的板子,到手拼接后,開(kāi)始查資料制作,于是出現(xiàn)了此貼。

     從單片機(jī)板子和模塊到手后 到制作完成總共花了1天時(shí)間!附實(shí)物圖與相關(guān)程序,留給需要的人吧!其實(shí)還可以通過(guò)氣壓大小,有相應(yīng)來(lái)計(jì)算出海拔高度。過(guò)段時(shí)間更新的時(shí)候我在上傳上來(lái)。。。。3合1模塊上的傳感器:CMCU-01 SHT20+BMP180+BH1750FVI


各傳感器的參數(shù)介紹:
================================================
SHT20是瑞士Sensirion 數(shù)字溫濕度傳感器。 SHT20數(shù)字溫濕度傳感器是眾多溫濕度傳感器中一款性?xún)r(jià)比高的產(chǎn)品,配有4C 代CMOSens®芯片。除了配有電容式相對(duì)濕度傳感器和能隙溫度傳感器外,該芯片還包含一個(gè)放大器、A/D 轉(zhuǎn)換器、OTP 內(nèi)存和數(shù)字處理單元。用量以百萬(wàn)計(jì),且應(yīng)用領(lǐng)域廣泛。該類(lèi)傳感器適用于對(duì)成本極其敏感但又注重品質(zhì)的大批量生產(chǎn)的行業(yè)。 同時(shí)具有很高的溫度精度和濕度精度。 SHT20系列模塊專(zhuān)為低功耗小體積應(yīng)用設(shè)計(jì),具有良好的品質(zhì)、快的響應(yīng)速度、抗干擾能力強(qiáng)、性?xún)r(jià)比高等優(yōu)點(diǎn)、極低的功耗。懂行的人都知道它的優(yōu)點(diǎn)。傳感器重要參數(shù):                   濕度測(cè)量范圍:0—100%RH
濕度精度范圍(10%RH to 95%RH): ±3%RH溫度測(cè)量范圍: -40℃—125℃  (-40 - +257°F)溫度精度范圍:±0.3℃濕度遲滯:±1%RH測(cè)量時(shí)間:50ms年漂移量:-0.5%RH/year響應(yīng)時(shí)間:5 s
=================================================
BMP180是一款高精度、小體積、超低能耗的壓力傳感器,可以應(yīng)用在移動(dòng)設(shè)備中
它的性能卓越,絕對(duì)精度最低可以達(dá)到0.03hPa,并且耗電極低,只有3μA,采用強(qiáng)大的8-pin陶瓷無(wú)引線芯片承載(LCC)超薄封裝,可以通過(guò)I2C總線直接與各種微處理器相連
主要特點(diǎn):
壓力范圍:300~1100hPa(海拔9000米~-500米),從這里可以看出來(lái),該模塊還可以通過(guò)公式計(jì)算海拔高度哦~
低功耗:5μA,在標(biāo)準(zhǔn)模式
高精度:低功耗模式下,分辨率為0.06hPa(0.5米)
高線性模式下,分辨率為0.03hPa(0.25米)

======================================================BH1750FVI
采用ROHM原裝BH1750FVI芯片
光照度范圍:0-65535 lx   (有沒(méi)有發(fā)現(xiàn)比光敏電阻強(qiáng)N倍?)
傳感器內(nèi)置16bitAD轉(zhuǎn)換器
直接數(shù)字輸出,省略復(fù)雜的計(jì)算,省略標(biāo)定
不區(qū)分環(huán)境光源
接近于視覺(jué)靈敏度的分光特性
可對(duì)廣泛的亮度進(jìn)行1勒克斯的高精度測(cè)定

===============================================

單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include"LCD1602.h"

  4. #define uchar unsigned char                // 以后unsigned char就可以用uchar代替
  5. #define uint  unsigned int                // 以后unsigned int 就可以用uint 代替


  6. uchar rxfalg=1;
  7. uchar Byte1,Byte2,Byte3,Byte4,Byte5,Byte6,Byte7,Byte8,Byte9,Byte10,Byte11,Byte12,Byte13,Byte14,Byte15,Byte15,Byte16;

  8. uint Light,Pressure,Temp; //定義的光照強(qiáng)度,氣壓,溫度。
  9. uchar Humi; //濕度
  10. /*********************************************************/
  11. // 毫秒級(jí)的延時(shí)函數(shù),time是要延時(shí)的毫秒數(shù)
  12. /*********************************************************/
  13. void DelayMs(uint time)
  14. {
  15.         uint i,j;
  16.         for(i=0;i<time;i++)
  17.                 for(j=0;j<112;j++);
  18. }



  19. /*********************************************************/
  20. // 串口初始化
  21. /*********************************************************/
  22. void UartInit()
  23. {
  24.         SCON = 0x50;        // 配置串口寄存器
  25.         TMOD = 0x20;        // 配置定時(shí)器寄存器
  26.         TH1  = 0xfd;        // 計(jì)算波特率的值為9600
  27.         TL1  = 0xfd;        // 計(jì)算波特率的值為9600
  28.         EA   = 1;                        // 打開(kāi)總中斷
  29.         ES   = 1;                        // 打開(kāi)串口中斷
  30.         TR1  = 1;                        // 啟動(dòng)定時(shí)器
  31. }


  32. /*********************************************************/
  33. // 主函數(shù)
  34. /*********************************************************/
  35. void main(void)
  36. {

  37.   LCDInt(); //液晶初始化
  38.         UartInit();                                                        // 串口初始化
  39.   DelayMs(500);

  40.              SetXY(0,0); // 光照
  41.                          LCDWriteDate('L');
  42.                          LCDWriteDate(':');
  43.              SetXY(0,7);
  44.              LCDWriteDate('L');
  45.              LCDWriteDate('x');
  46.        
  47.              SetXY(1,0); // 氣壓
  48.                          LCDWriteDate('P');
  49.                          LCDWriteDate(':');
  50.              SetXY(1,8);
  51.              LCDWriteDate('K');
  52.              LCDWriteDate('p');
  53.           
  54.             
  55.              SetXY(0,10); // 溫度
  56.                          LCDWriteDate('T');
  57.                          LCDWriteDate(':');
  58.             // SetXY(0,15); //
  59.                         // LCDWriteDate(0XDF);
  60.                        
  61.              SetXY(1,11); //濕度
  62.                          LCDWriteDate('H');
  63.                          LCDWriteDate(':');
  64.                          SetXY(1,15); //
  65.        LCDWriteDate('%');
  66.                        
  67.        
  68.         while(1)
  69.         {
  70.                
  71.                  
  72.                 if(rxfalg==0)
  73.                 {
  74.                          rxfalg=1;
  75.                  
  76.                   //光照強(qiáng)度
  77.                    SetXY(0,2); //
  78.        LCDWriteDate(Light/10000+0x30);
  79.                          LCDWriteDate(Light%10000/1000+0x30);
  80.                          LCDWriteDate(Light%1000/100+0x30);
  81.                          LCDWriteDate(Light%100/10+0x30);
  82.                          LCDWriteDate(Light%10+0x30);
  83.                        
  84.                          //氣壓強(qiáng)度
  85.                    SetXY(1,2); //
  86.        LCDWriteDate(Pressure/10000+0x30);
  87.                          LCDWriteDate(Pressure%10000/1000+0x30);
  88.                          LCDWriteDate(Pressure%1000/100+0x30);
  89.                          LCDWriteDate('.');
  90.                          LCDWriteDate(Pressure%100/10+0x30);
  91.                          LCDWriteDate(Pressure%10+0x30);
  92.                        
  93.                          //溫度
  94.                    SetXY(0,12); //
  95.        LCDWriteDate(Temp/100+0x30);
  96.                          LCDWriteDate(Temp%100/10+0x30);
  97.                          LCDWriteDate('.');
  98.        LCDWriteDate(Temp%10+0x30);
  99.                          
  100.                          //濕度
  101.                    SetXY(1,13); //
  102.        LCDWriteDate(Humi/10+0x30);
  103.        LCDWriteDate(Humi%10+0x30);
  104.                        
  105.                 }
  106.                
  107.            DelayMs(500);
  108. }

  109. }

  110. /*********************************************************/
  111. // 串口中斷服務(wù)程序
  112. /*********************************************************/
  113. void UartInt(void) interrupt 4
  114. {
  115.       ES = 0;                           //關(guān)串口中斷,防止中斷嵌套

  116.                         while(!RI);                        // 固定位0XAA
  117.                         Byte1=SBUF;
  118.                         RI=0;

  119.                         while(!RI);                        // Byte2 預(yù)留
  120.                         Byte2=SBUF;
  121.                         RI=0;
  122.                        
  123.                         while(!RI);                        // Byte3 預(yù)留
  124.                         Byte3=SBUF;
  125.                         RI=0;
  126.                        
  127.                         while(!RI);                        // Byte4 預(yù)留
  128.                         Byte4=SBUF;
  129.                         RI=0;
  130.        
  131.                   while(!RI);                        // Byte5 預(yù)留
  132.                         Byte5=SBUF;
  133.                         RI=0;
  134.                        
  135.                         while(!RI);                        // Byte6 光照強(qiáng)度高8位
  136.                   Byte6=SBUF;
  137.                         RI=0;
  138.                        
  139.                         while(!RI);                        // Byte7 光照強(qiáng)度低8位
  140.                         Byte7=SBUF;
  141.                         RI=0;
  142.                        
  143.                         while(!RI);                        // Byte8  氣壓高8位
  144.                         Byte8=SBUF;
  145.                         RI=0;
  146.                        
  147.                         while(!RI);                        // Byte9  氣壓低8位
  148.                         Byte9=SBUF;
  149.                         RI=0;
  150.                        
  151.                         while(!RI);                        // Byte10 溫度正負(fù)標(biāo)志位
  152.                         Byte10=SBUF;
  153.                         RI=0;
  154.                        
  155.                         while(!RI);                        // Byte11 溫度高8位
  156.                         Byte11=SBUF;
  157.                         RI=0;
  158.                        
  159.                         while(!RI);                        // Byte12  溫度低8位
  160.                         Byte12=SBUF;
  161.                         RI=0;
  162.                        
  163.                         while(!RI);                // Byte13  濕度
  164.                         Byte13=SBUF;
  165.                         RI=0;
  166.                        
  167.                         while(!RI);                        // Byte14 校驗(yàn)和 高8位
  168.                         Byte14=SBUF;
  169.                         RI=0;
  170.                        
  171.                         while(!RI);                        // Byte15  校驗(yàn)和 低8位
  172.                         Byte15=SBUF;
  173. ……………………

  174. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
程序,相關(guān)文檔資料測(cè)試通過(guò).zip (3.78 MB, 下載次數(shù): 337)

評(píng)分

參與人數(shù) 2黑幣 +115 收起 理由
perfect123 + 15 共享資料的黑幣獎(jiǎng)勵(lì)!
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏16 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:403916 發(fā)表于 2019-2-22 20:26 | 只看該作者
謝謝樓主分享經(jīng)驗(yàn)哦,互相進(jìn)步!
回復(fù)

使用道具 舉報(bào)

板凳
ID:403916 發(fā)表于 2019-2-22 20:30 | 只看該作者
問(wèn)一下這個(gè)單片機(jī)板子叫什么啊?可以從網(wǎng)上買(mǎi)到嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:479446 發(fā)表于 2019-2-22 21:33 | 只看該作者
1061897836 發(fā)表于 2019-2-22 20:30
問(wèn)一下這個(gè)單片機(jī)板子叫什么?可以從網(wǎng)上買(mǎi)到嗎?

單片機(jī)板子可以在網(wǎng)上買(mǎi)的,賣(mài)模塊的那里一般就有,我就是懶得焊接,所以買(mǎi)了一個(gè)現(xiàn)成的板子。  其實(shí)可以自己焊接一個(gè)最小系統(tǒng)板,另外加一塊液晶顯示屏LCD1602就可以了。程序里面都有液晶顯示屏的IO口注釋。測(cè)出來(lái)的數(shù)據(jù)非常準(zhǔn)確。
回復(fù)

使用道具 舉報(bào)

5#
ID:82854 發(fā)表于 2019-2-25 19:41 來(lái)自手機(jī) | 只看該作者
請(qǐng)問(wèn)Tx Rx 分別接單片機(jī)什么端口?謝謝。。
回復(fù)

使用道具 舉報(bào)

6#
ID:479446 發(fā)表于 2019-2-26 17:37 | 只看該作者
tclgx 發(fā)表于 2019-2-25 19:41
請(qǐng)問(wèn)Tx Rx 分別接單片機(jī)什么端口?謝謝。。

單片機(jī)的串口。就是P3.0(RXD) 和P3.1(TXD)
回復(fù)

使用道具 舉報(bào)

7#
ID:245466 發(fā)表于 2019-3-6 23:38 | 只看該作者
太棒了,好資料。
回復(fù)

使用道具 舉報(bào)

8#
ID:130345 發(fā)表于 2019-3-7 11:04 | 只看該作者
樓主買(mǎi)得是50塊一個(gè)的那種串口輸出的模塊嗎?記得那家淘寶有分三種價(jià)位。
回復(fù)

使用道具 舉報(bào)

9#
ID:479446 發(fā)表于 2019-3-9 18:39 | 只看該作者
持勤補(bǔ)拙 發(fā)表于 2019-3-7 11:04
樓主買(mǎi)得是50塊一個(gè)的那種串口輸出的模塊嗎?記得那家淘寶有分三種價(jià)位。

嗯。是的。串口的。好像是40塊錢(qián)吧
回復(fù)

使用道具 舉報(bào)

10#
ID:461137 發(fā)表于 2019-3-14 17:45 | 只看該作者
LZ,能說(shuō)說(shuō)BMP180+BH1750的各個(gè)接口都接單片機(jī)的哪個(gè)接口嗎?
回復(fù)

使用道具 舉報(bào)

11#
ID:479446 發(fā)表于 2019-3-16 18:53 | 只看該作者
lml0508 發(fā)表于 2019-3-14 17:45
LZ,能說(shuō)說(shuō)BMP180+BH1750的各個(gè)接口都接單片機(jī)的哪個(gè)接口嗎?

單片機(jī)串口
回復(fù)

使用道具 舉報(bào)

12#
ID:461137 發(fā)表于 2019-3-16 21:27 | 只看該作者

那BMP1750有個(gè)ADDR引腳接單片機(jī)哪個(gè)端口呢?
回復(fù)

使用道具 舉報(bào)

13#
ID:479446 發(fā)表于 2019-3-19 19:42 | 只看該作者
lml0508 發(fā)表于 2019-3-16 21:27
那BMP1750有個(gè)ADDR引腳接單片機(jī)哪個(gè)端口呢?

不用接。
回復(fù)

使用道具 舉報(bào)

14#
ID:340738 發(fā)表于 2019-4-28 19:04 | 只看該作者
請(qǐng)問(wèn)大神,用stm32f103rct6,iic模式下,可以傳送三個(gè)傳感器的數(shù)據(jù)嗎?

回復(fù)

使用道具 舉報(bào)

15#
ID:261045 發(fā)表于 2019-5-17 22:34 | 只看該作者
謝謝,很好的東東,正需要它,下載看看,謝謝啦!。!
回復(fù)

使用道具 舉報(bào)

16#
ID:261045 發(fā)表于 2019-5-17 22:35 | 只看該作者
謝謝,正需要這個(gè)東東,就不知道程序能不能用,下載來(lái)看看再說(shuō)啦。。。
回復(fù)

使用道具 舉報(bào)

17#
ID:261045 發(fā)表于 2019-5-17 22:44 | 只看該作者
SHT20+BH1750+BMP180,這幾個(gè)傳感器都在那個(gè)小板上面嗎?謝謝
回復(fù)

使用道具 舉報(bào)

18#
ID:585365 發(fā)表于 2019-9-11 20:28 | 只看該作者
正在學(xué)習(xí)這方面的知識(shí),謝謝
回復(fù)

使用道具 舉報(bào)

19#
ID:92810 發(fā)表于 2019-10-29 14:34 | 只看該作者
太棒了,好資料。
回復(fù)

使用道具 舉報(bào)

20#
ID:165363 發(fā)表于 2019-11-21 17:00 | 只看該作者
感謝樓主分享資料和例程。
回復(fù)

使用道具 舉報(bào)

21#
ID:214276 發(fā)表于 2020-3-13 17:01 | 只看該作者
下載來(lái)試試看。我也有個(gè)BMP180的模塊調(diào)試好了。
回復(fù)

使用道具 舉報(bào)

22#
ID:105771 發(fā)表于 2020-5-13 08:46 | 只看該作者
多謝分享,正好在找
回復(fù)

使用道具 舉報(bào)

23#
ID:65237 發(fā)表于 2020-5-14 21:21 | 只看該作者
謝謝分享 收下了
回復(fù)

使用道具 舉報(bào)

24#
ID:85508 發(fā)表于 2022-12-11 18:12 | 只看該作者
溫度、濕度、氣壓、照度,功能強(qiáng)大
回復(fù)

使用道具 舉報(bào)

25#
ID:229502 發(fā)表于 2024-5-16 16:48 | 只看該作者
除了main.c,其他傳感器函數(shù)沒(méi)有
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表