0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于51单片机的DS18B20温控风扇设计方案(原理图+源码+仿真+教程)

基于51单片机的DS18B20温控风扇设计方案(原理图+源码+仿真+教程)

来源: 电路城
2021-11-25
类别:工业控制
eye 3
文章创建人 拍明

原标题:基于51单片机的DS18B20温控风扇设计方案(原理图+源码+仿真+教程)

基于51单片机的DS18B20温控风扇设计方案

一、设计背景与需求分析

在现代电子设备及工业控制领域,温度管理是保障系统稳定运行的关键环节。传统风扇控制多依赖机械式温控开关,存在精度低、响应慢、无法智能化调节等缺陷。基于51单片机的DS18B20温控风扇系统通过集成高精度数字温度传感器与微控制器,实现了环境温度的实时监测与风扇转速的动态调节,具有低成本、高可靠性、易扩展等优势。本设计适用于智能家居散热、工业设备温控、实验室环境调节等场景,可有效提升能源利用效率并延长设备寿命。

image.png

二、核心元器件选型与功能解析

1. 主控芯片:STC89C52单片机

  • 型号选择:STC89C52作为增强型51内核单片机,兼容传统AT89C52指令集,但具备ISP在线编程功能,支持USB转串口下载,无需专用编程器。其8KB Flash存储空间可满足基础温控程序需求,32个I/O口资源丰富,便于连接外设。

  • 核心优势

    • 抗干扰能力强,适应工业环境。

    • 低功耗设计,工作电压范围3.3V-5.5V,支持电池供电场景。

    • 内置看门狗定时器,提升系统稳定性。

2. 温度传感器:DS18B20

  • 型号选择:DS18B20为一线制数字温度传感器,采用TO-92封装,支持-55℃至+125℃宽温域测量,精度±0.5℃。其单总线协议仅需1根数据线即可完成通信,简化硬件设计。

  • 核心功能

    • 内部集成12位ADC,直接输出数字信号,无需外接ADC芯片。

    • 支持寄生电源模式,可通过数据线供电,减少布线复杂度。

    • 每个器件具备唯一64位ROM编码,支持多传感器级联。

3. 驱动模块:ULN2803达林顿管阵列

  • 型号选择:ULN2803为8通道NPN达林顿晶体管阵列,单路驱动电流500mA,耐压50V,可承受瞬间反向电动势。其内部集成续流二极管,适合驱动感性负载(如直流电机)。

  • 核心作用

    • 隔离单片机I/O口与电机,防止反向电流损坏芯片。

    • 提供足够驱动能力,支持12V直流风扇全速运转。

4. 显示模块:共阳极四位数码管

  • 型号选择:采用5641AH四位共阳极数码管,段码电流10mA,位码电流5mA,亮度适中。其共阳极设计简化驱动电路,通过三极管(如9012)实现位选控制。

  • 核心功能

    • 实时显示环境温度与设定阈值,分辨率0.1℃。

    • 支持动态扫描显示,降低I/O口占用。

5. 按键模块:轻触开关

  • 型号选择:采用6mm×6mm贴片轻触开关,行程1.5mm,触点寿命≥10万次。其低功耗特性与长寿命适合嵌入式系统。

  • 核心作用

    • 提供“设置”“加”“减”三个按键,实现温度阈值的手动调整。

    • 结合软件消抖算法,避免机械抖动误触发。

三、硬件电路设计

1. 系统架构图

系统由STC89C52最小系统、DS18B20测温电路、ULN2803驱动电路、数码管显示电路、按键输入电路及电源模块构成。核心信号流为:DS18B20采集温度→单片机处理→PWM输出→ULN2803驱动风扇→数码管显示状态。

2. 关键电路设计

(1)DS18B20接口电路

  • 接线方式:DS18B20的DQ引脚通过4.7kΩ上拉电阻接至单片机P1.0口,VDD接5V,GND接地。

  • 设计要点

    • 单总线协议需严格遵循时序要求,复位脉冲宽度≥480μs,响应脉冲≥60μs。

    • 多传感器级联时,需通过ROM命令匹配目标器件。

(2)ULN2803驱动电路

  • 接线方式:ULN2803的1-8输入引脚接单片机P2.0-P2.7,输出引脚接风扇正极,COM端接12V电源。

  • 设计要点

    • 风扇负极直接接地,通过控制输入引脚电平实现启停。

    • PWM信号通过定时器中断生成,占空比0%-100%可调。

(3)数码管显示电路

  • 接线方式:段码a-g、dp接P0口,位选1-4通过9012三极管接P1.4-P1.7。

  • 设计要点

    • 采用动态扫描方式,每位显示时间1-5ms,避免肉眼可见闪烁。

    • 限流电阻220Ω,防止段码电流过大损坏LED。

四、软件系统设计

1. 主程序流程

系统上电后,初始化定时器、中断、DS18B20及数码管。主循环中执行以下任务:

  • 读取DS18B20温度值,转换为实际温度(公式:T=(TH*256+TL)/16)。

  • 扫描按键状态,调整温度阈值(上限THigh、下限TLow)。

  • 根据温度与阈值比较结果,控制PWM占空比:

    • T<TLow:风扇停止(占空比0%)。

    • TLow≤T<THigh:低速运转(占空比50%)。

    • T≥THigh:全速运转(占空比100%)。

  • 更新数码管显示内容,格式为“XX.X℃”。

2. 关键子程序实现

(1)DS18B20驱动代码


#include <intrins.h>

sbit DQ = P1^0;



void DS18B20_Reset(void) {

DQ = 0; _nop_(); _nop_(); _nop_(); _nop_(); // 拉低480us

DQ = 1; _nop_(); _nop_(); _nop_(); _nop_(); // 释放15us

}



bit DS18B20_Check(void) {

bit flag;

DQ = 0; _nop_(); _nop_(); DQ = 1;

_nop_(); _nop_(); flag = DQ;

_nop_(); _nop_(); _nop_(); _nop_();

return flag;

}



float Read_Temperature(void) {

unsigned char temp_l, temp_h;

int temp;

DS18B20_Reset();

DS18B20_Check();

Write_Byte(0xCC); // 跳过ROM

Write_Byte(0x44); // 启动转换

Delay_ms(750);    // 等待转换完成

DS18B20_Reset();

DS18B20_Check();

Write_Byte(0xCC);

Write_Byte(0xBE); // 读取寄存器

temp_l = Read_Byte();

temp_h = Read_Byte();

temp = (temp_h<<8) | temp_l;

return temp * 0.0625; // 转换为实际温度

}

(2)PWM生成代码


#include <reg52.h>

sbit Fan = P2^0;

unsigned char PWM_Duty = 0;



void Timer0_Init(void) {

TMOD |= 0x01;

TH0 = 0xFF;

TL0 = 0x9C; // 50μs中断一次

ET0 = 1;

EA = 1;

TR0 = 1;

}



void Timer0_ISR(void) interrupt 1 {

static unsigned char count = 0;

TH0 = 0xFF;

TL0 = 0x9C;

count++;

if (count >= 100) count = 0; // 100级调速

if (count < PWM_Duty) Fan = 1;

else Fan = 0;

}

(3)数码管显示代码


unsigned char code Seg_Table[] = {

0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,

0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71

};



void Display_Temp(float temp) {

unsigned char buf[4];

buf[0] = (unsigned char)temp / 10;    // 十位

buf[1] = (unsigned char)temp % 10;    // 个位

buf[2] = (unsigned char)(temp * 10) % 10; // 小数位

buf[3] = 0x40; // 显示“℃”符号



for (unsigned char i = 0; i < 4; i++) {

P1 = ~(0x01 << i); // 位选

P0 = Seg_Table[buf[i]]; // 段选

Delay_ms(2);

}

}

五、Proteus仿真验证

1. 仿真电路搭建

  • 添加STC89C52、DS18B20、ULN2803、四位数码管、按键、电阻、电容等元件。

  • DS18B20的DQ引脚连接虚拟终端,便于观察通信数据。

  • 风扇用直流电机模型替代,通过电压表监测转速。

2. 仿真结果分析

  • 初始状态:数码管显示“25.0℃”,风扇停止。

  • 模拟升温:通过DS18B20虚拟终端输入温度值30℃,风扇以50%转速运转。

  • 模拟高温:输入40℃,风扇全速运转。

  • 阈值调整:按下“设置”键进入阈值调整模式,通过“加”“减”键修改THigh/TLow,系统响应新阈值。

六、硬件制作与调试

1. PCB设计要点

  • 采用双层板设计,电源层与地层分开,减少干扰。

  • DS18B20数据线加粗至20mil,降低阻抗。

  • 风扇驱动部分增加散热焊盘,防止ULN2803过热。

2. 调试步骤

  • 电源测试:检查5V、12V供电是否正常,无短路。

  • 单片机最小系统测试:通过LED闪烁验证程序运行。

  • DS18B20通信测试:用逻辑分析仪捕获单总线时序,确认数据正确性。

  • 风扇驱动测试:逐步增加PWM占空比,观察转速变化。

  • 整体联调:模拟不同温度场景,验证系统响应。

七、优化方向与应用扩展

1. 性能优化

  • 增加温度历史记录功能,通过EEPROM存储数据。

  • 引入PID算法,提升温控精度与响应速度。

  • 优化数码管驱动代码,降低CPU占用率。

2. 应用扩展

  • 增加WiFi模块(如ESP8266),实现远程监控与控制。

  • 添加蜂鸣器报警,当温度超限时发出提示音。

  • 设计多路风扇控制,适用于大型设备散热。

八、总结

本设计通过51单片机与DS18B20传感器的结合,实现了低成本、高精度的温控风扇系统。硬件选型兼顾性能与成本,软件算法优化了响应速度与稳定性。Proteus仿真与实物调试验证了系统可行性,具备实际应用价值。未来可进一步集成物联网技术,推动智能家居与工业4.0的发展。

责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告