内容包括仿真环境设置,图标含义与绘图,相关元件介绍,交互式VSM、图表和单片机模拟、模拟模型及其创建、调试和跟踪等。紫色文本是一个超链接,点击自动跳转到相关博客文本。不断更新,原创并不容易!
AD原理图与PCB封装移步:Altium原理图库和封装库(元件已分类,已整理,绝不混乱)
目录:
1)手动设置模拟收敛性 2)由Proteus调整
示波器图标
1)VSINE的含义 2)VSINE的使用
1)变压器、互感器 2)动画显示元件 3)有源和无源蜂鸣器
1)Keil设置输出编译环境Proteus可调试文件 2)Proteus中相关操作 3)常用的调试文件格式
1)官网下载链接程序链接Keil与Proteus2)通过VDM51.dll链接Keil与Proteus3)使用VDMAGDI.EXE链接Keil与Proteus
1)绘制图形 2)创建元件 3)模型的创建
-----------------------------------------------------------
下面的讲述基于Proteus 8.6 SP2 Professional版本WIN7/32位系统,此软件下载搜索我的百度网盘“Proteus 8.6 SP2 Professional使用良好”。
Labcenter Electronics安装目录内的SAMPLES和HELP文件夹下方的文件非常有用,其中SAMPLES存储大量的例子,HELP是英文帮助文档,可以结合着看。------>Proteus论坛|仿真论坛
----------------------------------------------------------------------------------------------------------------
1)设置图纸大小,选择Set Sheet Sizes
2)设置原理图中电流带有箭头,选择Set Animation Options
钩选上图黄框,电路才会出现如下图的电流箭头:
-----------------------------------------------------------
1)仿真收敛性手动设置
不能仿真的网标数值上无法收敛。若电路中无连接错误,通过调整三个参数ABSTOL、VNTOL、RELTOL可以提升收敛性。
ABSTOL为电流绝对精度,其默认值为1pA。也就是说,如果电路仿真所得值在它实际值的±1pA的范围内时,SPICE认为电流已经收敛,仿真将跳到下一个仿真时刻或AC/DC值。
VNTOL为节点电压精度,默认值为1μV。
RELTOL为相对精度,默认值为0.001(0.1%)。RELTOL用来规避同一电路中仿真较大或较小电气值是所引起的问题。
增加这三个参数值将加快仿真的速度,并能解决一些收敛问题,其代价是牺牲一些仿真精度。为了改善收敛性,
可以在SPICE网表中使用下面语句:OPTIONS ABSTOL=1μA VNTOL=1mV RELTOL=0.01
需要强制收敛时,这些参数的值可以设置为:OPTIONS ABSTOL=1mA VNTOL=100mV RELTOL=0.1
------------------------
2)由Proteus调整
比如:Timestep too small可以这样设置。
-----------------------------------------------------------
1)图纸的移动与缩放
按下鼠标中键(鼠标滚轮)移动图纸,推拉滚轮缩放。快捷方式F7缩小,F8放大。
-----------------------------------------------------------
对于集成块Proteus默认是隐藏电源和地的,对其设置电源电压方法如下。应用举例见百度网盘“NPN_PNP_Simulation”或移步:https://download.csdn.net/download/liht_1634/85414067。
-----------------------------------------------------------
切记:复制原有的元件到别的地方用,特别是同一份图纸,这样标号会重复,直接仿真报错!对于交流电压表,表会显示nan。此时需要对元件进行重新编号。
-----------------------------------------------------------
图纸参考点快捷方式O,光标形式快捷方式X。
----------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------
-----------------------------------------------------------
1)冻结波形:出现波形后,点1处Auto键
2)测量图形:点2处Cursors键
-----------------------------------------------------------
1)VSINE的含义
------------------------
2)VSINE的使用
(1)含有直流偏置的信号
设置如下:
-------------
(2)除了VSINE产生正弦交流信号外,V3PHASE是三相正弦交流信号
-----------------------------------------------------------
作用:指示某点电压或电流
注意:电流探针不可以与导线垂直,也不可以放置在两个接点的交汇处,否则会报错
-----------------------------------------------------------
1)Terminals Mode加入电源端子
如果电源端子上没有标注电压,默认连接VCC/VDD
----------------------
2)Generator Mode加入电源端子
-----------------------------------------------------------
点Virtual Instrument图标,再选Counter Timer放置频率计,如下图
右击一下再左击一下显示属性,Operation Mode默认是Time,在下拉中选Frequency,就是作频率计。
也可以在运行时,单击Counter Timer,选择FREQUENCY
-----------------------------------------------------------
默认是“PROPERTY=VALUE”。
1)连续增加标号LBL
放置网络标号,按下A键,弹出一个对话框,输入NET=D#,在对话框下面设置起始号码及间隔加量。
-----------------------------------------------------------
-----------------------------------------------------------
通过“LBL”图标进行总线连接
-----------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
电阻 | RES8SIPB_8位排阻,NCP_NTC热敏电阻,TFP_PTC热敏电阻 可变电阻、压敏电阻(比如S10k175) |
无极性电容 | |
有极性电容 | |
电感 | |
二极管 | |
三极管 | |
自复位按钮 | |
自锁开关 | |
继电器 | |
电池 |
-----------------------------------------------------------
1)变压器、互感器
------------------------
3)有源与无源蜂鸣器
ACTIVE表示有源,DEVICE表示无源。要想高电平驱动就要选择ACTIVE的。
-----------------------------------------------------------
-----------------------------------------------------------
1)双向稳压管等效DB6
当双向稳压二极管的A端接电压正,K端接电压负,左边的稳压二极管是正向导通,相当于一个普通二极管,在上面的压降是0.7V,而右边的才是作为稳压二极管。所以这个双向稳压二极管所稳定的电压是0.7V+右边稳压值。
而反过来,双向稳压二极管的K端接电压正,A端接电压负时候。右边的稳压二极管正向导通,左边的稳压二极管作为稳压二极管。
可以用这种方法来代替,就无需再建模,直接使用。
----------------------------------------------------------------------------------------------------------------
1)PULSE图标产生波形
PULSE产生三角波
此处的Rise Time+Fall Time+Pulse Width=500ms+499ms+1ms=1s=1Hz,要对应,否则输出不正确。
PULSE产生锯齿波
此处的Rise Time+Fall Time+Pulse Width=1ms+998ms+1ms=1s=1Hz,要对应,否则输出不正确。
------------------------
2)SFFM图标产生两个正弦波的调制波
----------------------------------------------------------------------------------------------------------------
图表式仿真不能使用SIGNAL GENERATOR和PATTERN GENERATOR图标,这两个归为函数发生器。
-----------------------------------------------------------
1)最大化展示窗口,可以计算波形时间
------------------------
2)置放探针
R1(1)和R2(2)均置放于图表的左上角。
----------------------------------------------------------------------------------------------------------------
1)Keil编译环境设置输出Proteus可调试文件
编译后的结果:
*.omf文件保存在原项目目录里:
------------------------ 2)Proteus中相关操作
可以打开Labcenter Electronics里面的一个例程:
如果打开的是*.hex文件,它不包含调试文件,只能运行。尽量打开相关单片机的调试文件,因为这样可方便调试原代码。
点单步执行,弹出原代码调试器:
------------------------
3)常用调试文件格式
ELF/DWARF COFF UBROF OMF51 COD BAS SDI
-----------------------------------------------------------
1)官网下载链接程序链接Keil与Proteus
------------------------
2)通过VDM51.dll链接Keil与Proteus
软件说明:Proteus 8.6 SP2 Professional和C51V954a。
(1)Program Files\Labcenter Electronics\Proteus 6 Professional\MODELS\目录下的 VDM51.dll文件复制到 Keil\C51\BIN文件夹下。如果用protues7以上的版本,那个目录里没有VDM51.dll文件,此文件可以在我的网盘中搜索下载。
另外网盘中的“Keil与Proteus完美结合教程”可参考。
-------------
(2)记事本打开Keil 根目录下的 TOOLS.INI 文件,在[C51] 栏目下加入 TDRV9=BIN\VDM51.DLL ("Proteus VSM Monitor-51 Driver" ) ,其中“TDRV9” 中的“9”要根据实际情况写,不要和原来的重复。(我的这个文件中已经有了从TDRV1到TDRV8, 所以是TDRV9)
-------------
(3)运行keil程序,建立一个新的工程。点击工具栏的"option for target"按钮,在出现的对话框里点击"Debug",在右栏上部的下拉菜单里选中" Proteus VSM Monitor-51 Driver",还要点击一下Use前面的小圆点。 最后还要点击后面的settings,如果你只是本机联调的话,host后面写172.0.0.1,port:后面写:8000。
-------------
(4)载入Proteus,DEBUG-->use remote debug monitor
如果漏了此步,Keil会出现"Failed to connect command socket to port 127.0.0.1:8000. GLE=0000274D")
------------------------
3)使用VDMAGDI.EXE链接Keil与Proteus
proteus官网Labcenter网站下载leilgn proteus联调的安装驱动“VDMAGDI.EXE”。此文件可以在我的网盘中搜索下载。
-----------------------------------------------------------
双击52单片机,然后在弹出的选项中,program file中添加生成的hex文件,我在使用的过程之中,有时候需要在52上右击,然后最后一个选项,点开后,去除上一次的不同名的hex文件,虽然不知道为什么,但是如果不这么做,有时候可能不能仿真。
----------------------------------------------------------------------------------------------------------------
ASIM、DSIM
原始模型。
-----------------------------------------------------------
1)绘制图形
绘制如下图的图形。
---------------------
2)创建元件
---------------------
3)模型的创建
库中查找元件:
编辑元件属性,捆绑分等级模块:
进入子电路模块:
在子电路模块中放置原型元件:
子电路中增加终端:
这里的1、2、3就对应着父电路的1、2、3。
保存设计,父电路中执行(2)创建元件,加载MODFILE文件:
找到MODFILE文件的保存路径:
点击下一步、下一步并确认。
系统例子可见模拟元件“Proteus 8 Professional\SAMPLES\Tutorials\Amodtut.DSN”、数字元件“Proteus 8 Professional\SAMPLES\Tutorials\Dmodtut1.DSN”。
-----------------------------------------------------------
动画:电气特性和图形特性两方面结合在一起,比如LED、LCD、继电器等,需要使用C++语言设计。
创建几种不同的状态,再创建符号库:
Symbol name的编号是LAMP_1、LAMP_2、…………
创建元件内部的子电路:
-----------------------------------------------------------
SPICE文件是从元件提供商提供。系统例子见“Proteus 8 Professional\SAMPLES\Spice1.pdsprj”。
-----------------------------------------------------------
介绍顺序见“\Program Files\Labcenter Electronics\Proteus 8 Professional\HELP\MODELS.chm”文件。
1)电阻模型
Rt=R+A*Δt+B*Δt^2,*Δt与温度相关。
------------------------
2)电容模型
电容模型是一个理想电容与非常大的一个电阻并联,参数有PRECHARGE、IC。
指定元件的起始电压值
指定节点初始电压值:
通常指定节点初始电压值。振荡电路不起振时,可以在相应节点上增加IC参数(见Proteus8.6SP2仿真使用汇总之6、多谐振荡器不起振的对策);即使能够起振,增加IC参数也会加快电路建立振荡的时间。
------------------------
3)电感模型
互感系数:
------------------------
4)布尔模型BOOL_3、BUFFER模型、延时缓冲模型RELAY_4、三态缓冲模型
------------------------
5)JK模型、脉冲PULSE模型
JK模型是一个逻辑组合器件,并不是74系列或CMOS系列的触发器,用在比较大的元件建模时。
------------------------
6)计数器COUNTER模型、分频器DIVIDER模型、锁存器LATCH 模型、移位寄存器SHIFTREG、存储器MEMORY模型
存储器MEMORY模型:
现将0000 0001B定入存储器中,只要对WR端产生一个不小于100nS的脉冲即可;
仿真暂停时会弹出:
只要对RD端产生一个脉冲即可读出
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
比如“trouble with node #e:u2:a:h#branch”
先对仿真收敛性进行设置,发现无效,恢复到先前;
再看最后一条,说明u2:a可能与现有库不符,删去原来的元件再补上现有库内的元件即可。
-----------------------------------------------------------
Proteus在建立数学模型进行仿真时,运算在设定的迭代次数下无法收敛,一般是由于采用SPICE模型引起的,也可以认为是Proteus的BUG,解决的办法是把SPICE模型的器件(一般是三极管、运放一类的)改成Schematic Model(原理图模型)。
还有个别情况是数字电路相接的电阻引起的,要使用Digital属性的电阻而非Analog属性的;和是否英文路径无关。
-----------------------------------------------------------
重新建立工程文件,保存为英文路径,问题解决。原因不明。
#QNAN的意思是Quiet Not A Number,通常你得到这种结果一般通过除0操作、+/-无穷大除以=/-无穷大、+/-无穷大之间的加减法、sqrt的参数是负数。
-----------------------------------------------------------
有的版本点击右键也可以,如下图
-----------------------------------------------------------
1)通过一个按钮加入初始条件
------------------------
2)设置网络名称,给定初始条件
可在电阻R1或电容C1处设置网络名“IC=0”,即初始条件,电平为0V
------------------------
3)在电源中加入扰动信号
第一种方法电路的波形似乎更稳定一些,好观察一些。第三种方法目前没有试过,不作评论。
-----------------------------------------------------------
NaN是Not a Number的缩写
-----------------------------------------------------------
此现象发生在打开已有的项目文件时发生,为Proteus8的文件属性链接有问题。先打开Proteus8软件(兼容模式、管理员身份运行,我的百度网盘的Readme文件有详述)后,在软件界面里面选择打开已存在的项目文件即可。
-----------------------------------------------------------
按一下shift键即可。
----------------------------------------------------------------------------------------------------------------
实例见“D:\Program Files\Labcenter Electronics\Proteus 8 Professional\SAMPLES\Graph Based Simulation\Lpf.pdsprj”文件,这里假定Proteus安装于D盘。
视频讲解见百度网盘“proteus入门到精通05(0总线连接规则、参数化分等级电路设计)”。
-----------------------------------------------------------
系统例子见“Program Files\Labcenter Electronics\Proteus 8 Professional\SAMPLES\Interactive Simulation\Motor Examples“
伺服电机如下图所示,PC端电压可以理解成是一个如右上方电位器中间滑动端的电压。
伺服电机控制电路:
伺服电机部分是一个H桥电路,整个电路左右对称,稳态时两个蓝框内的电压表指示值应相等,达到一个平衡。
----------------------------------------------------------------------------------------------------------------