光感自动窗帘的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
其次,通过本次研究报告,学会了用软件来消抖,这是按键使用必须要注意的,因为在很多时候我们按键可能会发生错误,这会对我们的控制带来麻烦,所以用一定的程序来实现判断按键是否被确定被按下是很重要的,所以采用了软件消抖的方式。软件消抖的方式主要是用一个延时来判断按键是否按下,延时一般设置为5-10 ms。
(2)
五、
1.
2.
四、
(1)
通过本次研究,我学习到了步进电机的原理,知道了步进电机的驱动方式和它的工作原理,也知道了如何通过用51单片机的芯片输出脉冲来控制步进电机的转动,步进电机是四相八拍的,我们可以通过给步进电机一个脉冲来使步进电机有一个小角度的转动,而且该角度是比较准确的,所以步进电机可以用在工业上控制精密车床,达到转动一定的角度目的。
{
uint i,j;
for(i=0; i<del; i++)
for(j=0; j<1827; j++)
;
}
void Delay2(unsigned int i)//延时程序
{
while(--i);
}
void Main(void)
{
if(KEY1 == 0)
{
Delay1(2);//20毫秒软件防抖
if(KEY1 == 0)
unsigned char code B_Rotation[4]={0x40,0x20,0x10,0x08};//反转表格
sbit KEY1 = P3^2; //正转按键
sbit KEY2 = P3^3;//停止按键
sbit KEY3 = P3^4;//反转按键
int i,j;
void Delay1(uint del)
Delay2(500); //改变这个参数可以调整电机转速
}
if(KEY2 == 0)//让步进电机停止转动
{
Delay1(2);//软件消抖
if( KEY2 == 0 )
P1=0x00;
break;
}
}
}
}
}
步进电机的电路图:
三、wk.baidu.com
将程序下载到单片机后,打开单片机,开始测试程序:
(1)
按“1按键”步进电机正向转动,按“2按键”步进电机停止工作,按下“3按键”步进电机又开始工作并且转动方向和开始时候相反。
步进电机转动研究报告
李鑫09171030
物理科学与技术学院应用物理09级7班
一、
生活在提高,时代在进步,人类在向文明迈进,不同的时代对居住空间、环境有不同的要求,这是社会的必然潮流。单片机控制的自动窗帘系统,既能解决每天手拉开和关上窗帘的不便,又显示出了生活的档次,同时还可以根据光线的明暗来自动控制窗帘的开关,以调节室内的光线,更进一步地满足了人们的享受要求。所以该产品能形成大规模生产,很快会普及全国市场,产生巨大的经济效益;另外,除了广大市民住宅使用外,该遥控窗帘器还可以广泛应用于别墅、公寓、宾馆、饭店、写字楼、歌舞厅、影剧院、会议厅、银行、学校、医院等各种公共场所,因此该产品具有广阔的市场前景。
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号小型如下图。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,如下图。抖动时间的长短由按键的机械特性决定,一般为5ms~10ms。这是一个很重要的时间参数,在很多场合都要用到。
1.步进电机的原理;
2.51单片机的输出控制;
3.按键的软件消抖程序;
4.如何在51单片机上用c语言编写程序,并调试程序。
(2)
1.
在设计很多应用时,按键是必不可少,单片机的按键可分为编码按键和非编码按键,键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或兼职的称为编码键盘,如计算机键盘。而考软件编程来识别的称为非编码键盘。单片机中用到最多的是编码键盘。我这次使用的是非编码按键。按键组由三个独立按键组成,分别控制步进电机的正转,停止,反转三个动作。
{
for(j = 0; j <= 2002; j++)
{
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输-出对应的相可以自行换成反转表格
Delay2(500); //改变这个参数可以调整电机转速
}
if(KEY2 == 0)//让步进电机停止转动
{
Delay1(2);//软件消抖
if( KEY2 == 0 )
P1=0x00;
break;
}
}
}
}
if(KEY3 == 0)
{
Delay1(2);//20毫秒软件防抖
if(KEY3 == 0)
{
for(j = 0; j <= 2002; j++)
{
for(i = 0;i < 4; i++) //4相
{
P1 = B_Rotation[i]; //输-出对应的相可以自行换成反转表格
此程序虽然可以解决可以电机的正反转问题和按键防抖的问题,但是总体来看,改程序还是不够简单,显得很臃肿对于一个内存很小的单片机这样会使单片机的执行效率降低。并且,该步进电机无法自行停止运行,这会导致,在以后的应用中产生一些问题,在当我们把此步进电机应用到智能窗帘的研究中时,当有光照后,窗帘会放下,但是无法自动停止,这与事实不符和,所以这一点还需要改进。
光感自动窗帘系统在我国还刚刚兴起,但其发展前景广阔,推广和应用自动窗帘系统具有重要的现实意义。其一,改变人们的生活方式。单片机控制的光感自动窗帘系统具有丰富的智能化功能,为家庭用户营造一个高效、舒适、便利、环保的居住环境。单片机控制的光感自动窗帘用三个按钮和环境光控制窗帘的开和关,解决人们手动开关窗帘问题,给人们日上生活带来极大的方便。这些都将改变人们传统的生活方式,并提高了人们的生活质量。其二、牵动一大批产业。单片机控制的遥控自动窗帘产品面向家庭用户,其应用市场是庞大的,发展前景也是广阔的,必将吸引大批有远见的各类企业介入,从而牵动一大批产业的发展。这里最先受益的应该是房地产业,单片机控制的遥控自动窗帘不仅是一个很好的概念与“卖点”,同时也是直接提升住宅档次的一个条件,这将会给房地产商带来新的利润空间。在家居集成化、网络化的趋势下,家居集成也成为一种潮流,许多更专业的、美观的、智能化的家居集成产品相继出现。其三,开拓一个崭新的市场。遥控自动窗帘系统牵动了许多的行业,它将不仅仅是目前的IT系统集成商或建筑弱电工程总包商的市场,而且是专业公司和智能化装饰公司的市场。
按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。按键的抖动,可用硬件或软件两种方法。
这次我研究的是软件消抖。软件消抖的主要思想是:当有按键按下后,用程序设计延时5-10ms,如果在延时后,检测按键按键仍在按下状态,则表示此按键被按下。
这结果表明,步进电机工作方式,基本达到我的预期,可是实现停止和正反转,可以为以后进一步使用步进电机做铺垫。
(2)
按下“1按键”步进电机开始工作,跳过“2按键”,直接去按“3按键”,步进电机直接反转而不是先停止后反转。
这和实际应用能很好的符合,在实际应用中,控制窗帘的时候,我们想要手动达到自己想要的位置,所以就要通过正反转来控制,不经过停止而直接反转的模式能很有效的达到控制窗帘位置的目的。
我这次主要研究的是步进电机的控制,步进电机是智能窗帘应用中很重要的一环,所以研究步进电机的使用对以后设计智能窗帘有很重要的帮助。
二、
(1)
此次研究报告主要研究的是步进电机的转动和按键的使用。通过步进电机的使用,我可以学会输出信号的控制以及步进电机的原理;通过学习按键我知道如何利用软件对按键进行消抖,如何用按键控制电路的开关。主要研究的内容有:
程序设计如下:
if(KEY == 0)//按键被按下
{
Delay1(2);//延时指令,一般延时5-10 ms
if( KEY == 0 )//如果此时按键仍处于被按下状态,则表示按键有效
}
2.
步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A),双(双相绕组通电)四拍(AB-BC-CD-DA-AB),八拍(A-AB-B-BC-C-CD-D-DA-A)
3.
通过程序的控制,实现操作步进电机的启动、停止和正反转。现写出步进电机的控制程序和电路:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code F_Rotation[4]={0x08,0x10,0x20,0x40};//正转表格
红线接电源5V,橙色电线接P1.3口,黄色电线接P1.2口,粉色电线接P1.1口,蓝色接P1.0口。
由此我们可以得出电机的正反转相序:
1.逆时钟旋转相
{0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
2.正时钟旋转相
{0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};
相关文档
最新文档