平方根计算器
机械设计案例(3):开方计算器,精确到小数点后第三位
刘肖健
浙江工业大学工业设计研究院
这个开方计算器的案例展示了怎样把一个几何定理变成机械机构,并进一步做出完整能动的数字模型。本案例没做实物模型——按照前两个案例给出的方法完全可以做得出实物来,虽然有很多复杂琐碎的细节要处理,但已经没有大的困难了。
1. 原理
开方机构的输入变量x和输出变量y之间需要满足如下关系:
实现开方机构的原理是初中几何课讲过的“射影定理”,见下图:
在上述直角三角形中,有如下关系:
b2=a*c
令:a=1,y=b,x=c,则可以得到开方机构的输入输出关系式。
2. 从几何定理到机构简图
原理OK了,现在要把上图的几何图形转变成机构原理图。
先确定不变的几何量和几何关系:
1)A点和D点保持不变,因为线段AD的长度(即a)保持不变;
2)AB与BC垂直;
3)BD与AC垂直。
再确定变化的几何量:
1)b的长度(线段BD)发生变化;
2)c的长度(线段CD)发生变化;
3)AB、BC发生变化;
4)AB与BD的角度发生变化;
5)BC和CD的角度发生变化;
6)AB和AD的角度发生变化;
7)BD和BC的角度发生变化。
按机械机构设计的常规做法:
1)固定点设计为固定铰链或固定轨道;
2)角度发生变化的地方,有一个铰链,它连着两个构件,即角的两边;
3)长度发生变化的线段,可以设计成缸体形式,也就是由滑块和轨道两个构件组成的移动副。
这个机构的简图画出来应该是这个样子:
计算这个机构的自由度检验一下:
3*5-2*7=1
OK。
3. 机构的输入和输出
上面这个机构简图怎么实现我们所需的输入和输出呢?
输入是c的长度,那就放一个通过C、D两点的标尺:C点处为零点,在D点处读数x;或反过来,D点为零点,在C点处读数x。
输出是b的长度,那就放一个通过B、D两点的标尺:B点处为零点,在D点处读数y;或反过来,D点为零点,在B点处读数y。
通过B、D两点的标尺已经有了,就是那根竖杆,刻度可以标在杆上。通过C、D两点的标尺其实也有了,把右侧那个滑块延长,让它通过D点即可,刻度标在滑块上。
一个比较可行的方式就是x和y两个值都在D点读出,在同一点观察两个值也方便。
上面提到的“a=1”在刻度上体现出来,即:a的长度代表标尺刻度上的1个单位。从上图可以估算出,b的值大约为1.5,c的值大约为2.5。
4. 计算机构的数字模型
计算机构的数字模型如下图所示:
背面观:
注意,下图两根绿杆之间的角度是定死的,90度。所以这两根杆实际上是一个构件而不是两个,因为它们之间没有相对运动。但这个L形构件跟中间的竖杆之间是有相对转动的。
在前视图上把横杆(标x值的杆)移动到一个有代表性的位置上,观察一下D点处两个杆的读数是否符合开方关系。
上图横杆在D点处(中间底部的铰链轴心)的读数为2,竖杆在D点处的读数为1.4多一点,可以判断这个机构是基本正确的。再把横杆移到读数为1 的位置,看看竖杆的读数是不是也是1:
完美验证。(绿杆上方的“1”字是横杆读数,竖杆右边侧躺的反写“1”字是竖杆读数。)
5. 进位机构的数字模型
上面机构可以从标尺上读出小数点后第一位,第二位就必须估算了。要想读出更加精确的数字,必须把标尺“放大”。
这里我们使用以前做过的减速器模型(参见《五级减速器模型的设计与制作全过程》)来实现放大和进位机构。下图是进位机构的传动链简图:
小数点后的精度数字显示在相应的齿轮上,标注为“第1位”、“第2位”、“第3位”的地方,一般是做一个跟齿轮同步转动的数字轮,数字冲外好观察,然后开一个观察窗,对准正确显示标尺读数的数字,其他都遮住(所有数字都能看到就不知道哪个才是正确读数了)。
标尺带动轴I上的小齿轮转动,速度逐级放大,轴I上的三个双联齿轮的转速从左到右依次放大10倍,产生不同级别的精度位数。
上述进位机构需要两个,一个由输入x标尺带动,一个由输出y标尺带动。
6. 整体模型
模型做出的全貌是这样的:
这个模型没画齿轮的齿,用了机械配合让几个轮子以正确的啮合比运动。如果要做实物,用摩擦轮或带轮代替齿轮传动也是可以的,可能精度还要好一些,因为齿轮之间的间隙对传动精度还是有不少影响的。
为了看清两个小齿轮(绿色的)与标尺的啮合情况,用了仰视角度。
数字标注在双联齿轮的大齿轮外面,仅做示意。下图是双联齿轮的零件模型,可以看到数字的标示位置:
这个机构动起来是这样的,可以看到中间竖着的输出标尺在缓慢升起:
播放
7. 误差与限制
这个数字模型还只能算是一个比较直观的原理图,比机构简图看上去具象一些。直接拿这个数字模型去做实物是不行的,有很多细节要么过度简化要么根本就没做(比如数字观察窗)。所以,要在这个数字原理模型基础上做实物模型的话,还有很多艰苦的设计工作要完成。
有人可能要问,既然能精确到小数点后第三位,那么以此类推就可以精确到任意位数了?
理论上是这样,但实际上不可能。因为后面几个齿轮的运转速度的平稳性和精度取决于标尺和齿轮的制造精度,而每经过一级啮合就会多一道误差,且前面的误差会被逐级不断放大传到后面的齿轮上,这些误差会“淹没”正确的读数值。所以,再往后增加精度已经没有意义了。
另一方面呢,三位精度的传动链实际上用了4级增速,这差不多已经到了实物模型的极限。因为不仅误差会逐级放大,摩擦力也会逐级放大,用标尺带动传动链做增速运动会越来越困难。只有用电机带动高速端的齿轮运动,反过来驱动x标尺移动,看看读数到了我们想要的输入值就停下来,然后观察y标尺输出。不过这样一来,在输出端仍然要用标尺带动齿轮做增速运动,还是不行。
所以,理论很丰满,现实很骨感。这个机构的计算精度最终还是要依赖于零件的制造精度。
那么,有没有一种计算机构的精度不依赖于制造精度呢?
——有的。
有机械常识的人都知道,用行星轮系可以做出加法机构(差动机构),就是说,让两个齿轮的速度和等于第三个齿轮的速度。这种加法机构的精度只与齿轮的齿数有关,而与其他要素统统无关。一个齿轮的制造精度再差也不可能少做一两个齿,所以这种加法机构是零误差的。
零误差加法运算解决了,其他就好办。学过数字电路的人都知道,计算机只会做加法,减法乘法除法乘方开方指数对数等等运算最终都要分解为加法来执行。运算能精确到多少位,取决于传动链的长度,而与零件的制造精度无关。
这是一种与上述机构完全不同的计算原理。这个机器其实早就设计出来了,即巴贝奇差分机,就是下面这玩意。
巴贝奇差分机是1819年设计出来的(1822年造出来),今年正好200岁。Happy birthday!
有关巴贝奇差分机的细节,请自行上网搜索。
8. 总结
1)本案例只是个数字模型,不是实物模型的做法;要做实物,请另行设计;
2)这个案例展示的是如何把一个数学定理变成一个机械机构;其实很多设计都是发端于数学,功满于物理,设计师如能熟悉这种工作模式会非常有帮助;
3)原理和实物之间往往有巨大差距,要学会正视并习惯于这种差距的存在,然后在力所能及又经济可行的情况下逼近完美;
4)机械设计跟编程一样,能让你的大脑变得更精密——即使不能变得更聪明。