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

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

3天内不再提示

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

454398 来源:网络整理 作者:佚名 2019-11-06 10:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:

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

    文章

    3105

    浏览量

    162451
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195957
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    不同温度传感器的类型和公差

    温度传感器类型和公差:传感器公差和温度系数的组合定义了温度传感器
    的头像 发表于 11-24 17:47 491次阅读
    不同<b class='flag-5'>温度</b><b class='flag-5'>传感器</b>的类型和公差

    TMP114数字温度传感器技术解析与应用指南

    Texas Instruments TMP114数字温度传感器是一款高精度I^2^C兼容数字温度传感器,采用超薄(0.15mm)4引脚封装。
    的头像 发表于 10-06 15:52 979次阅读
    TMP114数字<b class='flag-5'>温度</b><b class='flag-5'>传感器</b>技术解析与应用指南

    Texas Instruments TMP110兼容I2C的数字温度传感器数据手册

    Texas Instruments TMP110兼容I^2^C数字温度传感器采用超小型 (0.64mm ^2^ ) 5引脚封装。封装的小尺寸和高度优化了体积受限的系统,在这种情况下,DSBGA封装
    的头像 发表于 07-25 09:24 504次阅读
    Texas Instruments TMP110<b class='flag-5'>兼容</b>I2C的数字<b class='flag-5'>温度</b><b class='flag-5'>传感器</b>数据手册

    GX75C数字温度传感器兼容TMP75C

    GX75C是一款可低压工作(1.8V)且引脚与寄存完全兼容主流 x75 型号的全集成数字式温度传感器。可兼容TMP75C,TMP75,AD
    的头像 发表于 07-17 11:10 405次阅读
    GX75C数字<b class='flag-5'>温度</b><b class='flag-5'>传感器</b>可<b class='flag-5'>兼容</b>TMP75C

    数据中台实现Modbus温度传感器对接到IOT平台

    1. 需求分析 用户需求:将Modbus协议的温度传感器数据接入IoT平台,实现数据采集、协议转换、传输、存储及可视化分析。关键挑战包括: 协议兼容性:温度
    的头像 发表于 05-27 11:41 519次阅读
    数据中台实现Modbus<b class='flag-5'>温度</b><b class='flag-5'>传感器</b>对接到IOT平台

    选择温度传感器的考虑因素

    温度传感器在众多应用场景中扮演着重要角色,包括消费电子产品、环境监测和工业加工。为确保温度读数准确,选择合适的温度传感器至关重要。市场上有各
    的头像 发表于 04-09 09:13 1521次阅读
    选择<b class='flag-5'>温度</b><b class='flag-5'>传感器</b>的考虑因素

    NTC温度传感器有哪几个温度特性

    NTC温度传感器是由NTC(负温度系数)热敏电阻作为温感元件组装而成的温度传感器。其温度特性主要
    的头像 发表于 04-02 09:46 1102次阅读
    NTC<b class='flag-5'>温度</b><b class='flag-5'>传感器</b>有哪几个<b class='flag-5'>温度</b>特性

    通过Arduino Nano Matter开发构建智能卷帘系统

    Alexa 语音 AI 进行控制,并将传感器数据集成到开源 Home Assistant 软件和 Arduino Cloud 中,以实现更高级的自动化和实时监控。无论您是经验丰富的开发者,还是刚刚入门的新手,这个项目将帮助您使家居变得更加智能和互联。
    的头像 发表于 02-28 09:46 915次阅读
    通过<b class='flag-5'>Arduino</b> Nano Matter开发<b class='flag-5'>板</b><b class='flag-5'>构建</b>智能卷帘系统

    超高温NTC温度传感器

    超高温NTC温度传感器是一种耐高温的温度传感器,其电阻阻值会随着温度升高而快速降低,这特性可以使得我们通过测量其电阻值来推算出当前
    的头像 发表于 02-11 13:13 842次阅读
    超高温NTC<b class='flag-5'>温度</b><b class='flag-5'>传感器</b>

    NTC温度传感器时刻监测变频

    在变频中,NTC温度传感器是非常重要的元器件。通常用于监测变频内部温度,以进行温度保护和控制
    的头像 发表于 02-08 14:32 1025次阅读
    NTC<b class='flag-5'>温度</b><b class='flag-5'>传感器</b>时刻监测变频<b class='flag-5'>器</b>

    防爆温度传感器的奥秘之处

    在易燃易爆的工业环境中,温度监测不仅是常规操作,更是安全生产的基石。而防爆温度传感器,作为这一领域的核心设备,凭借其独特的工作原理和广泛的应用场景,成为了工业生产中不可或缺的一部分。本文将深入探讨
    的头像 发表于 01-21 09:53 1063次阅读

    温度传感器常用规格参数

    温度传感器是一种用于测量和记录温度的设备,其广泛应用于各种行业和领域,如工业、医疗、消费电子等。为了满足不同应用的需求,温度传感器具有多种规
    的头像 发表于 01-03 18:25 4037次阅读

    Matter占用传感器强化智能家居自动化

    本项目展示了如何构建一个支持Matter智能家居无线连接标准的占用传感器(occupancy sensor),用于基于房间占用状态自动控制照明。该传感器参考设计是使用新发布的兼容 Ma
    的头像 发表于 12-24 09:50 1092次阅读

    ACE无线温度电流复合传感器

    产品概述:  ACE100无线温度电流复合传感器主要用于低压开关柜输电电缆的的温度和电流的检测。传感器采用内部电池和电磁取能的双供电方式,快速准确的测量低压电缆的
    的头像 发表于 12-20 15:27 785次阅读
    ACE无线<b class='flag-5'>温度</b>电流复合<b class='flag-5'>传感器</b>

    智能马桶水温NTC温度传感器

    随着科技不断进步,智能家居产品逐渐走进我们生活。其中,智能马桶作为一款高科技产品,受到越来越多人青睐。水温控制系统作为智能马桶重要组成部分,其需安装NTC温度传感器来实现精准水温控制。 在智能马桶
    发表于 12-20 11:55