P-iris的寿命检测控制电路的制作方法

文档序号:15443157发布日期:2018-09-14 23:02阅读:388来源:国知局

本发明涉及一种p-iris的寿命检测控制电路。



背景技术:

随着安防行业的发展日益成熟,p-iris不仅适用于百万像素摄像机,而且适用于所有固定网络摄像机。镜头光圈调节着光圈孔大小及穿过镜头的光的数量,以确保图像可以正确曝光。p-iris可以提供给摄像机关于光圈位置的信息,摄像机可以有效地控制光圈孔以优化图像质量。因此,对p-iris的寿命检测也就至关重要了。



技术实现要素:

本发明的目的在于提供一种p-iris的寿命检测控制电路,电路易于实现,并且可以根据客户需求,更改参数,能够对镜头p-iris的寿命测试进行有效的管控和整理;解决了镜头p-iris寿命测试的繁琐性,以及客户的特殊需求。

为实现上述目的,本发明的技术方案是:一种p-iris的寿命检测控制电路,包括基于stc15f204ea主控芯片的主控电路、用于为整个系统供电的稳压电路、与主控电路连接且用于驱动p-iris的电机工作状态的驱动电路、与主控电路连接且用于控制主控电路对驱动电路输出脉冲指令的按键电路;电源启动,稳压电路正常供电时,主控电路根据按键电路的各按键按下与否,对驱动电路输出不同的脉冲指令,进而控制p-iris的电机的转向和速度,以此实现p-iris在不同频率下寿命测试的控制。

在本发明一实施例中,所述稳压电路采用lm7809芯片、lm7805芯片及lm317芯片。

在本发明一实施例中,所述驱动电路采用l293d芯片。

在本发明一实施例中,所述按键电路包括6个按键,该6个按键分别代表p-iris不同的频率的寿命作动,通过程序分别设置为100pps、200pps、300pps、400pps、500pps、600pps。

相较于现有技术,本发明具有以下有益效果:本发明电路易于实现,并且可以根据客户需求,更改参数,能够对镜头p-iris的寿命测试进行有效的管控和整理;解决了镜头p-iris寿命测试的繁琐性,以及客户的特殊需求。

附图说明

图1为本发明电路原理示意图。

图2为本发明稳压电路原理图。

图3为本发明主控电路原理图。

图4为本发明驱动电路原理图。

图5为本发明按键电路原理图。

图6为本发明主程序流程图。

具体实施方式

下面结合附图,对本发明的技术方案进行具体说明。

本发明的一种p-iris的寿命检测控制电路,包括基于stc15f204ea主控芯片的主控电路、用于为整个系统供电的稳压电路、与主控电路连接且用于驱动p-iris的电机工作状态的驱动电路、与主控电路连接且用于控制主控电路对驱动电路输出脉冲指令的按键电路;电源启动,稳压电路正常供电时,主控电路根据按键电路的各按键按下与否,对驱动电路输出不同的脉冲指令,进而控制p-iris的电机的转向和速度,以此实现p-iris在不同频率下寿命测试的控制。

所述稳压电路采用lm7809芯片、lm7805芯片及lm317芯片。

所述驱动电路采用l293d芯片。

所述按键电路包括6个按键,该6个按键分别代表p-iris不同的频率的寿命作动,通过程序分别设置为100pps、200pps、300pps、400pps、500pps、600pps。

以下为本发明的具体实施过程。

本发明的p-iris的寿命检测控制电路,包括硬件电路设计和软件程序设计,具体如下:

1、硬件电路设计:

1.1、稳压电路

如图2所示,电子产品中,常见的三端稳压集成电路有正电压输出的78系列和负电压输出的79系列。顾名思义,三端ic是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。用78/79系列三端稳压ic来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。本设计选用lm7809,lm7805。

1.1.1、可调电源稳压器

本设计可调电源稳压器选用lm317芯片。lm317是美国国家半导体公司的三端可调正稳压器集成电路。是应用最为广泛的电源集成电路之一,它不仅具有固定式三端稳压电路的最简单形式,又具备输出电压可调的特点。此外,还具有调压范围宽、稳压性能好、噪声低、纹波抑制比高等优点。lm317是可调节3端正电压稳压器,在输出电压范围1.2伏到37伏时能够提供超过1.5安的电流,此稳压器非常易于使用。

1.2、主控电路

如图3所示,本发明采用stc15f204ea为主控电路的主控芯片,stc15f204ea单片机是宏晶科技推出的新一代超低价a/d转换单片机单片机,1个时钟/机器周期,高速、高可靠,8路10位高速a/d转换,内部高精度r/c时钟,±1%温度漂移,彻底省掉外部昂贵的晶振,5mhz~35mhz宽范围可设置。单片机中还包含中央处理器、程序存储器、数据存储器、定时器、i/o口、高速a/d转换、看门狗、片内高精度r/c振荡时钟及高可靠性复位等模块。

1.3、驱动电路

如图4所示,本发明的驱动电路采用l293d芯片,l293d提供双向驱动电流高达600毫安,电压从4.5v至36v可满足大部分的步进电机。兼容所有的ttl输入。每个输出都是推拉式驱动电路,与达林顿三极管和伪达林源。启用1,2en驱动器和3,4en驱动器。当使能输入为高电平时,相关的驱动器被启用和他们的输出处于活动状态,并在其输入端的同相。当使能输入为低,这些驱动器被禁用其输出关闭,在高阻抗状态。当适当的数据输入,每对驱动程序的形式一个完整的h桥可逆驱动器适用于电磁阀或电机应用。

1.4、按键电路

如图5所示,本发明按键电路包括6个按键,该6个按键分别代表p-iris不同的频率的寿命作动,通过程序分别设置为100pps、200pps、300pps、400pps、500pps、600pps。

2、软件设计

2.1主程序流程图

主程序流程图如图6所示。首先由单片机初始化,包括对定时器及端口的初始化,然后检测模式选择按键的状态。

2.2程序设计方案

本系统编程主要采用c语言编写完成,应用模块化的设计方法,各子程序作为实现各部分的功能和过程,通过主程序不断对子程序的调用完成对p-iris的控制、延时以及p-iris切换方向控制等部分设计。

本发明电路的具体工程过程如下:

1.对单片机进行程序的烧录

2.接5v电源线,打开的电源开关,当有电源输入时,按下按键模块,单片机可通过识别地址的开合,给驱动模块输出脉冲指令,以控制p-iris的转向和速度;

3.k1,k2,k3,k4,k5,k6开关分别代表不同的频率的寿命作动,可分别设置为100pps,200pps,300pps,400pps,500pps,600pps。可通过这些按键使p-iris在不同的频率做寿命测试。

上述步骤1中采用的程序如下:

#include<reg51.h>

#defineuintunsignedint

#defineucharunsignedchar

#definelensin0

#definelensout1

#defineqianzustep1{a2=1;a3=0;b0=0;b1=1;}

#defineqianzustep2{a2=1;a3=0;b0=1;b1=0;}

#defineqianzustep3{a2=0;a3=1;b0=1;b1=0;}

#defineqianzustep4{a2=0;a3=1;b0=0;b1=1;}

#defineqianzustop{a2=0;a3=0;b0=0;b1=0;}

/*privatemacro-------------------------------------------------------------------------------------------*/

sbita0=p3^4;//houzua+

sbita1=p3^5;//houzua-

sbita2=p1^2;//qianzua+

sbita3=p1^3;//qianzua-

sbitb0=p1^4;//qianzub+

sbitb1=p1^5;//qianzub-

sbitb2=p3^6;//houzub+

sbitb3=p3^7;//houzub-

sbity1=p0^0;

sbity2=p0^1;

sbity3=p3^2;

sbity4=p3^3;

uinttcount;//timecount

uchari,n;

staticintqianstep_index;

staticbitqianzuturn;

staticbitqianzustop_flag;

staticintqianzuspeedlevel;

staticinthoustep_index;

staticintstep_index;

staticbitturn;

staticbitstop_flag;

staticintspeedlevel;

voidinittimer0(void);

voiddelay_us(intt);

voiddelay(unsignedinti);

voidqianzusteprun(bitdirectn,intspeed);

voidqianzurun(bitstepdirection,intspeedlevel,unsignedintstep);

voidsteprun(bitdirectn,intspeed);

voidmain()

{

qianstep_index=1;

step_index=1;

inittimer0();

unsignedb,c,m,k;

while(1)

{

if(y1==0){for(k=0;k<30000;k++)

{if(m==0){

for(b=0;b<100;b++){

qianzurun(lensout,10000,1);}m=1;

}if(m==1){for(c=0;c<100;c++){

qianzurun(lensin,10000,1);}m=0;qianzustop;delay(6000);

}

}}//k1100pps100step停1s循环3000次

}

if(y2==0){for(k=0;k<30000;k++)

{if(m==0){

for(b=0;b<100;b++){

qianzurun(lensout,5000,1);}m=1;

}if(m==1){for(c=0;c<100;c++){

qianzurun(lensin,5000,1);}m=0;qianzustop;delay(6000);

}

}}//k2200pps100step停1s循环3000次

}

if(y3==0){for(k=0;k<30000;k++)

{if(m==0){

for(b=0;b<100;b++){

qianzurun(lensout,3500,1);}m=1;

}if(m==1){for(c=0;c<100;c++){

qianzurun(lensin,3500,1);}m=0;qianzustop;delay(6000);

}

}}//k3300pps100step停1s循环3000次

}

if(y4==0){for(k=0;k<30000;k++)

{if(m==0){

for(b=0;b<100;b++){

qianzurun(lensout,2500,1);}m=1;

}if(m==1){for(c=0;c<100;c++){

qianzurun(lensin,2500,1);}m=0;qianzustop;delay(6000);

}

}}//k4400pps100step停1s循环3000次

}

if(y5==0){for(k=0;k<30000;k++)

{if(m==0){

for(b=0;b<100;b++){

qianzurun(lensout,2000,1);}m=1;

}if(m==1){for(c=0;c<100;c++){

qianzurun(lensin,2000,1);}m=0;qianzustop;delay(6000);

}

}}//k5500pps100step停1s循环3000次

}

if(y6==0){for(k=0;k<30000;k++)

{if(m==0){

for(b=0;b<100;b++){

qianzurun(lensout,1500,1);}m=1;

}if(m==1){for(c=0;c<100;c++){

qianzurun(lensin,1500,1);}m=0;qianzustop;delay(6000);

}

}}//k6600pps100step停1s循环3000次

}

}

}}

voidinittimer0(void)

{

tmod|=0x01;

th0=0x0ff;

tl0=0x0d2;

ea=1;

et0=0;

tr0=0;

tcount=0;

}

voidtimer0_isr(void)interrupt1

{

th0=0x0ff;

tl0=0x0d2;

tcount++;

}

voiddelay_us(intt)

{

unsignedinttt=0;

et0=1;

tr0=1;

tt=t/50;

while(tcount<=tt)

{

};

et0=0;

tr0=0;

tcount=0;

}

voidqianzusteprun(bitdirectn,intspeed)

{

qianzuspeedlevel=speed;

qianzuturn=directn;

switch(qianstep_index)

{

case1:qianzustep1;break;

case2:qianzustep2;break;

case3:qianzustep3;break;

case4:qianzustep4;break;

}

delay_us(qianzuspeedlevel);

if(qianzuturn==0)

{

qianstep_index++;

if(qianstep_index>4)

qianstep_index=1;

}

else

{

qianstep_index--;

if(qianstep_index<1)

qianstep_index=4;

}

}

voidqianzurun(bitstepdirection,intspeedlevel,unsignedintstep)

{

intstepspeed;

stepspeed=speedlevel;

for(i=0;i<step;i++)

{

qianzusteprun(stepdirection,stepspeed);

}

}

voidsteprun(bitdirectn,intspeed)

{

speedlevel=speed;

turn=directn;

switch(step_index)

{

case1:qianzustep1;houzustep1;break;

case2:qianzustep2;houzustep2;break;

case3:qianzustep3;houzustep3;break;

case4:qianzustep4;houzustep4;break;

}

delay_us(speedlevel);

if(turn==0)

{

step_index++;

if(step_index>4)

step_index=1;

}

else

{

step_index--;

if(step_index<1)

step_index=4;

}

}。

以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1