Arduino中文教程----认识LM35模块并制作实时温度计

in #utopian-io7 years ago (edited)

What Will I Learn?

  • 认识Arduino 的LM35温度传感器

  • 编写程序获取温度传感器的数值

  • 制作实时温度计

    GIF.gif

Requirements

  • Arduino UNO

    图片.png

  • Arduino IDE开发环境

    图片.png

  • Arduino LM35温度传感器

    图片.png

Difficulty

  • 基础

Tutorial Contents

一、认识Arduino 的LM35温度传感器及应用

LM35D温度传感器能够测量0-100摄氏度的温度,并以电压的数值输出。从0度开始温度每升高1°C,输出电压就会提高10mv,这样我们就能够使用Arduino的模拟引脚检测传感器的电压。得到电压之后再解算成温度数值。

LM35传感器多用于制作温控电路,温度控制电路由以下电路部分组成

  • 传感器电路
  • 信号调理电路
  • A/D采样电路
  • 单片机系统
  • 输出控制电路
  • 加温电路

整个电路的基本工作流程:

首先传感器电路获取当前环境的温度数值,然后将感受到的温度信号以电压形式输出到信号调理电路,信号经过调理后输入到A/D采样电路,由A/D转换器将数字量值送给单片机系统,单片机系统根据设计的温度要求判断是否需要接通加温电路。设计时以0℃为判别依据,当温度量值低于或等于0℃时,使加温电路接通。当温度量值高于0℃时,加温电路停止工作。

下面我们就先来实现整个电路的第一部分--传感器电路并制作实时温度计

二、编编写程序获取LM35温度传感器的数值

  • 连接Arudino UNO与LM35温度传感器

    如上图,LM35温度感器的引脚有三个

    • GND
    • VCC
    • VOUT
    Arduino UNODHT11温湿度传感器
    GNDGND
    5VVCC
    A0VOUT

    图片.png

  • 编写程序获取LM35温度感器的模拟信号

    • 定义变量

      int n;
      float vol;
      
    • setup()初始化。

      void setup() {
       Serial.begin(9600);         //使用9600速率进行串口通讯
      }
      
      
      • Serial.begin(9600); :使用串口打印方便调试
    • loop()写入主体函数

      void loop() {
        n = analogRead(A0);   
        vol = n * (5.0 / 1023.0*100);  
        Serial.print("temperature");
        Serial.print(vol);    
         Serial.print("C'");
        delay(2000);                         
      }
      
      
      • n : 直接使用analogRead()函数获取连接LM35模块的模拟引脚的数值,该引脚能读取到LM35模块检测到的电压。

      • vol :获取到LM35模块的电压数据,之后需要进行结算转化为温度数值。

        公式为:n * (5.0 / 1023.0*100)

      • Serial.println(vol); : 打印结算出来的温度数据,打印到串口显示框用于调试

  • 连接Arduino UNO至电脑

    图片.png

  • 编译并上传程序至Arduino UNO

    图片.png

  • 测试效果

    • 接上USB运行Arduino程序的时候,打开Arduino IDE的串口监视框

      图片.png

三、制作实时温度计

图片.png

定义变量

int n;
float vol;

setup()初始化

void setup() {
  Serial.begin(9600);  
}

loop()函数主体

void loop() {
  n = analogRead(A0);   
  vol = n * (5.0 / 1023.0*100);  
  Serial.print("temperature");
  Serial.print(vol);    
  Serial.print("C'");
  if(vol > 23){
    Serial.print("temp is high . notice!!!");
    Serial.print("temp is high . notice!!!");
    Serial.println("temp is high . notice!!!");
  }
  delay(500);                      
}

整合全部程序:

int n;
float vol;
void setup() {
  Serial.begin(9600);  
}
void loop() {
  n = analogRead(A0);   
  vol = n * (5.0 / 1023.0*100);  
  Serial.print("temperature");
  Serial.print(vol);    
  Serial.print("C'");
  if(vol > 23){
    Serial.print("temp is high . notice!!!");
    Serial.print("temp is high . notice!!!");
    Serial.println("temp is high . notice!!!");
  }
  delay(500);                            
}
  • 编译并上传程序测试效果

    GIF.gif

Curriculum



Posted on Utopian.io - Rewarding Open Source Contributors