1840【毕设课设】基于单片机温度控制直流电动机转速设计

基于单片机温度控制直流电动机转速设计

设计目的和意义

本设计旨在实现一个基于温度的电动机转速控制电路,通过AT89C51单片机和L298驱动模块,根据外部温度的变化,自动控制直流电动机的转速和转向。系统在温度大于45℃时电动机加速正转,温度大于75℃时全速正转;温度小于10℃时电动机加速反转,温度小于0℃时全速反转;温度在10℃-45℃之间时电动机停止转动。液晶显示屏1602LCD显示当前的温度值。

关键词

温度控制;直流电动机;AT89C51单片机;LCD1602显示器;L298驱动模块;DS18B20温度传感器
在这里插入图片描述
在这里插入图片描述
仿真、代码等资料下载地址:
https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

设计要求

  1. 温度控制电动机转速

    • 温度大于45℃时,电动机加速正转。
    • 温度大于75℃时,电动机全速正转。
    • 温度小于10℃时,电动机加速反转。
    • 温度小于0℃时,电动机全速反转。
    • 温度在10℃-45℃之间时,电动机停止转动。
    • 在1602LCD上显示当前温度值。
  2. 电路设计

    • 设计基于温度的电动机转速控制电路,并在仿真软件Proteus v7.5上运行。
    • 课程设计报告中附上仿真电路图和控制程序清单。

硬件电路设计

系统硬件电路包括温度传感器、单片机控制模块、LCD显示模块和电动机驱动模块。

硬件电路图

硬件电路图如图所示,包括温度传感器DS18B20、单片机AT89C51、LCD1602显示模块、L298电动机驱动模块和直流电动机。

硬件电路详细描述

  1. 温度传感器

    • 使用DS18B20温度传感器测量当前温度,并将温度值传输给单片机。
    • DS18B20的DQ引脚连接单片机的P3.7引脚,电源引脚连接+5V和地。
  2. 单片机控制模块

    • 采用AT89C51单片机作为控制核心,接收温度传感器的温度数据,并根据温度值控制电动机的转速和转向。
    • 单片机的P0端口连接LCD1602显示模块,用于显示当前温度值。
    • 单片机的P1.0和P1.1引脚连接L298驱动模块,用于控制电动机。
  3. LCD显示模块

    • 使用1602LCD显示模块显示当前温度值。
    • LCD1602的RS、RW、E和数据引脚分别连接单片机的P0端口。
  4. 电动机驱动模块

    • 使用L298驱动模块控制直流电动机的转速和转向。
    • L298的IN1、IN2引脚连接单片机的P1.0和P1.1引脚,ENA引脚连接+5V电源。
  5. 直流电动机

    • 直流电动机连接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显示当前温度值,单片机控制电动机的转速和转向。通过本次设计,我深入了解了单片机的工作原理和应用方法,掌握了硬件电路设计和软件编程的基本技能,增强了解决实际问题的能力。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值