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

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

3天內不再提示

如何構建與Arduino板兼容的溫度傳感器

454398 ? 來源:網(wǎng)絡整理 ? 作者:佚名 ? 2019-11-06 10:34 ? 次閱讀

步驟1:

要構建傳感器,我創(chuàng)建了一個小的PCB。為此,我使用了墨粉轉移方法。如何做到這一點是許多指導對象的目標。我焊接了芯片,電容和引腳頭。在傳感器的第五個針腳上,我放了一根從電纜絕緣層中取出的小塑料管。它的目的是將傳感器引導到正確的位置并阻止其插入錯誤的母頭孔中。在圖片上可以看到它必須放置的正確方式。傳感器按照使用以下Arduino引腳的方式投影:“5V”,“GNG”,“GND”,_,_,“A0”。這意味著-模擬輸出電壓值由ADC0采樣。

步驟2:硬件

對于基于DIY溫度傳感器的簡單溫度計項目,我使用了Arduino MEGA板(也是我的DYI項目)。還需要LCD防護罩。就我而言,盾牌也是自制的。使用的LCD是帶有ST9720芯片的圖形128x64顯示器。我在ebay上買了它。 LCD屏蔽板的PCB也來自ebay。我已經在LCD上焊接了母排針,并在原型屏蔽板上焊接了排針-現(xiàn)在,我可以簡單地將LCD模塊插入到原型板上,并且可以正常工作,并且不使用任何電纜。如果您沒有任何LCD防護罩,那么當然可以使用面包屑的標準方法。對于該項目,也可以使用任何字符LCD(例如16x2),但我沒有LCD,但我經歷了更復雜的方式:-)。

步驟3:代碼

現(xiàn)在是時候編寫代碼了。我試圖使它盡可能簡短。因為我使用GLCD,所以我決定將實現(xiàn)基于u8glib庫。如果要使用字符LCD,則應使用標準的LCD Arduino庫,并且必須根據(jù)它們來調整代碼。

這是代碼:

/*

溫度計基于Maxims DS600u +芯片

*/

#include“U8glib.h”

#include

U8GLIB_ST7920_128X64_4X u8g(8,9,10,11) ,4,5,6,7,18,17,16);//8Bit Com:D0..D7:8,9,10,11,4,5,6,7 en = 18,di = 17,rw = 16

void u8g_prepare(void){

u8g。 setFont(u8g_font_6x10);

u8g.setFontRefHeightExtendedText();

u8g.setDefaultForegroundColor();

u8g.setFontPosTop();

}

void setup(void){

//翻轉屏幕,如果需要的話

//u8g.setRot180();

//指定默認顏色值

if(u8g.getMode()== U8G_MODE_R3G3B2)

u8g.setColorIndex(255);//white

else if(u8g.getMode()== U8G_MODE_GRAY2BIT)

u8g.setColorIndex(3);//最大強度

否則if(u8g.getMode()== U8G_MODE_BW)

u8g.setColorIndex(1);//像素在

//u8g.setContrast(0x30);

pinMode(13,OUTPUT);

digitalWrite(13,HIGH);

u8g_prepare();

}

void draw(void){

浮動供應= 4.91 ;//必須在此處輸入arduino板的測量電源電壓

//讀取傳感器輸出電壓

int讀數(shù)= AnalogRead(0);

float v_out =(讀取*電源)/ 1.024 ;

//在液晶顯示屏上顯示溫度

float temperature =(v_out-509)/6.45;

char temp [5];

dtostrf(temperature,5,1 ,溫度);結果,u8g.drawStr(4,24, “溫度:”);結果,u8g.drawStr(76,24,溫度);結果,u8g.drawStr(108,24,“的 260 C“);

}

void loop(void){

//圖片循環(huán)

u8g.firstPage();

do {

draw();

} while(u8g.nextPage());

//延遲一段時間后重建圖片

延遲(1000);

有一些棘手的問題代碼中的點。

我把它們放在粗體中。

1)因為內部Atmega ADC使用電源電壓作為參考來測量模擬電壓電位,這不是比率指標電源電壓,但由傳感器芯片固定,如果電源電壓變化,可能會發(fā)生錯誤。粗略的計算表明,50mV的電源變化會引起1度的溫度誤差。提高精度的解決方案是按應使用的方式測量Arduino板上的確切電源電壓-如果您打算使用USB提供的Arduino溫度計,則必須測量這種情況下的板子電源電壓。如果您打算將溫度計用作AC/DC適配器提供的獨立設備 - 那么,在這種情況下應測量電路板+屏蔽的電源電壓。在我的情況下,設備由USB供電,我在“5V”Arduino引腳上測得4.91V。所以我把這個值放在草圖中。

2)很高興在LCD上你可以看到度數(shù)“°”符號。這里的問題是不同的顯示器具有不同的ASCII表,并且難以說出對應于該符號的八進制數(shù)究竟是什么。有兩種可能的解決方案:

A )如果有任何ASCII表,則讀取LCD模塊/驅動程序的數(shù)據(jù)表

B )編寫草圖以顯示寫在LCD ROM中的整個ASCII表,查看符號出現(xiàn)的位置并計算/查看與之對應的十進制數(shù)。進一步將此值轉換為八進制數(shù)并放入草圖。

我使用了第二種方法。..。..并且以最簡單的方式:-) - 庫中有“示例”u8glib。程序“ GraphicsTest”將打印存儲在驅動器芯片ROM中的兩個ASCII表。在那里,我發(fā)現(xiàn)所需的符號具有260個八進制等效數(shù)字。

想要在Arduino Due上實現(xiàn)此項目的家伙,我建議在代碼中也插入以下行:

analogReadResolution(12);

在設置過程中,然后在1.024上除以4.096除。

步驟4:

整個設備組裝,編程并運行:

PS該項目繼續(xù)。..

步驟5:其他工作

在幾周前,我決定在此防護罩中實現(xiàn)其他功能。這些功能必須是:LCD上顯示的當前時間和日期。為此,我從ebay購買了RTC模塊。 (如圖所示)。該模塊不是很精確,必須不時調整。另一個解決方案是嘗試用更好的石英晶體進行更換。

步驟6:進行屏蔽修改

能夠插入RTC我已通過以下方式修改了屏蔽:我焊接了4針母接頭,并將其連接到正確的信號。

SCL RTC引腳與屏蔽/引腳21相連。 arduino

分別將SDA與#20引腳相連

別忘了連接GND和Vcc引腳。

步驟7:代碼。..

以前的代碼已修改為:

/*

基于Maxims DS600u +芯片+ RTC的溫度計

*/

#include“ U8glib.h”

#include

#include

# include

int rtc [7];

float supply = 4.91;//這里必須輸入arduino板的測量電源電壓

//讀取傳感器輸出電壓

char hours [2];

char minutes [2];

char seconds [2] ;

char天[2];

char months [2];

char years [4];

U8GLIB_ST7920_128X64_4X u8g(8,9,10,11,4,5,6,7, 18、17、16);//8Bit Com:D0..D7:8,9,10,11,4,5,6,7 en = 18,di = 17,rw = 16

void u8g_prepare(void){

u8g。 setFont(u8g_font_6x10);

u8g.setFontRefHeightExtendedText();

u8g.setDefaultForegroundColor();

u8g.setFontPosTop();

}

void setup(void){

序列號。 begin(9600);

//翻轉屏幕,如果需要的話

//u8g.setRot180();

//指定默認顏色值

if(u8g.getMode()== U8G_MODE_R3G3B2)

u8g.setColorIndex(255);//white

else if(u8g.getMode()== U8G_MODE_GRAY2BIT)

u8g.setColorIndex(3);//最大強度

否則if(u8g.getMode()== U8G_MODE_BW)

u8g.setColorIndex(1);//像素在

//u8g.setContrast(0x30);

pinMode(13,OUTPUT);

digitalWrite(13,HIGH);

u8g_prepare();

}

void draw(void){ u8g.drawFrame(0,0,127,63);

u8g.drawFrame(13,7,103,21);

u8g.drawBox(15,9,99,17);

RTC.get(rtc,true); u8g.setColorIndex(0);

dtostrf(rtc [2],2,0,hours);

if(rtc [2] 《10 )結果{結果u8g.drawStr(26,14, “0”);結果,},點擊u8g.drawStr(26,14,小時);結果,dtostrf(RTC [1],2 ,0,minutes);

u8g.drawStr(45,14,“:”);

if(rtc [1] 《10)

{

u8g.drawStr(58,14,“ 0“ );結果,},點擊u8g.drawStr(58,14,分鐘);結果,dtostrf(RTC [0],2,0,秒);結果,u8g.drawStr(78,14, “:”);

if(rtc [0] 《10)

{

u8g.drawStr(91,14,“ 0”);

}

u8g.drawStr(91, 14秒);

u8g.setColorIndex(1);

switch(rtc [3])

{

情況1:u8g.drawStr(4,33,“ Sunday”);休息;

案例2:u8g.drawStr(4,33,“星期一”);休息;

案例3:u8g.drawStr(4,33,“星期二”);休息;

案例4:u8g.drawStr(4,33,“星期三”);休息;

案例5:u8g.drawStr(4,33,“星期四”);休息;

案例6:u8g.drawStr(4,33,“星期五”);休息;

案例7:u8g.drawStr(4,33,“星期六”); break;

}

dtostrf(rtc [4],2,0,days);

if(rtc [4] 《10)

{ u8g.drawStr(64,33, “0”);結果,},點擊u8g.drawStr(64,33,天);結果,u8g.drawStr(75,33, “”);結果,dtostrf(RTC [5],2 ,0,months);

if(rtc [5] 《10)

{

u8g.drawStr(80,33,“ 0”);

}

u8g.drawStr(80 ,33,月);結果,u8g.drawStr(90,33, “”);結果,dtostrf(RTC [6],4,0,歲);結果,u8g.drawStr(96,33,年);

int讀數(shù)= AnalogRead(0);

浮點v_out =(讀數(shù)*供給)/1.024;

//在LCD上顯示溫度

浮點溫度=(v_out-509)/6.45;

char temp [5]; dtostrf(temperature,5,1,temp);

u8g.drawStr(4,48,“ Temperature:”);

u8g.drawStr( 76,48,temp);

u8g.drawStr(108,48,“ 260C”);

void loop(void){

//圖片循環(huán)

u8g.firstPage();

做{

draw();

} while(u8g.nextPage());

//延遲一段時間后重建圖片

delay( 1000);

}

如您所見,此代碼需要庫DS1307。我已附上該庫,以幫助您解決由于可用的DS1307庫不同而引起的混亂。

責任編輯:wv

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

    關注

    48

    文章

    2894

    瀏覽量

    155808
  • Arduino
    +關注

    關注

    187

    文章

    6461

    瀏覽量

    186520
收藏 人收藏

    評論

    相關推薦

    基于電阻的溫度傳感器原理

    基于電阻的溫度傳感器,即電阻式溫度傳感器(RTD,Resistance Temperature Detector),其原理是利用導體或半導體材料的電阻值隨
    的頭像 發(fā)表于 10-31 09:36 ?152次閱讀

    dht22溫度傳感器的原理及應用

    DHT22是一款廣泛使用的數(shù)字溫濕度傳感器,它結合了溫度和濕度的測量功能,并且以數(shù)字信號的形式輸出,這使得它在各種環(huán)境監(jiān)測和控制系統(tǒng)中非常受歡迎。 DHT22傳感器原理 1. 工作原理 DHT22
    的頭像 發(fā)表于 09-03 16:06 ?803次閱讀

    溫度傳感器怎么測好壞_溫度傳感器的測量方法是什么

    溫度傳感器是測量溫度的儀器,廣泛應用于工業(yè)、科研、醫(yī)療等領域。本文將詳細介紹溫度傳感器的測量方法和判斷好壞的標準。 一、
    的頭像 發(fā)表于 06-19 14:54 ?2811次閱讀

    溫度探頭和溫度傳感器的區(qū)別是什么

    溫度探頭和溫度傳感器是兩種不同的設備,它們在測量溫度方面有著各自的特點和應用場景。本文將詳細介紹溫度探頭和
    的頭像 發(fā)表于 06-19 14:45 ?1875次閱讀

    非接觸溫度傳感器如何測量內部溫度

    非接觸溫度傳感器,又稱為紅外溫度傳感器,是一種通過測量物體表面發(fā)射的紅外輻射來確定物體溫度傳感器
    的頭像 發(fā)表于 06-19 14:43 ?954次閱讀

    溫度傳感器種類有哪些,原理是什么

    溫度傳感器是一種將溫度變化轉換為電信號的裝置,廣泛應用于工業(yè)、科研、醫(yī)療等領域。本文將詳細介紹溫度傳感器的種類、原理及其應用。 一、
    的頭像 發(fā)表于 06-19 11:02 ?992次閱讀

    水位溫度傳感器的作用和原理

    水位溫度傳感器是一種廣泛應用于水處理、環(huán)境監(jiān)測、農業(yè)灌溉、工業(yè)控制等領域的傳感器。它能夠實時監(jiān)測水體的水位和溫度,為相關領域提供重要的數(shù)據(jù)支持。本文將詳細介紹水位
    的頭像 發(fā)表于 06-19 10:34 ?949次閱讀

    溫度傳感器的原理及應用

    溫度傳感器是一種將溫度變化轉換為電信號的傳感器,廣泛應用于工業(yè)、農業(yè)、醫(yī)療、氣象等領域。本文將詳細介紹溫度
    的頭像 發(fā)表于 06-19 10:27 ?2030次閱讀

    【電路百科】溫度傳感器pcb

    溫度傳感器PCB指的是集成了溫度傳感器的印刷電路。這種 PCB 可能包含溫度
    的頭像 發(fā)表于 05-07 17:36 ?718次閱讀

    溫度傳感器的類型與設計技巧

    作者:DigiKey Editor 溫度傳感器是一種用來測量環(huán)境或物體溫度的器件,它們在各種應用中都扮演著重要的角色,從家用電器到工業(yè)控制系統(tǒng)都有廣泛應用,像是熱水、干衣機、暖通空調
    的頭像 發(fā)表于 05-05 10:29 ?2064次閱讀
    <b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>的類型與設計技巧

    光纖溫度傳感器的原理 光纖溫度傳感器的應用

    光纖溫度傳感器的原理 光纖溫度傳感器的應用? 光纖溫度傳感器是一種利用光纖的熱學特性實現(xiàn)
    的頭像 發(fā)表于 03-07 15:55 ?2632次閱讀

    如何測量溫度傳感器好壞?溫度傳感器有哪些用途?

    溫度傳感器絕對是生活中最常用的傳感器類型之一,甚至我們的家中都有溫度傳感器的身影。為增進大家對溫度
    的頭像 發(fā)表于 12-15 08:39 ?1728次閱讀

    你了解溫度傳感器嗎?溫度傳感器溫度變送器有哪些區(qū)別?

    一、溫度傳感器 近年來,我國工業(yè)現(xiàn)代化的進程和電子信息產業(yè)連續(xù)的高速增長,帶動了傳感器市場的快速上升。溫度傳感器作為
    的頭像 發(fā)表于 12-14 08:44 ?1265次閱讀
    你了解<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>嗎?<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>和<b class='flag-5'>溫度</b>變送器有哪些區(qū)別?

    教你如何選擇溫度傳感器?

    溫度傳感器種類繁多,應用也極為廣泛,在我們日常所需的汽車、消費電子、家用電器等產品上都存在一個至數(shù)個溫度傳感器。較比其他種類傳感器,
    的頭像 發(fā)表于 12-14 08:44 ?1672次閱讀
    教你如何選擇<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>?

    溫度傳感器原理及應用

    溫度傳感器是一種用于測量溫度的裝置,其原理是將溫度轉換為可被測量和記錄的電信號。溫度傳感器有很多
    的頭像 發(fā)表于 11-24 11:34 ?3800次閱讀