转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi

欢迎加入讨论群 64770604

一、本次实验所需器材

1、Arduino板 :https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-15820725129.16.AtgoEm&id=545093340395

2、1602液晶板:http://www.cnblogs.com/xiaowuyi/p/3390024.html(或者http://wikicode.net/?p=232)已经介绍过。

3、DS18b20数字温度传感器:多数入门学习时会使用LM35温度传感器(该传感器为模拟信号,需转换),由于本人在最初购买时没有注意,直接买了DS18b20,所以就使用了这个传感器。

(1)实物及管脚排列图

       

面对平面,左边为接地,中间DQ为数字信号输入/输出端,VDD为外接供电电源输入端,电源供电 3.0~5.5V (在寄生电源接线方式时接地)。

(2)DS18B20的硬件接口非常简单。供电方式为计生电源供电或外部供电。寄生电源供电(连接方法如下图)的原理是在数据线为高电平的时候“窃取”数据线的电源,电荷被存储在寄生供电电容上,用于在数据线为低的时候为设备提供电源。需要注意的是,DS18B20在进行温度转换或者将高速缓存里面的数据复制到EEPROM中时,所需的电流会达到1.5mA,超出了电容所能提供的电流,此时可采用一个MOSFET三极管来供电。

当DS18B20采用外部供电时,只需将其数据线,与单片机的一位双向端口相连就可以实现数据的传递。

注意:当温度高于100℃ 时,不能使用寄生电源,因为此时器件中较大的漏电流会使总线不能可靠检测高低电平,从而导致数据传输误码率的增大。

更加详细的DS18B20介绍,可查阅技术手册,这里不在详细记录。

4、LED:3个

5、电阻:1KΩ(1个) 4.7KΩ(1个)

6、杜邦线:若干

7、面包板:一个

二、温度传感器实验

1、硬件连接方法

上节驱动液晶是使用的手工编写代码,这次我们直接使用arduino自带的LiquidCrystal库来进行驱动,此库文件允许arduino控制板控制基于Hitachi HD44780或与之相兼容芯片大部分的液晶,可以工作于4bit或者8bit状态。下图为我们所使用的arduino的LiquidCrystal库文件位置,只有这里显示的库文件,arduino才可以调用。当然也可以自己导入库文件。另外,这里需要使用OneWire库和DallasTemperature库(读取相应地址传感器),这两个库需要下载后,自己导入。

连接图为:

2、代码

#include <LiquidCrystal.h>
#include <DallasTemperature.h>
#include <OneWire.h> #define ONE_WIRE_BUS 8
LiquidCrystal lcd(, , , , , );//设置接口
OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void)
{
lcd.begin(, ); //初始化LCD delay(); //延时1000ms
sensors.begin();
} void loop(void)
{
sensors.requestTemperatures(); // Send the command to get temperatures
lcd.clear(); //清屏
lcd.setCursor(,);
lcd.print("Local Temperature");
lcd.setCursor(, ) ; //设置光标位置为第二行第一个位置
lcd.print(" is ");
lcd.setCursor(, ) ;
lcd.print( sensors.getTempCByIndex()); //获取温度
// delay(1000);
lcd.print((char)); //显示o符号
lcd.print("C"); //显示字母C
delay();
}

3、实验效果

从实验效果来看,温度显示正常。

三、简单感温杯实验

感温杯可以直观的知道杯内水温的高低,当水温超过一定温度时,会有相应的灯亮起以提示水温。结合上面的实验,只要在上面的电路中加入几个LED灯用来显示水温即可。

1、设计思路

由于没有多种颜色的LED灯进行实验,因此本实验使用三个LED灯,用亮灯的个数来表示水温。当水温高于41度时,三个灯同时亮起,表示温度过高;当水温界于31度与40度之间,两个灯亮起,表示水温刚好;当水温低于31底时,一个灯亮起,表示水温过低。

2、硬件连接图

3、代码

#include <LiquidCrystal.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#define ONE_WIRE_BUS 8
LiquidCrystal lcd(, , , , , );//设置接口
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire); void setup(void)
{
pinMode(,OUTPUT);
pinMode(,OUTPUT);
pinMode(,OUTPUT);
lcd.begin(, ); //初始化LCD
delay(); //延时1000ms
sensors.begin();
} void loop(void)
{
sensors.requestTemperatures();
if (sensors.getTempCByIndex()<=31.00)
{
digitalWrite(,HIGH);
digitalWrite(,LOW);
digitalWrite(,LOW);
}
else if (sensors.getTempCByIndex()>31.00 && sensors.getTempCByIndex()<=41.00)
{
digitalWrite(,HIGH);
digitalWrite(,HIGH);
digitalWrite(,LOW);
}
else
{
digitalWrite(,HIGH);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
} lcd.clear(); //清屏
lcd.setCursor(,);
lcd.print("Local Temperature");
lcd.setCursor(, ) ; //设置光标位置为第二行第一个位置
lcd.print(" is ");
lcd.setCursor(, ) ;
lcd.print( sensors.getTempCByIndex()); //显示温度小数点后一位
// delay(1000);
lcd.print((char)); //显示o符号
lcd.print("C"); //显示字母C
delay(); }

4、实验效果

从实验效果来看,当把传感器放入水杯后,温度上升,从开始亮一个灯,到亮三个灯。当传感器从水杯中取出后,温度开始下降,从亮三个灯到亮一个灯,由于本人视频录制水平有限,所以在录制过程中效果体现的不是很明显。

从效果看,还存在一个问题,就是温度上升和下降的速度比较慢,如何能上其瞬间测量出实际温度,还没想清楚。

Arduino入门笔记(6):温度传感器及感温杯实验的更多相关文章

  1. Arduino入门笔记(5):1602液晶实验(实现时钟)

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino板 https://item.taoba ...

  2. Arduino入门笔记(4):用蜂鸣器演奏音乐并配有LED闪烁

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino板 https://item.taoba ...

  3. Arduino入门笔记(3):单LED闪烁

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 在搭建好arduino开发环境(http://www.cnblogs.com/xi ...

  4. Arduino入门笔记(1):认识Arduino

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 各种网站论坛里经常看到网友DIY各种遥控小车.机器人什么的,一直很好奇,很想学习一 ...

  5. Arduino入门笔记(2):Arduino的开发和virtualbreadboard仿真环境

    欢迎加入讨论群 64770604 1.开发环境 (1)下载开发环境 Arduino的开发环境从http://arduino.cc/en/Main/Software官网下载即可,分为windows版本. ...

  6. Arduino入门笔记【1】

    刚刚接触这个东西只知道这是类似于单片机的开发板,可以做一些单片机实现或者不能实现的东西,但是比单片机要简单得多. Arduino到底是什么? 维基百科上的描述是:Arduino是一块开发板的微控制器和 ...

  7. Arduino入门笔记(9):蓝牙模块及第一辆蓝牙遥控小车

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino UNO板 https://item.t ...

  8. Arduino入门笔记(8):利用12864和ADXL345学习重力感应控制

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.Arduino UNO板 https://item.t ...

  9. Arduino入门笔记(7):利用1602、1302实现时钟和定时器

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 常常听到老妈在做饭时说“开锅15分钟后叫我一下”,为何不做个定时器,来提醒老妈呢 ...

随机推荐

  1. WebSocket 和 Golang 实现聊天功能

    http://www.open-open.com/lib/view/open1416379948711.html 这个示例应用程序展示了如何使用 WebSocket, Golang 和 jQuery  ...

  2. springboot中使用分页,文件上传,jquery的具体步骤(持续更新)

    分页: pom.xml     加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <arti ...

  3. JavaScript程序的执行顺序

    JavaScript程序的执行顺序:同步==>异步==>回调 同步是阻塞模式,异步是非阻塞模式.     同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个 ...

  4. jQuery匿名函数$(function(){ }

    搬运原地址:https://zhidao.baidu.com/question/473318430.html $(function(){ }实际上是匿名函数.这是JQuery的语法,$表示JQuery ...

  5. ASP.NET MVC中的路由IRouteConstraint方法应用实例

    在如下代码的写法中: public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { ro ...

  6. 原生Feign使用详解

    一,简介 Feign使得 Java HTTP 客户端编写更方便.Feign 灵感来源于Retrofit.JAXRS-2.0和WebSocket.Feign最初是为了降低统一绑定Denominator到 ...

  7. java8完全解读一

    java8完全解读 java8完全解读前言java8的一些新特性1.为什么要用java8?1.1首先想到的逻辑应该是如下1.2使用策略模式来解这个问题1.3使用策略模式和内部类来解决问题1.4使用策略 ...

  8. Maven学习(四)-- Maven的核心概念

    摘自:http://www.cnblogs.com/xdp-gacl/p/4051819.html 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1. ...

  9. markdown 一分钟入门

    markdown 很好的一门标记语言 语法简单,记住下面的就入门了,一分钟不到 使用范围广,各式各样的编辑器支持markdown,评论也是支持的, 一般文档后缀为.md markdown 基本用法记住 ...

  10. WBS 与 甘特图

    WBS:工作分解结构(Work Breakdown Structure) 创建WBS:创建WBS是把项目 交付成果和项目工作分解成较小的,更易于管理的组成部分的过程. WBS是项目管理重要的专业术语之 ...