home:students:13307110296:pulse_counter

光电脉冲计数器

该项目始于主要在2014年3月初,至2014年5月末已完成。

今天尝试改进了计数器,把显示的数据和输入的数据二次拟合,在程序中输出回归后的值。结果符合的很好。得到了R²=1。

但是拟合后显示的结果并不完全符合预期,需要靠经验适当增减系数。因此做了一个常数项的改动,使得在1kHz到25kHz范围内其频率残差不超过30Hz(绝对值),达到了相当高的精度!

由于做运算的步骤不在计数的循环中,故不影响计数的精度。

刘知平 2014/05/29 22:42

很赞! — 乐永康 2014/05/24 21:37
光耦弄得怎么样了,之前不行可能是“接地”点的问题,你下次来我们可以再试试。 — 沈金辉 2014/05/24 21:40
我之后试了光耦两侧几组不同的电阻搭配,成功了,只是波形稍微有点变形(大约5kHz的时候开始出现)。 — 刘知平 2014/05/26 16:46
频率大约5kHz以后会出现波形变形,可能受所选光耦的工作频率所限,我觉得应该有可以工作在更高频率的光耦。 — 乐永康 2014/10/13 07:37

今天重新测试了电路,发现了这套装置的几条特点:

  1. 用电脑供电较为稳定
  2. 信号上升时间略短于下降时间,采样电阻越大越明显。(R无限大时,下降时间远大于上升时间)
  3. 光电池的载流子饱和后,能提供的电动势约为6V;电容随光强上升而下降。(粗测)

刘知平 2014/05/06 22:47

信号上升时间略短于下降时间,采样电阻越大越明显。(R无限大时,下降时间远大于上升时间)
对这一现象,能给个解释吗? — 乐永康 2014/10/13 07:40
光电池的载流子饱和后,能提供的电动势约为6V;电容随光强上升而下降。(粗测)
你测试的能输出6V电动势的是一片光电池,还是多片光电池的组合?光电池的电容在充放电时,应有不同的值。我的理解与“电容随光强上升而下降”不一致。 — 乐永康 2014/10/13 07:40

今天完成了电路的焊接,并且进行了测试!

一开始测试结果非常好,频率的波动较小(输入5kHz,显示5000或5004);但是出去一趟回来后频率的波动变大了。

期中考试之后会详细的调试和进一步改进的。

刘知平 2014/04/28 00:28

今天做了接近Arduino采样速度极限的能力测试,每10us采一个点。根据奈奎斯特定理(采样定理),能够完全重建原信号的最大频率限制为25kHz。 但是我们并不需要完全重建原信号,故此条件可适当放宽,于是进行了如下实验:

函数发生器输入一组已知频率的信号(从1kHz至31kHz,间隔1kHz),记录对应的频率读数。用函数拟合,结果如下图:

舍去f>28kHz的点线性拟合,可见R²=0.9999,平均误差8.635‰,相关性较好,测量范围相较之前扩大了很多。

由残差图可以看出,f>28kHz时残差偏离正常趋势较大,故舍去。

刘知平 2014/04/23 21:54

你作的拟合图,可能应将横坐标改为对数坐标,不知道这样显示结果会如何? — 乐永康 2014/05/30 02:12
我个人感觉两边都用直角坐标能更好的反应接近线性的关系。
X轴为对数坐标的图如下:

刘知平 2014/05/30 07:37
两个坐标都改为对数,这样可以看出不同量级的频率下,测量结果的偏差如何。但注意:输入频率是自变量,作横坐标。 — 乐永康 2014/05/30 13:50
老师,因为我要用输出的结果进行多项式运算反推出输入的结果,所以如此拟合。
更正的图像如下:

刘知平 2014/05/30 15:13

今天调试到一半,发现信号波动很大,以为是程序的问题所以就没怎么在意。然后发光二极管忽然闪了几下,灭了,才发现函数发生器(ATF208)停止工作了,貌似是坏了?

发现用-7us修正比结果乘以系数准确得多,故采用前者。

改用XJ1631继续实验,但是只有在f<2250Hz才有精确的频率读数,故只做到2250Hz,一共42组数据。拟合结果比例系数b=1.001,R²=1,修正比较理想。

刘知平 2014/04/20 15:17

今天成功测试了整个装置。

实际延迟时间和输入的延迟时间有差值,拟合近似为线性。(Matlab:R-square=1)

实测最高频率可达14kHz左右。

刘知平 2014/04/17 22:54

不是说14kHz么。。 — 沈金辉 2014/04/17 23:21
不好意思,打错了! — 刘知平 2014/04/18 00:00

今天下午电路Debug,发现12V电源的输出中,噪声的Vp-p有600~800mV。于是换回了5V的电源,发现噪声Vp-p高达1V左右。

用5V的电源观察函数发生器的信号,出现了诡异的现象:无论选取何种波形,放大后的信号总是与输入频率一致的方波,且Vp-p=8.50V左右
另外,当输入电压大于900mV时才有方波,否则电压恒定为8V。

此外,还有若干发现如下:

  1. 相同电压、不同颜色的LED在照射光电池上产生的电压不同(白色>紫色>绿色)。
  2. 示波器上 TRIGGER 区域的【50%】按键可以将触发电平自动调整至当前屏幕上的电压平均值。
  3. 面包板底排线孔上(用于接地各线路),各导线接口之间距离越大,噪声越大。

刘知平 2014/04/16 21:01

焊接了12V输出的电源,测试正常。

将运放的三个电阻改为10kΩ(输入)、20kΩ(接地)、100kΩ(放大)。

当输入400mV的方波时:
用万用表检测,输出有效电压7.8V;用示波器检测,电压峰峰值达到46V。原因不明。

最后实际测试了一下Arduino的数字输入的最小电压,大约在2.6V左右(正向偏置100%)。

10kΩ输入,100kΩ反馈,参考端接地电阻该选9kΩ,否则会有直流偏置。放大倍数是10倍,大于10V的输出电压都是有问题的。建议输入信号用示波器方波、三角波一类的信号,用示波器同时观测输入、输出信号,更容易明白结果。示波器看到信号很大的原因是否因为输入导线或输入端有X10放大? — 乐永康 2014/04/13 21:58
有关接地电阻的选择,沈金辉学长之前告诉我的是取输入电阻和反馈电阻的几何平均,不知道具体的标准和选择原因是怎么样的?
测试时使用的正是函数发生器发出的标准方波,一开始使用的是可以记录数据的示波器。但是由于示波器的最大单位量程问题,图像在示波器屏幕上没有办法完全显示,换用了另一个示波器才能勉强显示峰谷,故无法记录图像。只是徒手画了一个示意图。 — 刘知平 2014/04/13 22:26
找到一篇有关运放接地电阻的选择的文章运​放​正​向​接​地​电​阻​-​-​平​衡
更正:应该是接两个电阻的并联阻值,大概是我记错了,对不起。 — 刘知平 2014/04/13 22:47
若无法存储,可以将数字示波器的屏幕显示拍下来。上面有所有信息!若图像足够清楚,都能直接看出来。若能输入输出同时显示,原因就会很清楚。 — 乐永康 2014/04/13 23:10
的确是取那两个电阻的并联,是我记错掉了,不好意思。 — 沈金辉 2014/04/14 09:25

今天将所有的电路移到了一块板上,效果图如下:

为了确定输入电压的放大倍数,查了一下Arduino的相关参数:

Arduino官网说明

其中的一些主要参数:

Microcontroller ATmega328
Operating Voltage5V
Input Voltage (recommended)7-12V
Input Voltage (limits)6-20V
Digital I/O Pins14 (of which 6 provide PWM output)
Analog Input Pins6
DC Current per I/O Pin40 mA
DC Current for 3.3V Pin50 mA
Flash Memory32 KB (ATmega328)
of which 0.5 KB used by bootloader
SRAM2 KB (ATmega328)
EEPROM1 KB (ATmega328)
Clock Speed16 MHz

对于数字输入的问题,相关的描述很粗略:
Each of the 14 digital pins on the Uno can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate at 5 volts. Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms.

找了很久,在Reference的有关HIGH的描述中找到了:
The meaning of HIGH (in reference to a pin) is somewhat different depending on whether a pin is set to an INPUT or OUTPUT. When a pin is configured as an INPUT with pinMode, and read with digitalRead, the microcontroller will report HIGH if a voltage of 3 volts or more is present at the pin.

3V以上的电压在都可以得到HIGH。

刘知平 2014/04/13 00:32

今天中午在电脑上写好了Arduino计数的程序,来到实验室运行居然一次成功了,感动!

以下是改进版的程序:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int s,s0;
long int f,count;

/* SETTING */
long int rate=25; //time per us
long int refresh_time=250; //LCD will be refreshed every (refresh_time)ms

/* REVISION & CONVERSION */
long int realrate=rate-6; //revision of rate
long int repeat=(1000*refresh_time)/rate; //conversion
long int m=500000/rate; //calculate the theoretical max frequency

void setup()
{
  lcd.init(); 
  lcd.backlight();
  pinMode(12,INPUT);

}

void loop()
{
  count=s=s0=f=0;
  for(int i=0;i<repeat;i++)
  {
    s0=s;
    s=digitalRead(12);
    if(s>s0) count++;
    delayMicroseconds(realrate);//Max Frequency=20000Hz
  }
  f=count*4;
  lcd.init();
  lcd.print(f);
  lcd.print("/");
  lcd.print(m);
}

值得注意的是,Arduino语言中的变量大小和C语言不太一样(偏小)所以尽量使用了long int代替int。

以下是用函数发生器作为信号源的测试图:

之后,试图将:1、脉冲发射/接收装置;2、信号放大电路; 3、计数显示部分。 连起来,但是信号强度不够(仅有1.36V)无法读出信号。

最后,将大面包板上的脉冲发射/接收装置移至小面包板上,并加大了放大电路的倍数,尚未调试。

刘知平 2014/04/10 16:50

今天终于在实验室试用了Arduino。 成功让两个LED交错发光尝,并试了各种delay()的数值。
在使用LCD的I2C通讯时遇到了困难:连线正确,按照1602液晶显示屏(I2C通讯)上的代码编译之后,LCD上没有显示。找了很久也没能找到问题

于是开始测试Arduino的输出极限频率:
用delayMicroseconds()分别测试了100,40,10,5,1的呼吸灯停顿时长,并且在示波器上观察图像,用Measure读出周期。
观察后发现:delayMicroseconds()的参数设置如何,周期都会放大约7.8微秒。在参数小于100时,图像比较不稳定(出现明显的过冲、周期有波动),但是方波形状总体较稳定。
尝试了一下,pinWrite(pin,HIGH/LOW)中的HIGH与LOW可以用1和0代替,没有任何影响。
刘知平 2014/04/09 14:42

打开库文件中的Example,发现

lcd.print("Hello, world!");

一句位于setup(),而非loop()中。
若将

lcd.print("Hello, world!")

一句移动到loop()中,则出现乱码。在这一句后

Delay(2000);

发现在第一个“Hello, world!”顶格出现的两秒之后,第二个“Hello, world!”紧随其后出现……直到铺满整个屏幕,又从第一格开始更新。
若想清空屏幕,调用

lcd.init();

即可。

下面一段代码的效果是:在屏幕上从左至右逐个显示0~9(每秒钟显示一个),然后清空屏幕重新开始。

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
  lcd.init(); 
  lcd.backlight();
}
void loop()
{
  for(int i=0;i<10;i++)
  {
    lcd.print(i);
    delay(1000);
  }
  lcd.init();
}

刘知平 2014/04/09 15:25

Phylab上有关液晶显示的资料:

不理解头文件<Wire.h>的作用。

昨晚提出了有关饮水机冒泡的规律的问题,乐老师提示了有关非线性力学的现象(Dripping-jetting),于是查了一下有关马利奥特瓶的资料:

在实验室看到了桌上的LED和光敏电阻,于是搭了一个电路:

电路图:

这是f=20Hz时的图象(未遮光)。由于频率很低,“曲线”产生的原因主要是光敏电阻在LED光照下电阻逐渐减小。

改进后的电路图:

这个是时域模拟的结果:

刘知平 2014/04/02 21:41
再附上找到的一篇关于dripping-jetting的文章,但是不会下载……
Dripping to jetting transitions observed from supercritical fluid in liquid microcoflows
Wire.h头文件说明,你要慢慢培养检索资料能力咯~
谢谢学长!我只搜出了源文件,发现根本看不懂…… — 刘知平 2014/04/02 16:18
都是一些底层的定义,会调用就行了,不用看懂库文件的,否则开发的效率会很低的。 — 沈金辉 2014/04/02 16:20
上面这个电路图看不懂啊!刘知平,你向沈金辉学习一下电路模拟这个页面的原理图中的那些探针(“小话筒”状)是怎么加的?起什么作用? — 乐永康 2014/04/02 16:41
我用的Cadence,他用的是CircuitLab,不一样的。。。。此外,这图中示波器的地是哪个,随便是哪个都不对吧。 — 沈金辉 2014/04/02 16:52
是用来模拟时读出节点的电压等参数的吗?在circuitlab上也有,但是因为光耦合的问题模拟不了。 — 刘知平 2014/04/02 17:22
这个原理图不正确。你若要接“示波器”之类的设备监测信号,接“探针”的原理图会比用“示波器”更直观! — 乐永康 2014/04/02 17:44
CircuitLab貌似不具备探针这个功能。。 — 沈金辉 2014/04/02 20:50
貌似叫做节点(NODE),可以自己起名字。模拟的时候直接写含有已经命名节点的表达式就好了。 — 刘知平 2014/04/02 21:49

今天完整地装上了电源,经测试电源工作正常。回宿舍下载了Arduino软件,粗略看了看语法和几个示例,感觉语言比较简单。

今晚的组会收获很大,下次的组会压力很大。

刘知平 2014/03/30 23:05

今天拆开了上次的电路,重新搭建电路(电路图按照实物排列方式,放大倍数10倍):

注意接地的方式!

连接后,输入144Hz正弦信号,发现有很大的噪声。怀疑是电源模块引起的噪声。测量电源模块两端输出电压,的确有噪声(但是比较微小)。

换用HY1711-25双路可跟踪直流稳定电源。选定“跟踪”后将第一路输出的负极、共同端、第二路输出的正极短接,则第一路输出的正极和第二路输出的负极电位大小相等、符号相反。输出与电源模块相同。同时换用了模拟函数发生器XJ1631作为信号源(降噪)。这时,放大输出变得非常稳定、噪声很小,放大倍率也体现得很明显。

调试完成后,将220S05DB2电源装上了引脚,下一步便能完成电路。

下一步准备用Arduino计数,并用八段数码管显示频率。找了一些相关资料如下:

Arduino控制八段数码管

Arduino控制八段数码管2——显示数字从1到8,每间隔2秒换一次

刘知平 2014/03/26 22:05

建议用液晶屏作显示。有关资料你可以去沈金辉页面中的“for share”链接里去找。 — 乐永康 2014/03/27 00:42
同意乐老师的意见,如果用数码管的话,程序会长到你无法忍受的地步,而且修改起来也极为困难。 — 沈金辉 2014/03/27 08:23
数码管可以作为学习数字电路的对象,实际使用中,也可以适用于显示1-2为数字的情形,其他情况下就选用液晶屏吧。 — 乐永康 2014/03/27 09:04
建议电路图还是画原理图的好。运放啊什么的最好不要画成一个矩形。。 — 沈金辉 2014/03/27 09:31
谢谢乐老师和学长的建议! — 刘知平 2014/03/27 14:03
LCD已经到货了,库文件也已经上传,你随时可以来用。 — 沈金辉 2014/03/29 17:18
谢谢学长!明天下午就来! — 刘知平 2014/03/29 22:16

今晚去实验室,试用了一台老旧的脉冲发生器。

测试了上次搭建的电路。电源电压D.C. 5.24V ,信号源(简便起见)为D.C. 3.0V。电路图如下:

用万用表测试,电源模块的输出电压正常(+6.24V、-6.23V),说明电源模块没有问题。

测试运放工作情况,各个端口相对于共同端的电位如下表

端口电位/V
1-4.74
22.66
30.00
4-6.21
50.00
60.00
72.30*
86.12

*注:7号端口的电压值不稳定,为2.30±0.02

根据运算放大器“虚断”和“虚短”的特性,理应有U2=U3=0.00V,但实际上U2≠0.00V,因此怀疑是运放的问题,更换了一个运放。

但是,换了运放之后再次测量,各节点电位基本不变。查看说明书,输入电压也在工作范围内(±15V),正在思考原因。

刘知平 2014/03/23 23:01

这个端口号指什么呀,图上的数字怎么有重复的。。 — 沈金辉 2014/03/24 00:00
左边的3-5是电源模块的端口。7号端口是指运放上的管脚吧!5-7那组运放没有用,7号管脚的电压是不确定的。 — 乐永康 2014/03/24 00:09
是的! — 刘知平 2014/03/24 07:19
放大电路里的输入阻抗一般选1kΩ量级,刘知平用的电阻都偏大很多。你下次什么时间来Debug,我和你一起看一下。 — 乐永康 2014/03/24 00:06
输入阻抗大不重要的,这些值都是正常值,但是他的正负电源接反了。。。 — 沈金辉 2014/03/24 00:15
我没搞清楚再输入交流信号的时候,运放的“inverting input”和“non-inverting input”有什么区别。 — 刘知平 2014/03/24 07:19
正相输入和反相输入,跟你最后信号的相位有关,还有增益。。 — 沈金辉 2014/03/24 08:09

下载了手机上用的Python~

按照学长的建议,编了计算微分和定积分的小程序。稍后补上图片。

刘知平 2014/03/22 12:52

补图:

刘知平 2014/03/23 18:36

哇塞,好厉害,我也去玩玩看。 — 沈金辉 2014/03/23 19:05
叫做QPython,自带编辑器和运行终端。 — 刘知平 2014/03/23 19:56
我已经玩过了,只是感觉手机太小,有点不方便。。。 — 沈金辉 2014/03/23 20:19
上面两个截屏都是能运行的程序吗?分别实现微分、积分的功能? — 乐永康 2014/03/23 21:31
上面两个是终端的界面,可以运行程序,但是不支持修改已经运行的程序,因此,可以用里面的另一个editor来写。 — 沈金辉 2014/03/23 22:07
Python自带的math模块只有一些初等函数运算,这两个截屏是我编的程序,第一个是偏微分运算,第二个是定积分和求导运算。 — 刘知平 2014/03/23 23:09
改进了的定积分程序如下:
def I_f(a,b):
  s=0
  for i in range(int(a/dx),int(b/dx)):
      s+=f(i*dx)*dx
  return s
又一个技术达人啊! — 乐永康 2014/03/24 00:05

在学习使用Python。和C语言天壤之别,很好用很实用!

这是一个简单的二人石头剪刀布游戏。

另外,谢谢周一稼学长发来了有关光电池的文章。光电池真是个有趣的东西!

刘知平 2014/03/22 00:14

进步好快啊,赞一个! — 沈金辉 2014/03/22 00:31
这学期刚刚开始学C程序。这方面的问题还要多向学长请教! — 刘知平 2014/03/22 07:22
我认为编程语言这种东西最重要的就是学以致用,所以,你可以想象怎么样把编程运用在物理中~~ — 沈金辉 2014/03/22 09:23

今天用电源模块(NN2-05S05D)和运放(LF-353N)在面包板上搭建了电路信号放大的电路。示意图如下:

实物图如下:

但是在测试的时候,示波器上出现噪声,并没有输出放大后的信号。希望下一次能够改进电路使之正常工作。

刘知平 2014/03/19 15:56

搭完电路后,从电源开始一步一步地检查各处的信号是否正常,是设计电路必经的过程,排除问题的快慢,反映了能力、经验,多搭建几个电路,会越来越顺利的。测试时,输入信号时什么?可以用信号发生器。 — 乐永康 2014/03/19 17:24
输入的信号是直接接入信号发生器的方波。稍后去检查一下电路。 — 刘知平 2014/03/19 18:21
我把图片缩小了一点,看起来好看点~ — 沈金辉 2014/03/20 01:09
谢谢学长,学会了! — 刘知平 2014/03/20 13:05

准备着手脉冲计数器的数字显示部分的装置设计。先查阅了一些电子元件的使用方法:

  1. For Share(感谢沈金辉学长的资料分享!)
依据沈金辉学长的建议,在每一个分区之下设置讨论区,方便讨论。 — 刘知平 2014/03/18 14:51
这样就很好,右边的“编辑”键是跟着段落的,方便多了。另:手册已上传。 — 沈金辉 2014/03/18 17:04
谢谢学长! — 刘知平 2014/03/18 20:53
不客气,加油! — 沈金辉 2014/03/18 23:34

今天实验的想法是将实验装置拆分为脉冲发生装置和脉冲检测装置两个部分,分别探究两部分电路对于脉冲波形的影响。实验分为两个部分。

Part1.发生装置

实验装置示意图:

数据记录(试一试Wiki的制表功能):

实验次数n输入频率f/HzVtop/VVmax/V
19002.103.42
250k2.073.42
3200k2.073.38
4500k3.323.32
51M3.263.26

其中:

  • Vtop为XJ4453A型示波器中“MEASURE→电压测量→顶端值”,可以测量方波高压段的平均电压。
  • Vmax为XJ4453A型示波器中“MEASURE→电压测量→最大值”,可以测量方波高压段的最大电压(跳动幅度较大)。

注意到上表中第4、第5次实验Vtop=Vmax。这是因为,当f较小时,方波的形状较明显,示过冲电压的Vmax和显示高电压段平均电压的Vtop可以区分(见下上图,f=200kHz);而当f较大时,波形严重失真,难以分辨出方波的高电压段,于是Vtop=Vmax(见下下图,f=500kHz)。

这两幅图中的方脉冲“过冲”有点夸张。下次遇到这样的情形,首先要将脉冲“拉宽”,以看清楚“振荡”部分的细节。 — 乐永康 2014/03/17 20:43
有“拉宽”后的数据记录,当时感觉这两幅图既能展示脉冲的周期性,又能展示脉冲的过冲和振荡,所以选择了这两幅图片。 — 刘知平 2014/03/17 23:27
这振铃怎么会这么厉害,感觉好怪异。。。 — 沈金辉 2014/03/17 23:54

Part2.检测装置

输入部分的装置同Part1。输出部分的装置见如下照片:

这是输出部分示波器上的一个样图(f=2kHz):

分析

由上至下四幅图依次是:
- 发生回路中考虑电压过冲后的u1(二极管两端电压)~t(时间)图像。
- 二极管的I(发光强度)~t(时间)图像。
- 光电池的E(电动势)~t(时间)图像。
- 检测回路考虑过冲后的u2(路端电压)~t(时间)图像。

如上图所示,由于脉冲发生和脉冲检测的回路中电磁振荡的固有频率不同,故在上升沿开始时、下降沿开始时出现无规则的噪声(两种电磁振荡的叠加)。由于电磁振荡的频率相对固定,所以过冲噪声的第一个峰值相对稳定,可以用作使示波器稳定触发。

这是关于下图中上升沿和下降沿开始时噪声现象的成因推测。

此外,分析图像可知装置中各个部分对波形的影响作用:

  • 发生装置:发生电压过冲【1】。
  • 光信号传导:单向过滤过冲信号(平方处理)。
  • 检测装置:发生电压过冲【2】、有明显的电容充放电过程。

下一步

  1. 用Origin对过冲部分【1】、【2】进行FFT,得到两个回路电磁振荡的固有频率。进一步分析两个过冲的叠加。
  2. 分析光电池在各个条件下的伏安特性曲线(Origin分析)。
  3. 学习用Mathematica处理示波器的csv文件。
  4. 定量得到发光二极管发光强度与电流之间的关系。
  5. 定量得到光电池电动势与光照强度之间的关系。

刘知平 2014/03/17 00:04

一些结论能否直接用文字表述,电路图能否直接画原理图,有点看不清。。。 — 沈金辉 2014/03/17 00:26
谢谢学长,已经加上文字叙述。 — 刘知平 2014/03/17 07:28
刘知平,你可以小结一下目前得到的结果:将实验过程、结果、分析简要地说明清楚,来找我讨论一次。 — 乐永康 2014/03/17 20:43
好的。 — 刘知平 2014/03/17 23:05

于组会后抽时间重复了一下实验,主要改变包括:

  1. 换用了液晶屏显示的函数信号发生器【ATF20B】(D.C. Offset找了好久才找到);
  2. 减小了检测回路中的电阻(R2=220Ω);
  3. 使用数字示波器的“Measure”菜单中的选项直接计算占空比(Duty),并总结出了计算的方法(计算处于一个周期内信号处于电压均值以上的时间占整个周期的百分比);
  4. 测量了高频区域的信号并观察了变化的趋势(Duty,Vp-p,形状);

下面附上几张记录的图片:

  • f=200.0kHz
  • f=500.0kHz
  • f=1.000MHz
  • f=2.000MHz
后三张图的可能因触发选择不合适,导致信号错位重叠。 — 乐永康 2014/03/17 20:47
是的,利用过冲噪声部分触发可以解决这个问题。 — 刘知平 2014/03/18 11:24

不难发现,随着频率的增加,Vp-p在逐渐减小。四种波形都难以识别出方波“脉冲”的痕迹(输入占空比20%),但是直到f=1.000MHz周期性的波动都还是可以辨认的。

下次实验准备改变R2重复试验(最好有电阻箱方便定量记录实验)。 — 刘知平 2014/03/10 02:23

1)实验室有电阻箱,接线可能需根据自己的需要重新制作。2)对高频信号,常用的采样电阻是50欧姆。3)为了减小回路中的电容以提高响应速度,除了减小探测器面积外,还得考虑面包板、导线等都会有分布电容、寄生电容。 — 乐永康 2014/03/10 08:25
谢谢老师,不知道有么有什么参数可以定量描述图像的清晰程度? — 刘知平 2014/03/10 22:44
一般用对比度吧。但不确切理解你的意思。 — 乐永康 2014/03/11 00:27

首先,焊上了一个LED(橙色光)。

然后,做实验探究了脉冲频率与光电池峰峰电压、占空比相对变化的关系。换用了另一个信号发生器(WY32003),并用示波器记录了一些图像,以下是其中的一部分:

  • f=1.0000kHz

此时检测到的脉冲“波形”(黄色)基本保持方波形状。

  • f=25.000kHz

此时的波形有所变化,已失去方波的外形,也完全看不出20%的占空比。

  • f=500.00kHz

此时的波形已经完全破坏,原本应该计数一次的一个“脉冲”可能会被计数3次。计数器精度收到极大的影响。

实验之后,用Excel绘制了占空比变化率随频率改变而改变的图像,如下:

>这张图中应该用符号显示数据点! — 乐永康 2014/03/10 08:24

已经更正,见下图:

刘知平 2014/03/10 23:35
很好。有时间去学习一下Origin作图,更规范,功能更强大! — 乐永康 2014/03/11 00:29
  1. 在f<20kHz时,随着f的增大,相对占空比变大。这可能是由于光电池的自身电容所致。
  2. 在f>20kHz时,随着f的增大,相对占空比减小。这可能是由于示波器“Measure”功能的特性有关(指示波器计算脉冲时长的算法有不和本实验实际之处)。

刘知平 2014/03/08 18:22

这里,为何去讨论占空比?是要说明什么问题? — 乐永康 2014/03/11 00:30
随着LED频率的上升,光电池回路弛豫时间和脉冲周期之比逐渐下降,方波变“尖”,占空比下降。极限情况是整个周期都处于充放电阶段。讨论占空比有助于定量描述波形失真变“尖”的程度。(极限占空比约为50%) — 刘知平 2014/03/11 00:44
“占空比”在此处不容易理解其含义,如上面显示的第二张示波器显示图像中,都是类似“三角波”的图形;对三角波,占空比一般表明上升时间与下降时间的大小关系,这里能表达你的意思吗? — 乐永康 2014/03/11 12:46
根据估计,这个示波器正占空比的计算方法是:一个周期内处于平均电压以上的时间除以一个周期。所以,在出现越来越接近三角波的波形时,占空比越来越接近50%,并且是连续变化的,可以大致度量变形程度。 — 刘知平 2014/03/11 17:53
很不错的进展。我相信:你自己目前对深入探究这个课题应该比较有兴趣吧!从你提供的信息看:
1)你没有明确LED回路中的限流电阻是多大。比较稳妥的实验过程可以是:实验前先了解你所使用的LED的额定功率和I-V特性曲线,选择合适的限流电阻,也请注意,一般的小电阻的功率上限是0.25W,你现在用的部分电阻在外壳上标了上限功率2W;这些了解清楚了,你就知道信号源的幅度可以是怎样的范围。还有:常用的函数信号发生器自带50欧姆的输出电阻。
2)对第一张图,你没有明确采样电阻是多大。光电池输出信号的幅度及衰减的快慢随采样电阻的变化可以比较完整地测一下,是否能从衰减曲线计算光电池的等效电容,值得试一下(这部分内容是周一稼、郑雯翰探究的内容)。
3)前两点中没有明确的信息不一定在此网页上详细、完整地提供,但你的实验记录本上必须有,这是实验记录不可缺少的部分,甚至是你在设计实验时应该考虑/计划好的内容/参数。 — 乐永康 2014/03/08 19:09
谢谢老师,我在实验记录本上记录了详细的参数,包括前两条中提及的限流电阻与采样电阻,确保实验可以重复、数据可以追溯。
根据示波器储存的Excel表格,粗测了一组实验的检测电路中R*C=1.8E-5秒,还需要知道光电池的内阻才能明确光电池的电容,下次可以测量。 — 刘知平 2014/03/08 19:40
内阻应该不是常数:至少在有、无光照两个条件下是不同的。你也可以改变采样电阻试试,看能得到些什么趋势性的结果。 — 乐永康 2014/03/08 19:59
我对此实验结果表示疑惑,我记得用Arduino的PWM输出到LED后,用光电池探测,依然能清晰看到脉冲,我觉得当时的频率怎么也得有100kHz,明天我自己去做做看。 — 沈金辉 2014/03/09 01:06
我刚才做了一下,我看到的第三幅图跟你的不同,另两张基本相同。 — 沈金辉 2014/03/09 08:53
是不是参数不同?我用的光电池是面积较大的,LED回路的限流电阻R1=100Ω,光电池回路的采样电阻R2=2kΩ。 — 刘知平 2014/03/09 09:05
光电池回路我没有接电阻,直接进了示波器。。。 — 沈金辉 2014/03/09 12:02
你去接一个电阻,马上会看到区别的! — 乐永康 2014/03/09 12:24

谢谢老师和学长的指教,以后一定注意LED的使用。

注册了CircuitLab,貌似作为FDU注册的第一个学生可以免费试用StudentVersion?真是福利!

作图成功(已修改):

似乎在上面无法表示示波器,与使用两个电压表分别代表示波器的CH1和CH2。光电二极管代表光电池。 — 刘知平 2014/03/07 22:50

你仿真过上面的图么?你确定上面的图可以正常运行么? — 沈金辉 2014/03/07 23:40
光电二极管似乎接收不到LED发出的光线,不知道怎么解决。 — 刘知平 2014/03/08 09:01
沈金辉眼尖的。刘知平的问题在于电压表的接地错了,在你的图中,电压表符号的下端是接地点。 — 乐永康 2014/03/08 11:12
的确忘记接地了,但是模拟中最大的问题还是光电二极管和发光二极管的耦合。 — 刘知平 2014/03/08 18:39
向沈金辉咨询:他能否帮忙解决模拟电路是光电二极管和发光二极管的耦合问题。 — 乐永康 2014/03/10 08:30
什么叫做“光电二极管和发光二极管的耦合问题”,能解释一下么。。。 — 沈金辉 2014/03/10 17:38
在电路模拟中,怎么让软件“知道”:图中的光电探测器是接收哪个发光元件的发射信号? — 乐永康 2014/03/10 19:48
其实这个软件只是个画图的,和进行一些简单的电气模拟,所谓的发光二极管只是一个符号。。。所以你说的接收不到信号是正常现象,貌似乐老师把这栋楼造歪了。。。 — 沈金辉 2014/03/10 21:04
楼还没有歪,只是搬错了一块砖!你知道有这种功能的模拟软件吗?不知道Comsol行不行?用光电隔离器来代替“发光二极管和光电探测器的组合”来进行模拟会如何? — 乐永康 2014/03/10 21:35
在组会上看到学长用Cadence建立了亥姆霍兹线圈的LCR结构模型,我希望能够在学长的帮助下建立光电池的LCR模型(可能包还光敏电阻和逻辑电路)。 — 刘知平 2014/03/11 00:49
我已经彻底糊涂了。。。你有时间来实验室面谈吧。 — 沈金辉 2014/03/11 12:34
好的,谢谢。 — 刘知平 2014/03/11 17:57

继续上一次的实验,主要探索了随着频率增加,光电池的电压-时间图像的改变。实验记录见下图:

有如下结论:

  1. 随着频率则增加,脉冲开始(B)和结束(C)时的瞬间会产生越来越大的不稳定扰动(结合CH2可以清晰辨认)。这可能跟LED在刚通电/断电时的发光强度不稳定有关,也可能跟光电池的性质有关。
  2. 随着频率的增加,“脉冲”的幅度逐渐减小。由于脉冲实际上是LED的发光间隙,大部分时间光电池处于工作状态;在短暂的LED发光间隙,由于自身电容的影响,光电池来不及放电就进入了下一次充电阶段,故脉冲幅度减小。
  3. 随着频率的增加,放电段的曲线由指数函数变成接近直线。
  4. 随着频率的增加,接收到信号的周期略有不稳定。
  5. 在将接收装置的回路中的电阻阻值减小的时候,脉冲变得更加清晰,但是峰值减小了。
  6. 在13kHz以上,脉冲变得不可辨认。将扫描时间放大后可辨认的部分,以及使示波器触发的部分也仅仅是B、C两段杂波。可以近似认为这就是在为改进装置下的一个极限频率。

刘知平 2014/03/05 22:56

尽早学习用示波器直接存储数据和图像,若遇到困难可以向郑雯瀚和沈金辉请求帮助。 — 乐永康 2014/03/05 23:04
本来想用示波器直接储存,但是忘记带U盘了……以后带上U盘。 — 刘知平 2014/03/06 07:14
接收装置中的电阻是多大?为什么要连一个电阻进去?直接测量光电池两端的信号不可以么?能否整个电路图贴一下? — 沈金辉 2014/03/06 22:11
普通示波器的输入阻抗是多大?对交流信号的测量有何影响?你能想明白的。 — 乐永康 2014/03/06 22:40
我最初也是直接测量两端电压,信号很微弱而且波形失真较严重。下面贴上九孔板上的电路连接示意图: — 刘知平 2014/03/07 07:22
LED回路里,应该还有一个限流电阻吧? — 乐永康 2014/03/07 09:39
建议尽快学一下https://www.circuitlab.com/乐永康 2014/03/07 12:08
你这么接的话容易把LED烧掉,建议串联一个几百欧姆的电阻。另:实验室已经有公用的U盘,下次如果没有U盘的话找我要就行了。 — 沈金辉 2014/03/07 21:04

今天在乐老师的帮助下开始着手脉冲计数器的问题。由于晚上有课,只做了一组简单的的观测。结合实验记录,有一些思考和接下来的想法:

  1. 在示波器CH1检测光电池的输出的同时,可以将信号发生器的信号引入CH2。调节之后两个频道的图像同时出现在屏幕上,有利于观察比较,可以研究并光电池的延迟和噪音干扰的问题。
  2. 光电池两端的电压在示波器上的图像类似于电容充放电的图像,可以通过测量粗测光电池的内部电容(RC电路)。
  3. 调节检测装置回路中的电阻大小,观察图像
  4. 信号发生器(XJ1631)的占空比总是在50%以上,说它输出的是“脉冲”信号不够准确。
  5. 下一步调高输出频率再次试验(再调整波形试试)。
  6. 考虑到光电池的极限频率,可以试着用非电子的方法“放大”信号周期,比如和标准光源叠加来计算拍频,达到缩小频率的目的。

希望各位提出意见,谢谢…… — 刘知平 2014/03/03 23:40

很好。我修改了一下格式! — 乐永康 2014/03/04 13:46
  • home/students/13307110296/pulse_counter.txt
  • 最后更改: 2014/10/13 08:40
  • (外部编辑)