1701076542
1701076543
1701076544
图8.5 锁频以后的陀螺。左图通过灯光的照耀显得更加奇妙。右图显示20min之后陀螺依然悬浮
1701076545
1701076546
其实,关于这个陀螺驱动装置的原理,如果要深入研究的话,也并不是如图8.2所描述的那么简单。细心的读者可能会发现,根据图8.2的理论,交变磁场驱动陀螺的转轴在摇摆,但是它并不直接驱动陀螺绕转轴的旋转。用物理学的语言说,交变磁场引起了陀螺的“进动”(不熟悉这个概念的读者可搜索维基百科英文词条Precession,那里有生动的动画演示什么是“进动”),而真正决定陀螺能够稳定悬浮的是它绕自身转轴的转动。所以在外加磁场的驱动下,有可能出现的结果就是陀螺的转轴以交变磁场的频率“摇头晃脑”,但是它绕自身转轴的转速会由于受到空气的阻力越来越慢。当然这并不是实验所观察到的结果,实验中陀螺绕自身转轴的转速的确能够保持一个恒定值。这表明陀螺的进动和转动通过某种方式联系在了一起,所以驱动磁场的能量能够转化为陀螺绕自身转轴转动的能量。为了研究陀螺自身旋转的频率与交变磁场的频率之间的关系,我在悬浮陀螺上加了一个低调奢华的装置,以便实时监控它的转速,如图8.6所示。
1701076547
1701076548
1701076549
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
[
上一页 ]
[ :1.701076542e+09 ]
[
下一页 ]