

| 编号 | 名称 | 功能 |
| 1 | VCC | 电源正 |
| 2 | GND | 电源地 |
| 3 | SCL | 串行时钟输入 |
| 4 | SDA | 串行地址和数据输入/输出 |
MLX90614是一种红外温度计,用于非接触式温度测量。红外测温是根据被测物体的红外辐射能量来确定物体的温度,不与被测物体接触,具有不影响被测物体温度分布场,温度分辨率高、响应速度快、测温范围广、不受测温上限的限制、稳定性好等特点。适合于汽车空调、室内暖气、家用电器、手持设备以及医疗设备应用等。
MLX90614的出厂校准温度范围很广:环境温度为-40°C——125°C,目标温度为-70°C——380°C。测量值是传感器视场中所有物体的平均温度。在室温下,MLX90614的标准精确度为±0.5°C。

MLX90614由MLX81101红外热电堆传感器和包括含有稳压电路、低噪声放大器、A/D转换器、DSP单元、脉宽调制电路及逻辑控制电路的MLX90302信号处理芯片构成。
其工作原理为:红外热电堆传感器输出的温度信号经过内部低噪声、低失调的运算放大器(OPA)放大后经过A/D转换器(ADC)转换为17位数字信号通过可编程FIR及IIR低通数字滤波器(即DSP)处理后输出,输出结果存储在其内部RAM存储单元中。
单片机与MLX90614红外测温模块之间通信的方式是“类IIC”通信,意思就是通信方式跟IIC通信方式很像但又不是IIC,它有另外一个名字叫做SMBus。SMBus (System Management Bus)是 1995 年由 intel 公司提出的一种高效同步串行总线,SMBus 只有两根信号线:双向数据线和时钟信号线,容许 CPU 与各种外围接口器件以串行方式进行通信、交换信息,既可以提高传输速度也可以减小器件的资源占用,另外即使在没有SMBus 接口的单片机上也可利用软件进行模拟。
起始信号:SCL高电平期间,SDA从高电平切换到低电平
停止信号:SCL高电平期间,SDA从低电平切换到高电平

代码如下:
/****
*******I2C总线启动信号
*****/
void MLX90614_IIC_Start(void)
{
MLX90614_SDA = 1;
MLX90614_SCL = 1;
MLX90614_IIC_Delay(DELAY_TIME);
MLX90614_SDA = 0;
MLX90614_IIC_Delay(DELAY_TIME);
MLX90614_SCL = 0;
}
/****
*******I2C总线停止信号
*****/
void MLX90614_IIC_Stop(void)
{
MLX90614_SDA = 0;
MLX90614_SCL = 1;
MLX90614_IIC_Delay(DELAY_TIME);
MLX90614_SDA = 1;
MLX90614_IIC_Delay(DELAY_TIME);
}
发送应答:在接收完一个字节之后,主机在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答。
接收应答:在发送完一个字节之后,主机在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)。

代码如下:
/****
*******发送应答或非应答信号
*****/
void MLX90614_IIC_SendAck(bit ackbit)
{
MLX90614_SCL = 0;
MLX90614_SDA = ackbit;
MLX90614_IIC_Delay(DELAY_TIME);
MLX90614_SCL = 1;
MLX90614_IIC_Delay(DELAY_TIME);
MLX90614_SCL = 0;
MLX90614_SDA = 1;
MLX90614_IIC_Delay(DELAY_TIME);
}
/****
*******等待应答信号
*****/
bit MLX90614_IIC_WaitAck(void)
{
bit ackbit;
MLX90614_SDA = 1;
MLX90614_SCL = 1;
MLX90614_IIC_Delay(DELAY_TIME);
ackbit = MLX90614_SDA;
MLX90614_SCL = 0;
MLX90614_IIC_Delay(DELAY_TIME);
return ackbit;
}
发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位在前),然后拉高SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节。

代码如下:
/****
*******I2C总线发送一个字节数据
*****/
void MLX90614_IIC_SendByte(uchar byte)
{
uchar i;
MLX90614_SCL = 0;
for(i=0; i<8; i++)
{
if(byte & 0x80)
MLX90614_SDA = 1;
else
MLX90614_SDA = 0;
MLX90614_IIC_Delay(DELAY_TIME);
MLX90614_SCL = 1;
MLX90614_IIC_Delay(DELAY_TIME);
MLX90614_SCL = 0;
MLX90614_IIC_Delay(DELAY_TIME);
byte <<= 1;
}
MLX90614_IIC_WaitAck();
}
接收一个字节:SCL低电平期间,从机将数据位依次放到SDA总线上(高位在前),然后拉高SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)。

代码如下:
/****
*******I2C总线接收一个字节数据
*****/
uchar MLX90614_IIC_RecByte(bit ackbit)
{
uchar i, dat;
MLX90614_SDA = 1;
for(i=0; i<8; i++)
{
MLX90614_SCL = 1;
MLX90614_IIC_Delay(DELAY_TIME);
dat <<= 1;
if(MLX90614_SDA)
dat |= 1;
MLX90614_SCL = 0;
MLX90614_IIC_Delay(DELAY_TIME);
}
MLX90614_IIC_SendAck(ackbit);
return dat;
}

Slave Address是MLX90614的识别地址,当一个系统中只有一个mlx90614时,该地址默认为00h。
Command是命令,共有四种模式分别为访问RAM、访问EEPROM、读取标示符、进入SLEEP模式。这里我用的是访问RAM即存储温度数据的存储器。访问RAM的命令为000x xxxx,xxxxx代表要读取/写入的内存地址的低五位。
RAM中不能写入数据,只能进行读取,并且只有有限数目是客户感兴趣的。

注:TA是环境温度,TOBJ1是物体温度。
代码如下:
/****
*******MLX90614读温度数据函数
*******返回值:扩大10倍的温度值,最后一位代表小数位
*****/
uint Mlx90614_Read_Temp(void)
{
uchar Data_H,Data_L;
uint T,Temp;
EA = 0;
MLX90614_IIC_Start();
MLX90614_IIC_SendByte(MLX90614_SlaveAddress);
MLX90614_IIC_SendByte(0x07);
MLX90614_IIC_Start();
MLX90614_IIC_SendByte(MLX90614_SlaveAddress + 1);
Data_L = MLX90614_IIC_RecByte(MLX90614_ACK);
Data_H = MLX90614_IIC_RecByte(MLX90614_ACK);
MLX90614_IIC_Stop();
EA = 1;
/****温度换算****/
T = Data_H*256 + Data_L;
if(T*2 >= 27315)
Temp = (T*2-27315) / 10;
else
Temp = (27315-T*2) / 10;
Temp = Temp * 1.04; //体表温度与实际体温换算
return Temp;
}
首先初始化引脚,然后发送起始位,再发送从机设备地址写,接下来发送命令地址,重新发送一次起始位,再发送从机设备地址读,然后先读取低字节数据,再读取高字节数据,最后发送结束位结束本次数据的读取。将读取的高字节数据和低字节数据整合为一个数据,通过公式换算最终得到温度值。

1、实物图2、原理图3、原理介绍LCD1602:LCD1602液晶显示器是一种广泛使用的字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路及其扩展驱动电路,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。用于显示字母、数字和符号等的点阵式LCD,总共可以显示两行数据,每行可以显示16个数据。在哪显示:LCD1602可以显示16*2个字符且通过D0-D7八个引脚传输八位数据,每一个显示的位置都对应上图的一个地址。例如我想在第一行的第三个位置显示,那么就可以锁定上表中的“02”,换算成二进制就是00000010。听上去很简单,但是LCD1602有个特点就是写入显示地址时要
文章目录前言一、清单二、实现功能三、部分程序读取温度程序计算并返回温度值程序四、实现效果1、实物模块介绍2、正常测温展示3、超温报警展示五、源码及资料前言本次介绍的项目是基于STM32的人体红外测温枪的设计,大家参考可用于课程实验或毕业设计,希望对各位有所帮助!喜欢的小伙伴们可以加我企鹅:970484728互相学习,有任何问题欢迎来讨论!一、清单二、实现功能1.每当按下S2按键温度阈值加0.1,按下S3按键温度阈值减0.1。2.当红外测温传感器测得人体温度大于设定温度阈值,则红色LED亮和蜂鸣器响。3.测得温度大于温度阈值时,此时LOED第四行显示“温度超过阈值”,否则第四行不显示任何消息。三
最近设计了一个项目基于单片机的加湿器系统,与大家分享一下:一、基本介绍项目名:加湿器项目编号:mcuclub-jj-011单片机类型:STC89C52具体功能:1、通过DHT11获取湿度值,当湿度值低于设置最小值,则启动加湿器加湿,大于设置最大值,则停止加湿2、通过液位检测模块检测加湿器中是否还有水,如果没有,则自动停止加湿、声光提醒3、通过按键设置湿度上下限4、通过显示屏显示测量值、手动加湿、切换模式扩展功能:通过蓝牙模块将测量数据发送到手机端,并可以控制是否加湿、切换模式二、51实物图单片机型号:STC89C52板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本
红外传感器模块与Arduino连接原文地址Arduino红外传感器接口红外**接近传感器或红外传感器它发射红外光以感知周围环境,并可用于检测物体的运动。由于这是一个无源传感器,它只能测量红外辐射。如果您曾经尝试过设计避障机器人或任何其他基于接近检测的系统,那么您很可能已经知道这个模块。红外传感器引脚排列红外传感器有一个3针连接器,可将其连接到外部世界。连接如下:VCC连接到Arduino上的5V引脚的红外传感器的电源引脚。OUT引脚为5VTTL逻辑输出。低表示未检测到运动;高表示检测到运动。GND连接到Arduino的接地。红外运动传感器模块如何工作?红外传感器模块的工作非常简单,它由两个主要
摘要社会在不断进步,人类在不断追求,市场在不断变化,高科技应用含量决定着产品发展的新趋势和前景,智能化技术在电子产品领域的应用意义深远。随着电子产品的快速发展,家用电器也越来越偏向智能化,已经应用于实际中的有智能洗衣机,智能电饭锅,智能电磁炉等,而所用的智能化家用电器都用一个共同的特点,都是利用单片机作为中央控制单元。随着电子技术的日益发展,人们生活中的照明工具也在发生着巨大的变化。从普通电灯,白炽灯,到目前比较流行的LED灯,无不反映了人类科技的发展、社会的进步。随着环境问题的恶化,能源的减少,节能绿色环保的台灯,逐步走进了人们的生活。以前的台灯用途单一,而现在的人们需要一种多功能智能化的台
51单片机个人课程设计–基于stc89c52及红外遥控的测温智能电风扇个人学校的课程设计-智能电风扇,包含proteus原理图与源代码。代码部分由我个人写的也有普中实验中的代码块。3.1硬件设计主要器件:单片机AT89C52红外接收HS0038LCD1602温度测量DS18B20驱动集成芯片L298N导线及各类电阻红外遥控器功能设计:本智能风扇采用stc89c52为芯片,使用lcd1602作为信息输出设备,配备有红外遥控器,同时使用DS18B02作为温度收集元件,而使用L298N芯片来实现pwm控制电机不同转速。图1智能风扇仿真DS18B20图3DS18B20温度测量模块DS18B20dq为数
一、实物图 二、原理图编号名称功能1VCC电源正2TRIG触发控制信号输入3ECHO回响信号输出4GND电源地三、简介由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物体测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度3mm,模块包括超声波发射器、接收器与控制电路。基本工作原理:超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时
一、实物图(四相五线步进电机,型号:28BYJ-48-5V)二、原理图编号名称功能1IN1脉冲输入端2IN2脉冲输入端3IN3脉冲输入端4IN4脉冲输入端8GND电源地9COM续流二极管负极的公共端,接电源正13OT4脉冲输出端14OT3脉冲输出端15OT2脉冲输出端16OT1脉冲输出端三、简介(工作原理)步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速和角加速度与脉冲频率成正比(在非超载的情况下)。因此,步进电动机又称脉冲电动机。步进电机作为一种可控制用的特种电机,利用其没有累计误差
是否可以使用iOS(iPhone或iPad)与红外线设备(USB红外线、电视、手机等)通信?好吧,我知道这是可能的,因为AppStore中有许多远程/通用远程应用程序。我基本上想知道怎么做?有什么限制和要求?什么样的附加硬件是必需的?如果它在市场?我应该了解哪些协议(protocol)?哪些iOS库可以帮助我过程。谁能指出我正确的方向。谢谢。 最佳答案 任何使用IR作为Controller的设备要么是wifi,要么具有根据设备输出输出IR信号的自定义硬件。因此,如果不使用您自己的硬件,我认为这是不可能的
Closed.ThisquestiondoesnotmeetStackOverflowguidelines。它目前不接受答案。想改善这个问题吗?更新问题,使其成为StackOverflow的on-topic。9个月前关闭。Improvethisquestion我知道它适用于某些Android设备,但iPhone(4、4S、5、6...)也可以“看到”并显示其相机捕获的红外光吗? 最佳答案 所以显然只有前置摄像头(面对你的那个)允许它。(背面一个过滤红外线)。将电视Remote指向前置镜头,并打开相机应用程序,您会看到小而珍贵的光束。