最新日志

发表于:2008-5-15 20:32:46
标签:无标签

0

使用PROTEL画PCB板的一般心得 转载

使用PROTEL画PCB板的一般心得  转载 精华

一、电路版设计的先期工作

1、利用原理图设计工具绘制原理图,并且生成对应的网络表当然,有些特殊情况下,如电路版比较简单,已经有了网络表等情况下也可以不进行原理图的设计,直接进入PCB设计系统,在PCB设计系统中,可以直接取用零件封装,人工生成网络表

2、手工更改网络表 将一些元件的固定用脚等原理图上没有的焊盘定义到与它相通的网络上,没任何物理连接的可定义到地或保护地等将一些原理图和PCB封装库中引脚名称不一致的器件引脚名称改成和PCB封装库中的一致,特别是二、三极管等

二、画出自己定义的非标准器件的封装库

建议将自己所画的器件都放入一个自己建立的PCB 库专用设计文件

三、设置PCB设计环境和绘制印刷电路的版框含中间的镂空等

1、进入PCB系统后的第一步就是设置PCB设计环境,包括设置格点大小和类型,光标类型,版层参数,布线参数等等大多数参数都可以用系统默认值,而且这些参数经过设置之后,符合个人的习惯,以后无须再去修改

2、规划电路版,主要是确定电路版的边框,包括电路版的尺寸大小等等在需要放置固定孔的地方放上适当大小的焊盘对于3mm 的螺丝可用6.5~8mm 的外径和3.2~3.5mm 内径的焊盘对于标准板可从其它板或PCB izard 中调入

注意:在绘制电路版地边框前,一定要将当前层设置成Keep Out层,即禁止布线层

四、打开所有要用到的PCB 库文件后,调入网络表文件和修改零件封装

这一步是非常重要的一个环节,网络表是PCB自动布线的灵魂,也是原理图设计与印象电路版设计的接口,只有将网络表装入后,才能进行电路版的布线

在原理图设计的过程中,ERC检查不会涉及到零件的封装问题因此,原理图设计时,零件的封装可能被遗忘,在引进网络表时可以根据设计情况来修改或补充零件的封装

当然,可以直接在PCB内人工生成网络表,并且指定零件封装

五、布置零件封装的位置,也称零件布局

Protel99可以进行自动布局,也可以进行手动布局如果进行自动布局,运行"Tools"下面的"Auto Place",用这个命令,你需要有足够的耐心布线的关键是布局,多数设计者采用手动布局的形式用鼠标选中一个元件,按住鼠标左键不放,拖住这个元件到达目的地,放开左键,将该元件固定Protel99在布局方面新增加了一些技巧新的交互式布局选项包含自动选择和自动对齐使用自动选择方式可以很快地收集相似封装的元件,然后旋转、展开和整理成组,就可以移动到板上所需位置上了当简易的布局完成后,使用自动对齐方式整齐地展开或缩紧一组封装相似的元件

提示:在自动选择时,使用Shift+X或Y和Ctrl+X或Y可展开和缩紧选定组件的X、Y方向

注意:零件布局,应当从机械结构散热、电磁干扰、将来布线的方便性等方面综合考虑先布置与机械尺寸有关的器件,并锁定这些器件,然后是大的占位置的器件和电路的核心元件,再是外围的小元件

六、根据情况再作适当调整然后将全部器件锁定

假如板上空间允许则可在板上放上一些类似于实验板的布线区对于大板子,应在中间多加固定螺丝孔板上有重的器件或较大的接插件等受力器件边上也应加固定螺丝孔,有需要的话可在适当位置放上一些测试用焊盘,最好在原理图中就加上将过小的焊盘过孔改大,将所有固定螺丝孔焊盘的网络定义到地或保护地等

放好后用VIEW3D 功能察看一下实际效果,存盘

七、布线规则设置

布线规则是设置布线的各个规范(象使用层面、各组线宽、过孔间距、布线的拓朴结构等部分规则,可通过Design-Rules 的Menu 处从其它板导出后,再导入这块板)这个步骤不必每次都要设置,按个人的习惯,设定一次就可以

选Design-Rules 一般需要重新设置以下几点:

1、安全间距(Routing标签的Clearance Constraint)

它规定了板上不同网络的走线焊盘过孔等之间必须保持的距离一般板子可设为0.254mm,较空的板子可设为0.3mm,较密的贴片板子可设为0.2-0.22mm,极少数印板加工厂家的生产能力在0.1-0.15mm,假如能征得他们同意你就能设成此值0.1mm 以下是绝对禁止的

2、走线层面和方向(Routing标签的Routing Layers)

此处可设置使用的走线层和每层的主要走线方向请注意贴片的单面板只用顶层,直插型的单面板只用底层,但是多层板的电源层不是在这里设置的(可以在Design-Layer Stack Manager中,点顶层或底层后,用Add Plane 添加,用鼠标左键双击后设置,点中本层后用Delete 删除),机械层也不是在这里设置的(可以在Design-Mechanical Layer 中选择所要用到的机械层,并选择是否可视和是否同时在单层显示模式下显示)

机械层1 一般用于画板子的边框;
   机械层3 一般用于画板子上的挡条等机械结构件;
   机械层4 一般用于画标尺和注释等,具体可自己用PCB Wizard 中导出一个PCAT结构的板子看一下

3、过孔形状(Routing标签的Routing Via Style)

它规定了手工和自动布线时自动产生的过孔的内、外径,均分为最小、最大和首选值,其中首选值是最重要的,下同

4、走线线宽(Routing标签的Width Constraint)

它规定了手工和自动布线时走线的宽度整个板范围的首选项一般取0.2-0.6mm,另添加一些网络或网络组(Net Class)的线宽设置,如地线、+5 伏电源线、交流电源输入线、功率输出线和电源组等网络组可以事先在Design-Netlist Manager中定义好,地线一般可选1mm 宽度,各种电源线一般可选0.5-1mm 宽度,印板上线宽和电流的关系大约是每毫米线宽允许通过1安培的电流,具体可参看有关资料当线径首选值太大使得SMD 焊盘在自动布线无法走通时,它会在进入到SMD 焊盘处自动缩小成最小宽度和焊盘的宽度之间的一段走线,其中Board 为对整个板的线宽约束,它的优先级最低,即布线时首先满足网络和网络组等的线宽约束条件

5、敷铜连接形状的设置(Manufacturing标签的Polygon Connect Style)

建议用Relief Connect 方式导线宽度Conductor Width 取0.3-0.5mm 4 根导线45 或90 度

其余各项一般可用它原先的缺省值,而象布线的拓朴结构、电源层的间距和连接形状匹配的网络长度等项可根据需要设置

选Tools-Preferences,其中Options 栏的Interactive Routing 处选Push Obstacle (遇到不同网络的走线时推挤其它的走线,Ignore Obstacle为穿过,Avoid Obstacle 为拦断)模式并选中Automatically Remove (自动删除多余的走线)Defaults 栏的Track 和Via 等也可改一下,一般不必去动它们

在不希望有走线的区域内放置FILL 填充层,如散热器和卧放的两脚晶振下方所在布线层,要上锡的在Top 或Bottom Solder 相应处放FILL

布线规则设置也是印刷电路版设计的关键之一,需要丰富的实践经验

八、自动布线和手工调整

1、点击菜单命令Auto Route/Setup 对自动布线功能进行设置

选中除了Add Testpoints 以外的所有项,特别是选中其中的Lock All Pre-Route 选项,Routing Grid 可选1mil 等自动布线开始前PROTEL 会给你一个推荐值可不去理它或改为它的推荐值,此值越小板越容易100%布通,但布线难度和所花时间越大

2、点击菜单命令Auto Route/All 开始自动布线

假如不能完全布通则可手工继续完成或UNDO 一次(千万不要用撤消全部布线功能,它会删除所有的预布线和自由焊盘、过孔)后调整一下布局或布线规则,再重新布线完成后做一次DRC,有错则改正布局和布线过程中,若发现原理图有错则应及时更新原理图和网络表,手工更改网络表(同第一步),并重装网络表后再布

3、对布线进行手工初步调整

需加粗的地线、电源线、功率输出线等加粗,某几根绕得太多的线重布一下,消除部分不必要的过孔,再次用VIEW3D 功能察看实际效果手工调整中可选Tools-Density Map 查看布线密度,红色为最密,黄色次之,绿色为较松,看完后可按键盘上的End 键刷新屏幕红色部分一般应将走线调整得松一些,直到变成黄色或绿色

九、切换到单层显示模式下(点击菜单命令Tools/Preferences,选中对话框中Display栏的Single Layer Mode)

将每个布线层的线拉整齐和美观手工调整时应经常做DRC,因为有时候有些线会断开而你可能会从它断开处中间走上好几根线,快完成时可将每个布线层单独打印出来,以方便改线时参考,其间也要经常用3D显示和密度图功能查看

最后取消单层显示模式,存盘

十、如果器件需要重新标注可点击菜单命令Tools/Re-Annotate 并选择好方向后,按OK钮

并回原理图中选Tools-Back Annotate 并选择好新生成的那个*.WAS 文件后,按OK 钮原理图中有些标号应重新拖放以求美观,全部调完并DRC 通过后,拖放所有丝印层的字符到合适位置

注意字符尽量不要放在元件下面或过孔焊盘上面对于过大的字符可适当缩小,DrillDrawing 层可按需放上一些坐标(Place-Coordinate)和尺寸((Place-Dimension)

最后再放上印板名称、设计版本号、公司名称、文件首次加工日期、印板文件名、文件加工编号等信息(请参见第五步图中所示)并可用第三方提供的程序来加上图形和中文注释如BMP2PCB.EXE 和宏势公司ROTEL99 和PROTEL99SE 专用PCB 汉字输入程序包中的FONT.EXE 等

十一、对所有过孔和焊盘补泪滴

补泪滴可增加它们的牢度,但会使板上的线变得较难看顺序按下键盘的S 和A 键(全选),再选择Tools-Teardrops,选中General 栏的前三个,并选Add 和Track 模式,如果你不需要把最终文件转为PROTEL 的DOS 版格式文件的话也可用其它模式,后按OK 钮完成后顺序按下键盘的X 和A 键(全部不选中)对于贴片和单面板一定要加

十二、放置覆铜区

将设计规则里的安全间距暂时改为0.5-1mm 并清除错误标记,选Place-Polygon Plane 在各布线层放置地线网络的覆铜(尽量用八角形,而不是用圆弧来包裹焊盘最终要转成DOS 格式文件的话,一定要选择用八角形)下图即为一个在顶层放置覆铜的设置举例:

设置完成后,再按OK 扭,画出需覆铜区域的边框,最后一条边可不画,直接按鼠标右键就可开始覆铜它缺省认为你的起点和终点之间始终用一条直线相连,电路频率较高时可选Grid Size 比Track Width 大,覆出网格线

相应放置其余几个布线层的覆铜,观察某一层上较大面积没有覆铜的地方,在其它层有覆铜处放一个过孔,双击覆铜区域内任一点并选择一个覆铜后,直接点OK,再点Yes 便可更新这个覆铜几个覆铜多次反复几次直到每个覆铜层都较满为止将设计规则里的安全间距改回原值

十三、最后再做一次DRC

选择其中Clearance Constraints Max/Min Width Constraints Short Circuit Constraints 和Un-Routed Nets Constraints 这几项,按Run DRC 钮,有错则改正全部正确后存盘

十四、对于支持PROTEL99SE 格式(PCB4.0)加工的厂家可在观看文档目录情况下,将这个文件导出为一个*.PCB 文件;对于支持PROTEL99 格式(PCB3.0)加工的厂家,可将文件另存为PCB 3.0 二进制文件,做DRC通过后不存盘退出在观看文档目录情况下,将这个文件导出为一个*.PCB 文件由于目前很大一部分厂家只能做DOS 下的PROTEL AUTOTRAX 画的板子,所以以下这几步是产生一个DOS 版PCB 文件必不可少的:

1、将所有机械层内容改到机械层1,在观看文档目录情况下,将网络表导出为*.NET 文件,在打开本PCB 文件观看的情况下,将PCB 导出为PROTEL PCB 2.8 ASCII FILE 格式的*.PCB 文件

2 、用PROTEL FOR WINDOWS PCB 2.8 打开PCB 文件,选择文件菜单中的另存为,并选择Autotrax 格式存成一个DOS 下可打开的文件

3、用DOS 下的PROTEL AUTOTRAX 打开这个文件个别字符串可能要重新拖放或调整大小上下放的全部两脚贴片元件可能会产生焊盘X-Y大小互换的情况,一个一个调整它们大的四列贴片IC 也会全部焊盘X-Y 互换,只能自动调整一半后,手工一个一个改,请随时存盘,这个过程中很容易产生人为错误PROTEL DOS 版可是没有UNDO 功能的假如你先前布了覆铜并选择了用圆弧来包裹焊盘,那么现在所有的网络基本上都已相连了,手工一个一个删除和修改这些圆弧是非常累的,所以前面推荐大家一定要用八角形来包裹焊盘这些都完成后,用前面导出的网络表作DRC Route 中的Separation Setup ,各项值应比WINDOWS 版下小一些,有错则改正,直到DRC 全部通过为止

也可直接生成GERBER 和钻孔文件交给厂家选File-CAM Manager 按Next>钮出来六个选项,Bom 为元器件清单表,DRC 为设计规则检查报告,Gerber 为光绘文件,NC Drill 为钻孔文件,Pick Place 为自动拾放文件,Test Points 为测试点报告选择Gerber 后按提示一步步往下做其中有些与生产工艺能力有关的参数需印板生产厂家提供直到按下Finish 为止在生成的Gerber Output 1 上按鼠标右键,选Insert NC Drill 加入钻孔文件,再按鼠标右键选Generate CAM Files 生成真正的输出文件,光绘文件可导出后用CAM350 打开并校验注意电源层是负片输出的

十五、发Email 或拷盘给加工厂家,注明板材料和厚度(做一般板子时,厚度为1.6mm,特大型板可用2mm,射频用微带板等一般在0.8-1mm 左右,并应该给出板子的介电常数等指标)、数量、加工时需特别注意之处等Email发出后两小时内打电话给厂家确认收到与否

十六、产生BOM 文件并导出后编辑成符合公司内部规定的格式

十七、将边框螺丝孔接插件等与机箱机械加工有关的部分(即先把其它不相关的部分选中后删除),导出为公制尺寸的AutoCAD R14 的DWG 格式文件给机械设计人员

二十一、整理和打印各种文档如元器件清单、器件装配图(并应注上打印比例)、安装和接线说明等

点击此处查看原文 >>

系统分类: PCB   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(325)
发表于:2008-5-5 15:22:04
标签:无标签

0

压敏电阻的测量、选型与使用

压敏电阻的测量:
压敏电阻一般并联在电路中使用,当电阻两端的电压发生急剧变化时,电阻短路将电流保险丝熔断,
起到保护作用。压敏电阻在电路中,常用于电源过压保护和稳压。测量时将万用表置10k 档,表笔接于
电阻两端,万用表上应显示出压敏电阻上标示的阻值,如果超出这个数值很大,则说明压敏电阻已损
压敏电阻标称参数
压敏电阻用字母“MY”表示,如加J 为家用,后面的字母W、G、P、L、H、Z、B、C、N、K 分
别用于稳压、过压保护、高频电路、防雷、灭弧、消噪、补偿、消磁、高能或高可靠等方面。压敏电阻
虽然能吸收很大的浪涌电能量,但不能承受毫安级以上的持续电流,在用作过压保护时必须考虑到这一
点。压敏电阻的选用,一般选择标称压敏电压V1mA 和通流容量两个参数。
1、所谓压敏电压,即击穿电压或阈值电压。指在规定电流下的电压值,大多数情况下用1mA 直
流电流通入压敏电阻器时测得的电压值,其产品的压敏电压范围可以从10-9000V 不等。可根据具体
需要正确选用。一般V1mA="1".5Vp="2".2VAC,式中,Vp 为电路额定电压的峰值。VAC 为额定交流
电压的有效值。ZnO 压敏电阻的电压值选择是至关重要的,它关系到保护效果与使用寿命。如一台用
电器的额定电源电压为220V , 则压敏电阻电压值V1mA="1".5Vp="1".5 × × 220V="476V" ,
V1mA="2".2VAC="2".2×220V="484V",因此压敏电阻的击穿电压可选在470-480V 之间。
2、所谓通流容量,即最大脉冲电流的峰值是环境温度为25℃情况下,对于规定的冲击电流波形和
规定的冲击电流次数而言,压敏电压的变化不超过± 10%时的最大脉冲电流值。为了延长器件的使用
寿命,ZnO 压敏电阻所吸收的浪涌电流幅值应小于手册中给出的产品最大通流量。然而从保护效果出
发,要求所选用的通流量大一些好。在许多情况下,实际发生的通流量是很难精确计算的,则选用2-
20KA 的产品。如手头产品的通流量不能满足使用要求时,可将几只单个的压敏电阻并联使用,并联后
的压敏电不变,其通流量为各单只压敏电阻数值之和。要求并联的压敏电阻伏安特性尽量相同,否则易
引起分流不均匀而损坏压敏电阻。
压敏电阻器的应用原理
压敏电阻器是一种具有瞬态电压抑制功能的元件,可以用来代替瞬态抑制二极管、齐纳二极管和电
容器的组合。压敏电阻器可以对IC 及其它设备的电路进行保护,防止因静电放电、浪涌及其它瞬态电
流(如雷击等)而造成对它们的损坏。使用时只需将压敏电阻器并接于被保护的IC 或设备电路上,当
电压瞬间高于某一数值时,压敏电阻器阻值迅速下降,导通大电流,从而保护IC 或电器设备;当电压
低于压敏电阻器工作电压值时,压敏电阻器阻值极高,近乎开路,因而不会影响器件或电器设备的正常
工作。
压敏电阻的选用
选用压敏电阻器前,应先了解以下相关技术参数:标称电压是指在规定的温度和直流电流下,压敏
电阻器两端的电压值。漏电流是指在25℃条件下,当施加最大连续直流电压时,压敏电阻器中流过的
电流值。等级电压是指压敏电阻中通过8/20 等级电流脉冲时在其两端呈现的电压峰值。通流量是表示
施加规定的脉冲电流(8/20μs)波形时的峰值电流。浪涌环境参数包括最大浪涌电流Ipm(或最大浪
涌电压Vpm 和浪涌源阻抗Zo)、浪涌脉冲宽度Tt、相邻两次浪涌的最小时间间隔Tm 以及在压敏电阻
器的预定工作寿命期内,浪涌脉冲的总次数N 等。
1 标称电压选取
一般地说,压敏电阻器常常与被保护器件或装置并联使用,在正常情况下,压敏电阻器两端的直流
或交流电压应低于标称电压,即使在电源波动情况最坏时,也不应高于额定值中选择的最大连续工作电
压,该最大连续工作电压值所对应的标称电压值即为选用值。对于过压保护方面的应用,压敏电压值应
大于实际电路的电压值,一般应使用下式进行选择:
VmA=av/bc
式中:a 为电路电压波动系数,一般取1.2;v 为电路直流工作电压(交流时为有效值);b 为压敏电压
误差,一般取0.85;c 为元件的老化系数,一般取0.9;
这样计算得到的VmA 实际数值是直流工作电压的1.5 倍,在交流状态下还要考虑峰值,因此计
算结果应扩大1.414 倍。另外,选用时还必须注意:
(1) 必须保证在电压波动最大时,连续工作电压也不会超过最大允许值,否则将缩短压敏电阻的使
用寿命;
(2) 在电源线与大地间使用压敏电阻时,有时由于接地不良而使线与地之间电压上升,所以通常采
用比线与线间使用场合更高标称电压的压敏电阻器。
压敏电阻所吸收的浪涌电流应小于产品的最大通流量。
压敏电阻应用
电路浪涌和瞬变防护时的电路。对于压敏电阻的应用连接,大致可分为四种类型:
第一种类型是电源线之间或电源线和大地之间的连接,作为压敏电阻器,最具有代表性的使用场合
是在电源线及长距离传输的信号线遇到雷击而使导线存在浪涌脉冲等情况下对电子产品起保护作用。一
般在线间接入压敏电阻器可对线间的感应脉冲有效,而在线与地间接入压敏电阻则对传输线和大地间的
感应脉冲有效。若进一步将线间连接与线地连接两种形式组合起来,则可对浪涌脉冲有更好的吸收作用。
第二种类型为负荷中的连接,它主要用于对感性负载突然开闭引起的感应脉冲进行吸收,以防止元
件受到破坏。一般来说,只要并联在感性负载上就可以了,但根据电流种类和能量大小的不同,可以考
虑与R-C 串联吸收电路合用。
第三种类型是接点间的连接,这种连接主要是为了防止感应电荷开关接点被电弧烧坏的情况发生,
一般与接点并联接入压敏电阻器即可。
第四种类型主要用于半导体器件的保护连接,这种连接方式主要用于可控硅、大功率三极管等半导
体器件,一般采用与保护器件并联的方式,以限制电压低于被保护器件的耐压等级,这对半导体器件是
一种有效的保护。
氧化锌压敏电阻存在的问题
现有压敏电阻在配方和性能上分为相互不能替代的两大类:
1 高压型压敏电阻
高压型压敏电阻,其优点是电压梯度高(100~250V/mm)、大电流特性好(V10kA/V1mA≤1.4)
但仅对窄脉宽(2≤ms)的过压和浪涌有理想的防护能力,能量密度较小,(50~300)J/cm3。
2 高能型压敏电阻
高能型压敏电阻,其优点是能量密度较大(300J/cm3~750J/cm3),承受长脉宽浪涌能力强,但电
压梯度较低(20V/mm~500V/mm),大电流特性差(V10kA/V1mA>2.0)。
这两种配方的性能差别造成了许多应用上的“死区”,在10kV 电压等级的输配电系统中广泛采用
了真空开关,由于它动作速度快、拉弧小,会在操作瞬间造成极高过压和浪涌能量,如果选用高压型压
敏电阻加以保护(如避雷器),虽然它电压梯度高、成本较低,但能量容量小,容易损坏;如果选用高
能型压敏电阻,虽然它能量容量大,寿命较长,但电压梯度低,成本太高,是前者的5~13 倍。
在中小功率变频电源中,过压保护的对象是功率半导体器件,它对压敏电阻的大电流特性和能量容
量的要求都很严格,而且要同时做到元件的小型化。高能型压敏电阻在能量容量上可以满足要求,但大
电流性能不够理想,小直径元件的残压比较高,往往达不到限压要求;高压型压敏电阻的大电流特性较
好,易于小型化,但能量容量不够,达不到吸能要求。中小功率变频电源在这一领域压敏电阻的应用几
乎还是空白。

压敏电阻的分类及主要参数
压敏电阻器(VSR)(varistor; voltage-dependent resistor) ——型号MY:文字符号: “RV”或“R”
结构——根据半导体材料的非线性特性制成的。
特性——压敏电阻器的电压与电流不遵守欧姆定律,而成特殊的非线性关系。当两端所加电压低于
标称额定电压值时,压敏电阻器的电阻值接近无穷大,内部几乎无电流流过;当两端所加电压略高于标
称额定电压值时,压敏电阻器将迅速击穿导通,并由高阻状态变为低阻状态,工作电流也急剧增大;当
两端所加电压低于标称额定电压值时,压敏电阻器又恢复为高阻状态;当两端所加电压超过最大限制电
压值时,压敏电阻器将完全击穿损坏,无法再自行恢复。
作用与应用——广泛应用于家用电器及其它电子产品中,起过电压保护、防雷、抑制浪涌电流、吸
收尖峰脉冲、限幅、高压灭弧、消噪、保护半导体元器件等。
压敏电阻器的种类:
1) 按结构分类:
● 结型压敏电阻器——因电阻体与金属电极之间的特殊接触,才具有了非线性特性。
● 体型压敏电阻器——因电阻体本身的半导体性质,才具有了非线性特性。
● 单颗粒层压敏电阻器
● 薄膜压敏电阻器
2)按使用材料分类:
● 氧化锌压敏电阻器
● 碳化硅压敏电阻器
● 金属氧化物压敏电阻器
● 锗(硅)压敏电阻器
● 钛酸钡压敏电阻器
3)按伏安特性分类:
● 对称型压敏电阻器(无极性)
● 非对称型压敏电阻器(有极性)
压敏电阻器的主要参数:除标称阻值、额定功率和允许偏差等基本指标外,还有如下指标:
1)标称电压(V):指通过1mA 直流电流时压敏电阻器两端的电压值。
2)电压比:指压敏电阻器的电流为1mA 时产生的电压值与压敏电阻器的电流为0.1mA 时产生的
电压值之比。
3)最大限制电压(V):指压敏电阻器两端所能承受的最高电压值。
4)残压比:通过压敏电阻器的电流为某一值时,在它两端所产生的电压称为这一电流值的残压。
残压比则是残压与标称电压之比。
5)通流容量(kA):通流容量也称通流量,是指在规定的条件(规定的时间间隔和次数,施加标准
的冲击电流)下,允许通过压敏电阻器上的最大脉冲(峰值)电流值。
6)漏电流(mA):漏电流也称等待电流,是指压敏电阻器在规定的温度和最大直流电压下,流过压
敏电阻器电流。
7)电压温度系数:指在规定的温度范围(温度为20℃~70℃)内,压敏电阻器标称电压的变化率,
即在通过压敏电阻器的电流保持恒定时,温度改变1℃时,压敏电阻器两端电压的相对变化。
 
8)电流温度系数:指在压敏电阻器的两端电压保持恒定时,温度改变1℃时,流过压敏电阻器电
流的相对变化。
9)电压非线性系数:指压敏电阻器在给定的外加电压作用下,其静态电阻值与动态电阻值之比。
10)绝缘电阻:指压敏电阻器的引出线(引脚)与电阻体绝缘表面之间的电阻值。
11)静态电容量(PF):指压敏电阻器本身固有的电容容量。
压敏电阻应用原理
压敏电阻是一种限压型保护器件。利用压敏电阻的非线性特性,当过电压出现在压敏电阻的两极间,
压敏电阻可以将电压钳位到一个相对固定的电压值,从而实现对后级电路的保护。压敏电阻的主要参数
有:压敏电压、通流容量、结电容、响应时间等。
压敏电阻的响应时间为ns 级,比空气放电管快,比TVS 管稍慢一些,一般情况下用于电子电路的
过电压保护其响应速度可以满足要求。压敏电阻的结电容一般在几百到几千pF 的数量级范围,很多情
况下不宜直接应用在高频信号线路的保护中,应用在交流电路的保护中时,因为其结电容较大会增加漏
电流,在设计防护电路时需要充分考虑。压敏电阻的通流容量较大,但比气体放电管小。
压敏电阻的压敏电压(min(U1mA))、通流容量是电路设计时应重点考虑的。在直流回路中,应当
有:min(U1mA) ≥(1.8~2)Udc,式中Udc 为回路中的直流额定工作电压。在交流回路中,应当有:
min(U1mA) ≥(2.2~2.5)Uac,式中Uac 为回路中的交流工作电压的有效值。上述取值原则主要是为了
保证压敏电阻在电源电路中应用时,有适当的安全裕度。在信号回路中时,应当有:min(U1mA)≥(1.2~
1.5)Umax,式中Umax 为信号回路的峰值电压。压敏电阻的通流容量应根据防雷电路的设计指标来定。
一般而言,压敏电阻的通流容量要大于等于防雷电路设计的通流容量。
压敏电阻主要可用于直流电源、交流电源、低频信号线路、带馈电的天馈线路。
压敏电阻的失效模式主要是短路,当通过的过电流太大时,也可能造成阀片被炸裂而开路。压敏电阻使
用寿命较短,多次冲击后性能会下降。因此由压敏电阻构成的防雷器长时间使用后存在维护及更换的问
题。
在消费类电子产品中,为了追求较小的安装面积,压敏电阻做成叠层型,称为Multi-layer
Varistor(MLV),其结构与叠层型的瓷片电容(MLCC)完全相同,只是叉指电极间的材料不是普通的陶瓷
电介质,而是ZnO 压敏材料。也因为如此,MLV 都是具有一定的电容特性的,甚至可以根据需要定制
具有某种容量的MLV,这对于防护设计中兼顾EMI 设计是非常有利的。
由于做成叠层结构后,MLV 的电极寄生电感非常小,因此其反应速度与TVS 不相伯仲,甚至比某
些采用Bonding 结构的TVS 的速度还要快。
在电流容量上,得益于叠层结构,MLV 的通流能力也要比相同体积的TVS 大得多。
MLV 的钳位特性曲线不如TVS 陡峭,不能实现精确的钳位;MLV 在多次大电流冲击后,性能会
出现一定程度的退化,主要表现是漏电流增大,钳位电压有所变化。不过,如果MLV 仅用于ESD 防护,
上述两个缺点对防护效果的影响是很小的。这也是为什么MLV 能在手机、数码相机等领域大行。
氧化锌压敏电阻与被保护的电器设备或者元器件并联使用。当电路中出现雷电过电压或瞬态操作电
压VS 时,压敏电阻器和被保护的设备及元器件同时承受VS,由于压敏电阻器响应速度很快,它以纳
秒级时间迅速呈现优良非线形导电特性,此时压敏电阻器两端电压迅速下降,远远小于VS,这样被保
护的设备及元器件上实际承受的电压就远低于过电压VS,从而使设备及元器件免遭过电压的冲击。

点击此处查看原文 >>

系统分类: 电源技术   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(245)
发表于:2008-4-22 16:11:51
标签:无标签

0

51单片机 Keil C 延时程序的简单研究(转自程序匠人)

51单片机 Keil C 延时程序的简单研究

    应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了。
    以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要:
        mov     r0, #09h
loop:   djnz    r0, loop
51单片机的指令周期是晶振频率的1/12,也就是1us一个周期。mov r0, #09h需要2个极其周期,djnz也需要2个极其周期。那么存在r0里的数就是(20-2)/2。用这种方法,可以非常方便的实现256us以下时间的延时。如果需要更长时间,可以使用两层嵌套。而且精度可以达到2us,一般来说,这已经足够了。
    现在,应用更广泛的毫无疑问是Keil的C编译器。相对汇编来说,C固然有很多优点,比如程序易维护,便于理解,适合大的项目。但缺点(我觉得这是C的唯一一个缺点了)就是实时性没有保证,无法预测代码执行的指令周期。因而在实时性要求高的场合,还需要汇编和C的联合应用。但是是不是这样一个延时程序,也需要用汇编来实现呢?为了找到这个答案,我做了一个实验。
    用C语言实现延时程序,首先想到的就是C常用的循环语句。下面这段代码是我经常在网上看到的:
void delay2(unsigned char i)
{
    for(; i != 0; i--);
}
到底这段代码能达到多高的精度呢?为了直接衡量这段代码的效果,我把 Keil C 根据这段代码产生的汇编代码找了出来:
              FUNCTION _delay2 (BEGIN)
                                            SOURCE LINE # 18
;---- Variable 'i' assigned to Register 'R7' ----
                                            SOURCE LINE # 19
                                            SOURCE LINE # 20
0000         ?C0007:
0000 EF                MOV     A,R7
0001 6003              JZ      ?C0010
0003 1F                DEC     R7
0004 80FA              SJMP    ?C0007
                                            SOURCE LINE # 21
0006         ?C0010:
0006 22                RET     
              FUNCTION _delay2 (END)
真是不看不知道~~~一看才知道这个延时程序是多么的不准点~~~光看主要的那四条语句,就需要6个机器周期。也就是说,它的精度顶多也就是6us而已,这还没算上一条 lcall 和一条 ret。如果我们把调用函数时赋的i值根延时长度列一个表的话,就是:
i    delay time/us
0    6
1    12
2    18
...
因为函数的调用需要2个时钟周期的lcall,所以delay time比从函数代码的执行时间多2。顺便提一下,有的朋友写的是这样的代码:
void delay2(unsigned char i)
{
    unsigned char a;
    for(a = i; a != 0; a--);
}
可能有人认为这会生成更长的汇编代码来,但是事实证明:
              FUNCTION _delay2 (BEGIN)
                                            SOURCE LINE # 18
;---- Variable 'i' assigned to Register 'R7' ----
                                            SOURCE LINE # 19
                                            SOURCE LINE # 21
;---- Variable 'a' assigned to Register 'R7' ----
0000         ?C0007:
0000 EF                MOV     A,R7
0001 6003              JZ      ?C0010
0003 1F                DEC     R7
0004 80FA              SJMP    ?C0007
                                            SOURCE LINE # 22
0006         ?C0010:
0006 22                RET     
              FUNCTION _delay2 (END)
其生成的代码是一样的。不过这的确不是什么好的习惯。因为这里实在没有必要再引入多余的变量。我们继续讨论正题。有的朋友为了得当更长的延时,甚至用了这样的代码:
void delay2(unsigned long i)
{
    for(; i != 0; i--);
}
这段代码产生的汇编代码是什么样子的?其实不用想也知道它是如何恐怖的$#^%&%$......让我们看一看:
              FUNCTION _delay2 (BEGIN)
                                            SOURCE LINE # 18
0000 8F00        R     MOV     i+03H,R7
0002 8E00        R     MOV     i+02H,R6
0004 8D00        R     MOV     i+01H,R5
0006 8C00        R     MOV     i,R4
                                            SOURCE LINE # 19
                                            SOURCE LINE # 20
0008         ?C0007:
0008 E4                CLR     A
0009 FF                MOV     R7,A
000A FE                MOV     R6,A
000B FD                MOV     R5,A
000C FC                MOV     R4,A
000D AB00        R     MOV     R3,i+03H
000F AA00        R     MOV     R2,i+02H
0011 A900        R     MOV     R1,i+01H
0013 A800        R     MOV     R0,i
0015 C3                CLR     C
0016 120000      E     LCALL   ?C?ULCMP
0019 601A              JZ      ?C0010
001B E500        R     MOV     A,i+03H
001D 24FF              ADD     A,#0FFH
001F F500        R     MOV     i+03H,A
0021 E500        R     MOV     A,i+02H
0023 34FF              ADDC    A,#0FFH
0025 F500        R     MOV     i+02H,A
0027 E500        R     MOV     A,i+01H
0029 34FF              ADDC    A,#0FFH
002B F500        R     MOV     i+01H,A
002D E500        R     MOV     A,i
002F 34FF              ADDC    A,#0FFH
0031 F500        R     MOV     i,A
0033 80D3              SJMP    ?C0007
                                            SOURCE LINE # 21
0035         ?C0010:
0035 22                RET     
              FUNCTION _delay2 (END)
呵呵,这倒是的确可以延迟很长时间~~~但是毫无精度可言了。
    那么,用C到底能不能实现精确的延时呢?我把代码稍微改了一下:
void delay1(unsigned char i)
{
    while(i--);
}
因为根据经验,越简洁的C代码往往也能得出越简洁的机器代码。那这样结果如何呢?把它生成的汇编代码拿出来看一看就知道了。满怀希望的我按下了“Build target”键,结果打击是巨大的:
              FUNCTION _delay1 (BEGIN)
                                            SOURCE LINE # 13
;---- Variable 'i' assigned to Register 'R7' ----
                                            SOURCE LINE # 14
0000         ?C0004:
                                            SOURCE LINE # 15
0000 AE07              MOV     R6,AR7
0002 1F                DEC     R7
0003 EE                MOV     A,R6
0004 70FA              JNZ     ?C0004
                                            SOURCE LINE # 16
0006         ?C0006:
0006 22                RET     
              FUNCTION _delay1 (END)
虽说生成的代码跟用for语句是不大一样,不过我可以毫无疑问的说,这两种方法的效率是一样的。似乎到此为止了,因为我实在想不出来源程序还有什么简化的余地。看来我就要得出来这个结论了:“如果需要us级的延时精度,需要时用汇编语言。”但是真的是这样吗?我还是不甘心。因为我不相信大名鼎鼎的 Keil C 编译器居然连 djnz 都不会用???因为实际上程序体里只需要一句 loop: djnz r7, loop。近乎绝望之际(往往人在这种情况下确可以爆发出来,哦呵呵呵~~~),我随手改了一下:
void delay1(unsigned char i)
{
    while(--i);
}
心不在焉的编译,看源码:
              FUNCTION _delay1 (BEGIN)
                                            SOURCE LINE # 13
;---- Variable 'i' assigned to Register 'R7' ----
                                            SOURCE LINE # 14
0000         ?C0004:
                                            SOURCE LINE # 15
0000 DFFE              DJNZ    R7,?C0004
                                            SOURCE LINE # 16
0002         ?C0006:
0002 22                RET     
              FUNCTION _delay1 (END)
天~~~奇迹出现了......我想这个程序应该已经可以满足一般情况下的需要了。如果列个表格的话:
i    delay time/us
1    5
2    7
3    9
...
计算延时时间时,已经算上了调用函数的lcall语句所花的2个时钟周期的时间。
    终于,结果已经明了了。只要合理的运用,C还是可以达到意想不到的效果。很多朋友抱怨C效率比汇编差了很多,其实如果对Keil C的编译原理有一个较深入的理解,是可以通过恰当的语法运用,让生成的C代码达到最优化。即使这看起来不大可能,但还是有一些简单的原则可循的:1.尽量使用unsigned型的数据结构。2.尽量使用char型,实在不够用再用int,然后才是long。3.如果有可能,不要用浮点型。4.使用简洁的代码,因为按照经验,简洁的C代码往往可以生成简洁的目标代码(虽说不是在所有的情况下都成立)。5...想不起来了,哦呵呵呵~~~
 

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(351)
发表于:2008-4-11 17:11:29
标签:无标签

0

关于232接口电平

RS-232 接口的信号 

现在的RS-232接口常用于异步(Asynchronous)串行通讯,实际上也可以用于同步(Synchronous)串行通讯。

RS-232 接口信号引脚及定义

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

数据传输分别使用PIN2和PIN3,DSR指示DCE(如MODEM)已启动,而DTR指示DTE(如计算机)已启动,DCD指示远端MODEM已接收到良好的载波信号。

DTE发出的RTS和DCE发出的CTS 用于控制。在多数异步传输方式下,RTS和CTS 在通讯过程中保持不变。然而在DTE连接在多点传输线上时,RTS用来打开和关闭MODEM的载波,因为多点传输线上在某个时间只能有一个发送者,以使多终端共用一对电话线。 每当一个DTE要发送数据,就使RTS有效, MODEM于是发出载波,一般要等待几毫秒使载波稳定,然后使CTS有效。DTE在收到CTS后开始发送数据。当DTE完成发送数据,就使RTS无效,MODEM于是使CTS无效并关闭载波。

时钟信号(PIN15、17和24) 仅用于同步通讯(synchronous communications)。MODEM从数据码流中取出稳定的时钟信号并发给DTE。注意,即使波特率相同时,发送和接收的时钟信号也不一定相同。

RS232 DB25

PC机常用的RS-232 接口信号引脚及定义

IBM制造PC 机时将RS-232 简化成了DB-9连接器,后来成为事实标准。

 

 

 

 

 

 

 

 

 

 

旧式的PC 机有些带有DB-25针插座的串口连接器(一般为COM2),为公头插座(或称MALE),这与常见的DB-25的并口连接器不同,DB-25的并口使用25 芯孔插座(也称为母头或FEMALE)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

信号电平及电平转换

在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻 辑“1” 为-5— -15V;逻辑“0”为 +5— +15V。噪声容限为2V,即 要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号 作为逻辑“1” 。+3V到-3V之间称为死区,为抵抗线路噪声的干扰。但不同的设备有可能使用不同的电平门限,比如CCITT V.10 定义死区为+0.3V to -0.3V。也有的接收机把门限设为1V或更低。

逻 辑“1”表示 "idle" 状态(也称OFF或MARK),逻辑“0”表示"active"状态(也称ON或SPACE)。

这种信号方式源于当时主要使用的DTL电平,与现在数字电路常用的TTL电平不同,不能直接相连,中间需要加电平转换电路。

RS-232-C规定了25条引线,实际中有许多是很少使用的,如PC 机一般只有9条引线,3条输出5条输入,因PC 机有+12V和 -12V电源,常用的电平转换芯片为SN75185、GD75232等芯片,也有单独的驱动芯片MC1488、SN75188和接收芯片MC1489、SN75189。而DCE(数据通信设备)方有3条输入5条输出线,需使用对应驱动芯片SN75196、GD75323,但往往DCE只有5V单电源,这时一般使用内带电荷泵的芯片MAX207、SN65C3238、SN65C3243等, 甚至也有使用3.3V单电源的芯片。

一些情况下,设备与PC 机连接的RS-232 接口,不使用控制信号,仅使用三条接口线RXD、TXD、GND(如单片机通过UART连接PC 机),也只有单电源,使用内带电荷泵的单路收发芯片,MAXIM、TI、SIPEX、ST等公司都有这种芯片。

信号格式

RS-232最常使用异步串行传输,每个数据包含有7 或 8 bit数据位和起始位start,停止位stop, 校验位parity (可选用,也可用于指示位)。 传输数据的样值如图所示:起始位(低有效,通常在+3v到+15v之间),紧接着数据位(7或8 bit),校验位(根据协议选用),由停止位结束(通常返回逻辑高,电压在-3v到-15v之间)。注意:RS-232使用负逻辑。

串口鼠标

早期PC机使用串口鼠标,以标准的RS-232-C 输出信号 (+-12V) 作为输入。鼠标取用RS-232-C的输出线的电流(大约10mA),并发送计算机RS-232-C接收芯片可以识别的电平信号。鼠标一般输出信号为+-5V或0-5V ,有些输出+-12V。鼠标电路一般使用+5V电压,一般从DTR和RTS线产生MCU使用的正电源,而负电源一般取自TD,典型的机械鼠标需要4只红外LED做移动检测,一般使用二极管从DTR和RTS线取电,然后通过电阻加到4只LED上。鼠标总体需要10 mA 电流,工作电压6-15V。

 

 

 

 

 

 

鼠标能够正常工作,RTS和DTR线必须为正电压, DTR-DSR和RTS-CTS之间不要连接。当DTR正常,鼠标要发一个包含字母"M" (ascii 77) 的字节来识别自身。而冷启动后,RTS 一般设为负电压,这时需要把RTS转换为正,称为反转RTS。要完成RTS电压的反转,负脉冲宽度至少为100ms。

串口鼠标使用格式为1200bps, 7 data bits, 1 stop-bit,发送的数据包为3字节长度,每次鼠标状态改变(移动或按键的按压与释放) 都要向计算机发送数据。数据格式如下:

 

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

byte1

X

1

LB

RB

Y7

Y6

X7

X6

byte2

X

0

X5

X4

X3

X2

X1

X0

byte3

X

0

Y5

Y4

Y3

Y2

Y1

Y0

字节1(byte1)首先发出,然后是其他2个字节。字节1的bit6用做同步数据包。

LB是左键的状态(1表示按下),RB是右键的状态(1表示按下);X7-X0表示从上次数据包发出后沿X方向移动的距离,Y7-Y0表示从上次数据包发出后沿Y方向移动的距离。

用X表示的位,在使用7 bits数据和2 bits停止位格式时为0;而使用8 bits数据和1 bits停止位格式时为1 。最安全的方式是使用7 bits数据和1 bits停止位的接收格式。

信号规格表

 

 

 

 

 

点击此处查看原文 >>

系统分类: 接口电路   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(342)
总共 , 当前 /