基于STC89C52单片机的智能窗帘

基于STC89C52单⽚机的智能窗帘
1.设计要求
利⽤直流电机的转动模拟窗帘的滑动,红外对管模拟光照传感器,使得触发红外对管时,电机能运动3S,然后⾃动停⽌。若这5S期间红外对管信号消失,则电机返回原位。
玻璃钢冷却塔图解2.设计概述
本实验所⽤芯⽚为STC89C52,所⽤硬件是由华清远见基于STC89C52开发的智能⼩车,该⼩车具有流⽔灯模块、蜂鸣器模块、独⽴键盘模块、矩阵键盘模块等。本实验采⽤直流电机模拟窗帘,红外对照管模拟光照传感器。当光照强度⾜够时,电机正向转动,窗帘在3s 滑动关上,当窗帘管好后电机⾃动关闭,窗帘停⽌滑动。如果5s中之内光照强度下降到不够触发光照传感器,窗帘反向滑动,退回初始状态。
3、原理图以及线路连接
pp附着力促进剂电机模块
J10-EN1接C52-P1.4                        //EN1为左电机的使能端,只有当EN1为1时,左电机才能启动
J10-EN2接C52-P1.5                        //EN2为右电机的使能端,只有当EN2为1时,右电机才能启动
J10-IN1接C52-P1.2                        //IN1控制左电机反转,当IN1为1,IN2为0时,左电机反转
J10-IN2接C52-P1.3                        //IN2控制左电机正转,当IN2为1,IN1为0时,左电机正转
J10-IN3接C52-P1.6                        //IN3控制右电机正转,当IN3为1,IN4为0时,左电机正转
J10-IN4接C52-P1.7                        //IN4控制右电机反转,当IN4为1,IN3为0时,左电机反转
光照传感器模块
J11-P3.3接C52-P3.3                                //P3.3为循迹左灯,当检测到⿊⾊时为1,指⽰灯灭,未检测到⿊⾊时为0,指⽰灯亮
J11-VCC接电源
J11-GND接地触控产品
4.软件设计
电机模块
电机为直流电机,当使能端EN1置1,IN1为⾼电平,IN2为低电平时,电流由IN1流向IN2,电机反向
转动,当电流流向改变,即IN1为低电平,IN2为⾼电平时,电流由IN2流向IN1,电流流向相反,电机转向也相反。
硫化床采⽤左右电机正转来模拟窗帘关闭
电机反转来模拟窗帘打开
感应式冲洗阀
stop函数控制电机停⽌转动
光照感应模块
使⽤⼩车的寻迹左灯来模拟光照感应,当寻迹左灯识别到⿊⾊时,寻迹左灯不亮,此时left_led1 == 1,此时视为光照强度⾜够,不⽤关闭窗帘;当寻迹左灯识别到的不是⿊⾊时,寻迹左灯亮起,此时ledt_led1 == 0,此时视为光照强度不⾜,启动fornt函数使窗帘关闭。(即晚上关窗帘)
i为粗略的定时,i增加1表⽰经过的时间为10ms,可以改⽤定时器,使定时更加精准。
flag表⽰初始化标志,当flag == 0,表⽰不能启动,只有flag == 1,才能进⾏⼀系列操作。flag == 1表⽰可以运⾏。这⾥设置标志位的原因是,如果没有标志位,就会在窗帘完成关闭之后,i清0,此时满⾜条件⼜会再次启动,所以需要标志位进⾏限制。
在亮度⾜够时,如果flag == 0,则将flag置1,等待光照强度变暗时做出反应。
如果left_led1 == 0,表⽰光照强度变弱,晚上到了,需要关闭窗帘,此时检测是不是已经完成关闭,如果没完成(即i < 300)则检测是否允许关闭(即flag == 1)。如果都满⾜,则执⾏关闭操作。约每10ms检测⼀次。如果在0-3s内,光照强度⼜变回了原来的强度(即
left_led1 == 1),则窗帘往回运动同样的时间,之后将i清0,等待光照强度变弱。
如果窗帘完成关闭(窗帘关闭需要3s,如果i>300,则表⽰超过3s,窗帘已经完成关闭),则检测接下来5s钟之内(即在300-800之间时),光照是不是会再次变强(即left_led1 == 1),如果变强,则打开窗帘(回转3s),之后i清0,等待光照强度变弱。
如果窗帘关闭后5s内光照没有变亮,则视为晚上到了,接下来很长⼀段时间光照都会很弱,将i清0,并将flag置0,防⽌在长时间弱光照时再次启动窗帘,等待光照强度变强时将flag置1。(即i == 800时将i清0,flag置0,等待亮度⾜够时再次将flag置1)
参考代码
curtain2()
{
while(1)
{
if(left_led1 == 1&&flag == 0)
flag = 1;
if(left_led1 == 0 && i <300 && flag == 1)
{
fornt();
delay_ms(10);
i++;
if(left_led1 == 1)
{
back();
delay_ms(i*10);
stop();
i = 0;
}
}
if(i >= 300 && i < 800 )
{
stop();
delay_ms(10);
i++;
if(left_led1 == 1)
{
back();
delay_ms(3000);
stop();
i = 0;
}
}
if(i == 800)
{
stop();i = 0;flag = 0;
}
}
}
5.总结
1.本实验采⽤的时delay函数的粗略计时,相对来说误差较⼤,要达到更精准的计时效果,可以采⽤定时器定时。
2.本⼈认为智能窗帘应该在晚上过后,窗帘⾃动打开,否则窗帘每天晚上只关,⽩天⼜不打开,那不是得坏。即
本振频率
改为
但更改后实验结果与实验要求冲突,故不予改动。

本文发布于:2024-09-22 12:49:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/163463.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:窗帘   电机   关闭
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议