0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何构建与Arduino板兼容的温度传感器

454398 来源:网络整理 作者:佚名 2019-11-06 10:34 次阅读

步骤1:

要构建传感器,我创建了一个小的PCB。为此,我使用了墨粉转移方法。如何做到这一点是许多指导对象的目标。我焊接了芯片电容和引脚头。在传感器的第五个针脚上,我放了一根从电缆绝缘层中取出的小塑料管。它的目的是将传感器引导到正确的位置并阻止其插入错误的母头孔中。在图片上可以看到它必须放置的正确方式。传感器按照使用以下Arduino引脚的方式投影:“5V”,“GNG”,“GND”,_,_,“A0”。这意味着-interwetten与威廉的赔率体系 输出电压值由ADC0采样。

步骤2:硬件

对于基于DIY温度传感器的简单温度计项目,我使用了Arduino MEGA板(也是我的DYI项目)。还需要LCD防护罩。就我而言,盾牌也是自制的。使用的LCD是带有ST9720芯片的图形128x64显示器。我在ebay上买了它。 LCD屏蔽板的PCB也来自ebay。我已经在LCD上焊接了母排针,并在原型屏蔽板上焊接了排针-现在,我可以简单地将LCD模块插入到原型板上,并且可以正常工作,并且不使用任何电缆。如果您没有任何LCD防护罩,那么当然可以使用面包屑的标准方法。对于该项目,也可以使用任何字符LCD(例如16x2),但我没有LCD,但我经历了更复杂的方式:-)。

步骤3:代码

现在是时候编写代码了。我试图使它尽可能简短。因为我使用GLCD,所以我决定将实现基于u8glib库。如果要使用字符LCD,则应使用标准的LCD Arduino库,并且必须根据它们来调整代码。

这是代码:

/*

温度计基于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读数= 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){

//图片循环

u8g.firstPage();

do {

draw();

} while(u8g.nextPage());

//延迟一段时间后重建图片

延迟(1000);

有一些棘手的问题代码中的点。

我把它们放在粗体中。

1)因为内部Atmega ADC使用电源电压作为参考来测量模拟电压电位,这不是比率指标电源电压,但由传感器芯片固定,如果电源电压变化,可能会发生错误。粗略的计算表明,50mV的电源变化会引起1度的温度误差。提高精度的解决方案是按应使用的方式测量Arduino板上的确切电源电压-如果您打算使用USB提供的Arduino温度计,则必须测量这种情况下的板子电源电压。如果您打算将温度计用作AC/DC适配器提供的独立设备 - 那么,在这种情况下应测量电路板+屏蔽的电源电压。在我的情况下,设备由USB供电,我在“5V”Arduino引脚上测得4.91V。所以我把这个值放在草图中。

2)很高兴在LCD上你可以看到度数“°”符号。这里的问题是不同的显示器具有不同的ASCII表,并且难以说出对应于该符号的八进制数究竟是什么。有两种可能的解决方案:

A )如果有任何ASCII表,则读取LCD模块/驱动程序的数据表

B )编写草图以显示写在LCD ROM中的整个ASCII表,查看符号出现的位置并计算/查看与之对应的十进制数。进一步将此值转换为八进制数并放入草图。

我使用了第二种方法。..。..并且以最简单的方式:-) - 库中有“示例”u8glib。程序“ GraphicsTest”将打印存储在驱动器芯片ROM中的两个ASCII表。在那里,我发现所需的符号具有260个八进制等效数字。

想要在Arduino Due上实现此项目的家伙,我建议在代码中也插入以下行:

analogReadResolution(12);

在设置过程中,然后在1.024上除以4.096除。

步骤4:

整个设备组装,编程并运行:

PS该项目继续。..

步骤5:其他工作

在几周前,我决定在此防护罩中实现其他功能。这些功能必须是: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读数= AnalogRead(0);

浮点v_out =(读数*供给)/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){

//图片循环

u8g.firstPage();

做{

draw();

} while(u8g.nextPage());

//延迟一段时间后重建图片

delay( 1000);

}

如您所见,此代码需要库DS1307。我已附上该库,以帮助您解决由于可用的DS1307库不同而引起的混乱。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 温度传感器
    +关注

    关注

    48

    文章

    2940

    浏览量

    156079
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187092
收藏 人收藏

    评论

    相关推荐

    如何校准温度传感器

    校准温度传感器是确保其测量准确性的重要步骤。以下是一些常用的温度传感器校准方法: 一、比较法校准 原理 : 将待校准的温度
    的头像 发表于 11-22 09:36 525次阅读

    温度传感器与湿度传感器的区别

    在环境监测和控制领域,温度和湿度是两个非常重要的参数。它们不仅影响着人类的舒适度,还对工业生产、农业生产、科学研究等多个领域有着深远的影响。为了准确监测和控制这些参数,我们通常会使用专门的传感器设备
    的头像 发表于 11-22 09:31 249次阅读

    工业温度传感器的优缺点 温度传感器在智能家居中的应用

    工业温度传感器的优缺点 优点 高精度 :工业温度传感器通常具有较高的精度,能够提供准确的温度读数,这对于需要精确控制
    的头像 发表于 11-22 09:30 286次阅读

    基于电阻的温度传感器原理

    基于电阻的温度传感器,即电阻式温度传感器(RTD,Resistance Temperature Detector),其原理是利用导体或半导体材料的电阻值随
    的头像 发表于 10-31 09:36 354次阅读

    dht22温度传感器的原理及应用

    DHT22是一款广泛使用的数字温湿度传感器,它结合了温度和湿度的测量功能,并且以数字信号的形式输出,这使得它在各种环境监测和控制系统中非常受欢迎。 DHT22传感器原理 1. 工作原理 DHT22
    的头像 发表于 09-03 16:06 1397次阅读

    温度传感器怎么测好坏_温度传感器的测量方法是什么

    温度传感器是测量温度的仪器,广泛应用于工业、科研、医疗等领域。本文将详细介绍温度传感器的测量方法和判断好坏的标准。 一、
    的头像 发表于 06-19 14:54 3490次阅读

    温度探头和温度传感器的区别是什么

    温度探头和温度传感器是两种不同的设备,它们在测量温度方面有着各自的特点和应用场景。本文将详细介绍温度探头和
    的头像 发表于 06-19 14:45 2313次阅读

    非接触温度传感器如何测量内部温度

    非接触温度传感器,又称为红外温度传感器,是一种通过测量物体表面发射的红外辐射来确定物体温度传感器
    的头像 发表于 06-19 14:43 1107次阅读

    温度传感器种类有哪些,原理是什么

    温度传感器是一种将温度变化转换为电信号的装置,广泛应用于工业、科研、医疗等领域。本文将详细介绍温度传感器的种类、原理及其应用。 一、
    的头像 发表于 06-19 11:02 1168次阅读

    水位温度传感器的作用和原理

    水位温度传感器是一种广泛应用于水处理、环境监测、农业灌溉、工业控制等领域的传感器。它能够实时监测水体的水位和温度,为相关领域提供重要的数据支持。本文将详细介绍水位
    的头像 发表于 06-19 10:34 1148次阅读

    温度传感器的原理及应用

    温度传感器是一种将温度变化转换为电信号的传感器,广泛应用于工业、农业、医疗、气象等领域。本文将详细介绍温度
    的头像 发表于 06-19 10:27 2673次阅读

    【电路百科】温度传感器pcb

    温度传感器PCB指的是集成了温度传感器的印刷电路。这种 PCB 可能包含温度
    的头像 发表于 05-07 17:36 853次阅读

    温度传感器的类型与设计技巧

    作者:DigiKey Editor 温度传感器是一种用来测量环境或物体温度的器件,它们在各种应用中都扮演着重要的角色,从家用电器到工业控制系统都有广泛应用,像是热水、干衣机、暖通空调
    的头像 发表于 05-05 10:29 2670次阅读
    <b class='flag-5'>温度</b><b class='flag-5'>传感器</b>的类型与设计技巧

    光纤温度传感器的原理 光纤温度传感器的应用

    光纤温度传感器的原理 光纤温度传感器的应用  光纤温度传感器是一种利用光纤的热学特性实现
    的头像 发表于 03-07 15:55 2922次阅读

    温度传感器电路图分享

    温度传感器是指能感受温度并转换成可用输出信号的传感器温度传感器
    的头像 发表于 01-04 18:25 1.6w次阅读
    <b class='flag-5'>温度</b><b class='flag-5'>传感器</b>电路图分享