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

in utopian-io •  7 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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order: