2024-09-01
售卖作品
00

目录

实验报告:基于单片机的风扇转速采集系统
一、实验背景及目的
二、硬件介绍
1. 单片机
2. 电子元件
3. 连接关系
三、设计原理
1. 电路原理
2. 程序原理
四、详细设计
1. 初始化系统
2. PWM输出
3. 设置风扇速度
4. 外部中断
5. 定时器中断
6. 主函数
五、实验结果与分析
1. 实测结果与示波器计算结果比较
2. 影响测量准确度的因素
3. 提高测量准确度的方法
六、总结
资料

在这里插入图片描述

在这里插入图片描述

11、

基于单片机的风扇转速采集系统

基本要求:

a)设计风扇转速采集系统

b)风扇电机可调速

c)显示转速测量结果3位,分屏显示,精确到小数点后2位立,并与用示波器看到的光电开

关的信号计算得到的转速进行比较,分析它们之间的差别及产生的可能原因。

扩展要求:

滚动显示测量结果。

分析影响测量准确度的因素,并在现有条件上下提高测量准确度

实验报告:基于单片机的风扇转速采集系统

一、实验背景及目的

风扇转速采集系统是工业和家庭应用中常见的一个控制系统,主要用于监测风扇的转速并进行适当的调节,以达到高效节能和稳定运行的目的。本实验旨在设计一个基于单片机的风扇转速采集系统,通过调节风扇电机速度,并显示测量结果,与示波器计算结果进行比较,分析差异及其原因。同时,滚动显示测量结果并提高测量准确度。

二、硬件介绍

1. 单片机

使用的是8051系列单片机,它是一个8位的微控制器,广泛应用于各种嵌入式系统中。其主要特性包括:

  • 4KB ROM

  • 128字节RAM

  • 32个I/O口线

  • 2个16位定时/计数器

  • 串行口

2. 电子元件

  • 风扇电机

  • 光电开关:用于检测风扇转速,通过接收反射或透射的光信号来计数。

  • PWM模块:用于调节风扇电机的速度。

  • LCD显示模块:用于显示风扇转速。

3. 连接关系

  • 光电开关的输出连接到单片机的外部中断引脚。

  • PWM输出通过驱动电路连接到风扇电机。

  • LCD显示模块通过并行接口与单片机连接。

三、设计原理

1. 电路原理

电路主要由单片机、光电开关、风扇电机、PWM调速模块和LCD显示模块组成。光电开关检测风扇的旋转速度,输出脉冲信号至单片机的外部中断引脚。单片机根据接收到的脉冲信号计算转速,并通过PWM调节风扇电机速度,将转速结果显示在LCD上。

2. 程序原理

程序主要分为以下几个部分:

  • 初始化部分:设置定时器、外部中断和PWM输出。

  • PWM调速部分:通过调整PWM的占空比来改变风扇电机的速度。

  • 转速测量部分:利用外部中断计数脉冲数,根据脉冲数计算转速。

  • 显示部分:将计算得到的转速显示在LCD上。

四、详细设计

1. 初始化系统

c
void SystemInit() { TMOD = 0X21; // t1用来串口,t0定时 TH0 = THC0; TL0 = TLC0; TH1 = 0xC0; TL1 = 0xC0; ET1 = 1; ET0 = 1; TR0 = 1; TR1 = 1; EX0 = 1; // 中断0用来测量转速 IT0 = 1; EA = 1; }

设置定时器模式,初始化定时器寄存器和外部中断。

2. PWM输出

c
void PWMOUT() { if (cnt < PWMTime) { PWM_FC = 1; } else { PWM_FC = 0; } if (cnt > 1000) { cnt = 0; } }

通过控制PWM的占空比来调节风扇电机的速度。

3. 设置风扇速度

c
void SetSpeed() { if (AddSpeed == 0) { delay(200); if (AddSpeed == 0) { PWMTime += 1; // 加速PWM } } if (SubSpeed == 0) { delay(200); if (SubSpeed == 0) { PWMTime -= 1; // 减速PWM } } if (PWMTime > 1000) { PWMTime = 1000; } else if (PWMTime < 0) { PWMTime = 0; } }

通过按钮控制风扇速度的增加和减少。

4. 外部中断

c
void int0() interrupt 0 { Inpluse++; }

通过外部中断计数脉冲数。

5. 定时器中断

c
void t0() interrupt 1 { static unsigned int time = 0; TH0 = THC0; TL0 = TLC0; // 每2ms执行一次这个中断函数 time++; // 转速测量周期 if (time > 500) { zs = 1; time = 0; num = Inpluse; // 计算转速 Inpluse = 0; } PWMOUT(); }

定时器中断用于周期性测量转速和输出PWM信号。

6. 主函数

c
void main() { SystemInit(); init(); zs = 1; while (1) { SetSpeed(); if (zs == 1) { zs = 0; cc[6] = num / 1000 + '0'; cc[7] = num / 100 % 10 + '0'; cc[8] = num / 10 % 10 + '0'; cc[9] = num % 10 + '0'; LCD_Write_String(0, 0, cc); } } }

主函数初始化系统,设置风扇速度并显示转速。

五、实验结果与分析

1. 实测结果与示波器计算结果比较

通过LCD显示和示波器测量的转速进行比较,分析两者之间的差异。通常情况下,示波器测量的转速较为精确,而单片机系统由于存在一定的延迟和误差,可能会与示波器结果有所不同。

2. 影响测量准确度的因素

  • 光电开关的精度

  • 单片机的计数精度

  • 程序中断延迟

  • PWM调速的稳定性

3. 提高测量准确度的方法

  • 使用更高精度的光电开关

  • 优化程序,减少中断延迟

  • 增加滤波电路,减小电机抖动

  • 使用更高频率的PWM信号,提高调速的平滑性

六、总结

通过本次实验,我们成功设计并实现了一个基于单片机的风扇转速采集系统。该系统能够有效地调节风扇速度,并实时显示转速。通过与示波器测量结果的比较,我们分析了系统的准确度并提出了改进措施。本实验为进一步研究和开发更高精度的转速测量系统提供了基础。

资料

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!