发布时间:2008-08-27阅读:897
当我需要生成一个简单工具以产生一个长的事件触发脉冲时,我首先想到的是经典的单稳态触发器(one-shot)和大电容方案。由于问题的典型特性,该电路“工作得很好”。尽管对这样一个应用,看起来不大会想用一个小的微控制器(MCU)来实现单稳触发器功能,但若选用MCU,可能有如下方面的好处。
通常,大电容有宽泛的初始容差,及宽的温漂,但基于MCU的应用就可利用Microchip的10F204(SOT-23封装)的优势和一个小NPO电容(几乎没有温漂)及一个1%精度的电阻来设定延时。而采用专用单稳态触发器方案,则需要一个昂贵、大个头的电容,增加了成本和体积。
基于MCU的实现,在编程10F204时,采用一个由小RC元件决定的可计算延时的延时转换器,并生成一个长度成比例的输出脉冲。在图1中所示电路的外接RC值取决于需要多少基本的5?s时基以触发10F204的片上比较器,该比较器的参考端由芯片内部设定为0.6V。顺序处理流程使外接电容保持在放电状态并使输入浮动以监测比较器的输出以确定将电压充至参考电位以上时所需的时间。在上电、每当MCU被重新使能以及每次触发的第一个1?s定时步骤中,都对这些外接元件的值进行估算。
其余的程序在一个分支均等的1ms循环中,提供使能、再触发认证、乘法器以及循环索引等功能。
等式1用于计算产生在等式2和等式3中描述的期望延时值时所需的R和C值。
循环数=ABS(INT(R*C*(ln(1-VTRIP/VCHARGING))/5s)) (等式1)
其中,VTRIP是比较器参考电压;VCHARGING是用于对外接电容充电的电压源,它应是一个大于VTRIP的稳定值。在此例中,VCHARGING与为10F204供电的稳压源相同。
需要几个运算参数以定义该基于程序的应用。它们包括:
1.选择是低到高还是高到低的电压变化沿进行触发:
* 0将TMR0时钟输入沿设置为低到高触发
* 1将TMR0时钟输入沿设置为高到低触发
2.选择是单触发还是重触发模式
* 0 设置为单触发模式(在激活时触发,忽略输出)
* 1设置为重触发模式(任何触发都使延时重新初始化)
3.确定用在延时补偿中的8位循环乘法器(见下)。
4.对内部状态标志——capsen进行设置,以确定如何应用基于检测到元件值的循环数。
* capsen= 0,直接使用计算出的循环数值,该值被限制在0到127之间
* capsen= 1,用256减去该计算值,结果在255到128之间
根据这些选项,当capsen= 1时,能产生最长的延时。结果如下:
当capsen= 1时:延时=(255-循环数)*乘法器*1 ms (等式2)
当capsen= 0时:延时=循环数*乘法器*1 ms (等式3)
当设capsen=1时,能得到更长的延时;若使capsen=0,则延时变短。电阻R的最大值为10 k Ω,在我们的分析中,该值设为1 k Ω。
对一个具体的乘法器,延时的范围由外接元件限定。同时改变R和C将显著改变延时范围。触发脉冲宽度最短为2 ?s,而触发到有效输出的延时时间最短为2 s、最长为12 s。
系统精度(与RC元件的变化无关)由内部指令周期的容差主宰。在一个窄的电压和温度范围内,该值定义为61%。管脚1输出低电压(用于给电容器放电)、内部比较器以及0.6V参考也会影响初始精度。延时随时间和温度的变化取决于所有元件的变异。乘法器的值是一个由程序设置的常量,所以没有变化。