EDA课设——基于555timer和74160的数字电容测量仪
要求
用集成芯片(同步十进制计数器)74LS160N和两个555定时器,设计一个电容测量仪。
- 具有量程切换功能,测量电容范围100nF-100uF
- 用三个七段数码管作为显示元件,显示电容值的大小
设计思路
由于我们知道对于一个电容来说其满足特性方程:
那么可以使用一个固定的电阻R然后去测量一个由电容C决定的输出脉冲宽度。
对于555定时器来说,我们可以在其外部加入阻容原件,就可组成一个单稳态电路,当输入电压 $V_i$ 产生下降沿时进入暂稳态,电容充电,到达2/3Vcc时电容迅速放电,其电压达到0后回到稳态,其输出脉冲宽度(高电平的持续时间) $t_w$ 为:
下面我们希望能够统计的这个信号(测量信号)的高电平时间,还需要一个时钟信号作为标准,在测量信号高电平时开始计数,然后当测量信号变为低电平时停止计数,计数器的值即为高电平时间。这样就是时钟信号和测量信号的与运算作为计算器的时钟信号。
那么我们可以再使用一个555timer作为时钟信号发生器,将555timer接成多谐震荡电路,其输出频率为:
那么其在测量信号高电平 $t_w$ 期间脉冲个数 $N$ 等于:
我们想要把N的值刚好等于C的值(去除物理单位后),比如我们要测量 $C\in[1uF, 100uF]$ 的电容,数值上我们记 $N=C_x$ 那么有其他器件要满足的关系:
一般地,
其中 $k’$ 表示我们要测量的单位(nF、uF、mF)和F之间的倍率
根据我们要测量的电容范围,我们可以设定两个不同的挡位:
- A挡位(大电容): $C\in[1uF, 100uF]$
- 此时 $k’=10^6$ 满足 $k\cdot R_1 =10^6(R_2+2R_3)C_0$
- B挡位(小电容): $C\in[100nF, 999nF]$ 即 $C\in[0.1uF, 0.999uF]$
- 此时 $k’=10^9$ 满足 $k\cdot R_1 =10^9(R_2+2R_3)C_0$
也就是说在大电容时,时钟频率较低;小电容时,时钟频率较高。我们只需要做一个单刀双置开关作为挡位切换开关,切换挡位时改变对应的 $C_0$ 容值即可。
之后的计数内容就是常规的十进制计数器计数。
这里具体的电阻和电容的值如下:
| 电阻/电容 | 值 |
|---|---|
| 555 #1 充电电阻 $R_1$ | $10 k\Omega$ |
| 555 #2 定时电阻 $R_2$ | $47 k\Omega$ |
| 555 #2 定时电阻 $R_3$ + 校准 | $55.8 k\Omega + 20 \Omega$ (电位器) |
| A 挡电容 $C_0$ | $100 nF$ |
| B 挡电容 $C_0$ | $100 pF$ |
注意: 这里的校准电位器要在单刀双置开关的后面,为了保持两个挡位的电路校准独立准确。
误差估计
根据以上思路,我们可以计算出误差:
当时钟信号的上升沿刚好落在测量信号的高电平上升沿后边或者下降沿前边时,最大差了一个周期即:
由于计算时用了近似 $\ln 3 / \ln 2 \approx 1.586$ ,但这个可以先测量一个已知容值标准电容,调整电位器来消除误差。
元器件公差误差:对于电阻一般精度为 ±5% 到 ±1%,电容一般精度为 ±5% 到 ±10%,但是如果使用电解电容,公差可能到 ±20% ,以及555timer的精度,这些如果不用已知容值标准电容去校准,误差可能达到 ±10% 到 ±25%。
使用Multisim仿真
这里我们使用Multisim进行仿真,具体电路图如下

我使用了两个电位器,在初次测量时,需要手动调整电位器使得测量结果准确。

但是这样对于uF的范围来说误差几乎没有,但是对于小电容nF,误差会随着电容容值的增大而增大(如上图)。
如此反常的现象,这里分析的原因是:
这里记时钟信号 $f$ 为高频高占空比窄脉冲, $t_w$ 为测量信号宽脉冲
如果 $f$ 的高电平时间 $t_{H}$ 很长,当 $t_w$ 的上升沿出现在时钟脉冲的高电平中间时,与门会立即输出高电平。这导致 $t_w$ 周期内第一个时钟脉冲的宽度(即 $t_w$ 剩余部分)被缩短,导致计数器接收到的有效时钟脉冲少于一个完整周期,从而少计数。
$C_x$ 增大时的效应: 当 $C_x$ 增大时,$t_w$ 变长。这意味着时钟 $f$ 需要运行更多的周期。虽然相对误差 $\frac{|\pm 1|}{N}$ 减小,但系统性误差(例如第一个和最后一个时钟脉冲的截断)会累积。而 $\text{nF}$ 档位频率极高,这种 截断效应很可能会导致少计数的周期数系统性增大。
但实际上不完全是这个原因(我之后才发现),之前我统计数学公式错了,误差应该是 $\delta=\frac{|X{test}-X{true}|}{X_{true}}$ ,我用只这个分子来计算相对误差是不对的,最后用下面改进过的电路仿真统计到的误差函数如图:
可见就是符合直觉上的误差函数,随着 $C_x$ 的增大,相对误差变小并稳定在0.025%左右,而不是像上面那样误差越来越大。
改进
由于导致误差的原因就是高频高占空比的时钟信号,那么我们直接将时钟信号改为较低频占空比平衡(最好50%,这样测量信号的上升沿是等概率分布在时钟信号高低电平上的)的信号即可。
以及添加计数器清零和溢出显示功能。
如果要做成可以使用的仪器,那么还需要考虑电源、开关、保护电路等,这里在画原理图的时候再想😭
较低频
根据之前的555timer谐振生成的波频率公式:
不难看出这里只要把其中电容变大,频率就会降低,但是这样大电容的公差会导致最后的测量误差增大,这里不如固定时钟信号在不同挡位的频率,然后根据电容大小调整测量信号的高电平时间 $t_w$ 即可,即改变测量信号的电阻 $R_1$ 。
我们固定时钟信号发生器频率为 $f=1Hz$ ,那么剩下的值为:
| 电阻/电容 | 值 |
|---|---|
| 555 #1 A挡充电电阻 $R_1$ | $910.23 \Omega$ |
| 555 #1 B挡充电电阻 $R_1$ | $910.23 k\Omega$ |
| 555 #2 定时电阻 $R_2=R_3$ | $4.809 k\Omega$ |
| 555 #2 电容 $C_0$ | $100 nF$ |
占空比为50%
如果要使占空比为50%,直接去调整两个电阻阻值是完全不够的,除非其中一个无穷小或者另一个无穷大。我们希望调整空比为50%不妨将电容充电和放电时经过的电阻隔离开,而隔离两个电路最简单的原件就是二极管。那么有以下电路:

电容C2充电时,只会经过R1,放电时只会经过R2,那么有:
只要R1=R2,那么占空比为50%,而且我们可以算出如果f=1kHz时,R1=R2≈7213Ω,但是仿真结果并非如此。

可以看到时钟频率也就只有844Hz,想到我们前面计算时并没有考虑到二极管的正向导通压降,那么我们考虑一下二极管正向导通压降为 $V_D$ :
- 在电容放电时,二极管不导通,只经过R2和C,那么有:
- 在电容充电时,二极管导通,只经过R1和C,但是电容的充电电压被二极管的正向压降降低了,那么有:
那么将数据带入解得,频率为1kHz且占空比为50%时,R1=R2=5959.475566Ω,仿真结果如下:

很好!😄时钟非常准确
计数器清零和溢出显示
手动清零计数器很简单,直接把~CLK一端都加个稳态为高电平的开关即可,按下后立即清零。

而溢出显示也就是将最高位的进位输出接到D触发器的D上,当最高位进位时,D触发器同时收到高电平和上升沿,点亮LED表示已溢出。
当然这样还要将清零按钮的信号采样到D触发器的CLK上,这样清零按钮按下时,D触发器也会清零,就像下图一样:

对了这个LED要接330Ω的限流电阻,这样接在现实里这LED直接烧了
需要的主要原件表
| 电阻/电容 | 值 |
|---|---|
| 555 #1 A挡充电电阻 $R_1$ | $910.23 \Omega$ |
| 555 #1 B挡充电电阻 $R_1$ | $910.23 k\Omega$ |
| 555 #2 定时电阻 $R_2=R_3$ | $5959 \Omega$ |
| 555 #2 电容 $C_0$ | $100 nF$ |
| LM555CN | 2 |
| 74HC08N(与门) | 1 |
| 74HC32N(或门) | 1 |
| 74HC04N(非门) | 2 |
| 74HC74N(D触发器) | 1 |
| 74HC160N(模十计数器) | 3 |
| CD4511BD(BCD-7段译码器) | 3 |
| 共阴极七段码LED | 3 |

电源
主要部件设计完了,接下来我们现在来设计电源,我们这里只需要VCC=5V的稳定电压源,但是该电源还需要知道其负载(即主要部件)大小,即从VCC端口看进去到GND的U/I/P大小,这里直接用multisim的探针测量。

得到VCC的U=5V、I=30pA、P=-7.54mW,以及数码管的驱动电流I=5mA。(这里电流小是因为使用了CMOS工艺的IC)
这里选择两节5号电池串联作为输入电压,其单节满电到耗尽前的电压范围是3V到0.9V,那么我们需要选择的升压芯片必须满足:
- 输入电压最小值 $U_{in,min}<1.8V$ 保证在电池耗尽前可以正常工作
- 待机时的静态电流 $I_{Q}<1pA$
那么我们可以选择TPS6109X系列或LTC3528等芯片,下面给出一个引用示例图:

我们稍微修改下就可以得到:

后面发现两节5号电池太大了,有直接换成一节7号电池,也就是1.5V最低0.9V升5V,这时我选择了TPS61222DCKR,固定输出5V,不需要再接可调电阻。

保护电路
由于74HC系列的芯片高速处理信号时,内部晶体管会快速开关,产生瞬时的高电流需求。如果没有电容,这种电流波动会在电源线上产生高频噪声,导致逻辑错误。
那么我们必须要在每个IC的VCC端口和GND端口都接一个100nF的旁路电容,在芯片需要瞬间大电流时就近供电,维持 VCC 电压稳定。
对了画PCB时一定要确保电源总线经过IC的VCC端口前,先经过旁路电容,例如这个:

PCB 预览

最后板子设计的还是不太好,原件买一套需要60元+嘉立创的免费PCB
我才发现原件采购都是有个起步限制的,比如电阻电容必须买50个起步😭。尽量使用少的原件才是最好的。
总结
这次课设让我对EDA有了更深的理解,也让我对电路设计有了更深的理解,PCB设计还是有很多需要学习的地方。
并且值得一提的是,这里的PCB设计必须遵循以下几个原则:
布局
- 先放核心芯片(大原件),再放对位置敏感的器件(如 USB 口、电源插座、按键、数码管等小原件),这些通常要在板子边缘。
- 应该预划分数字、模拟、DAA信号布线区域,不要让数字信号线跨越模拟区域,也不要让电源模块的噪声干扰测量部分。
- 去耦电容预留位置,一般放在芯片的电源引脚附近,靠近芯片,靠近电源,靠近地。
布线
- 数字、模拟元器件及相应走线尽量分开并放置于各自的布线区域内。
- 合理分配电源和地,最后用铺铜的方式布GND,之前布线时千万不要把电源总线等线路将完整的铺铜分割成多个区域,即铺铜区域必须是连通的
- 数字地、模拟地、实地尽量分开
- 电源及临界信号走线使用宽线
- 电源线与地线应尽可能呈放射状,以及信号线不能出现回环走线
由于本人以后大概率也不会做专业的PCB设计,所以这里就不多说了,以后有机会再学吧。


