找回密码
 注册
快捷导航
查看: 11568|回复: 18

【原创】模拟电路分析 - 信号处理(Linux应用专题)

[复制链接] |自动提醒
阅读字号:

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2010-8-22 17:09:46| 字数 552| - 中国–北京–北京 联通 | 显示全部楼层 |阅读模式
阅读这个帖子前,请参考
《模拟电路分析 - EDA软件(Linux应用专题)》http://www.ibmnb.com/thread-978562-1-1.html
:了解Linux下常用的电路分析工具,这个帖子会根据我搜集的EDA软件不断更新
《模拟电路分析(Linux应用专题) 》http://www.ibmnb.com/thread-975474-1-1.html
:了解基本的放大电路原理,这个帖子会根据对晶体管放大电路的分析不断更新

本贴关注的是模拟电路中的信号处理,和数字信号处理:DSP(Digital Signal Processing)是两码事。

在模拟电路分析一贴中,几乎每个电路都用到了信号发生器:Signal Generator,也就是信号源。但从来都没有解释过这个信号发生器的内部工作原理。

如果用电路实物实验来配合分析过程,首先要解决的就是信号发生器,这种仪器是可以直接购买的,但那样就丧失了动手的乐趣,而且信号发生器内部涉及到滤波、震荡和移相电路,这都是在《模拟电路分析》中缺失的内容。

首先这里放一个简单的信号发生器原理图,在没有特别注明的情况下,我使用的是Qucs电路分析模拟软件。
附图2是它产生的信号波形图,大约500Hz

[ Edited by  Roamvalley on 2010-8-25 22:35 ]

本帖子中包含更多资源

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

x
T410S

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-22 17:48:29| 字数 953| - 中国–北京–北京 联通 | 显示全部楼层
信号发生器的工作原理是:

噪音信号 -> 选频电路(选择最终要输出的信号频率) -> 放大电路(将选出的频率放大) ->移相电路(将放大后的信号处理为同放大电路输入信号同相 ->放大电路(送回放大电路)
循环经过“放大” -> "移相“ 这几个操作,就可以得到一个大致稳定的输出信号了)

在教科书上,通常用“零电阻”和“正反馈”来说明上面这个过程。

这里就几个关键环节作详细解释:
噪音信号:从上面的电路原理图可以看出,核心是一个简单的共射级放大电路,在没有信号源的情况下,这个晶体管只有固定的偏置电路,其工作过程应该是不产生任何信号的,但在《模拟电路分析》中不断强调过,世界上没有理想的电路元件和环境,这个电路在加电的瞬间时,晶体管并不是立刻达到稳定的偏置电压,而是在很短的时间内产生一系列频率的噪音电压,这一点在学习数字电路时有讲的,通常数字电路里有手动开关,开关合上的瞬间,会产生很多“毛刺”状电压信号,迫使设计人员必须用硬件滤波或者软件延迟的方法来滤掉这个非正常信号。
但在这里,噪音信号对我们是游泳的,这个噪音信号的频带很宽,我们只要从中选择某个特定频率的信号作为“种子”,将“种子”挑拣出来,放大再处理为最终输出的信号。

选频电路:选频就是挑拣“种子”的过程,遗憾的是,这个选频电路的特性不好,它的核心是R8并联C7构成的阻容并联电路。
在《模拟电路分析》中,提到过晶体管放大的最终效果在计算上取决于 集电极电阻除以发射极电阻,也就是:
Av=Rc/Re
这里Rc就是R5,而Re就是R8//C7的并联电路
这个Re很特殊,它会对不同的输入频率产生不同的阻抗,这里的情况是频率越高其阻抗越小(算是一种低通滤波器),通常称之为频率响应特性。其结果是,只要输入的噪音信号高于某个特定的频率F,它们产生的Re就很小,那么Av就很大,也就是选出了高于F的频率。
为了说明这个过程,先了解一下电容对频率的响应特性,附图1是一个电容串联电阻的原理图,附图2是针对这个测试电路的输入信号频率特性相应图,可以看出,在输入信号频率高于F时,电容的阻抗最小,输出电压最高。虽然在第一贴中的电阻和电容是并联的,但其总体频率响应特性还是符合这个结论。

[ Edited by  Roamvalley on 2010-8-22 17:50 ]

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-22 18:05:45| 字数 717| - 中国–北京–北京 联通 | 显示全部楼层
可以看出,这个选频电路不好的地方在于:它选出了高于F的一段频率,而不是我们希望的特定频率F。这一点在移相电路中我们还会进一步分析。

放大电路:这一点就不多说了,请参考《模拟电路分析》,但在这里我们要提另外一个重要的概念:谐波。通常讲某个频率的信号,在波形图上我们看到的是一条波形曲线,但在信号分析中,会把它分解为若干基础波,这些基础波可以看作是不同频率和相位的波形信号,它们叠加后,就形成了一个综合的谐波,通过这种方法,我们可以用一些基础波组合叠加出我们需要的任意波形信号,其实这也是很多信号发生器的工作原理。
同样,在分析谐波时,也是通过工程数学中常用的傅立叶/拉普拉斯分析将其分解为更为容易分析的基波。
这里我举个有趣的例子,最基本的收音机电路,它通常是由天线、检波电路和音频放大电路构成。
我们可以作一种软件收音机,严格的讲法是软件无线电(Software Defined Radio),在硬件上,我们只须一个天线,将天线接收的原始电波信号(包含了这个天线所能接收到的所有频率的信号)转为数字信号(通过定制的ADC(Analog Digital Convertor),这种电路有时被称为“基带电路”),然后将这个数字信号输入计算机,我们通过在计算机上用软件和信号处理算法,将所需的特定频率信号分解出来,再放大,输出,就可以用PC来播放电台内容了。

目前有很多所谓的第四代GPS芯片就是利用这个原理,它本身没有GPS的信号处理硬件(只有基本的信号放大功能),完全是依靠计算机软件来做到诸如信号检波、CDMA解码等工作的,这也是为什么这类GPS芯片反而要比以前的版本要便宜许多。

[ Edited by  Roamvalley on 2010-8-22 18:09 ]
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-22 18:48:08| 字数 1,054| - 中国–北京–北京 联通 | 显示全部楼层
回到我们话题中。
移相电路:在晶体管放大电路中(主要是共射级放大器)讲过,基级的输入信号和集电极的输出信号在相位上相差180度。
我们本打算将放大后的信号重新输回基级(正反馈),这样循环放大,就可以得到一个相对稳定的输出信号。问题是将这两个相差180度的信号叠加(输出+输入),会衰减输入信号。两个频率相等,幅度相等,相位差180度的信号叠加等于生成一个直线波形。
所以要将这个输出波形移动180度,让它在幅度起伏上和输入信号保持一致,这样叠加的话就加强输入信号了。
原电路中,是以 C1、R1、C2、R2、C3、R3(R3同时还和R4构成了BJT的基级偏置电路)构成了一个移相电路,C1和R1将输出波形前移60度,C2、R2再移60度,C3、R3再移60度,加在一起刚好是180度。
移相的原理是这样的,需要引入极坐标和复数的概念,这个已经在《模拟电路分析》中提到过。
我们以C1、R1来作单元分析:
R1对交流信号的阻抗是:Xr= 2k∠0°  (电阻对交流电的移相为0° ),C1对交流信号的阻抗是Xc=(1/2πfC)∠-90° (电容对交流电的移相为-90° ),两者再转化为复数形式:
Xr=2k∠0° = R+j0
Xc=(1/2πfC)∠-90° = 0-j(1/2πfC)
整体阻抗为 Xt=Xr+Xc = R-j(1/2πfC)
再转回极坐标形式,以便我们知道整体的移相:
Xt=sqrt(R^2 + (1/2πfC)^2) ∠ -arctg(1/2πfCR)
由于这里只关心移相,所以只须求出-arctg(1/2πfCR)的值,我们只知道C=0.047μF,这个该死的f因为前面的选频电路没有确定出一个值,导致无法算出结果。
但这个不重要,通过第一贴上得到的模拟结果f大致为500Hz,反推的话,得出-arctg(1/2πfC1R1)=73.6度,-arctg(1/2πfC2R2)=73.6度,-arctg(1/2πfC3R3)=40.3度
73.6+73.6+40.3=187.5
约等于180度(这其中还要考虑f并不是严格等于500Hz的)。
通过这个计算,也可以看出,只有F=500Hz时,它的相位才刚好能和输入信号(噪音信号中的500Hz成分)相等,非500Hz的信号在这里由于相位差的原因,不能很好的叠加,其正反馈效果差,也就得不到很好的放大。
这个过程也实现了一定的选频功能,配合了前面的选频电路。从而达到了一个完整的选频放大过程。

因而最终输出了500Hz左右稳定的信号。

[ Edited by  Roamvalley on 2010-8-22 18:50 ]
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-22 19:00:15| 字数 510| - 中国–北京–北京 联通 | 显示全部楼层
但电路设计时,是必须要清楚得了解所需的输出信号频率,不可能通过上面那种先模拟再反推的,也就是说要改善选频电路,通常的做法是将R5改造为一个LC电路,但电感线圈L这个东西不好制作,所以原电路的设计者没有采用电感,这是一种简化的电路。
真实的实物电路和原理分析是有差别的,还是哪句话,没有理想元件,R8和C7都是有一定的感抗成分(也就是内含了一个小电感),再加上晶体管本身还有频率响应特性,所以即使没有将R5改造为LC,整体电路还是具有一定的选频能力,只是事先很难计算出这个频率是多大,无法精确控制要输出的信号频率。
回头我会将R5替换成LC,重新模拟分析这个电路的。

正反馈是这个电路的一个重点,但不能一味得放大,那样只会让输出信号像个大喇叭形失真的,选频电路在这里起到了对反馈信号的衰减(虽然它的移相工作是为了加强),当衰减和放大平衡后,输出信号也会稳定下来。

另外要提到一点,自激震荡这个东西很奇怪,在实物电路中,你需要震荡的时候它偏偏不震,不能有自激震荡的时候它偏偏冒出来,很讨厌的,需要手动调整电路元件,这也是模拟电路和数字电路在实施时有很大的区别。

[ Edited by  Roamvalley on 2010-8-22 19:07 ]
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-26 11:46:56| 字数 718| - 中国–北京–北京–朝阳区 联通 | 显示全部楼层

动手实验

上面这个信号发生器在实物实验中,它的特性可能和我们用Qucs的模拟结果有很大差别。
从电路原理图来看,已经大致了解它的工作机制,但这个电路的特性并不是很理想,而且而存在一些错误。我打算重新设计这个电路,完全参照《模拟电路分析》帖子中的基本知识,对电路中的元件参数作改造,保留它的逻辑结构。
实验的结果未必会成功,但这个过程中能学到很多东西。

首先要为这个实验作些准备,我没打算买个示波器来直接观测信号发生器的输出结果,我想用自己的笔记本来替代示波器,这就要求笔记本能将模拟信号转化为数字信号,笔记本上唯一能达到此目的的元件是:声卡。它的麦克风输入就是一个典型的ADC(模数转换器),但这是要冒一定风险的,万一信号发生器在组装的时候有错误,有可能会损坏声卡,这就麻烦大了。其实在Linux下有一些现成的声卡示波器软件(比如xoscope),但我不想冒这个风险。

为了解决这个问题,我引入了一个很有趣的东西:Arduino,这是一种AVR单片机,它内置了大量接口,包括了一个内置的ADC。Arduino可以作为一个传感器和控制器平台,从外部采集各类模拟、数字信号,并对步进电机、继电器等发出控制指令,同时,它还可以通过USB和计算机之间交换数据。
我打算用它的ADC采集信号发生器的输出结果,并通过USB将采集的数据发到笔记本上,并显示其波形图,以了解信号发生器的工作状态。

实验前准备的材料如下:
ThinkpadX60(安装了Fedora13,Arduino开发包,AVR GCC,JDK1.6)
Arduino MEGA 1280单片机
面包板、三极管、电阻、电容、插接线
万用表


这个过程中要学习不少新的东西,基本的单片机知识、ADC采集、Arduino编程。

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-26 12:05:07| 字数 373| - 中国–北京–北京–朝阳区 联通 | 显示全部楼层
在《晶体管电路设计》一书中(参考模拟电路分析贴)对电路设计中如何确定元件参数作了很多介绍,其核心思想是:通过已知量推导未知量(嘎简单吧,牛逼的东西往往都很简单)。
已知量主要包括两部分:需求和元件自身特性。
在这里,需求是输出适合ArduinoADC采集的信号,包括电压范围和电流范围,采集速度。元件自身特性最主要的就是晶体管的基级-发射极电压降(大约在0.6v ~ 0.7v)。另外,我的实验是受限制的,主要包括:
缺少外置电源,信号发生器需要直流电源,无论是用电池(如果需要6v电压,就得用5个1.5v电池串起来)还是自制适配器我都嫌麻烦了,而Arduino上有一个5v的直流输出,打算就直接用它了。
再就是我手头的电子元件太少(出差中,没带那么多小玩意),三极管只有几种。这些都成为了实验的已知量。

配合在《模拟电路分析》中所学习的基本知识,可以动手了。
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-26 17:42:16| 字数 961| - 中国–北京–北京–朝阳区 联通 | 显示全部楼层

了解Arduino的ADC特性以及选定晶体三极管

Arduino的ADC输入阻抗大约在100M欧以上,这对我们目前要实现的信号发生器来说已经是非常大了,可以肯定信号发生器输出的电能都会被Arduino所“吞噬”,这里会存在阻抗不匹配的问题,但由于我们希望生成的信号频率很低(低于1000Hz),因而这个阻抗不匹配不会带来什么麻烦。
但Arduino对输入的电压有严格要求,最好不超过9v(参考Arduino说明书),否则有可能烧毁Arduino芯片。
另外,Arduino内置的ADC能检测的信号频率不超过其CPU的主频,也就是不能超过16MHz,我们希望生成的信号在1000Hz以下,所以也不成问题。
另外,Arduino上可以共计5v电压,这要求我们的电路只能按照5v直流供电来设计。

选择三极管

我手头有的主要是2N4401和2N4403两种管子,其中2N4401(2N开头的是美国晶体管命名规范)是NPN类型,在共射级放大器的示例中大多是用NPN,为了配合已经大量引用过的例子,这里就选定了2N4401。
从这个网站能查到4401的基本参数:http://www.c88c.com/cgi-bin/121/ ... N4401&factory=#

可以看出它是硅(Si)管,基级-发射极压降正常为0.7v,另外,在4401的详细规格里有注明:

Ic= 0.1 mA, Vce= 1.0 V, A=20
Ic = 1.0 mA, Vce= 1.0 V,A=40
Ic = 10 mA, Vce = 1.0 V,A=80
Ic = 150 mA, Vce = 1.0 V,A=100
Ic = 500 mA, Vce = 2.0 V,A=40

这是关于三极管在静态直流环境下,集电极电流:Ic, 集电结-发射结电压差:Vce和相应的最小放大倍数:hFE。
对于信号发生器,我选择了放大倍数为80(通常在这种电路里要大约60),对应的Ic=10mA,Vce=1.0v
这意味着流过集电极和发射极的电流大致为10mA
而Vce这个参数在《晶体管电路设计》一书中没有太多说明,参考童诗白的《模拟电路技术基础》第一章1.3.3节内容,关于“晶体管的输入特性曲线“:对于小功率管,可以近似的用Vce大于1v的曲线来代表Vce大于1v的所有曲线。这里我就直接设定Vce=1v了。
附图是晶体管的输入特性曲线

[ Edited by  Roamvalley on 2010-8-26 19:24 ]

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-26 20:27:15| 字数 570| - 中国–北京–北京–朝阳区 联通 | 显示全部楼层
整理目前的已知量:
电源Vcc=5v
Ic=10mA
hFE=80
Vce=1v
Vbe=0.7v
由hFE=80可以推导出:
Ib=Ic/hFE=10mA/80=0.125mA

参考《晶体管电路设计》中的方法,我们入手的第一个元件(除了电源和三极管外)是发射极电阻:R4.(从这里开始,参考新的信号生成器原理图,见附图)
但这里我们要作唯一的一次人为定义,即设定R4上的电压降为1v,你要问我为什么这么定义,回答是:总要有个开始,开始往往是未知的,我并不担心这一步走错,因为在这个定义下,把整个电路的参数都设计出来后,我们可以再次考量电路的整体特性,如果不满意,可以重新定义。一句话,不要害怕错了,否则会永远停留在第一步。
因为三极管的发射极电流约等于集电极电流,也就是:
Ie=Ic=10mA
那么R4=Vr4/Ie=1v/10mA=100欧
同理,集电极电阻:
R3=Vr3/Ic=(Vcc-Vce-Vr4)/Ic=3v/10mA=300欧
再根据:
Vbe=0.7v
可以推导出:
Vr2=Vr4+Vbe=1v+0.7v=1.7v
那么:
R2=Vr2/Ib=1.7v/0.125mA=13.6K欧
R1=Vr1/Ib=(Vcc-Vr2)/Ib=26.4K欧

这样一来,我们计算出了三极管的偏置元件参数。

[ Edited by  Roamvalley on 2010-8-26 20:38 ]

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-26 20:50:04| 字数 142| - 中国–北京–北京–朝阳区 联通 | 显示全部楼层
这里有个小问题,像刚才算出的带小数的R1和R2未必能找到对应的真实电阻,但这里还在模拟阶段,在实物实验时可以根据情况调整。

可以看出,这里对其它部分的电路参数没有作调整,尤其是相移电路的前两段。
在4楼帖子里有关于移相的算法。这里会遇到个麻烦事,在解释这个麻烦之前,先看看电路的模拟结果。

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-26 20:57:02| 字数 75| - 中国–北京–北京–朝阳区 联通 | 显示全部楼层
可以看出,信号是逐渐被放大的,在0.2秒后趋向平稳。但这个波形图品相不好,在不改变电路参数的前提下,我把数据采样的频率下降了一半,重新看一下输出结果。

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-26 21:11:12| 字数 120| - 中国–北京–北京–朝阳区 联通 | 显示全部楼层
可以看出,输出的信号大约为950Hz。如果沿用4楼的算法,会发现这个结果和算法不符。
但对比两个输出波形图,会有个误解:电路没有发生改变,仅仅因为观测的采样频率不同,获得了不同的波形和频率。为了说明这个现象,贴个网上找的收音机调幅检波原理图:

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-26 21:21:48| 字数 505| - 中国–北京–北京–朝阳区 联通 | 显示全部楼层
仔细看看那个检波前的波形,它的频率很高,其边缘是另外一种频率的波(音频信号),这是一种以高频波载上低频波进行远程传送的方式。
如果高频波的频率为Fh,包络信号的频率为Fl,那么,观察采样的频率若接近Fl(通常是Fl的2倍多)的话,我们将能直接看到音频波形,而看不见高频的载波。
这个道理同样适用于我们在上面输出的两个不同的信号波形图。当观察采样频率降低后,我们看到了清晰的950Hz波形,但并不表示输出中没有更高频率的谐波。
产生这个问题的原因前面讲过,这个电路没有针对某个频率放大,而是放大了一段(很多)频率的噪音信号,这些波叠加在一起,构成了复杂的谐波输出。

这个问题不是太大,当准备用Arduino去采样这些输出时,我们固定一个较低的采样频率(比如950Hzx2),把所需频率的波检出来。尽管这个过程和通常的示波器工作原理有些不同(一般用示波器总想把最高频率的波显示出来),但可以了解更多关于信号处理的内容。

改进后的电路有了这些好处:
1、输出的信号强度(电压)比原来的大多了,有利于采样
2、只须5v电压供电,可直接用Arduino的供电接口

[ Edited by  Roamvalley on 2010-8-26 21:29 ]
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-29 17:20:04| 字数 91| - 中国–北京–北京 联通 | 显示全部楼层
利用手头的材料,我在面包板上安装了这个信号发生器的电路,由于电路原理图中的某些元件找不到实物,只好调整了这些元件的参数,对电路重新作了模拟。
附件是组装好的电路和新参数下的电路原理图。

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-29 17:28:11| 字数 179| - 中国–北京–北京 联通 | 显示全部楼层
但这次模拟和实验的信号输出点没有采用output,而是图上的output2,原因是:Arduino的ADC只能测量正电压,如果采用output点,经过电容C6后输出的电压会有负值,所以直接测量output2点,此处电压会因R3而被抬高到0v以上,模拟的输出结果如附图:其幅度在正1v到正4v之间,不会超过Arduino的限定测量电压,其频率大约为140Hz。

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-29 17:42:58| 字数 451| - 中国–北京–北京 联通 | 显示全部楼层
关于Arduino软件的使用这里不详细介绍了,可以单独开一帖说明,因为它的内容太多了,这是个很好玩的东西,尤其适合没有太多技术背景的人,Arduino的设计本意就是面向非技术人。
它的一个重要思路就是采用了Wiring/Processing语言来为Arudio编写程序,这种语言在我个人看来有些类似LOGO语言,适合采集、控制和绘图。避免了非技术人员为使用单片机而要学些C和汇编语言。
Wiring/Processing语言可以参考这两个网站:
http://wiring.org.co/
http://www.processing.org/
附图是针对这个信号采集编写的代码,看起来很简单,比用C些要简短多了。这个代码没有针对高速采样作优化(目前采样频率被设在1MHz),因为没有必要,实验中这个电路输出的信号频率低得可怜,大约只有100Hz左右。我买的这个Arduino MEGA1280最高可采样16MHz/2=8MHz的模拟信号输入。

[ Edited by  Roamvalley on 2010-8-29 18:25 ]

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

627

回帖

41

积分

310

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2002-7-3
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
 楼主| 发表于 2010-8-29 17:53:33| 字数 594| - 中国–北京–北京 联通 | 显示全部楼层
程序被烧到单片机后会自动执行,并在PC客户端程序的串口窗口输出采样的结果,内容我就不贴了,一堆的数字。
把这堆数字保存为output.dat文件,然后使用linux下常用的点阵绘图软件:gnuplot将output.dat里的内容以波形方式显示出来。(gnuplot是一款非常流行的科学制图软件,小巧方便,很多计算类软件都调用它来绘制数据,包括我们前面用的Octave,掌握它相当于掌握了一把瑞士军刀)
但是输出结果很不理想,我试过各种不同采样频率。附图一是个输出概况,附图2是将其中的部分波形放大,由于程序的实际采样的频率大约在300Hz左右(每次采样间隔时间为1毫秒,但采样本身的代码也会占用部分时间,估算在3毫秒左右),采样得到信号频率大约在90Hz。而且波形很差。
采样得到的信号幅度在 500*0.0049=2.45v左右。
Arduino采样的数据范围默认是在0 ~ 1023(对应这里的0 ~ 5v),所以每一个单位表示 5/1024=0.0049v。我们从图上可以看出采样的波形幅度在500格左右。

对比前面在Qucs里的模拟结果可以发现,两者输出的波形都很差,原因有很多,以后会针对这个问题作改进的。
两者的频率相差很大,毕竟实验中每个元件在参数上都会有误差的,再加上接线和元件腿脚过长,都会对这类震荡电路带来不利的影响。

[ Edited by  Roamvalley on 2010-8-29 18:02 ]

本帖子中包含更多资源

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

x
T410S
回复 支持 反对

使用道具 举报

339

回帖

15

积分

1065

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2007-7-31
发表于 2010-8-31 19:39:22| 字数 45| - 中国–北京–北京–海淀区 联通 | 显示全部楼层
楼主辛苦哦。

这些东东玩起来,费精神呢,呵呵,主要是费钱,如果不从事这个行业,基本很难玩转。
回复 支持 反对

使用道具 举报

222

回帖

0

积分

3990

资产值

入门会员 Rank: 1

注册时间
2005-8-1
发表于 2010-9-11 21:24:53| 字数 18| - 中国–广东–深圳 电信 | 显示全部楼层
谢谢LZ的文章, 虽然已经不玩这些了。
Linux@X200
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-1-20 18:34 , Processed in 0.153171 second(s), 47 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部