|
开源技术是一件很美好的事情。它不仅让我更能有效地进行设计,还可以以更便宜的成本购买元器件。
Arduino出现后,你可以想到的每一个其他的仿照品牌都进军微控制器市场。 Arduinos是非常棒的设备。它们便宜、功能比较强大,并且易于使用。它们消除了许多基于ARM的微控制器的大量编程开销。
今年夏天,我和我大学的教授进行研究。我们将要建造无人机用于昆虫跟踪。为了减轻系统的重量,一名研究生设计了发射和接收的天线,以提高性能和减轻重量。
问题是我们正在处于测量天线性能的艰难时期。我们有一个消声室用于进行天线测试,但目前我们的定位系统不能正常工作。它不是一个非常复杂的系统,但有一些棘手的事情需要妥善解决,否则系统可能会变得更加破损,或者达不到我们需要的精度。
控制系统被亲切地称为RoBeast。它始建于1990年,第一个控制系统是使用BASIC设计的。使用的代码量是绝对疯狂的,大约有33000行代码。控制系统的第二次迭代是在控制计算机上使用MATLAB和串行端口。
不幸的是,几年前,MATLAB控制器系统停止工作,由于设置它的研究生已经离开了,使得该问题显得更加棘手。大概有四到五千行的MATLAB代码,但是缺少注释。它也使用了所谓的mex文件。想象一下,使用MATLAB编译C代码,使其运行速度更快,并且访问并行端口,但是提供给您的文件没有编译。总而言之,所有这些试图解决系统的问题的尝试都是一个不折不扣的灾难。
我甚至花了大部分时间来试图弄清楚代码是如何工作的。在尝试让其工作失败后,我决定废除整个控制软件,从头开始。这让我从头开始设计系统,易于使用、易于排除故障和大量的注释。
幸运的是,我可以选择一个非常简单的系统(相对于我的其他选择)来设计控制软件。我想使用一个微控制器,几乎任何人都可以使用,没有太多的训练,因此我选择了Arduino。由于引脚要求(每个电机控制器有4个引脚和许多限位开关),我选择了Arduino Mega。很可能最终会选择一个仿造品,因为它们性能相同,成本很低。
上星期我使用Arduino重建破坏的系统。现有的硬件是一个金属框架,上面带有螺丝、滑轮和调整位置的步进电机。我需要做的是编写代码,创建一个命令行控制系统,使用串行通信,并实际创建信号来移动系统。
创建移动系统的信号比我原来预期的更复杂。由于它们是步进电机,我们可以知道我们已经移动了多少步。唯一的问题是,如果我们走得太快,我们会溜步。如果我们走得太慢,将花费太长时间移动定位器。为了旋转顶板,需要100步才能移动1度。为了将系统移入和移出房间,移动1英寸需要3000步。如果你每秒钟执行50步,则需要很长时间才能移动。所以我们需要创建一个波形,让它加速、移动、减速然后停止。在概念上很简单,但实施起来却比较棘手。
我设法使一些运动功能正常工作,所以剩下的工作实际上只是完善控制器代码。本周我们应该能够将控制系统连接到我们的矢量网络分析仪来收集一些数据!
正在测量中!
本文译自:RoBeast: Using Arduino Research Application。如有错漏,敬请指正。 |