1701076550
1701076551
图8.6 用于研究陀螺转速的装置
1701076552
1701076553
其实这个低调奢华的装置就是剪出一块环形的纸片,用双面胶粘贴在陀螺上,然后利用如图8.7所示的装置来测量它的转速。从图8.7容易看出,悬浮的陀螺旋转时,有的时候它身上所粘贴的纸片会阻挡激光到达下面的光敏电阻,此时光敏电阻的阻值剧增,使得它两边的电压升高;而当陀螺身上的纸片转离激光光路时,下面的光敏电阻被激光照射,电阻值锐减,使得它两边的电压降低。这个电压的起伏一个周期就代表了陀螺旋转一周。这个信号送到Arduino进行ADC(模拟信号到数字信号的转换),并通过串口输出到电脑,这样我们就能记录下陀螺旋转的频率了。注意,图8.7中普通电阻的阻值可以选取与光敏电阻在没有激光照射时的阻值相当。所以在没有激光照射时,光敏电阻两端电压为电池电压的1/2;在有激光照射时,光敏电阻两端电压很小。在实际搭建这个电路时,并不需要如图8.7所示那样的一个额外的电池,而是可以直接从Arduino的+5V或+3.3V接口和GND接口引出。这样选择阻值,可以使得电路中电流值比较小,减少能耗,同时也得到比较大的电压起伏。因为加了驱动磁场的陀螺可以悬浮很长时间,所以可以等它稳定悬浮以后,小心地将这些频率测量装置放置调整到位。光敏电阻那一部分电路可以用透明胶带粘在底座上;悬挂激光二极管可以用一个万向焊接台。要注意一般这种焊接台是铁做的,所以应尽量在竖直方向上远离悬浮的陀螺,避免影响它的平衡。
1701076554
1701076555
1701076556
1701076557
1701076558
图8.7 测量陀螺旋转速度的装置
1701076559
1701076560
我通过Arduino的函数Serial.println来把Arduino读到的电压值输送到电脑端的Serial Monitor中,然后我们可以复制这些数据到一个text文件里,用Microsoft的Excel软件进行分析。下面就是这个简单的Arduino程序。
1701076561
1701076562
int sensorvalue = 0;
1701076563
1701076564
int i=0;
1701076565
1701076566
void setup()
1701076567
1701076568
{
1701076569
1701076570
Serial.begin(9600);
1701076571
1701076572
}
1701076573
1701076574
void loop()
1701076575
1701076576
{
1701076577
1701076578
for(; i<1000; i++)
1701076579
1701076580
{sensorvalue = analogRead(A0);
1701076581
1701076582
Serial.println(sensorvalue);
1701076583
1701076584
}
1701076585
1701076586
}
1701076587
1701076588
注意到,我设置了一个运行1000次的for循环,在i计数到1000以后就不再向电脑输出读数。如果不这样设置,那么电脑端的Serial Monitor就会不断地接受数据,并不断地向下翻页,不方便复制其中的数据到text文件中去。
1701076589
1701076590
图8.8展示了这个测速装置传给电脑的1000个数据中的一小部分(60个数据),其中纵轴是Arduino输出到电脑的数值。注意到Arduino具有10位的模拟数字信号转换器(ADC),这意味着当输入到Arduino的某个Analog Reading接口的电压为5V时,Arduino把它转换为数字1023,并输出到电脑的Serial Monitor。如果输入到这个Analog Reading接口的电压为0V时,Arduino把它转换为数字0,并输出到电脑的Serial Monitor。其他处于5V和0V之间的电压根据公式:Y=1023×(X/5)进行计算,其中X表示输入到Arduino的电压,Y表示经过ADC以后的数字。那么,图8.8表示Arduino测量到光敏电阻两端最大电压值约为5×300/1023=1.47V,对应于激光被纸片遮住的时候;而光敏电阻两端最小电压值约为5×25/1023=0.12V,对应于激光没有被遮住,而是直接照射到光敏电阻上的时候。两个相邻的极大值就对应着陀螺完成旋转一周。
1701076591
1701076592
如果仔细观察图8.8得到的数据波形,我们还能了解到一些有意思的现象。首先注意到数据形成了一个个尖锐峰,类似于头发梳子一样的波形。理想情况下,要么激光照射到光敏电阻上,使得Arduino读数为低(30左右);要么激光被纸片遮住,使得Arduino读数为高(300左右),所以我们期待看到的是非低即高的方波。但是为什么实验会测量到的是这种尖锐波形呢?这是因为光敏电阻在被激光照射变成低电阻以后,即使从某时刻开始激光被遮住了,光敏电阻的阻值也是慢慢地上升,有一个所谓的“响应时间”,而不是立刻变成高电阻。如果估计陀螺的转动频率约为30Hz的话,图8.8告诉我们这个响应时间大约是10ms(因为两个峰之间大约为30ms)。从半导体物理上看,这个现象起源于光敏电阻导电的机制,之所以它的电阻会在光照射下变小,是因为光的能量被光敏电阻中的电子吸收,这些电子本来是老老实实地呆在它们的原子核周围,不能参与导电的,吸收了光的能量以后,它们变得活跃起来,就能参与导电了(用物理学的语言说它们从半导体的价带被激发到了导带,价带的电子不导电,导带的电子导电)。一旦没有了外来的光能量,这些活跃的电子就又懒惰了下来不参与导电(从导带回到了价带)。但是这个过程并不整齐划一,而是有些电子很快就回到价带,有些电子很慢才回到价带,这是一个热平衡的过程(也可以理解为一团很热的电子慢慢地冷却下来),所以导致光敏电阻的阻值在光照消失后只是慢慢地上升。
1701076593
1701076594
盯着图8.8的数据再看一会儿,你还可能会注意到,这些尖锐的峰并不对称。光敏电阻两端的电压从30慢慢地上升到300,但是它下降得很快,正所谓:学好不容易,学坏一出溜。这是因为一旦纸片不再遮住激光,光敏电阻就接收到了高强度的光照,电阻中的电子很容易就吸收光的能量,变得活跃起来。当然,这个过程也不是瞬间完成的,但是电子吸收光能被加热的时间远远小于一团热电子冷却下来的时间,所以我们看到了图8.8中不对称的峰。
1701076595
1701076596
如果你觉得有些奇怪,为什么我会注意到这些细微的东西,并且还能讲出几个貌似自圆其说的故事来,那可能是因为我有相关的知识储备吧!所谓内行看门道大概就是这样(我只是稍微专业一点的业余科学家)。记得原来读爱因斯坦的故事,说到爱先生看到晚上天空会变黑,就提出了一个疑问,为什么到了夜里天空会变黑?我说这不是吃饱了撑的吗,没了太阳天空当然会变黑。但是继续往下读,发现爱先生可不是信口开河,因为如果宇宙是无限的,各处都有大致相同的恒星个数,那么从数学上容易证明,即使太阳下山了,我们的天空也会被这无数个恒星照亮如同白昼,但是显然自古以来夜空就是黑的。这告诉我们什么呢?宇宙不是无限的!读到这里,我才拍案惊奇。我天天都见到黑夜,怎么就不能提出爱先生那样的问题呢?怎么就不能深入思考得出这么一个意义深远的结论呢?难免会产生自卑的感觉。但是,后来我慢慢地体会到,能提出一个深刻的问题必定需要一个充分准备的头脑。爱先生十七八岁的时候不是也没有问过“夜空为什么会变黑”这样的问题吗?不是也觉得黑夜是理所当然吗?所以我们不必懊恼于自己不能从看似普通的现象或者平淡的数据中发掘出深刻的内涵来,通过积累相关的知识,慢慢地,我们也能透过热闹看到大自然那精致的门道。
1701076597
1701076598
1701076599
[
上一页 ]
[ :1.70107655e+09 ]
[
下一页 ]