Copy Link
Add to Bookmark
Report

d3_0x01_hacking_on_hw_filter

eZine's profile picture
Published in 
Do not fuck with a hacker
 · 5 years ago

  

|=-----------------------------------------------------------------=|
|=-----=[ D O N O T F U C K W I T H A H A C K E R ]=-----=|
|=-----------------------------------------------------------------=|
|=------------------------[ #3 File 0x01 ]-------------------------=|
|=-----------------------------------------------------------------=|
|=-----------------=[ 滤波器,电话拨号,西瓜和频谱分析 ]=----------=|
|=-----------------------------------------------------------------=|
|=------------------------=[ By Atommann ]=------------------------=|
|=-----------------------------------------------------------------=|
|=-----------------=[ Friday, July 01 2011 ]=---------------------=|
|=-----------------------------------------------------------------=|


To see a World in a Grain of Sand 一沙一世界
And a Heaven in a Wild Flower, 一花一天堂
Hold Infinity in the palm of your hand 握无穷于掌心
And Eternity in an hour. 永恒即刹那时光

——[英国诗人]威廉·布莱克(William Blake)

滤波器
======

最近阅读《发明者电子设计宝典》[1],了解到一些滤波器方面的知识(玩业余无
线电必定要涉及到这个东西),滤波器主要分下面这几种:

* 低通(low-pass),允许低于某个频率(称为截止频率,通常记作 F_cutoff)的信
号通过,高于这个频率的信号将被衰减

* 高通(high-pass), 和低通相反,它允许某个频率以上的信号通过

* 带通(band-pass), 允许某个频率范围的信号通过,低于这个频率和高于这个频
率都衰减(这也说明了“带”字在这里的含义,滤波器里有通带和阻带的概念,通
带就是让信号通过的那个频率波段,阻带就是不让信号通过的那个波段)

* 带阻(band-stop), 和带通相反,它在某个频率范围内阻止信号通过


电话拨号与 RC 滤波
==================

说到滤波器,我为外婆制作的电话机 facephone [2]就用到了 RC 低通滤波器,
它由一个电阻 R 和一个电容 C 组成,如插图 fig-01 所示。那为什么要用 RC
滤波器呢?这得从电话拨号的原理说起。

电话机的拨号方法有好几种,其中最常见的一种拨号信号就是 DTMF (即 Dual
Tone Multi Frequency,双音多频)[3],它最初由贝尔实验室开发,在你打电话
拨号时按下按键时发出的音就是 DTMF 信号的声音,每个数字都是由两个不同频
率的正弦波相加在一起形成的,就是 Asin(f_H) + Bsin(f_L),这可以从下面的
表格看出来(普通的电话没有 ABCD 键)。

表1: DTMF 键盘频率
-------------
1209Hz 1336Hz 1477Hz 1633Hz
697Hz 1 2 3 A
770Hz 4 5 6 B
852Hz 7 8 9 C
941Hz * 0 # D

这种 DTMF 信号有多种方法可以生成,可以用专用的电话拨号 IC,比如
MT8880,也可以用微控制器通过软件直接生成(这样可以让电路更简单,因为省去
了 IC),facephone 是基于 AVR 单片机设计的。AVR 应用笔记 "AVR314: DTMF
Generator"
就详细讲解了如何用 PWM (Pulse Width Modulation,脉冲宽度调
制)[4]来生成 DTMF 信号,这个应用笔记含有 C 语言源程序,只要接好实验电
路,给 AVR 烧写好程序,接一个小喇叭到 AVR 的 PWM 输出脚上,按 4x4 键
盘,就可以听到电话拨号音。

说到 DTMF 信号,据说某些经过训练的人听到 DTMF 声音可以直接说出你按的是
数字几。某次公司的经理告诉我一个新闻:有骗子叫别人把座机在免提模式输入
银行卡的密码,过了不多久,上当者卡里的钱就被转走了。因为我正好知道
DTMF,就讲了上述的原理。解码 DTMF 很容易,固定电话的来电显示几乎是标准
配置功能。而且可以用 IC 如 MT8870 来解码电话号码。此外,计算机软件也能
直接解码。

回到那篇应用笔记,AVR 输出的 DTMF 信号是用 PWM 表示的,是数字信号,笔记
中说要在输出引脚上接一个低通滤波器去掉高频信号以把 PWM 信号变成频率低一
些的模拟信号,可是我并不知道怎么计算 R 和 C 的值,后来看到网友 sunge 在
它的 DTMF 实验程序[5]中提到 R 和 C 的值可以通过它的截止频率 F_cutoff =
1/(2*pi*RC) 计算出来,当时我并不知道这个公式是什么意思,不知道这个公式
是怎么来的,这让我很困惑(困惑并不是一件坏事),我想知道更深层的原理。

我按照 sunge 的方法取 R = 1k, C = 0.1uF,电话拨号正常。虽然 facephone
已经在外婆家良好服役了几个月,但这个 RC 电路问题一直困扰着我,直到最近
看到《发明者电子设计宝典》上的讲解才差不多明白其中的一些道理。书中第
2.21 小节“用复阻抗分析正弦电路”引入了复数[6] z = x + iy 来分析正弦电
路,复数应用在这里真是太神奇了,利用它,电阻,电容,电感可以用复阻抗
(impedance, 这个词由 Oliver Heaviside [7] 创造)来处理。以前一直没有读这
个部分是因为有点害怕复数,以为它很难,不敢去碰。应用这个方法,三种基本
电子元件的阻抗可以表示如下:

电阻器 R 的复阻抗 Z_R = R
电容器 C 的复阻抗 Z_C = 1/(jwC)
电感器 L 的复阻抗 Z_L = jwL

其中,j 是虚数单位,j^2 = -1,本来在数学上用 i 表示虚数单位,但是在电学
中往往用 i 表示电流,为了不引起误会,就用 i 的后继字母 j 来表示了。 w
是正弦信号的角频率,在书上一般是用希腊字母 ω 表示,这里打字不便就用了
w.

这些公式的具体推导在一般的电工学书里都有讲述,下面来试试电容 C 的复阻抗
的推导过程:

正弦电压的公式:
V = V0cos(wt)

其中,V0 是正弦电压的幅度,w 是角频率,单位是 rad/s,t 是时间,正弦电压
是时间的函数。另外,这里用的 cos 而不是 sin 没有关系,只是相位差了 90
度。

引入复数来表示它,公式就变成了:
V = V0cos(wt) + jV0sin(wt)

书上说后面的虚部 jV0sin(wt) 没有物理意义,不影响实电压的表示,但是在叠
加过程中要用到它。

复数可以被表示成指数形式:
V = V0e^(jwt)

其根据是欧拉公式 cos(t) + isin(t) = e^(it),随便提及,这个公式可以通过
分别把 cos(t), sin(t) 和 e^t 展开成泰勒级数的形式证明[8]。

交流电压在复平面也可以被表示成一个向量,起始点在原点,这样正弦电压就很
好理解,当角度 wt 随时间变化的时候,电压的幅度 V0 就像一根指针沿着圆周
转动,电压随之变化。

好,接下来我们看看电容器,电容器的数学模型是 Q = CV,其中 Q 是电量,C
是电容(也就是经常提到的 0.1uF 等等数值),V 是电压。这个公式是说:电容
器上存储的电荷量与电容大小和加在其上的电压成正比,这是可以理解的,因为
想象电容器的两个金属极板越大,那同样的电压,它能存储的电荷就越多,如果
极板一样大,要是电压 V 越高,则存储的电荷也越多,因为电场变强了。再顺便
提到电感器的数学模型 v = L(di/dt),di/dt 是电流对时间 t 的导数(就是电流
变化的快慢程度),这个公式说:电流变化越快,电感两端感生的电压就越高(电
磁感应),其中的 L 是就是我们常提到的电感,如 100mH,H 是纪念美国科学家
Joseph Henry.

好,回到电容器的数学模型,加个电压到电容器上,流过的电流 I_C 可以这样计
算:

i = dQ/dt (这是电流的定义,单位时间流过的电荷数量即是电流)

I_C = dCV/dt (代入 Q = CV 得到)

I_C = CdV/dt (常数 C 提到前面)

I_C = Cd(V0e^(jwt))/dt = jwCV0e^(jwt) (代入正弦电压的复数表示,并对时间
t 求导)

好,这个时候我们得到了经过电容器的电流的复数表示方法,如果用电压除以电
流,会得到什么呢?(对于电阻 R 来说,V/I = R),我们来算一下:

V V0e^(jwt)
--- = -------------- = 1/(jwC) = Z_C
I_C jwCV0e^(jwt)

啊,分母和分子中的 V0e^(jwt) 都波消掉了!我们 1/(jwC) 就是上面提到的电
容器的复阻抗 Z_C,电感 L 的复阻抗 Z_L = jwL 也可以相同的方法求得。

为什么能这样干(除)呢?奥秘就在于复数,因为用复数来表示电压和电流,在复
平面上复数 re^(jθ) 可以看成是以原点为起始点的向量,这个向量的实部就是在
x 轴上的投影 rcos(θ),它就是电压和电流的大小,而 θ 则表示了相位关系,复
数比实数包含了更多的信息。对于电容器来说,如果给它通上 V = V0cos(wt) 的
余弦电压,通过的电流的相位就会比电压的相位超前 π/2,就是 90 度。

注意到前面提到的电流 I_C = jwCV0e^(jwt) 是个纯虚数,这个数实际上就包含
了相位超前 90 度的信息,把指数表示换算成三角表示就能看出来(实际上不用换
算也能看出,因为纯虚数就在虚轴上,它的相位比正实轴上的值超前 90 度):

I_C = jwCV0e^(jwt) = j[wCV0*cos(wt) + jwcV0*sin(wt)]

= jwCV0*cos(wt) - wCV0*sin(wt)

= -wCV0*sin(wt) + wCV0*cos(wt)

= wCV0*cos(wt + π/2) - wCV0*sin(wt + π/2)


上面的变形利用了三角函数关系 -sin(x) = cos(x + π/2)

I_C = wCV0*cos(wt + π/2) - wCV0*sin(wt + π/2)
V = V0cos(wt) + jV0sin(wt)

把电压的复数形式和电流的复数形式进行对比,就看出来了,电流的相位超前了
90 度,因此,给电容引入复阻抗就可以直接用 Ohm 定律来计算电流了。实际
上,我们可以认为对于纯电阻电路,电压和电流的相位相同,因此,电阻的复阻
抗是实数。

将复数引入到电路分析中,这真是一个天才的想法!在后面我们会看到拉普拉斯
变换 F(s) = ∫(0,∞) e^(-st)f(t)dt 可以把实函数变换为复变函数,然后进行分
析,我猜想这两者之间存在着某种联系。

现在有趣的事情发生了,这个复阻抗 Z_C 是个复数,是频率 w 的函数,但是这
样做有什么好处呢?

我们都知道两个电阻 R1 和 R2 串联的分压电路(voltage divider):

V_in
|
[ ]
[ ] R1
[ ]
|
o----------- V_out
|
[ ]
[ ] R2
[ ]
|
GND

R2
V_out = ---------V_in
R1 + R2

这是一个比例分配关系。

好,基本知识都准备就绪了,下面回到我们前面的 RC 低通滤波器电路,这个时
候电路有一点改变(和 fig-01 里的一样,为了方便好看变化了一下形状,变成了
分压器的形式):

V_in
|
[ ]
[ ] R
[ ]
|
o----------- V_out
|
--- C
---
|
GND

和上面的电阻分压电路一样,引入了复阻抗之后这里可直接应用分压电路的计算
方法即可求出电容两端的电压 V_out

Z_C
V_out = -----------V_in
Z_R + Z_C

V_out 1/(jwC) 1
----- = ------------ = ---------
V_in R + 1/(jwC) 1 + jwRC

然后我们把分母表示成复数的指数形式

1 + jwRC = Ae^(ja)

基中

A = sqrt(1^2 + (wRC)^2)
a = atan(wRC/1), 角 a 是相位

V_out 1 1 1
----- = ------- = ---e^(-ja) = -----------------e^(-jatan(wRC))
V_in Ae^(ja) A sqrt(1 + (wRC)^2)

这时已经得到了输入电压 V_in 和输出电压 V_out 之间的关系,但是这个比值同
样是一个复数,我们如果想知道 V_out 和 V_in 比值的幅度,这时,上面那个等
式 e 前面的部分就是幅度(把虚指数项去掉,虚指数项中包含了相位的信息):

| V_out | 1
| ----- | = ---------------
| V_in | /------------
/ 1 + (wRC)^2

显然,这个 | V_out / V_in | 表示信号的衰减。这个公式是非常有意义的,它
表示输入的电压有多少可以到达输出端,我们可以从中读出很多信息。其中的 w
是信号的角速度,如果 w = 0 那分母就为 1,这时 | V_out / V_in | = 1,这
是说低频(w=0)的信号(如直流电压)完全到达输出端。如果 w 很大(信号的频率很
高)如交流电,则分母会非常大,| V_out / V_in | 甚至会接近 0,表示高频信
号不容易通过,这就是低通滤波器应该有的属性!当然,我们这里是从它的数学
模型来考虑,从物理上可以直接看出高频信号容易通过电容到地,但是用数学模
型可以进行定量分析。

好,那我们前面提到的截止频率 F_cutoff = 1/(2*pi*RC) 又是从何而来的呢?

注意,如果 w = 1/(RC) 那式子中的分母就变成了 sqrt(2),| V_out / V_in |
= sqrt(2)/2 = 0.707... 这个时候输出电压就是输入电压的 0.707 倍(相当于输
出电压的功率相对输入电压减半)。这个频率 w_c = 1/(RC) 就被定义为截止频率。

在实际应用中,一般是用 dB 即分贝来表示信号的衰减,根据 dB 的定义:

A_dB = 20log| V_out / V_in | = 20log(sqrt(2)/2) = -3dB

截止频率这个点就是被定义为在 -3dB 这个点,这在设计滤波器的时候经常用到。

角频率 w_c 在这里的单位是 rad/s,可以把它除以 2*pi 转换成频率
F_cutoff:

w_c 1/(RC) 1
F_cutoff = ------ = -------- = -------
2 * pi 2 * pi 2*pi*RC

看,我们得到了 RC 低通滤波器的截止频率公式,实际计算一下 facephone 中的
R=1k, C = 0.1uF 的截止频率:

F_cutoff = 10^6/(2*pi*1000*0.1) = 1592 Hz

从 DTMF 频率表格中可以看出频率最高的正弦波是 1633Hz,而我们设计出的 RC
电路的截止频率是 1592Hz,基本吻合,实际上对于普通的电话机,后面的 ABCD
这四个键是没有用到的,因此电路满足实际的应用。


Bode plot, 传递函数
===================

| V_out | 1
| ----- | = ---------------
| V_in | /------------
/ 1 + (wRC)^2

我试了一下用数学软件把上面这个式子的图形描绘出来,比如在 wxmaxima 中输
入下面两个命令就能看到图形,如插图 fig-02 所示,从图上可以看出 -3dB 对
应的频率差不多就是 1590Hz(光标那个位置,频率显示在左下角)。

log10(x) := log(x) / log(10);
plot2d(20*log10(1/(sqrt(1 + (w*2*%pi*0.0001)^2))), [w, 0, 2000]);

在网上搜索一些相关资料,在一篇文档里也讲到串联 RC 电路,oops, 原来上面
的 V_out/V_in = 1/(1 + jwRC) 就是传递函数(transfer function)!以前看书
知道有传递函数这个东西,但是具体的内容和应用却并不熟悉,它竟然出现在了
这里。

查阅 Wikipedia, 得知书上的滤波器对频率的响应曲线的图形就是 Bode Plot
(得名于控制领域的大牛 Hendrik Wade Bode),在 maxima 中用 bode_gain 和
bode_phase 函数可以打印传递函数的 Bode plot.


一个更强大的工具:拉氏变换
==========================

随着学习的推进(阅读 Wikipedia 可以给出很多线索),原来电路系统可以用
Laplace 变换[9]来分析,经它变换,一些系统的关系就变成了线性方程,这样就
避免了求解微分方程。Laplace 变换一直在听说,如雷灌耳,可是从未用过,因
为它是一种积分变换,而且经过变换后的函数是复变函数,而自己又不懂复分析。
于是我硬着头皮读了一点《控制系统基础》[10]和《信号与系统》[11]中的相关
章节,发觉只要认真看,还是可以理解一些东西的。

《控制系统基础》中提到可以把 Laplace 变换和对数算术作类比,这是非常有趣
的。在我们初中学数学时都发有一本小册子,上面有个常用对数表,在我们这一
代成长起来之前,电子计算器就已经开始流行了,计算尺(slide rule)我是没有
见过的(不过可以作为孩子的玩具),下面用一个实际例子来温习一下用对数表来
作算术运算:

对数有如下两个基本性质(这里底是 10)

log(x*y) = log(x) + log(y)
log(x/y) = log(x) - log(y)

这样乘法和除法就变成了加法和减法来计算,例如,我们想计算 456/123。

步骤1:取对数(对运算进行对数变换)
log(456/123) = log(100*4.56) - log(100*1.23) = log(4.56) - log(1.23)

步骤2:查常用对数表( http://myhandbook.info/table_commonlog.html )
log(4.56) = 0.658965
log(1.23) = 0.089905

然后算出两个数相减的结果
log(456/123) = log(4.56) - log(1.23) = 0.658965 - 0.089905 = 0.56906

步骤3:利用这个 0.56906 查反对数表,可以知道它应对的数字是 3.707,用
PC 上的计算器算一下: 456/123 = 3.707317073

小数点后第 3 位是吻合的,从这个过程可以看到,如果一个人并不懂得乘除法的
计算方法,让他用上面这套规则同样可以进行乘除法计算,计算机不也是这样
吗?这让人想到了“中文房间”(Chinese room)这一思想实验。

Laplace 变换与此类似,我们回到前面那个串联 RC 电路,这回我们用插图
fig-03 来帮助分析,在电路中,记:

v_C: 电容两端的电压
v_R: 电阻两端的电压
v: 加载到电路上的电池的电压

根据基尔霍夫电压定律,电容两端的电压 + 电阻两端的电压 = 电源电压
v_C + v_R = v

根据电容的定义 Q = Cv_C, 电流 i = dQ/dt = Cdv_C/dt,因为电容和电阻串
联,流过电阻的电流大小也是 i,因此 v_R = Ri,得到:

v_C + Ri = v

dv_C
v_C + RC------ = v
dt

这个微分方程就描述了这个电路的行为,如果直接求解这个微分方程我们就能得
到电容两端电压的数学表达式 v_C = v(1 - e^(-t/RC)),v_C 是时间 t 的函
数,其图形是一条上升的曲线,当电容被充满电之后(即时间 t 达到 +∞ 时,e
的指数项会变成 0, v_C = v),v_C 最终会等于电源电压 v.

不用分析的方法同样可以解出这个微分方程,那就是利用 Laplace 变换,《控制
系统基础》和《信号与系统》中都讲到了 Laplace 变换的一些基本性质和常用变
换表,我们来试试这个方法。

步骤1:对这个微分方程两端进行 Laplace 变换

dv_C
L[ v_C + RC------ ] = L[v]
dt

其中,符号 L 表示对函数进行 Laplace 变换,如 L[f(t)] = F(s), F(s) 就是
变换的结果,这种变换相当于一个处理函数的机器,它吃进一个函数,吐出另一
个函数,只不过这个函数现在是复变函数了。这让人想到一个笑话:A 和 B 吹
牛,A 说:“我有一台机器,你把活猪从机器的一端赶进去,另一端就会直接出香
肠。” B 说:“你这算啥,我也有一台机器,你把香肠从机器的一端塞进去,活猪
就会从另一端蹦出来!”嗯,在我看来,他们俩是在谈论“香肠变换”和“香肠逆变
换”,Laplace 变换与此类似,也有相应的 Laplace 逆变换,就是说 F(s) 可以
变回 f(t),当然,Laplace 变换机器吃进的是函数,而不是猪。另外,A 说的机
器实际上是存在的,香肠工厂就可以看成是这样的一个机器,只不过我们一般认
为的机器都比较小,要实现 B 说的机器就有点难度了。

因为 v_C, v 实际上都是 t 的函数 v_C(t) 和 v(t),上面的方程实际上可以写
成:

dv_C(t)
L[ v_C(t) + RC-------- ] = L[v(t)]
dt

应用线性叠加规则:
dv_C(t)
L[ v_C(t) ] + L[ RC-------- ] = L[v(t)]
dt

步骤2:查 Laplace 变换表,并利用 Laplace 变换规则处理一下,得到:

V_C(s) + RCsV_C(s) = V(s)

其中
V_C(s) = L[v_C(t)]
V(s) = L[v(t)]
RCsV_C(s) = L[RCdv_C(t)/dt]

最后一顶是利用了函数的一阶导数变换规则 L[df(t)/dt] = sF(s) - f(0),对上
面的电容电压 v_C(t) 而言,V_C(0) = 0,因为一开始时电容上电压为 0,这是
初始条件。

提取公因式,并求出我们感兴趣的 V_C(s) 的表达式:

V_C(s)(RCs + 1) = V(s)

这样立即就求出了电容上的电压的表达式,它是个复变函数:

1
V_C(s) = -------------V(s)
RCs + 1

输出/输入,这就是这个电路的传递函数:

V_C(s) 1 output
------ = --------- = --------
V(s) RCs + 1 input

上面式子中 s 是一个复数,s = σ + jw

回想前面用复阻抗推出的公式:

V_out 1
----- = --------
V_in 1 + jwRC

如果 s = σ + jw 中的 σ = 0,那 s = jw(纯虚数),在这种情况下

1 1
------- = --------
1 + sRC 1 + jwRC

有资料上讲当 v(t) 是正弦信号时 σ = 0,此时 σ 为什么为 0,这个我还不懂,
资料上说 σ 在这里是 exponential decay constant,我也还不懂。

步骤3:对结果进行 Laplace 逆变换,可以得到

v_C(t) = v(1 - e^(-t/RC))

哇,通过运用 Laplace 变换,微分方程变成了多项式,利用简单的代数方法就解
出来了。

我们来考查一下刚才得到的电容电压的公式,它包含着一些信息。

1
V_C(s) = -------------V(s)
RCs + 1

Laplace 变换有一个 Final value theorem (终值定理),它说 f(∞) =
lim(s->0)sF(s),就是函数 f(t) 在 t 为正无穷时的值等于经过 sF(s) 在
s->0 时的极限值,Wikipedia 上说这个可以预测系统的长期表现(因为时间
t->∞),也说 Laplace 变换可以用来分析控制系统的稳定性,这个目前我还不懂。
好,我们把这个定理应用到我们上面的公式中。

在我们闭合串联 RC 电路开关的一瞬间,实际上我们是执行了一个输入,也就是
一个函数,即 V0*u(t),V0 是电池的电压,u(t) 是单位阶跃函数(即
Heaviside step function, 赫维赛德阶跃函数,前面提到过他),这个函数在
t<0 时为 0,t>0 时其值 1,t=0 时的值和具体情况有关,它的 Laplace 变换
L[u(t)] = 1/s,想象这个函数在实数轴上,在 0 点一下子跳到 1,这就是阶
跃,我们闭合开关正是干了这样的事情,因为 u(t) 在 t>0 时值为 1,因此要乘
上电池电压 V0.

因此

V(s) = L[V0*u(t)] = V0*L[u(t)] = V0/s

代入前面的 V_C(s) 表达式中

1
V_C(s) = -------------V0
(RCs + 1)s

应用终值定理求 v_C(∞)

1 1
v_C(∞) = sV_C(s){s->0} = s-----------V0 = ---------V0 = V0
(RCs + 1)s RCs + 1

和前面的电容电压的解析表达式一样,它告诉我们,当充电时间很长,电容器被
充满时,电容器两端的电压就等于电池电压 V0,这也就达到了一个稳定状态,因
为电容器极板上的电场被建立起来了。作为对比,我们来看一下 RL 电路,这个
电路由一个电阻 R 和一个电感 L 构成,如下图所示。

/
/
+---------o --------/\/\/\/\------+
| |
| Switch Resistor |
--- B
----- B Inductor
--- Battery B
----- B
| |
| |
+-----------------------------------+

我们来求一下流经电路的电流 i(t),这是一个串联电路,串联阻抗是 R + sL,
电压除以阻抗就是电流:

V(s)
I(s) = --------
R + sL

I(s) = L[i(t)]
V(s) = L[V0*u(t)] = V0/s

应用终值定理求时间 t->∞ 时的电流 i(∞)

V0 V0
i(∞) = sI(s) {s->0} = s---------- = ---
s(R + sL) R

完全正确!我们想象一下这个电路的物理过程,当闭合开关时,电感器会阻止电
流变化(这是它是本性),慢慢地,电流会变大,当一旦电感器上建立起磁场时,
电流就稳定了,它的值就是 V0/R,此时电感器相当于一条导线。这个电路也达到
了一个稳定状态。

从这两个例子可以看出 Laplace 变换确实是非常强大的工具,在电路分析,机械
系统分析和控制理论中都非常有用。


西瓜和频谱分析
==============

某天在去公司的路上想到时域(time domain)和频域(frequency domain)的概念,
一个信号它是时间 t 的函数就是时域,如果某个量是频率 f 的函数,那它就是
频域。我粗略知道时域和频域之间可以通过傅立叶变换来转换(但具体细节我并不
懂得)。比如一个声音信号,从时域变换到频域后就可以知道哪个频率的声音要强
一些。可以把声音和光作类比(“音色”这个词中的“色”字用得非常好),为什么我
们听声音就可以分辨出不同的人说话呢?因为不同的人发出的音的频率成分不一
样。

光也是一样,光谱分析仪可以用来分析光谱,看看哪个频率的光的成分多一些等
等(我一直在想,要是自己有台质谱分析仪就好了,可以方便地分析出食品中各种
化学元素的含量,因为现在吃的东西让人很不放心,我还想把乡下老家地里的土
壤,水质也通通分析一遍,因为没有人管这个事情)

不懂傅立叶变换,那怎样来体验一下频谱分析实验呢?GNU/Linux 上一定是有这样的
软件,我想到了以前录音用过的软件 Audacity,回到家我就试了一试,果然有频
谱分析功能,从 Audacity 的源代码中可以看到,它是利用 FFT 即快速傅立叶变
换算法来生成频谱的。

有次买东西商家送了一个 54 键的玩具电子琴,我想,要是自己都不会弹奏,以
后怎么教女儿玩呢?我的音乐感觉不行,找了半天没有找到中央 C 在哪里,我决
定用 Audacity 来找出中央 C 那个键,于是弹奏几个键并录音查看频谱,最后还
是没有找出中央 C :(

这时正好看到墙角有个西瓜,以前我们在 SZDIY Lab 讨论过如何制作一种电子设
备来分辨西瓜好坏的问题,嗯,西瓜正好是一个不错的实验对象。我把西瓜放到
电脑旁边拍了几下,然后把声音录了下来(以后每次买西瓜我都准备录个音,看个
波形),波形如 fig-04 所示,fig-05 是频谱,说实话,从这个图中我看不出什
么名堂,切开西瓜才给了我更多信息:瓜有点生 :)

前面提到电话拨号的 DTMF 信号是两个不同频率的正弦波的叠加,真的是这样
吗,我们来看一下它的频谱吧!同样,把手机键盘音打开,按键时对着电脑录
音,然后查看频谱,如 fig-06 所示,中间那两个高峰的频率分别是 767Hz 和
1335Hz,再对照前面的 DTMF 频率表格,表格中 770Hz 和 1336Hz 相交处的数字
是 5,完全正确,我就是按的数字 5.

后记
====

拍完西瓜录完音后决定写下这篇学习笔记,算是对我近段时间学习的一个总结。
越来越觉得这些东西实在是非常有趣,但是又感觉到自己的基础还太差:不懂复
变函数,控制理论、信号与系统,傅立叶变换,拉普拉斯变换。有时感觉一个很
简单的问题想了很久也不明白。然而,古埃及谚语说:这个世界上只有两种生物
可以越过金字塔的顶端,一个是老鹰,一个是蜗牛。悟性慢的人只要努力,还是
能学到一些东西的。大自然的美它一直在那里,等待我们去了解。

参考资料,链接及注释
====================

[1] Paul Scherz 著,蔡声镇等译,《发明者电子设计宝典》,(福建科学技术出版社,2004)
http://book.douban.com/subject/1191080/

作者 Paul Scherz 是个物理学家,本书写作风格不同于一般的电子学教科书,它
涵盖了电子学各个领域的基础知识用实践应用,讲解清晰明了,用水路模拟电子
器件的工作行为,书中有大量作者手绘的精美电路图,另外书中很多电路是直接
能用的(标有参数)。

第 8 章则详细介绍了各种滤波器的概念(如切比雪夫滤波器,巴特沃斯滤波器)和
怎样一步一步进行设计(用归一化方法)。

[2] facephone
http://www.atommann.com/make/facephone/index.html

[3] DTMF (双音多频)
http://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling

[4] PWM (脉冲宽度调制)
http://en.wikipedia.org/wiki/Pulse-width_modulation
这是一种非常有趣的技术,很多场合都会用到,是一种简易的 D/A 转换方法。

[5] sunge 的 DTMF 实验硬件说明
http://sunge.awardspace.com/dtmf-en-de/node3.html

[6] 复数
下面这两本书讲到了复数引入的精彩历史

保罗·J·纳欣著,朱惠霖译,《虚数的故事》,(上海教育出版社, 2008)
http://book.douban.com/subject/3535356/

本书里讲了英国的瑞利勋爵用复数分析电路的内容(解释天空为何是蓝色的那个瑞
利)。也提到用复数来分析交流电路的主要贡献者是施泰因梅茨(Charles
Steinmetz)引入的,1893 年在国际电学大会的主题是“复数及其在电工学中的应
用”,施泰因梅茨被称为“用 -1 的平方根产生电的魔法师”。

William Dunham, 《天才引导的历程》,(科学与人译丛)
http://book.douban.com/subject/1030974/

作者用精彩的笔墨讲述了卡尔达诺和塔塔利亚的解三次方程挑战赛,非常有趣,
虚数单位 sqrt(-1) 在解三次方程时不可避免地出现。

[7] Oliver Heaviside (奥利弗·赫维赛德)
http://en.wikipedia.org/wiki/Oliver_Heaviside

传奇的英国自学成才的通才,物理学家。他发明了 operator calculus 来求解微
分方程,而且有张表格,后来发现他的方法和 Laplace 变换等效。当别人说他的
方法不严谨时,他说了一句有名的话: I do not refuse my dinner simply
because I do not understand the process of digestion.

[8] 欧拉公式
http://en.wikipedia.org/wiki/Euler's_formula#Using_power_series

[9] 拉普拉斯变换
http://en.wikipedia.org/wiki/Laplace_transform
在这个词条中列出了电子学里的例子。

[10] Sudhir K. Gupta, 《控制系统基础》,(机械工业出版社,2004)
http://book.douban.com/subject/1189942/

[11] Alan V. Oppenheim, Alan S. Willsky, S. Hamid, 《信号与系统》(第二版)
http://book.douban.com/subject/3759690/

[12] James Ward Brown, Ruel V. Churchill, 《复变函数及应用》(第7版),(机械工业出版社, 2005)
http://book.douban.com/subject/1231386/

[13] RC电路
http://en.wikipedia.org/wiki/RC_circuit


begin 644 filter.tar.bz2
M0EIH.3%!62936?);G=L`PT/_____________________________________
M________XD9_/J`A7T````````MGM]P:IT#W9KH^V!7NS73X]?<&OIOO=]L!

(.....)

M>:H.#4KJ(K=.&CKE!UT*=,+AS#`_@Q^;ZNQU9\T\$N/G+4#6L'`DNMZ:DY\"
M=!F8]Z*Z]CW,)2<&\NVVOFY95W^>#&V/)(10W3[91%HY#_Q=R13A0D/);G=L
`
end

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT