基于单片机温度控制直流电动机转速设计
设计目的和意义
本设计旨在实现一个基于温度的电动机转速控制电路,通过AT89C51单片机和L298驱动模块,根据外部温度的变化,自动控制直流电动机的转速和转向。系统在温度大于45℃时电动机加速正转,温度大于75℃时全速正转;温度小于10℃时电动机加速反转,温度小于0℃时全速反转;温度在10℃-45℃之间时电动机停止转动。液晶显示屏1602LCD显示当前的温度值。
关键词
温度控制;直流电动机;AT89C51单片机;LCD1602显示器;L298驱动模块;DS18B20温度传感器
仿真、代码等资料下载地址:
https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8
设计要求
-
温度控制电动机转速:
- 温度大于45℃时,电动机加速正转。
- 温度大于75℃时,电动机全速正转。
- 温度小于10℃时,电动机加速反转。
- 温度小于0℃时,电动机全速反转。
- 温度在10℃-45℃之间时,电动机停止转动。
- 在1602LCD上显示当前温度值。
-
电路设计:
- 设计基于温度的电动机转速控制电路,并在仿真软件Proteus v7.5上运行。
- 课程设计报告中附上仿真电路图和控制程序清单。
硬件电路设计
系统硬件电路包括温度传感器、单片机控制模块、LCD显示模块和电动机驱动模块。
硬件电路图
硬件电路图如图所示,包括温度传感器DS18B20、单片机AT89C51、LCD1602显示模块、L298电动机驱动模块和直流电动机。
硬件电路详细描述
-
温度传感器:
- 使用DS18B20温度传感器测量当前温度,并将温度值传输给单片机。
- DS18B20的DQ引脚连接单片机的P3.7引脚,电源引脚连接+5V和地。
-
单片机控制模块:
- 采用AT89C51单片机作为控制核心,接收温度传感器的温度数据,并根据温度值控制电动机的转速和转向。
- 单片机的P0端口连接LCD1602显示模块,用于显示当前温度值。
- 单片机的P1.0和P1.1引脚连接L298驱动模块,用于控制电动机。
-
LCD显示模块:
- 使用1602LCD显示模块显示当前温度值。
- LCD1602的RS、RW、E和数据引脚分别连接单片机的P0端口。
-
电动机驱动模块:
- 使用L298驱动模块控制直流电动机的转速和转向。
- L298的IN1、IN2引脚连接单片机的P1.0和P1.1引脚,ENA引脚连接+5V电源。
-
直流电动机:
- 直流电动机连接L298驱动模块的OUT1、OUT2引脚,实现正转和反转控制。
系统软件设计
系统软件设计包括温度检测程序、显示程序、控制程序和主程序设计。
温度检测程序
温度检测程序负责读取DS18B20温度传感器的温度值,并将温度值传输给单片机。
显示程序
显示程序负责在LCD1602上显示当前的温度值。
控制程序
控制程序负责根据温度值控制电动机的转速和转向。
主程序设计
主程序负责系统的初始化和主循环,包括温度检测、显示更新和控制执行。
系统仿真与调试
系统软件程序的调试通过KEIL编程软件进行,编写并调试源程序,实现各项功能。系统硬件电路的仿真与调试通过Proteus v7.5仿真软件进行,仿真硬件电路的工作情况,验证设计的正确性。
仿真电路图
仿真电路图如图所示,包括温度传感器DS18B20、单片机AT89C51、LCD1602显示模块、L298电动机驱动模块和直流电动机。
控制程序清单
#include <reg51.h>
#include "lcd1602.h"
#include "ds18b20.h"
sbit Motor1 = P1^0; // 电动机控制引脚1
sbit Motor2 = P1^1; // 电动机控制引脚2
void delay(unsigned int ms) {
unsigned int i, j;
for(i = ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
void main() {
float temperature;
unsigned char temp_str[16];
LCD_Init();
DS18B20_Init();
while(1) {
temperature = DS18B20_GetTemp();
sprintf(temp_str, "Temp: %.1fC", temperature);
LCD_SetCursor(0, 0);
LCD_WriteString(temp_str);
if (temperature > 75) {
Motor1 = 1;
Motor2 = 0;
} else if (temperature > 45) {
Motor1 = 1;
Motor2 = 0;
delay(200); // 加速正转
} else if (temperature < 0) {
Motor1 = 0;
Motor2 = 1;
} else if (temperature < 10) {
Motor1 = 0;
Motor2 = 1;
delay(200); // 加速反转
} else {
Motor1 = 0;
Motor2 = 0;
}
delay(500);
}
}
结果与讨论
通过对系统的调试和测试,验证了系统的各项功能。温度传感器DS18B20能够准确测量当前温度,LCD1602显示模块实时显示温度值,单片机根据温度值控制电动机的转速和转向,系统工作稳定、可靠,达到了设计要求。
总结
本设计通过单片机实现了基于温度的电动机转速控制系统,具有控制精度高、性能稳定可靠、操作方便等优点。系统通过温度传感器测量温度,LCD1602显示当前温度值,单片机控制电动机的转速和转向。通过本次设计,我深入了解了单片机的工作原理和应用方法,掌握了硬件电路设计和软件编程的基本技能,增强了解决实际问题的能力。