发帖数

43

原创数

43

关注者

17

阅读数

11624

点赞数

2

张角

  • ESP8266物联网开发板设计1

        大家好,我是张飞实战电子张角老师!

    通过这个电源,我们就可以得到12V的电压了,然后我们可以通过线性电源,比如7805把这个电压降压到5V,然后在再通过AMS11175V电压降压到3.3V。这种方案适用于产品开发中,我们甚至可以自己开发一块反激电源放在我们的产品的板子上。因为实际的环境中,可能只有AC 220的电源。对于一些极端的情况,比如AC 220V不能够达到的地方,有的物联网产品甚至只能是太阳能供电,当然这个电源是另外一个方案了。

    一般情况下开发板则不同,只是大家学习的工具,对吧。那么供电部分的方案,自然也是不同的。比如我们就可以从我们的笔记本或者台式机上的USB口上获取电源。这样我们就利用了电脑自己的电源模块,是吧。AC降压的部分是电脑自己完成的,我们这里的方案是站在它的基础上的。USB电源的输出电压是5V,一般情况下,这个5V电源的输出能力可以达到500mA左右,可见它的功率还是蛮大的。

    上面我们只是分析了大体的情况,那么具体到我们这个开发板中,这些大体的方案合适么?我们下面来具体分析一下。

    首先我们来看一下,我们的这个模组的供电要求,从下图可以看出这个模块要稳定工作,供电电流要大于500mA。但从这一个数据来看,我们就没有办法仅仅使用一个USB来供电,那样单片机有可能就不可以正常工作,我们这里说得是有可能呀,也不一定不能工作。但是从产品设计的角度来看,如果只用一个USB接口来供电,这样的设计是不稳妥的。

    我们今天使用ESP8266这款芯片设计一块物联网开发板,使用的模组是ESP-12F,这款模组我们在上篇文章已经给大家介绍过,生产厂家是深圳是安信可科技有限公司。我们这款开发板,只是使用这个模组内部的单片机ESP8266,实现的功能来说也相对较为简单,换句话说,也就是没有外挂单片机。

    那么总体上要实现什么功能呢?

    第一个要实现的功能是温湿度的采集,这个是物联网场景中最为常见的。远程而且在线的数据采集功能,能够为系统决策提供实时的决策依据。我们这里主要是以温湿度的采集以及往云端上传为例,给大家演示一下物联网开发板的流程是什么样子的。

    第二个要实现的功能是远程控制继电器的开关。我们从物联网的数据终端获得了数据之后,自然需要根据数据做出决策。那么这个决策执行,一个最简单的示例就是继电器的开通和关断。我们可以通过继电器的开通和关断,来决定相应的模块是不是需要运行。

    ESP-12F这个模组要想能够正常工作,首先就是要搭建一个单片机的最小系统。这个最小系统包括如下模块,比如电源模块,程序烧录模块,时钟模块,Reset模块,boot选择模块等等。只有这些模块工作正常了,ESP-12F内部的单片机才有可能工作起来。

    我们下面分别来看一下,这些小模块用什么样的方案实现比较合适。

    第一个是程序烧录模块,我们这里使用的是USB转串口,芯片是CH340G,这个是南京沁恒公司出品的,属于非常常用的芯片,性能稳定价格相对便宜。具体的电路设计也相对来说比较简单。大体的电路设计如下:

    image.png

    我们这里只是参考示意图,具体电路实现,我们后面再分析。

    第二个是时钟模块,我们这个ESP-12F里面应该已经包含了时钟震荡电路,我们不用再外接震荡电路模块。从模组管脚功能的描述上看,ESP-12F也没有外部晶振的接口,那么我们可以断定这个模组已经自己搞定了震荡器部分,要么是单片机内部的RC震荡器,要么是模组封装的石英震荡器。后面有机会,我们再对这块进行分析。

    image.png

    image.png

    Reset模块和BOOT模块按照芯片给出的说明来就可以了。RESET这个地方一般是低复位,意思也就是说这个管脚在低电平的时候,芯片内部执行复位操作。BOOT引脚,从上图也能看出,IO0为低的时候,单片机处于下载模式。如果要让单片机处于运行模式,这个引脚必须拉高或者悬空。那么我们进行电路设计的时候,按照芯片的说明操作就可以。

    再一个就是电源模块,很显然ESP-12F这个模组要能够正常工作,它一定是需要电源的。那么这个电源电压是多少呢?我们来看一下ESP-12Fdatasheet

    image.png

    这张表里面,我们是不是可以看出来这个模组的供电电压是不是3.3V呀,Io口的最大电流驱动能力是12mA对吧。VilVih表示输入低和高的电平值,从datasheet上可以看出来输入为低的时候,最低值是-0.3V,最大值是0.25倍的Vio;输入为高的时候,最低值是0.75倍的Vio,最大值是3.6VVol的最大值是0.1倍的Vio,也就是说作为输出且输出为低的时候,它的最大值0.1倍的VioVoh的最小值是0.8Vio,这句话的意思是,IO口作为输出,且输出为高的时候,它的最小值是0.8倍的Vio。了解了这些参数,可以对我们进行外围电路的设计起到指导作用。

    那么这个3.3V的电压从哪里来最合适呢?我们这里有两条思路,一条思路是从AC 220V上通过反激电源降压到12V,然后再从12V降压到3.3V;另外一条思路是利用USB接线的5V电压,直接变换成3.3V。第一种方案,我们首先要买一个12V的电源适配器,如下图所示。

    image.pngimage.png

    通过这个电源,我们就可以得到12V的电压了,然后我们可以通过线性电源,比如7805把这个电压降压到5V,然后在再通过AMS11175V电压降压到3.3V。这种方案适用于产品开发中,我们甚至可以自己开发一块反激电源放在我们的产品的板子上。因为实际的环境中,可能只有AC 220的电源。对于一些极端的情况,比如AC 220V不能够达到的地方,有的物联网产品甚至只能是太阳能供电,当然这个电源是另外一个方案了。

    一般情况下开发板则不同,只是大家学习的工具,对吧。那么供电部分的方案,自然也是不同的。比如我们就可以从我们的笔记本或者台式机上的USB口上获取电源。这样我们就利用了电脑自己的电源模块,是吧。AC降压的部分是电脑自己完成的,我们这里的方案是站在它的基础上的。USB电源的输出电压是5V,一般情况下,这个5V电源的输出能力可以达到500mA左右,可见它的功率还是蛮大的。

    上面我们只是分析了大体的情况,那么具体到我们这个开发板中,这些大体的方案合适么?我们下面来具体分析一下。

    首先我们来看一下,我们的这个模组的供电要求,从下图可以看出这个模块要稳定工作,供电电流要大于500mA。但从这一个数据来看,我们就没有办法仅仅使用一个USB来供电,那样单片机有可能就不可以正常工作,我们这里说得是有可能呀,也不一定不能工作。但是从产品设计的角度来看,如果只用一个USB接口来供电,这样的设计是不稳妥的。

    image.png

    另外一个耗电较大的是继电器,我们这里的继电器选定的是SRA系列的,线圈的开通电压,我们可以选择12V。那么我们来看一下,这个继电器的线圈需要多大的电流。

    image.png

    从上图中可以看出来,这个电流要50mA,是吧。

    我们下面来看一下CH340G的功耗情况。从下表可以看出来,它的功耗最大值是在20mA左右,这个器件待机状态的时候,功耗更低,只有0.2mA左右。

    image.png

    SHT20(温湿度检测芯片)和其他一些LED等的模块加起来,功耗应该不会超过10mA。这样算下来,这个开发板需要的总的供电能力,差不多在600mA左右。如果再留有一点余量的话,那么我们选用的反激电源适配器,它的输出能力差不多要在1A左右。

    从上面情况来看,USB供电是肯定不合适的。我们这个开发板,不适合USB供电,只能是使用适配器从AC 220V上引电下来。

    有了12V电源以后,我们第一步要做的事情,就是把12V电压变成5V的,常用的器件就是LM7805。我们来看一下LM7805的输出能力,从下图中可以看出来,它差不多有1A的输出能力,是吧。这个能力是可以满足模组功耗需求的。但是我们可以计算一下它自身的功率。 P = 12V  5V* 500mA  = 3.5W,也就是说仅仅带载ESP-12F这个板子,就需要3.5W的功率。这个对LM7805的封装来说是不可以承受的。即使加上散热片,也难保散热片不烫手,这个功率太大了。那怎么办呢?我们这里只能选择能效比更好的电源方案,比如开关电源。我们可以选择一个buck降压方案。这个buck电路,可以直接从12V降压到3.3V,也可以从12V先降压到5V,然后再通过LDO模块把电压从5V降低到3.3V。这两个方案,我们可以都用一下,看一看哪个更合适。为什么一般情况下,单片机前端电源一般采用LDO(比如AMS1117等)呢?主要是LDO输出的电压精度比较高。还有一个,如果Buck电源坏掉了,buck上的高压信号,一般也不会直接伤到单片机,中间还有一个LDO电源起到了隔离作用。另外,Buck电路输出的电压文波率相对来说也比较大,一般在2%-5%左右,这个波动对单片机的工作也会有影响。但是呢,现在的单片机一般也是宽电压输入,就像我们这个ESP-12F,它的输入电压可以从3.0V-3.6VBuck的文波率按理说应该是可以满足要求的。我们这里可以把两个方案都试一试,通过跳线帽或者0欧姆电阻的方式选择供电电源。一个是测试一个LDO电源(AMS1117)的发热量怎么样,再一个看看buck电源能不能满足单片机的需求。

    image.png

    那么我们这里还需要一个5V3.3V的电压变换,我们这里也选择最为常用的AMS1117。这个片子上面的功耗也是蛮大的,P = 5V  3.3V* 500mA = 0.85W。我们需要对这个片子的散热做一些特殊的处理,比如在地上需要大面积敷铜或者加散热片。我们这里AMS1117选择SOT223的封装,等板子搞好之后,实测一下温升能有多少。buck芯片我们采样SY8120 DCDC的片子,具体buck电路的设计,我们有机会展开来讲。

    讲完了单片机的最小系统,我们看一看器件封装的一些问题。

    对于各个器件原理图和PCB的封装,站在开发板这个需求程度上,我们可以直接采用立创上给出来的。但是如果实际做产品的时候,元器件pcb的封装,我们就要格外注意了。pcb的封装要和实际生产工艺匹配起来,这样才能最大程度上降低生产成本,进而能够降低产品总的成本。比如封装不能过大,否则可能就会有立碑现象;再比如,如果封装大小不合适,虚焊的可能性就会加大,进而产品的质量可能就会受到影响。做产品的问题,我们暂且不说,我们先来看一下,如何直接利用立创商城提供的封装。第一步,我们要先把这些封装导出来,我们这里以DHT11为例(目前这样使用有效,后续网站可能会改版,大家留意)。

    比如我们这里首先选择直接使用厂家提供的封装,点击立即使用以后,就会出现schdocpcbdoc两个类型的文件。我们后面把可以把它导出来,变成AD软件支持的格式。这里说一下,我这里习惯使用AD软件,可能和一些同学的习惯不太一样。如果大家直接使用立创的画图软件,也就不需要导出来了。这个地方大家酌情使用。

    image.png

    image.png

    image.png

    这些文件导出来之后,我们就可以在AD软件里面生成相应的lib文件了,以便于我们在画原理图和PCB图的时候使用。

    今天关于这个开发板的分享,就先到这里。我们下篇文章会继续探讨相关原理图模块的设计。

     

    ①基于ESP8266STM32物联网开发板设计

    https://blog.csdn.net/weixin_42107954/article/details/97494269

    ②物联网开发板-ESP8266   https://lceda.cn/jixin003/iot_board_esp12

    ESP8266教程-技小新 https://www.yuque.com/lingyao/jing/ob5wia

    ESP-12F 规格书

    https://item.szlcsc.com/84052.html

    https://atta.szlcsc.com/upload/public/pdf/source/20210219/C82891_ABD84A460F4F056A2757267CCCA4B508.pdf

    SRA系列继电器说明书

    https://item.szlcsc.com/61221.html

    https://atta.szlcsc.com/upload/public/pdf/source/20180525/C60169_619C103F264B8308190CF1E1CA37960C.pdf

    CH340C datasheet https://item.szlcsc.com/85852.html

    LM7805 datasheet https://item.szlcsc.com/520584.html

     


    收藏 0 回复 0 浏览 214
  • 讲透有史以来广受欢迎的运算放大器μA741(4)---输入阻抗及输入级差动放大

    大家好,我是张飞实战电子张角老师!

    image.png

    我们来看下T1T2这两个管子的作用,这两个管子主要是用来提高输入阻抗增益的。由于Q2本身的Ic电流很小(假定是20uA),我们假定VBVC是相等的,那么T1T2Ic也是相同的,这个每个管子的Ic只有10uA。假定这个这两个管子每个管子的放大倍数是200,那么T1T2这两个管子每个管子分配的Ib电流只有 10uA/200 = 0.05uA = 50nA

    那么对于输入信号而言,只有有500nA的通流能力,那么信号的输入就不会失真。当然这里只是估算,但是它从本质上说明了这个运放对输入信号的内阻基本上是没有要求的,不是说内阻一定要多小,需要多高的驱动能力,这样也就提高了这个运放的通用性。当然现在新型的晶体管运放,使用的是两级三极管去提高运放的输入阻抗,这样信号就更不容易失真。

    image.png

    再一个这个运放使用的是N管来提高输入阻抗的,那么这里就有一个问题,也就是如果N管是站在地上的。那么信号也就必须要具备驱动N管的能力,至少信号在A点处产生的电压值呀大于0.7V才行。这样其实也就是提高了对信号的要求,大家想一想,对于一个本来就很微弱的信号,再对它的电压幅值提要求,是不是有点不切实际。uA741为了解决这个问题,使用了一个什么方案呢?它是使用双电源供电来解决这个问题的,它给运放提供了正负两路电源,也就是说T1T2这两个三极管它的E极电位其实并不是0V,而是负压,这样是不是就解决了输入信号电平电位的问题。但是这个动作又带来了新的问题,那就是必须得有负压电源,那么也就从另外一个方面增加了电路的成本。

    目前较新的运放,对内阻的提高上,主要是使用双P管的方案。这样一方面提高了输入阻抗,另外一方面对放大信号的电压幅值没有什么要求,相当于对uA741这款运放的输入级进行了改进。

    image.png

    T5T6这两个管子起到什么作用呢?我们再来回顾一下这个运放的工作过程,当IN-大于IN+的时候,T2Ic电流是不是大于T1Ic电流,那么自然T5Ic电流大于T6Ic电流。我们是T5T6这两个管子,他们的基极电位是相同的,由于它们的Ic电流不同,所以它们的E极电位是不同的。由于T5Ic大于T6Ic,所以T5Ve大于T6Ve,所以Ibt5<Ibt6。大家注意一下T5T6两个管子的电流状态,Ict6 < Ict5, 然而Ibt6>ibt5,那说明T5这个管子在往放大的状态移动,而T6这个管子在往饱和的方向移动。当IN-IN+两个管子的压差达到一定程度的时候,T6这个管子也就达到深度饱和状态。所以说T5T6这两个管子的存在提高了差分的增益,使得T5这个管子的Vc输出的电压更高。如果没有这两个管子,只有两个电阻,那么输入端的增益就要相对小不少,我们再从另外一个角度说明一下,T5本身的Rce也是一个可变电阻,它集电极到源之间的电流也就是Ic电流越大,那么也就是从源到T5集电极的内阻越小;反过来说,也就是T5Rce变得越来越大,这样T5Vc电压也就越来越大。从这个角度上也可以看出来T5T6这两个管子的存在提高了输入级的放大增益。

    T7这个管子的存在主要是增加对称性,减小运算放大器本身不对称带来的误差。这个我们下节课再分析。


    收藏 0 回复 0 浏览 211
  • 讲透压敏电阻的工作原理、选型以及相关计算

    大家好,我是张飞实战电子张角老师!

    我们今天分享一下压敏电阻的选型以及相关计算的知识。

    首先我们需要回答一个问题,为什么需要压敏电阻。压敏电阻,顾名思义,对电压很敏感的电阻;中文这个“敏感”对应到电路中,应该就是一个非线性的变化:当电压达到一定的数值的时候,器件的阻抗呈现出剧烈的变化,这个剧烈的变化应该是量级上的。我们之所以会需要这种特性的电阻,肯定是电气设备中会遇到这样的源,需要这样的响应;反过来说,如果没有这样的响应,电路中的其他相邻或者相关器件就会出问题。

    大自然的起电方式,其实主要有两种,一个是感应起电,一种是摩擦起电。我们常用的水电、风电、火电等等,本质上属于感应起电,发电的过程本质上属于机械能通过电磁感应现象转化成电能的过程。这些电能经过升压之后,进行远距离传输,然后再经过降压,最后变成我们日常使用的220V的交流电。摩擦起电,我们比较熟悉的就是静电现象,以及雷电现象。静电,大家很多人肯定都有切实的感受,尤其是在冬天的时候。雷电,其实蕴含着非常巨大的能量,可是因为它的位置飘忽不定以及瞬间非常高的电能释放,人类到目前为止也没有办法驯服雷电,让它为人类所用。目前能做的,还是想办法避免它造成的灾害。

    image.png


    感应起电

    image.png


    静电

    image.png

    雷电

    其实压敏电阻这个器件之所以被发明出来,就是为了在雷击的发生的时候,防护器件的。雷电的存在是不以人的意志为转移的,对于这个电源,我们利用不了它,但是总不能被其所害。由于雷电产生的高压高能量具有瞬间性,那么必然要求防护器件也具有这样的响应特性。压敏电阻也就应运而生了。

    image.png

    压敏电阻外观上,大体就是这个样子。它的内部结构是什么样子的呢?实际上压敏电阻是使用陶瓷工艺制作而成,它内部的微观结构中包含氧化锌的晶粒以及晶界。晶粒因为内部晶体分子排列非常整齐,所以电阻率很低;晶界则不然,它的电阻率却很高。相互接触的两个晶粒之间相当于形成了一个齐纳二极管的势垒,这个其实就是一个压敏单元。每个压敏单元的击穿电压差不多是在3.5V。压敏电阻的基体就是很多这样的单元进行串联和并联而成。串联的单元越多,它的击穿电压也就越高;并联的单元越多,它的通流量也就越大。压敏电压在工作的时候,它的每个单元都在承受浪涌电能量,而不像齐纳二极管那样,只有结区才承受电功率,这也就是压敏电阻能够承受大得多的浪涌能量的原因。

    我们先来看一下压敏电阻的位置,一般在开关电源中,压敏电阻处在接线端子的后面,和LN之间的负载是并联的。


    image.png

    我们看一下雷击能量过来的时候,压敏电阻是如何实现对相关器件保护的。正常工作的时候,压敏电阻两端之间的阻抗是非常大的,可以近似地看成是开路的(实际上存在着非常微小的漏电流,一般10-20uA)。一旦雷击能量来了,会有瞬间高压加载压敏电阻上,这个时候压敏电阻就会被击穿,呈现出非常低的阻抗。这个内阻在雷电这个能量源的内阻Re面前,相对来说非常小,那么根据电阻分压的原理压敏电阻上的电压就会非常小。压敏电阻和后级负载是并联关系,因为压敏电阻相对负载电阻来说也非常小,所以大量能量都是从压敏电阻流过,被压敏电阻吸收了。通过这样的方式,就实现了对负载的保护。


    image.png

    讲完了压敏电阻的基本原理,我们来看一下压敏电阻该如何选型,既然要提到选型,肯定离不开压敏电阻的各种参数,只有深刻理解了这些参数,我们才能对压敏电阻的选型更加自如。我们先来看一下,常用的471KD10和471KD20这两款压敏电阻。

    image.png

    我们首先需要回答的是,这个命名是什么意思,一般情况下命名标记上往往会一个器件最关键的信息。这个名字可以分为两个部分,第一个部分是471K:471,表示压敏电压是47*10^1 = 470V; K表示精度误差在+/-10%左右。第二部分,D10(或者20),表示压敏电阻的直径是10mm还是20mm,从数据上来看,肯定直径越大,压敏电阻的个头越大。


    下面,我们就从名字入手来解释压敏电阻的一些指标。第一个关键词就是压敏电压,那什么是压敏电压呢?压敏电压是指在压敏电阻上加上一个直流电压,如果流过压敏电阻的电流达到1mA,这个时候的直流电压就被称之为压敏电压,所以有时候压敏电压也用U1mA或者V1mA来表示。比如对于471KD10,这款压敏电阻,它的压敏电压就是470V。因为器件的一致性问题,或者说误差的存在,K级别的压敏电阻的压敏电压在423V(470V*0.9)到517V(470V*1.1)之间。


    我们下面来看一下最大允许工作电压,这个指标的意思其实是压敏电阻能够长时间承受的最大电压,这个电压分为交流电压和直流电压。一般最大允许的交流电压是压敏电压的0.64倍,最大允许的直流电压是压敏电压U1mA的0.82倍。


    最大钳位电压也就是我们说的残压或者说最大限制电压,是指给压敏电阻施加规定的8/20us波冲击电流时它两端的电压。这个8/20us冲击电流是什么意思呢?也就是8us中达到峰值电流的90%,20us后电流降低到峰值电流的50%,这个冲击电流是模仿雷电的冲击电流来设计的。从这个电流的波形上就可以看出,压敏电阻其实并不需要太快的响应速度,这个器件更重要的使命是能够能量吸收掉,当然这个都是相对于TVS二极管而言的。我们选择压敏电阻的时候,它的残压一定要小于被保护电器的耐压水平,否则就达不到保护的目的。


    我们这里要注意呀,有些产品的datasheet中,在这一栏里面有一个和钳位电压相对应的电流值。其实这个电流值的意义不大,我们只需要关注最大钳位电压这个值。

    image.png

    最大通流量,是指最大脉冲电流的峰值是指环境温度为25°情况下,对于规定的冲击电流波形和规定的冲击电路次数而言,压敏电压变化不超过+/-10%的最大脉冲电流。大家可以看一下,471KD10的最大通流量可以达到2500A,这个电流是超级大的。用这么大的电流去冲击压敏电阻的话,会对压敏电阻这个器件本身造成伤害的。基本上打个10来次,压敏电阻就损坏掉了。我们选择压敏电阻的时候,器件本身所能够承受的最大通流量一定要大于实际工作中所承受的通流量。


    我们这里需要注意了,在datasheet里面,最大限制电压这个值是在一定的电流值下测出来的,比如我们这个471KD10就是在25A的时候,最大限制电压为775V。实际进行EMC测试的时候,冲击电流肯定是大于这个的,比如我们进行4000V雷击测试的时候,考虑走线上的电阻、压敏本身的电阻、NTC的电阻,差不多有5R左右,那么冲击电流就有800A左右。那么此时的限制电压或者说钳位电压是多少呢?实际上压敏电阻通流越大,肯定限制电压也就越高,但是这个升高的幅值没有那么大,也就是说电流越大,压敏电阻的阻抗越低。U = I*R,有增长,但是增长的速度是放缓的。25A的时候,最大限制电压是775V,压敏电阻的等效内阻差不多是31R;我们假定800A的时候,它的限制电压是1500V,此时压敏电阻的等效内阻是1.875R,为什么这个地方是假定呢,因为实际测试的时候,很少会去测这个值。大家可以看到一半压敏电阻的后面,还有X电容、Y电容等吸收措施,这个电压其实是上不去的。实际测试的时候,比如我们做8000V的雷击实验,实测X电容上端的电压大约在500V左右,大概就是这个样子。

    image.png

    讲完了这个,后面还有一个最大能量值,其实这个最大能量值也是和压敏电阻的直径强相关的。我们说雷击的电压虽然高,但是毕竟时间短暂是吧,所以能量总值不是很大是吧。我们这里可以来算一下,比如4000V的雷击,回路的总阻抗还是以5R来算,那电流值差不多是800A,我们说雷击的持续时间一般是20us是吧。那么我们来算一下,这么短的时间内,雷击总共释放了多少能量呢?


    E = U * I * t = 4000V * 800A * 20S ÷ 1000000 = 64J

    我们这里采用了估算的方式是吧,实际上电流不是一直都是800A的,具体波形上面我们也画出来的,那这样算的话,实际雷电释放的能量差不多只有30J左右。这里面有不少能量被电线、保险丝、NTC电阻吸收掉了,实际上压敏电阻吸收的能量还要少一些。


    我们来看一下,最后一个指标,压敏电阻的额定功率。471KD10的额定功率是不是只有0.4W呀,也就是说压敏电阻不能持续通过很小的电流是吧。这个从它的封装大小也能看出来,实际上压敏电阻不工作(没有雷击)的时候,它的漏电流是很小的,一般小于20uA,所以正常工作的时候,这个封装功率都是可以满足要求的。但是供电电压是不稳定的,那么流过压敏电阻的电流值也会变大,但是长期工作下,471KD10所能承受的最大功率也就是0.4W。


    讲完了压敏电阻的各个参数,我们具体选型的时候,最主要的两个指标。一个就是压敏电压,一个就是通流量。我们国内市电的电压是220V,但是这个电压是有波动的,尤其是在供电质量相对较差的农村。我们假定正常情况下,电压有20%的波动,那么市电的有效值也就变成了264V。我们根据有效值和峰值的关系,可以推算出来市电的峰值电压在373V。这个373V也是一个大体的估计值,实际上峰值电压可能比这个还高。我们选择的471KD10这个压敏电阻,我们计算下来它的开启电压是在423V到517V之间,是吧。但是我们说这个+/- 10%其实是正态分布的,也就是说存在极个别的压敏电阻开启开启电压小于423V的。综合考虑电网的不稳定性和压敏电阻精度的问题,选择开启电压大于470V是相对合适的。最大通流量这个指标,根据刚才我们的算法,大体评估一下就可以了,这里很难有精确的计算。实际进行EMC测试的时候,如果不能通过,就换大一号的。如果空间不够,我们还可以选择加强型的。


    如果我们想降低残留电压,可以使用压敏电阻和气体放电管串联的办法,如下图所示。

    image.png

    上图的方案采用的是391压敏电阻+600V的气体放电管,因为气体放电管导通之后残余电压非常低,压敏电阻这里选择391的,动作之后它的残余电压相比471也要低不少。391的钳位电压是650V左右,471的钳位电压是775V。R1、R2的作用是为了减少气体放电管上的电压,因为陶瓷放电管电容只有几个pF,但是压敏电阻有几百个pF,根据电容分压,陶瓷放电管上的电压基本就等于电源电压。


    讲完压敏的好处,我们来看一看压敏电阻的缺点。我们前面提到过,压敏电阻主要是用来防止雷击的,雷击的能量其实是us级别的,实际上压敏电阻的反映时间差不多是ns级别。另外它的个头也相对较大,那么要实现对芯片器件更为精细的保护,这个时候压敏电阻就有点吃力了。这个时候,一般使用TVS二极管,它的反应时间更为迅速,响应时间为ps级别的,而且它的体积也相对比较小,比如0603或者0402封装。当然TVS二极管不能流过较大能量,所以它一般处于防护的最后级。

    我们关于压敏电阻的分享,就先到这里。


    收藏 0 回复 0 浏览 206
  • RISC-V鸿蒙系统开发板SPI通信模块调试2(项目连载5)


    上篇文章中,我们提到了使用读取SPI Flash ID这个程序段,来测试SPI的通信是不是成功。

    目前程序运行的结果,是无法正确读取Flash 芯片的ID的。那问题出现在哪里呢?如何去分析这个问题,或者说去尝试解决这个问题呢?

    在进行波形分析之前,我们首先要做的就是查看一下芯片有没有虚焊,还有选用的SPI Flash芯片是不是我们需要的。

    经过仔细比对,确认我们购买的W25Q128芯片,就是睿思芯科公司提供的例程所使用的芯片。那么在芯片的选型上应该没有问题。

    那芯片有没有虚焊呢?这里总共涉及到3块芯片,一个是我们的单片机,一个1.8V3.3V的电平转换芯片,另外一个就是SPI Flash芯片。因为单片机引脚之间距离只有0.2mm,芯片重新焊接的难度太大。所以,我这边就重新把电平转换芯片和SPI Flash芯片吹下来,重新焊接了一次。确保电路的焊接是没有问题的。

    芯片焊接的重新焊接的过程中,发生了一件非常可怕的事情,电平转化芯片TXB0104的焊盘被整体损坏掉了。如果不是有同事帮忙调试焊接,这块板子有可能就废掉了。

    如果是个别焊盘损坏掉,还可以飞线进行操作,现在整排焊盘都掉了,该怎么办呢?

    实际调试的过程中,对焊盘的修复,我们使用的办法是把损坏掉的焊盘附近的铜线上过油刮掉,使用裸露的铜线作为新“焊盘”进行焊接。然后,再使用非常细小的铜丝把芯片的引脚和板子上的铜线连接起来。如下所示,这个操作过程比较麻烦,需要有娴熟的焊接功底才行。

    图片9.jpg

    但是现在有一个重要的事情需要总结,为什么焊接的过程中,自己会把这个电平转换芯片的焊盘一整排全部搞掉?自己确实没有在给焊盘加锡的过程中,使用烙铁头去剐蹭焊接。最后的总结是,在给焊盘加锡的过程中,烙铁头的温度过高,同时由于烙铁头使用的时间太长了之后,氧化严重。上面两个因素导致了烙铁头上的锡非常粘稠,同时温度非常高。那么在加锡的过程中,很容易就会把焊盘带掉。而且因为是加锡的过程,会同时对很多焊盘进行操作,所以一掉就是一整排!!!

    这块开发板,在实际焊接芯片引脚的过程中,我们设定的烙铁温度,高达450度,如下图所示。

    图片10.jpg

    我们为什么会使用到这么高温度的呢?主要是我们这个板子是四层板,TOP层和BOTTOM层之间的两层,进行了大量的敷铜。导致散热非常快。把烙铁头的温度调高,可以增加焊锡的流动性。如果按照平时300-350度左右的温度来焊板子,我们所熟悉的拖锡动作是没有办法实现的,锡一下子就凉掉了。

    但是如果有芯片压在焊盘上,使用这么高的温度进行拖锡,并不会造成焊盘的脱落!

    在这块,我们调试的经验就是,给电路板的焊盘进行加锡的过程中,一定不能把温度调节得太高,否则会造成一排焊盘脱落的人间悲剧!这种情况下,大概率,这块板子就废掉了。

    上面也提到了,电平转换芯片TXB0104SPI Flash重新焊接之后,SPI通信依然没有成功。那说明大概率并不是芯片虚焊的问题。那个单片机的引脚,我们目前只能假设它的焊接是完全成功的(太难焊了,拆下重焊成本太高)。那么接下来,只能是先对波形详细分析了。

    首先,我们需要做的就是去查看CLK这个引脚的波形,看看CLK的波形输出是不是合理的。SPI,需要在一定的频率范围内才能正常工作。如果频率太高的话,MOSIMISO这两个接口的波形,可能还没有达到芯片规定的“高”或者“低”,时钟沿就进行了下一次的跳变,这种情况下,很显然单片机和SPI Flash之间是无法进行通信的。

    先给大家看一下,我这边第一次抓到的CLK引脚的波形。

    图片11.jpg

    大家看到这个波形的时候,是不是觉得有点奇怪。在这个波形中,猛一看CLK的频率信号只有60Hz左右。而实际上,我们的CLK的频率至少要是几Mhz呀。那这个频率是怎么回事呢?

    后来分析得到结论,上面图中的高脉冲应该是程序的延时之间的间隔,也就是两个测试程序之间的时间间隔,或者是两次发送数据之间的间隔。真正的CLK波形,需要使用单片机的触发功能,去捕获相应的波形。所谓的触发功能,就是可以设定一个比较值,如果输出信号的波形大于了这个值,示波器就会显示出来这个信号的波形。这里有一个信号比较的过程存在。

    通过示波器,捕获出来真正的CLK信号之后,它的波形是如下形状的。

    图片12.jpg

    大家看一下,这个波形的频率高达12Mhz。这个12Mhz是怎么来的呢,我们前面提到了这个单片机的时钟晶振是24Mhz,那么这个SPI的通信速率12Mhz应该是时钟信号24Mhz二分频之后得到的。现在,我们就有一个怀疑,SPI通信的失败是不是由于这么高频的通信速率导致的呢?

    还有一个问题,大家有没有发现这个CLK的波形,它的最小值并没有到参考地。同时它的最大幅值,我们使用示波器测量之后,只有2.2V。可是SPI这边的工作电压是3.3V呀,而且我们的电平转换芯片输出的电压也是3.3V。那是不是这个CLK信号,本身就是有问题呀?或者说在这个电压幅值区间,Flash芯片能不能识别CLK信号呢?

    我们这片文章,就先分析到这里。下一篇,我们继续SPI通信的调试。


    收藏 0 回复 0 浏览 191
  • RISC-V鸿蒙系统开发板SPI通信模块调试3(项目连载6)


    大家好,我们继续SPI通信接口部分的调试分析。

    上篇文章我们提到CLK的波形幅值最高处只有2.2V,远远没有达到3.3V这一芯片工作电压。同时CLK波形的底部也不是0V。我们因此怀疑RISC-V单片机发出的CLK波形,存储芯片有可能分辨不出来。应该说这个怀疑是合理的。如果大家想从最基础的原理上去辨别出来这个波形的正确性,需要仔细去研读单片机和Flash存储芯片的datasheet。因为我们这块板子是参考睿思芯科一块老的开发板来进行设计的,在他们原有的开发板上这个Flash存储芯片是可以正常读取的。那么我们可以先测试一下原有板子这个引脚处的CLK波形是什么样子的,对比一下就知道,CLK的这个波形是不是正确的。

    下图是我们实际测试到的他们原有开发板上CLK引脚处的波形,大家可以看一下这个波形。这个波形的幅值和频率和我们现有开发板上的波形是一致的,那换句话说我们这个我们板子上的CLK信号也是可以让存储芯片正常工作的。

    图片13.jpg

    既然CLK波形是没有问题,那为什么还收不到数据呢?那我们看一下MOSIMISO的波形,看一看到底是哪里出问题了。如果单片机这一侧能够发送控制信号到W25Q128这一侧,按理说应该是MOSI这条回路是没有问题的。如果MISO这条回路,在单片机侧能够收到波形,那说明MISO这条信号传输回路没有问题;某种意义上它还可以说明,存储芯片W25Q128FVSG收到单片机指令之后,进行了响应。

    图片14.jpg

    大家看一下这个波形,这个是MOSI回路在W25Q128这一侧测到的波形。这个至少可以说明了刚才我们提到的结论:单片机成功给W23Q128发送了信号。

    图片15.jpg

    大家看一下这个波形,这个是MISO回路在芯片这一侧的波形。如果使用示波器的捕获功能,同时使用两个通道来捕获波形,一个是MISO,一个是CLK,那么截取的波形就是下面这个样子。

    图片16.jpg

    同样地,这个图片也说明了一个结论,那就是W25Q128确实收到了单片机发出的指令,并且进行了响应,只是波形不对。那问题出在哪了呢?大家看一下MISO的波形,这个信号也出现了“高”没有“高”上去,有些地方“低”却没有“低”下来的情况。波形看起来比较奇怪,看不出来,这个到底是什么数据。

    问题卡在这里了,那到底是哪里出错了呢?

    首先引起怀疑的就是时钟信号的频率有点太高了,以至于MISO这根线上相应的器件响应速度根本反应不过来,或者是发生了震荡,所以才导致了这种高不高、低不低的情况发生。

    解决这个问题的办法,一般是在发送引脚和接收引脚之间串联一个电阻,用以防止震荡的发生,但是因为我们这个电路已经画好了,已经没有办法再增加电阻。目前能够尝试的办法就是降低信号发送的频率了。降低信号的频率之后,震荡自然也就不会发生了。

    图片17.jpg

    调试的方向明确了,我们要从软件上把通信时钟的频率降低下来,这里要做三处更改。因为SPI接口读取Flash的程序是使用Linux kernel里面的框架来写的,改动起来相对来说比较复杂。

    主要修改的地方有三处,我们在这里耽误了不少时间,主要的原因是这个kernel框架比较复杂。SPI1_CLK_DIV_DWH是一个宏,我们可以通过更改这个宏的值,来改变系统时钟分频的系数。

    图片18.jpg

    图片19.jpg

    图片20.jpg


    不过,比较悲催地是,频率降低以后,MISO的波形依然是不对的,还是这种不高不低的样子。那就奇怪了,这到底是什么原因引起的呢?实在是有点难以理解呀。信号传输的电路都是通的,而且都有波形出来,只是波形不对,难道是存储芯片坏了?不应该呀。实在是不应该出现这样的错误。

    那读取W25Q128 ID的波形具体应该是什么样子的呢?根据W25Q128这个芯片的datasheet,读取它的ID时,MISO返回的数据应该是这样的。

    图片21.jpg

    调试到这个时候,实在是已经没有可怀疑的了。只能是怀疑睿思芯科提供的参考原理图是错误的(芯片刚刚出来,资料不齐全,这个也是可以理解的),经过仔细的引脚比对,果不其然,他们提供的原理图接口顺序是不对的。我的天!在这里,来来回回调试了一周的时间,最后的结果竟然是原理图错了!!!虽然都是用的这四个引脚,但是接线顺序是不对的,唯一正确的就是CLK!!!

    把接线顺序调整后,实测MISO的波形,如下。

    图片22.jpg

    高位在前,低位在后,大家是不是可以判断出这个波形表示的数据是(EFh)呀。

    读取ID的指令只要能够发送成功,那么其他指令自然也是可以发送成功的。程序模块中对Flash芯片的数据擦除、写入也就成功了。

    现在需要总结的一个问题是,为什么刚一开始的时候,我没有怀疑到它的原理图可能是错误的呢?我总结一下,可能有两个原因。第一是,芯片本身的资料是不全的,引脚核对工作不是那么方便;第二是,他们提供了一个参考的板子,这个板子上的SPI Flash芯片是可以正常读取的,这个现象在一定程度上,打消了我对他们接线图的怀疑。这个事情告诉我们,对于不成熟的东西,一定要仔细根据最可靠的文档来核对自己的电路是不是正确。因为不成熟,大家都比较容易犯错,以至于以讹传讹。

    希望我分享的相关调试经验,能够给大家带来一些帮助。


    收藏 0 回复 0 浏览 183
×
张角