本帖最后由 straka 于 2018-8-23 22:20 编辑
ESP8266 SDK开发入坑1(http://www.straka.cn/blog/starting-with-esp8266-light-a-led/)
1里面有最简单的demo,2里开始使用中断进行简单的控制吧,这回重点从代码转移出来,到电路部分,一直想自己打样PCB,不过不会,最近上B站看了些小视频学了些,就匆忙大了个样,不过。。。下一篇再说【逃】
我的想法就是做个能替换现有机械开关的wifi物联网开关(嗯,我没敢像市面上的开关那样就一个远程控制就敢说智能,家居要到智能的程度,还有很长的路要走,技术其实差不多都可以实现,但是至少离普通人家还很远),第一步先不管远控的事,先只实现触摸控制。
软件部分很简单,代码见下一篇【http://www.straka.cn/blog/starting-with-esp8266-touch-relay-code】,设置引脚中断,然后在中断里控制继电器引脚电平输出,再一个定时器,闪烁下灯简单判断工作状态(这个本是后续开发才用上的,但是好在这一步就顺便开启了,不然后面调试的时候有个坑迟迟跳不出来)。
硬件部分也不复杂,220AC-DC模块取电5v,然后接AMS1117转3.3v,5v用于控制继电器,3.3v ESP8266供电。GPIO引脚控制继电器采用光耦隔离+三极管放大电流驱动。触摸感应用的模块,没有设计电路板,毕竟和电路板不在一起,触摸感应芯片是TTP223,亲测5mm左右的感应距离,还是蛮好用的。
然后是选型,这个对于我这个业余来说是个很头疼的事情,又不能看着网上别人咋画电路图用啥元件我就用啥吧,本身电路就容易出bug,我这种业余的就更难应对了。先上原理图,先说电源部分
这部分选型参考的模块说明书,没啥好说的
然后是继电器驱动部分
这里要根据继电器、光耦、三极管的说明书上的特性曲线选型才能达到比较好的效果。
首先我们要从继电器的说明书看起,因为最终这部分电路要使得继电器部分能有足够大的驱动电流。
这里选SRD-5V的版本而言,线圈电阻70ohm左右,电流71.4mA,要驱动这么点电流,光耦肯定不合适,但也并不需要大功率三极管,S8050就够了,我买的S8050没有配到资料,也查不到厂家,但是通常的S8050的放大倍数100左右,带个至少100mA没问题,以长电的S8050,sot23封装为例(简标J3Y),
Ic为71mA左右,Hfe大概为110倍,那么Ibe大概要有大于0.65mA,如果按上述原理图,R23是为保证光耦断开的时候,三极管B极可靠接地,因而R23可以选择大一点,10k,减少电流消耗,那么根据下图:
当Ic为70mA,Vbe为0.6~0.7V之间,那么导通时的R23上的电流约0.07mA,R22上的电流约0.65+0.07~0.72mA,这些都是粗略的估算,不要太较真具体数值,数值范围合理就行(本身电路也充满了不确定性、元件参数的误差、实际使用环境的影响,不可能存在理想的选型,完美的电路设计,总是有浮动空间的),那么再看光耦的参数:
这个图是前向电流-电流转换率的图,那么当IF=1mA,转换率略大于0.5,那么输出电流才0.5*1~0.5mA,有点不太够,当IF=2mA,看图转换率>0.7,差不多够了,那么,如果我们按照这个边界条件选型的话:
根据上图,Vce压降约0.1~0.2V左右吧,可以忽略,那么R22<=(5-0.7)/0.72~5.97K,而根据下图:
前向压降大概1.1V,R21 <=(3.3-1.1)/2 ~ 1.1k
上述都是计算的电阻值边界,靠近边界的好处是使光耦和三极管接近饱和的情况下降低功耗,因为饱和情况下需求的前级电流才最小,当然在继电器应用场景下这么做有点杯水车薪,比较相比继电器几十毫安的电流,省下来的这么零点几毫安电流有点微不足道,倒是如果能换个磁保持继电器什么的,对于功耗的控制很有帮助,但是成本也就上去了。
最后看ESP8266部分,因为我用的是ESP8266-01S模块,电路板上留的是2*4 HDR母座,G2连接触摸模块信号引脚,G0控制光耦,RST复位电路。周边的元器件选型没啥说的,复位电路的常规上拉电阻R52和C52电容,CH_PD引脚上拉使能,C51的近芯片电源滤波。但是这里有个坑,R53,由于芯片上电进入工作状态需要保持G0、G2、CH_PD引脚都是高电平,问题出在G0上,G0通过R21与光耦相连,再加上10k的上拉电阻,其实上电状态G0是处于低电平的!如果高电平会使得光耦导通,所以导致芯片不能正常工作。这也给我后续调试埋了个大坑,始终不能正常工作,好在开启了LED灯,看到等没闪就知道去找为啥电路没有正常工作的原因。搞不懂乐鑫为啥要给芯片启动工作设置这么复杂的条件,居然要设定4个引脚的电平状态正确才能工作。
原博客
http://www.straka.cn/blog/starting-with-esp8266-touch-relay/ |