跳到主要内容

基于单片机的温度控制直流风扇

基于温度控制的直流风扇是一种系统,当环境温度超过一定阈值时,会自动开启直流风扇。

通常,电子设备会产生大量热量,因此需要降低这些热量以保护设备。有许多方法可以减少热量,其中一种方法是自动开启风扇。

本文介绍了两种电路,它们可以在检测到设备内部温度超过阈值时自动开启风扇。

1.基于单片机的温度控制直流风扇

1.1电路 1:使用8051单片机的温度控制直流风扇

1.1.1电路图

alt text

1.1.2工作原理

本项目基于模数转换(Analog to Digital Conversion)原理。LM35温度传感器的模拟信号被送入模数转换器ADC0804。

温度传感器的模拟输出会根据摄氏度变化而变化,每摄氏度变化10mV。

ADC0804是一个8位模数转换器。对于5V的参考电压,其分辨率是5V28=20mV\frac{5V}{2^8} = 20mV 。这意味着,这是传感器模拟值的最小变化量,能够被ADC芯片识别。

根据温度的变化,ADC的输出会相应变化。ADC的数字输出被送入单片机,以计算温度并相应地控制风扇。

1.1.3所需元件

单片机部分

  • AT89C51单片机
  • AT89C51编程板
  • 11.0592 MHz石英晶体
  • 33pF陶瓷电容
  • 2 × 10KΩ电阻
  • 10µF电解电容
  • 按钮
  • 16 × 2 LCD显示屏
  • 10KΩ电位器

温度传感器部分

  • LM35
  • ADC0804
  • 10KΩ电阻
  • 150pF陶瓷电容
  • 1KΩ × 8电阻包

负载部分

  • 2N2222 NPN晶体管
  • 1N4007二极管
  • 12V继电器
  • 1KΩ电阻
  • 风扇
alt text
alt text
alt text
alt text
alt text

1.1.4配置ADC0804以用于本项目

以下是ADC0804的配置说明。首先,需要将5V稳压电源连接到Vcc引脚(第20引脚)。然后,将模拟地和数字地引脚(第8引脚和第10引脚)连接到地。

为了使用内部时钟,需要在CLK IN(第4引脚)和CLK R(第19引脚)之间连接一个10KΩ电阻,然后在第4引脚和地之间连接一个150pF电容以完成振荡器电路。

将CS引脚(第1引脚)连接到地以启用ADC。

为了使单片机能够连续从ADC读取数据,需要将RD引脚(第2引脚)连接到地。

为了使ADC能够连续从传感器读取模拟数据,需要将写引脚(第3引脚)与中断引脚(第5引脚)短接。

传感器(LM35)的模拟输出连接到ADC的Vin+(第6引脚)。ADC的负模拟输入引脚Vin-连接到地。

转换后的数字数据(8位数据)将在DB0到DB7(第18引脚到第11引脚)之间输出。

1.1.5电路设计

本项目的主要组件包括8051单片机、16×2 LCD显示屏、LM35温度传感器、ADC0804、继电器和风扇。

与单片机的基本连接包括时钟、复位和EA。时钟部分由一个11.0592 MHz的晶体和两个33pF的电容组成。复位电路由一个10µF的电容、一个10KΩ的电阻和一个按钮组成。EA引脚通过一个10KΩ的电阻拉高。

现在我们来看其他组件的连接。

对于LCD显示屏,一个10KΩ的电位器连接到对比度调节引脚。LCD的三个控制引脚连接到P3.6、GND和P3.7引脚。

LCD的8个数据引脚连接到单片机的PORT1。

关于ADC的基本连接已在配置部分说明。ADC的8个数字输出需要连接到单片机的PORT2。

接下来需要连接的是LM35。将LM35的数据引脚连接到ADC的模拟输入引脚,即第6引脚。

最后,需要将继电器电路(包括电阻、晶体管和继电器)连接到单片机的PORT0,并且PORT0需要外部上拉。

将继电器的输入(晶体管的基极)连接到单片机的P0.0引脚。

1.1.6工作原理

本项目的目标是设计一个基于8051单片机的温度控制风扇,根据温度自动开启或关闭风扇。以下是项目的具体工作原理。

在该电路中,LM35温度传感器会根据检测到的温度提供连续的模拟输出。该模拟信号被送入ADC,ADC将模拟值转换为数字值。

ADC的数字输出等同于检测到的模拟电压。

为了从检测到的模拟电压中获取温度,需要在单片机的程序中进行一些计算。

一旦单片机根据逻辑完成计算,温度就会在LCD上显示。就这样,单片机会持续监测温度。

如果温度超过50摄氏度(根据代码),单片机会开启继电器以启动风扇。如果温度降至40摄氏度以下(根据代码),风扇将关闭。

1.2电路 2:使用ATmega8的温度控制直流风扇

1.2.1电路图

alt text
使用ATmega8单片机的温度控制直流风扇电路图

1.2.2电路原理

电路的主要原理是当温度超过阈值时,连接到直流电机的风扇将被开启。

单片机持续读取周围环境的温度。温度传感器作为换能器,将检测到的温度转换为电信号。这是一个模拟值,被送入单片机的ADC引脚。

ATmega8单片机具有6个复用的ADC通道,分辨率为10位。模拟值被送入其中一个ADC输入引脚。转换过程在内部通过逐次逼近法完成。

为了进行ADC转换,需要声明内部寄存器。ADC引脚输出一个数字值。控制器将此数字值与阈值进行比较,如果数值超过阈值,控制器将开启风扇。

1.2.3所需元件

  • ATmega8
  • L293D
  • LM35
  • 直流电机

1.2.4元件描述

LM35

LM35是一种集成温度传感器,可用于测量温度。该传感器的输出电压与摄氏度温度成正比。LM35的输出电压会以每摄氏度10mV的速率变化。

通常,LM35温度传感器的测量范围为-55摄氏度到+150摄氏度。为了测量完整的温度范围(从负值到正值),需要在数据引脚和Vcc负电源之间连接一个外部电阻。

然而,在本项目中,我们不考虑负温度范围。因此,在正常工作条件下,我们可以测量从+2摄氏度到+150摄氏度的温度范围。

ADC

自然界的所有参数都是模拟的,即现实世界中的大多数数据都以模拟信号的形式存在。例如,如果测量房间温度,房间温度会随着时间的推移而持续变化。这种随时间连续变化的测量信号(例如1秒、1.1秒、1.2秒等)被称为模拟信号。

为了使用微处理器或微控制器操作现实世界的数据,我们需要将模拟信号转换为数字信号,以便处理器或控制器能够读取、理解和操作数据。

ATmega8具有内部模数转换器。

1.2.5内部ADC寄存器的声明

  1. ATmega8单片机内部有三个寄存器,分别是ADMUX、ADCSRA和ADC数据寄存器。模数转换器的分辨率为10位。

  2. 首先,使用ADCMUX寄存器选择ADC的参考电压。

  3. 在ADMUX寄存器中选择REFS0和REFS1的值以设置参考电压。

  4. 现在,使用ADMUX寄存器中的MUX0-MUX3位选择ADC通道。下表显示了要放置在MUX0-MUX3位中的二进制值,以选择通道。

alt text
  1. 如果传感器连接到ADC0通道,并且在AREF引脚处有外部电容的AVCC,则需要将以下二进制值分配给ADMUX寄存器:ADMUX = 0b01000000

  2. 现在,使用 ADCSRA 寄存器中的 ADPS0 、 ADPS1 和 ADPS2 位来选择预分频值(pre-scalar value),并在 ADSCRA 寄存器中通过 ADEN 位启用 ADC。

  3. 以下这些位用于决定 XTAL (晶振)频率与 ADC 输入时钟 之间的分频系数: 分频系数决定表

alt text
  1. 接下来,在 ADCSRA 寄存器中启用 启动转换位(ADSC) 。

  2. 当数值转换完成后,硬件会启用一个中断位。 等待中断标志位 ADIF 被置为 1。

转换结果会存储在 ADC 的两个数据寄存器中,即 ADCL 和 ADCH 。 现在从这两个寄存器中读取数字值。

1.3温度控制直流风扇电路设计

该电路主要由ATmega8单片机、温度传感器、直流电机和驱动芯片组成。温度传感器连接到单片机的ADC引脚,即ADC0引脚。

温度传感器有三个引脚:VCC、地和输出。中间引脚为输出,其余两个引脚分别为地和VCC。ADC的VREF和AVCC引脚从外部连接到单片机的5V电源。第20引脚和第21引脚分别为AREF和AVCC引脚,连接到5V电源。

单片机的端口B通过电机驱动芯片L293D连接到电机。电机驱动芯片的输入引脚连接到单片机。PB0和PB1分别连接到电机驱动芯片的输入3和输入4。

PB2和PB3引脚分别连接到电机驱动芯片的输入1和输入2。输出引脚连接到电机。由于电机有两个引脚,它们连接到驱动芯片的输出引脚。

1.4温度控制直流风扇电路的工作原理

  1. 首先接通电源。
  2. 单片机开始读取周围环境的温度。
  3. 温度传感器提供温度的模拟值。
  4. 该模拟值被送入单片机的模数转换器引脚。
  5. 单片机通过内部的逐次逼近法将该模拟值转换为数字值。
  6. 当温度超过阈值时,单片机向控制器发送命令以启动电机。
  7. 于是风扇开始旋转。

1.5应用

  • 温度控制直流风扇可用于通过监测温度来控制设备、房间、电子元件等的温度。
  • 可扩展为基于PWM的输出,其中风扇的速度可以根据PWM信号的占空比进行调整。
  • 该电路可用于CPU中以降低热量。