STM32学习笔记———几种简单传感器的数据读取

引言

传感器正如计算机的眼睛。从广义上讲,传感器就是一种能感知外界信息,并将这些信息按照一定规律转换成可用的电信号或其他形式的输出信号的装置,达到对信息的存储,传输,控制的目的。本文着重分析如何通过单片机分析电信号时序图实现对传感器的控制与传感器采集信息的读取

一.HC-SR04超声波测距模块

VCC引脚:接5V电源

GND引脚:接地线

TRIG:触发信号引脚,单片机给超声波模块一个信号,超声波信号就会工作

ECHO引脚:回声信号 引脚,当超声波模块已经测距成功后,通过该引脚告诉单片机当前超声波传播距离

从时序图可以分析出,未开始工作时,触发信号与输出回响信号均处于低电平,随后触发信号引脚发出一段时间为10微秒的高电平后拉低,表示通信开始,随后模块内部将发出超声播脉冲,当回响信号引脚接收到超声波脉冲后,,将输出一段时间的高电平,通过检测高电平时间既可以得出检测距离三.距离计算

超声波在空气中传播的速度约为三百四十米每秒,超声波模块测距误差约为3mm,于此可得计算公式如下:

该公式表明,该模块的最短测距时间单位为9微秒,距离单位为3mm

四.代码

二.DHT11温湿度传感器

一.模块简介

二.时序图

1.

DATA引脚用于微处理器与DHT11之间的通讯与同步,采用单总线数据格式,一次通信时间4ms左右,数据分为整数部分和小数部分,具体格式在下面说明。

一次完整的数据传输为40bit,高位先出。

数据格式:

8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和

数据传输正确时校验和数据等于”8bit湿度整数数据,8bit湿度小数数据,8bit温度整数数据,8bit温度小数数据”之和的末八位

  1. 通信过程

通信开始

数据判断

三.具体代码

三.红外

一.红外线

红外线是波长介于微波与可见光之间的电磁波,波长在760纳米到1毫米之间,是波形比红光长的非可见光。自然界中一切物体都在不断辐射红外线。当然,虽然都是在辐射红外线,但不同的物体辐射的强度是不一样的,正是利用了这一点将红外线运用到实际开发之中

1.红外发射管

红外发射管很常用,在我们的遥控器上都可以看到,它类似发光二极管,但是它发射出来的是红外光,是我们肉眼所看不到的。我们学过发光二极管的亮度会随着电流的增大而增加,同样的道理,红外发射管发射红外线的强度也会随着电流的增大而增强

2.红外接收管

红外接收管内部是一个具有红外光敏感特征的 PN 节,属于光敏二极管,但是它只对红外光有反应。无红外光时,光敏管不导通,有红外光时,光敏管导通形成光电流,并且在一定范围内电流随着红外光的强度的增强而增大

二.红外遥控技术

远程遥控技术又称为遥控技术,是指实现对被控目标的遥远控制,在工业控制、航空航天、家电领域应用广泛。

红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机和手机系统中。

随着家用电器、视听产品的普及,红外线遥控器已被广泛使用在各种类型的家电产品上(如遥控开关、智能开关等)。其具有体积小、抗干扰能力强、功耗低、功能强、成本低等特点,在工业设备中也得到广泛应用。一般而言,一个通用的红外遥控系统由发射和接收两大部分组成

2.基本原理

通常红外遥控为了提高抗干扰性能和降低电源消耗,红外遥控器常用载波的方式传送二进制编码,常用的载波频率为38KHz,这是由发射端所使用的455KHz晶振来决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455KHz÷12≈37.9KHz≈38KHz。也有一些遥控系统采用36KHz、40 KHz、56 KHz等,一般由发射端晶振的振荡频率来决定。所以,通常的红外遥控器是将遥控信号(二进制脉冲码)调制在38KHz的载波上,经缓冲放大后送至红外发光二极管,转化为红外信号发射出去的。

二进制脉冲码的形式有多种,其中最为常用的是PWM码(脉冲宽度调制码)和PPM码(脉冲位置调制码,脉冲串之间的时间间隔来实现信号调制)。如果要开发红外接收设备,一定要知道红外遥控器的编码方式和载波频率,我们才可以选取一体化红外接收头和制定解码方案

红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。

发射端

一般由指令键(或操作杆)、指令编码系统、调制电路、驱动电路、发射电路等几部分组成。当按下指令键或推动操作杆时,指令编码电路产生所需的指令编码信号,指令编码信号对载波进行调制,再由驱动电路进行功率放大后由发射电路向外发射经调制定的指令编码信号。

接收端

一般由接收电路、放大电路、调制电路、指令译码电路、驱动电路、执行电路(机构)等几部分组成。接收电路将发射器发出的已调制的编码指令信号接收下来,并进行放大后送解调电路,解调电路将已调制的指令编码信号解调出来,即还原为编码信号。指令译码器将编码指令信号进行译码,最后由驱动电路来驱动执行电路实现各种指令的操作控制。

3、编码格式

现有的红外遥控包括两种方式:PWM(脉冲宽度调制)和PPM(脉冲位置调制)。

  两种形式编码的代表分别为NEC 和PHILIPS 的RC-5、RC-6 以及将来的RC-7。

  PWM(脉冲宽度调制):以发射红外载波的占空比代表“0”和“1”。为了节省能量,一般情况下,发射红外载波的时间固定,通过改变不发射载波的时间来改变占空比。例如常用的电视遥控器,使用NEC upd6121,其“0”为载波发射0.56ms,不发射0.56ms;其“1”为载波发射0.56ms,不发射1.68ms;此外,为了解码的方便,还有引导码,upd6121 的引导码为载波发射9ms,不发射4.5ms。upd6121 总共的编码长度为108ms。

  但并不是所有的编码器都是如此,比如TOSHIBA 的TC9012,其引导码为载波发射4.5ms,不发射4.5ms,其“0”为载波发射0.52ms,不发射0.52ms,其“1”为载波发射0.52ms,不发射1.04ms。

  PPM(脉冲位置调制):以发射载波的位置表示“0”和“1”。从发射载波到不发射载波为“0”,从不发射载波到发射载波为“1”。其发射载波和不发射载波的时间相同,都为0.68ms,也就是每位的时间是固定的。

  通过以上对编码的分析,可以得出以某种固定格式的“0”和“1”去学习红外,是很有可能不成功的。即市面上所宣传的可以学习64 位、128 位必然是不可靠的。

  另外,由于空调的状态远多于电视、音像,并且没有一个标准,所以各厂家都按自己的格式去做一个,造成差异更大。比如:美的的遥控器采用PWM 编码,码长120ms 左右;新科的遥控器也采用PWM 编码,码长500ms 左右。如此大的差异,如果按“位”的概念来讲,应该是多少位呢?64?128?显然都不可能包含如此长短不一的编码。

对于电视、音响等,一般使用专用的遥控芯片,比nec,philips,toshiba,sanyo,mitsubish,pana sonic 的芯片,其编码格式固定,一个键只有一个编码,学习比较容易。

  而空调不一样,各家空调厂商都是按自己的要求用cpu 做遥控芯片,编码形式就有很多种。比如可能没有引导码(电视音响类都有)、校验方式取累加和(电视音响类一般取反码)等。因为空调的状态多,必须一次发送完毕,有制冷、温度、风速、自动、定时、加湿、制热等,所以编码很长,并且同一个按键,在不同状态下发送的编码不一样,造成学习上的困难。

红外遥控器的编码格式通常有两种格式:NEC 和RC5。

4、NEC协议

1.NEC 格式的特征:

● 使用38 kHz 载波频率

● 引导码间隔是9 ms + 4.5 ms

● 使用16 位客户代码

● 使用8 位数据代码和8 位取反的数据代码

2.NEC时序图

*码+反码=225

三.NEC协议具体代码

由于红外数据的随机产生,一般需要把红外接收函数放在外部中断函数中,外部中断设置为下降沿触发,表示开始接收到红外线数据

物联沃分享整理
物联沃-IOTWORD物联网 » STM32学习笔记———几种简单传感器的数据读取

发表评论