找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于单片机的模拟开关时序设计与仿真

[复制链接]
admin 发表于 2013-3-30 11:35:44 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要:  关键词: 单片机; 电子开关; 电荷注入效应; 时序设计仿真
       随着现代工业的飞速发展,对工况参数的实时监测越来越重要。参数的监测分为电量和非电量两大类,对于非电量参数的测量,测量成功与否主要取决于传感器的质量和对信号的提取。由于电容传感器具有结构简单、功耗低、测量范围大、稳定性好、灵敏度高、使用寿命长及可以进行非接触测量等特点,非常适合在高潮湿、高尘埃、强辐射及超低温等恶劣环境下长期使用[1,2],因此,对于某些变化缓慢或微小物理,比较适宜采用电容传感器进行测量。
     目前用于测量微电容的方法主要是交流法,其测量原理是通过激励信号对被测电容连续充放电,形成与被测电容成比例的电压或电流信号,从而测得被测电容值。采用此方法测量的信号中具有脉动噪声,需要通过滤波器滤除其脉动成分,但滤波器的引入将降低测量电路信号采集的速度。所以,本文设计了一种基于电荷放大原理的微电容测量电路,该电路中使用的模拟开关存在电荷注入效应,此效应影响电路的分辨率。为了解决该问题,本文从微电容测量电路中的电荷注入效应入手,对模拟开关的电荷注入效应进行分析,结合单片机对开关时序进行设计,并基于Proteus和Keil软件设计的电路进行仿真,进而检验设计的合理性。
1微电容测量电路中的电荷注入效应
     基于电荷放大原理的微电容测量电路如图1所示。
   
       图中Vin为充放电的激励电压源,CX为传感器两极板之间的电容即待测电容;S1~S5为模拟开关;运放A1、电容Cf、电阻Rf和开关S3构成电荷放大器;开关S4和S5及运放A2和A3构成两个采样保持器,A4为仪表放大器。模拟开关基本上由一个NMOS管和一个PMOS管并联而成,是一种三稳态电路,它可以根据选通端的电平决定输人端与输出端的状态。当选通端处在选通状态时,输出端的状态取决于输入端的状态;当选通端处于截止状态时,则不管输入端电平如何,输出端都呈高阻状态。
     模拟开关的电荷注入效应是影响该电路分辨率的主要因素。电荷注入效应机理主要有两方面:一是由沟道电荷造成的,如图2(a)所示,根据MOS器件的原理,当一个MOS管处于导通状态时,SiO2-Si界面的反型层存储一定电荷量,当开关断开时,电荷通过源端和漏端流出,流入测量电路;二是由栅源间和栅漏间的寄生电容存储的电荷释放流入测量电路造成的[3-4], 如图2(b)所示。由电荷注入效应引起的误差远大于被测量CX的值,引起电荷注入效应。
    20121107043515787811020.gif
   2 开关的电荷注入效应分析
     电子开关控制时序设计图如图3所示。
    20121107043515819061021.gif
       首先断开S3,电路只受S3的电荷注入效应影响。当开关S3断开时,由于电荷注入效应,电荷将流向A1的输出端和反相输入端,流向A1输出端的电荷产生的影响很小,仅引起输出波形的瞬时微小失真,而流向A1反相输入端的电荷对测量结果产生影响,但A4采用差动式设计较好地解决了这部分的影响。
     对开关S1与S2的电荷注入效应。由图3可知S2关断时间晚于S3,S1关断时间晚于S2。S2断开时的电荷注入效应引起V1点较小的波形失真,关闭S1,尽管有S2的电荷注入效应,但V1被置为输入电压Vin,因此,被测电容Cx上的电压不受S2的电荷注入效应影响;S1断开时的注入电荷,会沿着已闭合的开关S2流向地,S1不会对被测电容Cx产生影响。所以,S1和S2对输出基本不产生影响。
 对开关S4与S5的电荷注入效应。S4与S5在断开时,产生的电荷注入效应会使A2和A3的输出波形有微小失真,但相对于输出值较小,可以忽略,而且A4采用差动式结构输入会使S4与S5的电荷注入效应相互抵消,故S4与S5的电荷注入效应不会对最终的输出Vo产生影响。
     由以上分析可知,通过合理设计模拟开关控制时序,解决了其关断时引入的电荷注入效应。
3 实现开关时序的相关软件
3.1 Keil C51简介

 Keil是德国Keil公司开发的单片机编译器。Keil C51是目前最流行的51单片机开发工具,现在Keil公司的编译器有支持经典80C51和80C51派生产品的版本。新版本μVision2把μVision1用的模拟调试器dScope与集成开发环境无缝地结合起来,界面更友好,使用更方便,支持的单片机品质更多。对于使用C语言进行单片机开发的用户,Keil C51已成为必备的开发工具。
     Keil C51软件是众多单片机应用开发的优秀软件之一,Keil C51提供了一个集成开发环境IDE(Intergrated Development Environment)?滋Vision,包括C51编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器,支持汇编、PLM语言和C语言的程序设计,界面友好,易学易用。在开发应用软件的过程中,编辑、编译、汇编、连接、调试等各阶段都集成在一个环境中,先用编辑器编写程序,再调用编译器进行编译,连接后即可直接运行[5,6]。
     本软件采用Keil C51进行开发,程序可读性强。
3.2 Proteus简介
     Proteus嵌入式系统仿真与开发平台是由英国Labcenter Electronics公司开发的,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台,是目前唯一能够对各种微处理器进行实时仿真、调试与测试的EDA工具。Proteus除了具有和其他EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,最大的特点在于其电路仿真是互动的,针对微处理器的应用还可以直接在基于原理图的虚拟原型上编程,真正实现了没有硬件目标原形的情况下对系统的调试、测试、验证,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,建立了一个完备的电子设计开发环境。Proteus产品系列可以对基于微控制器的设计连同所有的外围电子器件仪器仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。
     Proteus是一款电路分析与实物仿真软件,运行于Windows操作系统上,具有实验资源丰富、实验周期短、硬件投入少、实验过程损耗小、与实际设计接近程度大等特点[7-9]。
4 开关时序的设计与仿真
     开关时序设计原理图如图4所示,图中采用80C51芯片,其中管脚XTAL1、XTAL2接时钟控制器,RST端上电,5个输出管脚P1.0~P1.4分别控制开关S1、S2、S3、S4和S5,电源VCC为+5 V的直流电源。
    20121107043515834681022.gif
   4.1 程序设计
     在Keil平台进行如图5所示的程序编译。
     程序代码如下:
     #include<reg51.h>
     #define uchar unsigned char
     #define uint unsigned  int
     sbit s1=P1^0;                            //控制开关1
     sbit s2=P1^1;                            //控制开关2
     sbit s3=P1^2;                            //控制开关3
     sbit s4=P1^3;                            //控制开关4
     sbit s5=P1^4;                            //控制开关5
     bit flag,flag1,flag2,flag3;
     uchar ds,ds1,ds2,ds3;
     uint jishi;
     void Initialization()                        //初始化函数
         {
         EA=1;
         ET0=1;
     TMOD=0X02;                    //定时器工作方式为2
     TH0=0x06;                                //定时250 ?滋s
     TL0=0x06;
         TR0=1;
     s1=0;
     s2=1;
     s3=1;
     s4=1;
     s5=1;
     flag1=1;flag2=0;flag3=0;
         }
         void inte() interrupt 1 using 3    //1s中断处理函数
          {
         if(++jishi==40)         //时间间隔4000×250 ?滋s=1 s
          {
     jishi=0;
     if(flag1){ds1++;}
     if(flag2){ds2++;}
     if(flag3){ds3++;}
              }
          }
          void main ()
          {
     Initialization();
     while(1)
          {
          if(flag1)
              {
     if(ds1==4){s3=0;}
     if(ds1==11){s5=0;}
     if(ds1==12){s2=0;}
     if(ds1==13){s1=1;}
     if(ds1==20){s4=0;flag1=0;flag2=1;}        
              }
  if(flag2)
              {
     if(ds2==1){s3=1;}
     if(ds2==2){s5=1;}
     if(ds2==9){s2=1;}
     if(ds2==10){s1=0;}
     if(ds2==17){s4=1;flag2=0;flag3=1;ds2=0;}        
              }
          if(flag3)
              {
     if(ds3==7){s3=0;}
     if(ds3==14){s5=0;}
     if(ds3==15){s2=0;}
     if(ds3==16){s1=1;}
     if(ds3==23){s4=0;flag2=1;flag3=0;ds3=0;}        
              }
          }
     }
4.2 仿真
     编写好程序代码后将该程序文件加载到当前项目中进行编译,编译通过后进行仿真。单击Debug菜单下的Go菜单项连续运行程序,再切换至Proteus界面,可看到电路开始仿真运行,结果如图6所示,实现了预期功能。
    20121107043515865931023.gif
    20121107043515881551024.gif
       通过对仿真结果和LED实时动作情况的分析,验证了整个系统的程序与外围电路设计的正确性,提高了调试效率。采用该仿真设计方法可以大大简化硬件电路测试和系统调试过程,而且使用该方法进行系统虚拟开发成功后再进行实际制作,可以提高开发效率,降低开发成本,提升开发速度。
参考文献
[1] 白国花.电容传感器测量电路的研究与研究[D].太原:中北大学,2005.
[2] 邱桂萍.ECT系统测量电路仿真及其数据采集系统设计[D].哈尔滨:哈尔滨理工大学,2007.
[3] 周丽丽. MEMS电容式微加速度计检测电路研究[D].合肥:中国科学技术大学,2008.
[4] 王雷,王保良,冀海峰,等. 电容传感器新型微弱电容测量电路[J].传感技术学报,2002(4):273-277.
[5] 牛昱光.单片机原理与接口技术[M].北京:电子工业出版社,2008.
[6] 简献衷,虞菁,熊晓君,等.基于80C51和KEIL C51的LED点阵显示系统[J].仪器仪表学报,2005,26(8)增刊:
315-316.
[7] 伍冯洁,谢陈跃,谢斌.Proteus与Keil在单片机开放性实验中的应用[J].电子测量技术,2008,31(6): 100-104.
[8] 刘映群. Proteus与Keil整合构建单片机虚拟实验室[J].中国现代教育装备,2005(8):11-13.
[9] 曹建树,曾林春,夏云生.基于Proteus和Keil接口的虚拟波形发生器仿真[J].北京石油化工学院学报,2008,16(3):9-11.
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2025-1-9 05:57 , Processed in 0.059859 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表