西电A测|基于Arduino uno的温度检测控制仿真系统

西电A测|基于Arduino uno的温度检测控制仿真系统

  • 温度检测控制仿真系统
    • Proteus仿真电路图
    • Arduino IDE编写程序
    • 结果验证
    • 功能拓展

温度检测控制仿真系统

功能要求:Arduino UNO(Atmega328P)控制驱动直流电机,当环境温度低于预定的温度(摄氏25°)时,直流电机停止转动;当环境温度等于或高于预定的温度(摄氏25°)时,启动直流电机转动。同时,实时环境温度在LCD 上显示。LCD 第一行显示TEMPRATURE:第二行显示摄氏温度值。

Proteus仿真电路图

本次实验电路包含Arduino微控制器,LCD显示屏,L298直流电机驱动模块,LM35温度传感器。LM35可以将温度转化为电压输入,其关系为摄氏温度值 = (传感器值 /1024.0 )*500。L298直流电机驱动模块可以同时驱动两个电机转动,其引脚控制和功能见表。

IN1/IN3 IN2 /IN4 ENA/ENB 电机1/电机2
1 0 PWM 正转
1 1 PWM 制动
0 0 PWM 制动
0 1 PWM 反转

如果不需要对电机进行速度调控,则ENA和ENB不需要连接,否则需要接到Arduino uno带有PWM功能的数字引脚上。
西电A测|基于Arduino uno的温度检测控制仿真系统_第1张图片

Arduino IDE编写程序

#include
const int rs=12,en=11,d4=5,d5=4,d6=3,d7=2;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
int ena = 10;
int input1 = 6,input2 = 7;
void setup() {
  lcd.begin(16,2);
  lcd.print("TEMPERATURE");
  pinMode(input1,OUTPUT);
  pinMode(input2,OUTPUT);
}

void loop() {
  float temp;
  int tem;
  temp = analogRead(A0);
  temp = (temp/1024)*500;
  tem = int(temp+0.5);
  lcd.setCursor(0,1);
  lcd.print(tem);
  if(tem<25){
    digitalWrite(input1,LOW);
  }
  else{
    digitalWrite(input1,HIGH);
  }
}

结果验证

找到Arduino IDE编译产生的hex文件,在Porteus中将此文件置入ATmega328P中,即可开始仿真。当温度高于或等于25°时,电机开始工作。
西电A测|基于Arduino uno的温度检测控制仿真系统_第2张图片

功能拓展

Arduino uno和L298电机带有速度调控功能。现在,将本实验予以改进,电机开始工作时,转速将和温度成正相关,当温度为85°时,电机转速达到最高值。Arduino uno的PWM功能可以模拟一个0~5v变化的电压输出,以8为二进制表示。

#include
const int rs=12,en=11,d4=5,d5=4,d6=3,d7=2;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
int ena = 10;
int input1 = 6,input2 = 7;
void setup() {
  lcd.begin(16,2);
  lcd.print("TEMPERATURE");
  pinMode(input1,OUTPUT);
  pinMode(input2,OUTPUT);
}

void loop() {
  float temp;
  int tem;
  temp = analogRead(A0);
  temp = (temp/1024)*500;
  tem = int(temp+0.5);
  lcd.setCursor(0,1);
  lcd.print(tem);
  if(tem<25){
    digitalWrite(input1,LOW);
  }
  else{
    digitalWrite(input1,HIGH);
    if(tem*3<=255)
    analogWrite(ena,tem*3);
    else
    analogWrite(ena,255);
  }

仿真结果如下:
西电A测|基于Arduino uno的温度检测控制仿真系统_第3张图片
西电A测|基于Arduino uno的温度检测控制仿真系统_第4张图片

你可能感兴趣的:(Arduino,单片机,嵌入式硬件)