人体感应智能风扇结题报告_第1页
人体感应智能风扇结题报告_第2页
人体感应智能风扇结题报告_第3页
人体感应智能风扇结题报告_第4页
人体感应智能风扇结题报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大学生科技创新大学生科技创新 人体感应智能电风扇人体感应智能电风扇 结题报告结题报告 项目名称 项目名称 人体感应智能电风扇 负负 责责 人 人 张祥 学学 号 号 02 学院专业 学院专业 电信学院 10 电气工程及其自动化 联系电话 联系电话 电子信箱 电子信箱 指导教师 指导教师 郑笔耕 联系电话 联系电话 人体感应智能电风扇人体感应智能电风扇 一 引言 一 引言 在激烈的市场竞争下 虽然电风扇具有广阔的市场空间 但不断新生产品的出现 要使 产品更具市场优势 仅仅是靠传统型的电风扇是远远不够的 因此要对传统的电风扇根据市 场的需要进行不断的更新 不断的改进 以使自己的产品立于不败之地 传统的电风扇较为 突出的缺点是 风扇的风力大小不能根据温度的变化自动的调节风速 对于那些昼夜温差 比较大的地区 这个自动调节风速就显得优其的重要了 特别是人们在熟睡时常常没有觉察 到夜间是温度变化 那样既浪费电资源又容易引起感冒 传统的风扇是用机械式的定时方 式 机械式的定时方式常常会伴随着很大的机械运动的声音 特别是在夜间影响人们的睡眠 质量 另个机械式的定时有一定的局限性 定时范围有限 而且机械式的容易坏 传统的 电风扇没有单片机控制电风扇的功能 对平时调节风扇风速或其它对风扇的调节 而又不想 走近风扇带来很多的不便 鉴于以上方面的考虑 我们需要设计一种智能电风扇控制系统来 解决这些问题 本设计为一种人体感应温控风扇系统 具有灵敏的温度感测和人体感应功能 系统 stc89C52 单片机作为控制平台对风扇转速进行控制 人体红外感应可感知人的存在 自动 开关风扇 可由用户设置高 低档位 测得温度值在高低温度之间时打开风扇强弱风档 当 温度升高超过所设定的温度时自动切换到大风档 当温度小于所设定的温度时自动降低风扇 档位 控制状态随外界温度而定 同时 能够由人工设定风扇档位不受温度控制 灵活性强 所设高低温值保存在温度传感器DS18B20内部E2ROM中 掉电后仍然能保存上次设定值 性 能稳定 控制准确 关键词 自动控制 人体感应 单片机 温控 手控 风扇 二 实验过程二 实验过程 本设计是以 51 单片机为主要控制核心 用 51 单片机系统对用户设定信号数据的采集以 及分析 能过各种可控型电子元器件对电风扇各种工作状态的控制 以达到用户需求 设计的功能要求 风速从高到低设置 4 个档位 并且每个档位都可以由用户设置或者根据温度自动调 节 风扇可以自动的根据环境的温度调节风扇风速的档位 温度上升 2 自动上升一个 档位 温度每降低 2 自动下降一个档位 设置数码管显示当前的工作状态以及温度 使其更具人性化 自动模式时 感应人的存在而自动控制风扇的开关 方案论证方案论证 1 1 传感器部分传感器部分 方案一 采用热敏电阻 采用热敏电阻 可满足 40 摄氏度至 90 摄氏度测量范围 但热敏电阻精度 重复性 可 靠性较差 对于检测 1 摄氏度的信号是不适用的 而且在温度测量系统中 采用单片温度传 感器 比如 AD590 LM35 等 但这些芯片输出的都是模拟信号 必须经过 A D 转换后才能送给计 算机 这样就使得测温装置的结构较复杂 另外 这种测温装置的一根线上只能挂一个传感器 不能进行多点测量 即使能实现 也要用到复杂的算法 一定程度上也增加了软件实现的难 度 方案二 采用 DS18B20 温度传感器采用 DS18B20 数字温度传感器 DS18B20 数字温度传感器芯片是以 9 位数字 量的形式反映器件的温度值 DS18B20 数字温度传感器通过一个单线接口发送或接受信息 因此在中央微处理器和 DS18B20 之间仅需一条连接线 加上地线 用语读写和温度转换的 电源可以从数据线本身获得 无需外部电源 它可以直接将模拟温度信号转化为数字信号 降低了电路的复杂程度 提高了电路的运行质量 综合考虑 选择方案 DS18B20 进行温度 测量 2 2 调速方式的选择调速方式的选择 方案一 采用 PWM 控制 PWM 是利用数字输出对模拟电路进行控制的一种有效技术 尤其是在对电机的转速控 制方面 可大大节省能量 PWM 具有很强的抗噪性 且有节约空间 比较经济等特点 方案二 采用可控硅控制 实际中通过控制双向可控硅的导通角 使输出端电压发生改变 从而使施加在电风扇的 输入电压发生改变 以调节风扇的转速 实现各档位风速的无级调速 从本设计要求综合考虑实际中选择方案一 3 3 温度控制模块设计温度控制模块设计 方案一 采用红外遥控器 红外遥控解码 红外遥控器的使用大大方便了用户 使他们可以在一 定范围内实现对本系统的远程控制 符合当代人的生活习惯 而且红外遥控器的技术已经相 当成熟 使用也比较方便 方案二 选用键盘 假如使用键盘 用户就只能走进本控制系统去控制该系统已完成自己想要的 操作 此方案设计与制作比较简单 且能完全完成既定功能 综合各方面因素 采用方案二 4 4 显示电路的设计显示电路的设计 方案一 LCD1602 液晶屏 LCD1602 液晶屏是 16 2 的字符型液晶 可以显示英文 26 个字母的大 小写 阿拉伯数字 0 9 及一些简单的符号 该液晶屏操作简单 显示功能强大 方案二 数码管 虽然数码管的显示位数有限 且只能显示一些简单的字符 但是在本课程设计 中 所需要的数码管不多 少量数码管即可符合设计要求 估可采用 综上所述 我们选择了数码管作为显示模块 系统简述系统简述 本系统由人体红外感应 集成温度传感器 单片机 LED 数码管 发光二极管 驱动芯 片 直流电机及一些其他外围器件组成 辅助元件包括发光二极管 电阻 晶振 电源 按 键等 使用具有价廉易购的 stc89S52 单片机编程控制 通过修改程序可方便实现系统升级 主程序流程图 开关 初始化 检测 DS18B20 温度转换命令 读温度 温度 BCD 码 处理 显示温度 等待模式转 换键 进入温控模式 Y K2 K2 温度处理函数 检测加减档位键 进入手动模式 根据档位调整电机 风速 人体感应红外 根据温度驱动电机 进入手动模式 系统各器件简介系统各器件简介 DS18B20DS18B20 单线数字温度传感器简介单线数字温度传感器简介 有3 引脚TO 92 小体积封装形式 温度测量范围为 55 125 可编程为9 位 12 位A D 转换精度 测温分辨率可达0 0625 被测温度用符号扩展的16 位数字量方式 串行输出 工作电压支持3V 5 5V 的电压范围 既可在远端引入 也可采用寄生电源方 式产生 DS18B20 还支持 一线总线 接口 多个DS18B20可以并联到3 根或2 根线上 CPU 只需一根端口线就能与诸多DS18B20 通信 DS18B20 内部结构及管脚 DS18B20 内部结构如图 所示 主要由4 部分组成 64 位ROM 温度传感器 非挥发的 温度报警触发器TH 和TL 配置寄存器 其管脚排列如图 所示 DQ 为数字信号端 GND 为 电源地 VDD 为电源输入端 2 2 stc89C52stc89C52 单片机简介单片机简介 stc 89C52 是一种带4K字节闪存可编程可擦除只读存储器 FPEROM 256B片内RAM的低 电压 高性能CMOS8 位微处理器 该器件采用ATMEL 高密度非易失存储器制造技术制造 与 工业标准的MCS 51 指令集和输出管脚相兼容 由于将多功能8 位CPU 和闪烁存储器组合在 单个芯片中 stc 89C52 是一种高效微控制器 为很多嵌入式控制系统提供了一种灵活性高 且价廉的方案 引脚接法 P0口作为数码管段选 P1 1到P1 3作为数码管位选 P2 0到P2 3作为led显示 P3 0到P3 3作为动合触点开关 P3 4作为直流电机PWM驱动 P3 5接DS18B20温度感应 P3 6接红外人体感应 3 3人体红外感应人体红外感应HC SR501HC SR501 1 感应模块通电后有一分钟左右的初始化时间 在此期间模块会间隔地输出 0 3 次 一分钟后进入待机状态 2 应尽量避免灯光等干扰源近距离直射模块表面的透镜 以免引进干扰信号产生误动作 使 用环境尽量避免流动的风 风也会对感应器造成干扰 3 调节距离电位器顺时针转 感应距离增大 约 7 米 反之感应距离减小 约 3 米 调节延时电位器顺时针转 感应延时加长 约 300S 反之 感应延时减短 约 5S 产品型号HC SR501 人体感应 工作电压范围直流电压 4 5 20V 静态电流 50uA 电平输出高 3 3 V 低 0V 触发方式L 不可重复触发 H 重复触发 默认重复触发 延时时间0 5 200S 可调 可制作范围零点几秒 几十分钟 封锁时间2 5S 默认 可制作范围零点几秒 几十秒 电路板外形尺寸 32mm 24mm 感应角度 100 度锥角 工作温度 15 70 度 感应透镜尺寸直径 23mm 默认 4 4 八段八段LEDLED 数码管数码管 本系统使用四个八段LED数码管作为温度和风扇档位显示 前三位显示温度 最后一位显 示档位 公共阳极 5 5驱动芯片驱动芯片ULN2803ULN2803 ULN2803 8个NPN达林顿晶体管 连接在阵列非常适合逻辑接口电平数字电路 例如 TTL CMOS或PMOS上 NMOS 和较高的电流 电压 如电灯 电磁阀 继电器 打印锤或其他 类似的负载 广泛的使用范围 计算机 工业和消费应用 所有设备功能由集电极输出和钳 位二极管瞬态抑制 该ULN2803是专为符合标准TTL 而制造ULN2804适合6至15V的高级别 CMOS或PMOS上 该电路为反向输出型 即输入低电平电压 输出端才能导通工作 各部分电路设计各部分电路设计 1 1 电源电路电源电路 电源电路采用LM7805集成稳压器作为稳压器件 用典型接法 220V电源整流滤波后送入 LM7805稳压 在输出端接一个470U和0 1U电容进一步滤除纹波 得到5V稳压电源 电路如图 4所示 2 2 数码管显示电路数码管显示电路 数码管显示电路采用共阳极四位数码管以及 9012 三极管作为驱动数码管发亮 其连接方 式如下 应用单片机 P0 口连接八段数码管 用 P1 口的 P1 0 P1 3 四个端口作为数码管的 片选信号输出端口 其中要用 9012 PNP 型 三极管做驱动 为了防止烧坏数码管 所以给 数码管各段各加一个 50k 的限流电阻 要显示的数据通过 P0 口送给数码管显示 通过 P1 口 的 P1 0 P1 3 四个端口分别对数码管进行位选 事实上数码管是间断被点亮的 只是其间 断时间十分短 扫描周期在 20ms 以下 利用人眼视觉暂留 我们基本看不出它们的闪烁 3 3 温度采集 控制模式设定以及复位电路温度采集 控制模式设定以及复位电路 这一部分主要是由 DS18B20 四个按键 开关设定主要是通过按键 K1 来设定的 模式转换键由 K2 来完成 可以实现温度控制风速和手动 设定风速的功能 手动设定风扇档位由 K3 K4 来完成 按一下 K3 键可以实现档位增一 而按下 K4 键可以实现档位减一 4 4 电机驱动电路电机驱动电路 驱动模块主要采用驱动芯片 ULN2803 PWM 脉冲信息通过 I O 口 P3 4 输出 然后经过 ULN2803 时由 1B 7B 输入至 7C 输出以驱动电机转动 5 5开关 模式指示灯电路开关 模式指示灯电路 分别通过P1 0 P1 2作为开关 两个模式指示灯 按下开关键K1 时 开关指示灯亮 表明DS18B20一开始工作 若此时按下K2选择模式一 转为到温度控制风速功能 当达到相 应温度范围 电机转速作相应改变 若按下K2选择模式二 转为手动控制风速 此时可以分 别按K3或者K4键 以控制档位 三 结果与讨论三 结果与讨论 将本电路用硬件做出来 用编程器将KEIL软件对源程序编译生成的 HEX文件烧入 stc89C52单片机 将单片机插入到目标板中 连好线 理想和现实总是很大差距 出了液晶显示可以正常显示外 其他功能都无法正常工作 接下来的事就是最关键的也是最难的 调试程序 我们小组成员分块进行了每个模块的功能实现 然后在整合到一起 过然不出所料 离 结果越来越近 最终在查资料 问老师 问同学之后 结果终于出来了 四 参考文献四 参考文献 1 郭天祥 51单片机c语言教程 电子工业出版社 2 张毅刚 单片机原理及应用 高等教育出版社 3 胡汉才 单片机原理及其接口技术 北京 清华大学出版社 4 吴金戍 沈庆阳 郭庭吉 8051单片机实践与应用 北京 清华大学出版社 5 王化详 张淑英 传感器原理 天津 天津大学出版社 6 荣俊昌 新型电风扇原理与维修 北京 高等教育出版社 参考网站 百度 电子发烧友网 单片机论坛 51单片机之家等 五 心得五 心得 大约在去年的这个时候 在无意间听到同学说 学校现在在弄什么科技创新 当时就比 较感兴趣 听到这个消息后我就想 如果我也能参加就好了 于是班上问了下 大家都很想 做这个 但是没有行动起来 听到这个消息后我就想自己组个队 来做一些小作品 就算是 对大学无聊生活的一种慰藉吧 说做就做 再联系了好多同学后 终于确定了人选 我 张月 黄业 操镭 吕超 我 们五个组成的小组就开始了我们即将为期一年的创新之旅 可能是初生牛犊不怕虎 尽管我 们什么都不懂 当时也不知道51单片机是什么 但我们还是义无反顾了 队员是有了 可是 我们做什么呢 困扰了我 由于我们班之前有同学参加过全国大学 生电子设计大赛 所以我就打算做一个和51单片机这一块相似的东西 至少在不懂的情况下 还可以问一下他们 当时我就在心里默默这么定了 尽管都没争取组员的同意 大体范围是有了 可是 具体做什么还是没方向 那几天我就想热锅上的蚂蚁 记得团 团转 心里非常烦躁 回到宿舍打开风扇就趴在椅子上小睡了 睡到一半被冻醒了 我想 哎要是能自动调节温度就好了 自动调节温度 突然这几个词在我脑海中浮现 为何我不 自己做一个自动调节温度的风扇呢 对 就这么搞 经过酝酿 讨论 人体感应只能风扇就 这样出来了 购买材料 焊接板块 集中学习单片机 c语言 我们小组每位成员都忙的如火如荼 从将开发板上的每一个LDE灯点亮到数码管的动态显示 从ds18b20的温度读取到电机的占空 比调转 我们一直忙碌着 从来不敢怠慢 尽管我们遇到很多困难 尽管一次次的失败 我 们依然在前线 记得刚开始学习定时器计数器一块时候 我总是搞不清楚为什么可以通过寄存器的通知 可以决定选什么 该怎样工作 直到后来秦昌研把电路图拿给我看时候 我才恍然大悟 此 事深刻感觉到了原理的重要性 我们学习只是应该扎实 不能只知道其表面 不知其根本 在学习温度感应模块时候 我们之前已经把郭天祥书上的类似程序看的很明白了 可是 移植到自己的程序上时候 还是不知道为什么 温度显示不出来 后来查了好久才发现是参 数设置问题 由此可见 相同的东西 我们不能照搬照抄 要有自己的独立性 另外 每个 细节都是很重要的 细节决定成败 不是嘴上说说 在经历和查资料 学软件 分析程序 调试 最终的成品看起来却只有巴掌大 就这巴 掌大的东西里面却蕴含着很多心血 真是台上一分钟 台下十年功 当初 学校给我们一年 的时间我觉得蛮长的 现在想起来不仅不长 还是挤挤的 要是还有时间 我得要做的更好 设计得更优化 功能更多 在这里我想感谢我们的指导老师郑笔耕老师 记得有好几次遇到困难了 我都有想放弃 的冲动 这个时候 郑老师总能给我正能量 例如上次中期检查时候 我有种不想接着做下 去的冲动 老师还是给了我继续的动力 很多事情老师都事先替我想好了 我想 如果没有 老师的教导和监督 我们小组也就胎死腹中了 不仅是学习了很多东西 最重要的一点就是合作 我们小组的成员都有同感 合作和分 工是成功的必备法则 很多东西在书上看了后不以为然 可是每当自己经历后才深刻体会到 了他的真谛 总之 本次科技创新将是我人生的一大财富 感谢学校给了我们这次机会 感谢郑老师 的帮助 还得感谢帮助我们小组的秦昌研同学 有人说成功男人后一定有一个贤惠的女人 我想说 成功的小组背后少不了一群人的帮助 六 图片六 图片 七 程序七 程序 include include define uint unsigned int define uchar unsigned char float f temp uint temp uchar bai shi ge 温度显示百 十 个位 uchar num uint warn1 200 温度警示值 uint warn2 220 uint warn3 240 uint warn4 260 uint power mode flag 开关 模式转换标志 sbit wx1 P1 0 温度显示位选 sbit wx2 P1 1 sbit wx3 P1 2 sbit wx dang P1 3 风扇档位显示数码管位选 sbit led0 P2 7 相关模式指示灯 sbit led1 P2 6 sbit led2 P2 5 sbit led3 P2 4 sbit on off P2 3 开关 sbit modeswitch P2 2 模式转换标志 sbit jia key P2 1 档位增 sbit jian key P2 0 档位减 sbit ds P3 5 DS18B20的DQ端 sbit ren P3 6 红外 sbit dianji P3 7 电机驱动端 uchar code table 共阴数码管 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f uchar code table dot 带小数点共阳数码管 0 x40 0 x79 0 x24 0 x30 0 x19 0 x12 0 x02 0 x78 0 x00 0 x10 uchar code table dang 风扇档位数码管 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 void delay uint z 延时函数 uint x y for x z x 0 x for y 110 y 0 y void dsreset void DS18B20复位 初始化函数 uint i ds 0 i 103 while i 0 i ds 1 i 4 while i 0 i bit tempreadbit void 读一位数据函数 uint i bit dat ds 0 i ds 1 i i dat ds i 8 while i 0 i return dat uchar tempread void 读1个字节数据函数 uchar i j dat dat 0 for i 1 i 8 i j tempreadbit dat j 1 读出的数据最低位在最前面 这样刚好一个字节在dat里 return dat void tempwritebyte uchar dat 写入温度字节 uint i uchar j bit testb for j 1 j 1 if testb ds 0 i i ds 1 i 8 while i 0 i else ds 0 i 8 while i 0 i ds 1 i i void tempchange void DS18B20开始获取温度并转换 dsreset delay 1 tempwritebyte 0 xcc 写跳过读ROM指令 tempwritebyte 0 x44 写温度转换指令 uint get temp 读取寄存器中存储的温度数据 uchar a b dsreset delay 1 tempwritebyte 0 xcc tempwritebyte 0 xbe a tempread 读取低8位 b tempread 读取高8位 temp b temp warn1 else if t warn1 小于25度 num 0 else if t warn3 小于32度大于30度 num 2 else if t warn4 大于32度 num 3 else 在27度和30度之间时是调用显示函数延时 num 1 void key 键盘读取 显示num if jia key 0 delay 5 if jia key 0 num if num 4 num 3 while jia key if jian key 0 delay 5 if jian key 0 if num 0 num 1 num while jian key void t0 time interrupt 1 flag if flag 3 flag 1 if flag 1 dianji 1 switch num case 0 TH0 65536 1000 256 TL0 65536 1000 256 break case 1 TH0 65536 2000 256 TL0 65536 2000 256 break c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论