冯聪2091224107Arduino智能小车(4)

2019-03-10 17:52

公司生产的单总线数字温度传感器。DSl820数字温度计提供 9 位(二进制)温度读数 指示器件的温度 信息经过单线接口送 入 DSl8B20 或从 DSl8B20 送出 因此从主机 CPU 到DSl820 仅需一条线(和地线) DSl820 的电源可以由数据线本身提供而不需要外部电源 因为每一个 DSl820 在出厂时已经给定了唯一的序号 因此任意多个 DSl820 可以存放在同一条单线总线上 这允许在许多不同的地方放置温度敏感器件 DSl820 的测量范围从-55 到+125 增量值为 0.5 可在 l s(典型值)内把温度变换成数字 。简单的理解DS18B20测温原理就是说把芯片把感知到的温度换成数值放在数据寄存器里面,要想得到寄存器里面的数据,只有按照DALLAS规定的一种时序才能正确传出数据,这种时序被称为单总线,CPU就可通过单总线协议,取得DS18B20里面的温度值。

在这里我就详细介绍一下DS18B20,他内部提供九位(二进制)温度读数,指示器件的温度。而且DS18B20的电源可以由数据线本身提供而不需要外部电源。每个DS18B20包括一个唯一的64位长的序号,该序号值存放在DS18B20内部的ROM重。开始的8位是产品类型编码,接着的48位才是每个器件唯一的序号,最后8位是前面56位的CRC码。DS18B20中还有用于贮存测得的温度值的两个8位存储器RAM,编号为0号和1号,1号用于存储温度值的符号,如果里面全是1则是代表温度为负数,如果全是0则代表是正数。而0号则用于存放温度值的补码,LSB(最低位)的“1”表示0.5摄氏度。将存储器中的二进制数求补再转换成十进制数并除以二就得到了温度的值(-550摄氏度至125摄氏度)。

不过好在我们只用一个DS18B20,所以不存在多个温度存储器需要的读ROM里面的序号,也就可以跳过ROM指令,直接执行DS18B20功能指令。

DS18B20温度读取参考步骤: DS18B20开始转换: (1)DS18B20复位。

(2)写入跳过ROM的字节命令。 (3)写入开始转换的功能命令。 (4)延迟大约750—900毫秒。

10

DS18B20读取暂存数据: (1)DS18B20复位。

(2)写入跳过ROM的字节指令。 (3)写入读暂存的功能命令。

(4)读入第0个字节 LS Byte,转换结果的低八位。 (5)读入第1个字节 MS Byte,转换结果的高八位。 (6)DS18B20复位,表示读取暂存结束。

数据求出十进制:

(1)整合LS Byte和MS Byte的数据。 (2)判断是否为正负数。

(3)求十进制值。正数乘0.0625,一位小数点乘0.625,二位小数点乘6.25。 (4)十进制的“个位”求出。

而至于具体的总线的时序问题便不再这里赘述了。 2.1.5 红外控制功能的实现 为了实现这个红外控制功能,我所选择的是38K红外接收模块,并且还带有了一个小遥控器以方便控制。要怎样实现控制呢,在这里我想要实现的目标是对小车行走进行控制,也就是控制小车前进,后退,左转,右转,要怎么实现呢。我前面的寻线也好,红外避障也好,都提供了一个队小车行走的控制函数,我们在这里进行调用就好了,这不是问题,那我们就来看看红外是怎样控制小车的,也就是怎样把信号传递给智能小车,然小车又是怎样识别并且做出相应动作的。 首先,红外遥控是由红外发射和红外接收系统组成的,我给出一个图来说明: 键盘 编码调制 解调 光电放大 单片机 红外发射 图2红外控制原理图 红外接收部分

11

这个图简洁的介绍了红外装置的工作原理,因为我所购买的红外模块会有一个遥控器,所以在发射部分不是我们的重点,接收部分才是我们所要重点考虑的地方。接收电路是一种集成红外接收和放大一体的红外接收模块,这就使我们使用起来非常方便,他能够完成从红外线接收到输出与TTL电平信号兼容的一系列工作,这个红红外模块共有三个引脚,信号线,VCC,GND。

在这里我们要了解一下红外的具体工作原理,红外发射的遥控器发射的38K红外载波信号是由遥控器里的编码芯片对其进行编码,我就用TC9012简单说明一下其编码,TC9012的一帧数据里面有32位码,其中有两次8位用户码,8位数据码,8位数据码的反码,以及最后位的同部位。发送编码的格式如下图:

图3红外编码模式图

我们就要想办法能够读出每个红外遥控器上按钮所代表的值。在这里我使用了一个红外遥控的库文件“IRremote”中的 “IRrecvDump”,利用这个库文件,然后将红外接收传感器连接到Arduino上,分别按下遥控器中的每个按钮,就会在监视窗中显示每个按钮的十六进制编码。

图4红外遥控编码图

12

这个表是我先一一对应每个按钮记录下十六进制数字之后再转换成十进制的数字以用来在编写程序时使用,我们现在已经知道了每个按钮的编码,那么我们就可以在程序中对每个按钮进行定义,让他们具有各种意义,比如让小车前进或后退或转弯。 不过限于红外发射的本质,也就是红外线,所以在控制范围上是有限制的,就好比家里的电视遥控器,必须对准了才能遥控,所以我就准备把红外接收头装在小车后面,我就在后面进行控制。其次当然还会有一定的距离限制。也就是这些限制导致红外能够使用的地方比较少,最开始像诺基亚等手机都是使用红外进行数据传输的,不过要手机相对,这就比较麻烦,所以就被淘汰了,改用非常方便的蓝牙进行传输了。 2.2 智能小车系统的结构框图 寻线传感器 避障传感器 红外遥控 智能小车 电机控制小车姿态

图5小车控制框图 这里是小车被三个传感器控制的运行状态,另外还有两个传感器的结果是要输出到电脑用专用软件的监视窗口去进行监视的,还有下面框图。

13

温度传感器 超声波传感器 智能小车 电脑监视窗口

图6小车控制框图2 一个智能小车,关键就在于他能够自主运行,所以需要通过芯片对他进行控制。他可以通过传感器就好比人类的眼睛嘴巴鼻子和耳朵,能够感知自然环境的变化从而做出相应的行动。 2.3 系统需要注意的几个要点 系统设计主要包括了硬件和软件两个方面,所以我们依据控制原理尽可能使其模块化分开设计,这样不仅便于调试,降低设计难度,还易于我们添加新的模块,增加功能,加强其扩展性。 在这里我们使用的是Arduino平台,Arduino平台优点非常多,因为开发板是意大利人已经设计好的,所以在这里我们可以非常方便的使用,各种传感器和扩展模块也能够便于使用。 在这里要要注意开发实物应该与论文同步进行,这样在遇到问题时能够随时进行改进,程序方面也应该尽量做上标注,这样也可以增加程序的可读性。 2.4 小结 本章主要讲述了我们的目的,主要是要达到哪些要求,这里阐述了寻线功能,避障功能,超声波传感器功能,温度传感器功能,红外控制功能。以及要实现他们的主要思路,这才是最后重要的,有了思路后面就会简单很多,哪怕遇到了困难也能找出问题所在并加以解决。

14


冯聪2091224107Arduino智能小车(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小缸径多缸增压柴油机发展综述

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: