全新的模拟计算机:用模拟计算机THAT超越数字计算机
工程师连接电位计和运算放大器,建立棘手的微分方程式,读取不同的输出电压,作为其解。但后来数字计算机取得了完全的成功,模拟计算像无线电检波器、机械电视和穿孔卡片一样几乎完全被淘汰。
被淘汰的技术也会再度流行,像黑胶唱片、荧光数字管和飞艇等一样,也有拥护者在努力使模拟计算机复兴。数字部分可提供易用性,而模拟部分则可为现实世界的许多不同类型问题提供节能解决方案。
就像美国国家航空航天局的阿波罗模拟器一样,模拟计算机可以处理登月的物理过程,而数字计算机则可显示数据。
这篇文章发表时,我觉得它虽然提出了一些令人信服的观点,但作为一名随性的实验者,我并没有真正入门模拟计算。2023年,情况发生了变化,我发现初创公司Anabrid推出了一款售价513美元的全新模拟机器THAT。
Anabrid的主要工作是开发模数混合芯片,这种芯片由奇维迪斯首创。THAT是“The Analog Thing”(模拟物)的缩写,旨在提高人们对现代模拟计算可能性的认识。它是一款小型开源机器,主要由分立的运算放大器集成电路组成。
THAT比以往的工业级机器小,只有8个设置参数的电位计和5个积分器,以及一些配套的加法器、逆变器、比较器等。但THAT并不是一个简单的小玩具。需要更大的处理能力时,可以将多个THAT链接起来,并且THAT可以提供混合连接端口,以便与数字计算机连接。
像在广告中的模拟计算机一样,THAT通过用短跳线连接执行数学函数的元件实现编程。我们需要采用自己的方式来显示THAT的输出电压,对我来说,只适合连接一个旧的模拟示波器,那是我不久前从我哥哥那里借来的。
模拟计算机THAT(左)有连接各种数学运算组件(例如积分器)的插孔。我使用了液晶屏(右上)、原型板接口(右中)和Arduino Uno(右下)来显示其输出。
该试试计算了。我刚刚拿出埃尔文•克利切格(Erwin Kreyszig)的《高等工程数学》,打算仔细学习微分方程,就很高兴地发现,THAT附赠的手册中有很多示例和跳线连接图。我转动电位计来调整参数,观察其演变,很快就看到羊角螺线和模拟神经尖峰开始发出荧光。
不过,我想对混合方法进行测试。在Anabrid演示程序的基础上构建一个登月游戏是自然而然的选择:从月球表面一架携带有限燃料的航天器开始,该航天器受到月球引力的控制。玩家要调节电位计来控制航天器的发动机油门,以便航天器在燃料耗尽之前着陆。
图左是以教科书形式模拟登月器飞行的微分方程;图右是将微分方程通过THAT提供的积分器和比较器等元件进行编码,圆圈内的数字指的是用于设置参数值的电位计。
用示波器,燃料和高度读数显示为两条水平线,使得游戏的视觉效果显得十分匮乏。同时还缺少登月游戏的一个关键因素,即确定航天器着陆时的速度:是优雅地着陆,还是撞击出一个新的坑。但这些问题可通过数字方式解决。
我找到了一个Arduino Uno和一个小型液晶触摸屏,作为我的数字计算机和图形显示器。虽然通常Arduino Uno的液晶屏差不多使用了显示器的所有引脚,但仍有两个模拟输入可用于读取表示高度和燃料的电压。
这确实需要牺牲一些精度。在THAT内部,使用-10到+10伏范围来表示数量。该范围无法适用于大多数微控制器板中内置的模数转换器,因此,THAT会将范围压缩并移动混合端口,这里的电压在0伏和3.3伏之间变化。Arduino Uno的运行电压为5伏,读取精度为10位,因此,高度和燃料最后可近似为337到675之间的数字。这是可以接受的,因为我的液晶屏最多只有320个垂直像素来显示航天器在月球表面的位置。
我制作了一个Arduino原型板,它带有液晶屏接口和一条连接到THAT混合端口的带状电缆。可以通过混合端口对THAT进行一些主动控制,例如命令其恢复初始条件并求解方程。但是现只有两个模拟输入到液晶屏,于是我将Arduino用作完全被动的显示器。
我编写了一个程序,用经典的矢量风格显示月球表面和玩家的航天器。燃料显示为一个逐渐减少的水平条。通过每秒对航天器采样10次并用高度变化除以每次测量的时间间隔,来计算和显示速度。当高度为零时检查速度,并告诉玩家航天器是安全着陆,还是在撞击中破损或毁坏。然后,程序会等待THAT复位,然后再次尝试。
让我有些惊讶的是,这个混合装置运行得很顺利。航天器在显示屏上的升降遵循THAT内的跳线编码的物理定律,它的生死取决于我的油门控制技巧。THAT作为一种几乎如今所有工程师都感到很陌生的计算形式简介,可以成为一个如你所愿、设计良好的入门工具。现在,是时候放下克利切格的教科书,开始探索我自己的物理模型了!
作者:Stephen Cass