2005年左右,我工作的公司(NortekBV)推出了一种测量河流流量的系统:Qliner。这是一艘小型双体船,配备了一个基于多普勒的流速计,可以测量整个深度的河流流量。你得用绳子或长棍把它固定好。几年后,我们把设计卖给了德国公司OTTGmbH,后者至今仍在生产。同时,我们还有一些不再使用的双体船,我一直认为把其中的一艘变成一艘遥控船会很好。几周前,我遇到了低成本的推进器设计:https://www.instructables.com/id/ROV-Thruster-105-Lbs-From-DT700-Brushless-Motor/并决定这些是这个项目的理想选择。所以现在我终于开始了。这个想法是把这艘船改造成一种完全自主的交通工具,它可以绘制一张湖泊或河流的测深图。想一想这样的事情:自治水面船(ASV),由海福尔公司开发:https://www.seafloorsystems.com/uau-usv或者这个,由CHCNAV:http://www.chcnav.com/index.php/product/pros?cid=1&ctype=5这艘船将由两个推进器驱动。Arduino或RaspberryPI将用于控制它,辅助电子罗盘和全球定位系统。虽然我第一次考虑创建自己的控制软件,但它可能不值得,因为阿杜皮洛特项目已经在这方面做了很好的工作。甚至还有一个特别的船型剖面,这使得它的实现变得非常简单。而且,和以往一样,当你开始研究这些事情的时候,你已经做过这样的事情:啊,好吧,算了吧。反正我也要这么做..。组件2×DT700无刷发动机2×DT700电机用ROV推力器三维ABS打印喷嘴1×q型班轮船小双体船,由聚酯制成。2×™无刷轿车ESC30Aw/反向无刷电机的反相电子速度控制器遥控整个‘自治’的事情还在未来,但我想我还得继续。在尝试使用一些“远程NRF24收音机”创建自己的遥控器失败后,我放弃了,只是买了一个带有6通道接收器的完整遥控器。HotRC的HT6A看起来不错(便宜.)选择。这是一个便宜的遥控器,预先配置用于模型飞机。这意味着分配给特定通道的控件和每个通道的输出范围是不同的。速度控制通道(Nr.3)输出的PWM信号精确1000到2000US,但方向通道的跨度只有1200到1800US,可能是控制舵伺服的最佳选择。这艘船只有两个推进器,没有舵。所以所有的转向都必须通过改变推进器的速度来完成。举个例子,如果我们继续前进,想要向左一点转向,左边的推进器必须减速。但对于一个急转弯,左推进器最终甚至不得不反向运行。一个复杂的数学问题,所以我把这个留给了我在大学学数学的女儿.她提出了一个合理的简单的关系,速度和方向,可以用来控制电机。当然,这需要一些中间处理,所以我添加了一个ArduinoProMicro以将RCPWM信号转换成适当的推进器信号。尽管所有的数字似乎都是正确的,但船的反应却是不可预测的。只有全速的前方似乎工作良好,但打破和逆转是行不通的,或非常缓慢。在检查和重新检查代码之后,我终于在ESC的用户指南中找到了答案。默认情况下,ESC有一些在RC汽车中使用的行为,但对船只没有好处。幸运的是,我用“编程卡”购买了ESCs,这使得编程变得很容易。首先,我必须改变这种破坏行为。默认情况下,如果突然将马达拉向相反,系统就会使马达停止运转。但我想让它倒转,不能停下来。其次,我将最大反向功率设置为100%,而不是标准的25%。后来我发现这实际上被称为“打滑转向”,并得到了ArduPilot的支持(https://ardupilot.org/rover/docs/rover-motor-and-servo-configuration.html#skid-steering)也是。这方面的代码非常接近我们得出的结果。(寻找空载AP_MotorsUGV::输出_SKID_转向();函数在ArduPilotRover代码中。推进器组件:终于有了美好的一天,还有一些空闲时间,这样我就可以把推进器装到船上了。我用了一些不锈钢M6螺纹杆和一些DIN钢轨。DINRails很棒。它很便宜,有安装孔,而且由于形状很硬。我在M6杆上保持了足够的长度,如果需要的话,我可以在以后调整推进器的深度。一旦所有的螺母都收紧,整个建筑就变得相当僵化,所以看起来这是可行的。唯一让我担心的是,金属在侧面突出,它肯定会收集杂草和藻类。远程控制并不是什么新鲜事,许多所需的电子设备和控制器都是可以广泛使用的。但是,如果你不是一个遥控车辆(RC-)爱好者,许多词和缩写使用在霍比国王RC网页并不是立即明显。首先,我需要一些东西来控制推进器的速度和方向。电机被称为“无刷电机”,需要特殊的驱动电子设备.这被称为ESC或‘电子速度控制器’。然后我发现在订购了我的第一双ESC后,并不是所有的ESC都支持改变方向。如果你用它来驱动飞机或直升机,那就有意义了。因此,我订购了第二对(更昂贵)“与反向”。™无刷轿车ESC30Aw/反向规格:输入电压:2-3S锂电池/4~9Ni-xx康特。目前:30ABEC输出:2A/5V(线性)现在,就像我说的,我是RC的新手,所以首先我不知道2-3是什么意思。这似乎是串联标准3.7V锂电池数目。所以“3s”是11.1V。接下来是BEC输出。BEC代表电池消去器电路。这不是一个设备,积极破坏你的电池,但只是一个车载调节器,提供一个受管制的5V直流电源,为你的外部电子,所以你不需要一个额外的电源或电池。太棒了。不幸的是,用户手册在这个单元的编程方面非常广泛,但对于连接的细节却不是很详细。用于控制ESC的触点被简单地标记为“接收器”。可能对任何人来说都很明显,除了我。现在我认为红线和黑线是BEC(5V)输出,白线可能携带伺服信号。使用一个旧的PC电源,可以提供12V在8A和一个Arduino微型,我只是连接一个快速测试设置。“伺服”库用于产生伺服兼容信号。一个电表连接到模拟输入端,这样我就可以改变伺服信号。以一台电动机和一个电位器作为速度调节器的测试装置这是测试草图:intYaxisInput=A2;//selecttheinputpinforthepotentiometerintXaxisInput=A3;intXValue,YValue;intMotor1=9;intMotor2=10;#includeServoESC;//createservoobjecttocontroltheESCvoidsetup(){pinMode(YaxisInput,INPUT);pinMode(XaxisInput,INPUT);ESC.attach(Motor1,1000,2000);//(pin,minpulsewidth,maxpulsewidthinmicroseconds)}voidloop(){XValue=analogRead(XaxisInput);YValue=analogRead(YaxisInput);XValue=map(XValue,0,1023,0,180);ESC.write(XValue);Serial.print(XValue);Serial.print(",");Serial.println(YValue);delay(10);}这很管用。在应用电源,并打开ESC,它会产生一些‘嘟嘟’使用摩托本身,这使我开始害怕。但是蜂鸣声表明ESC检测到了中立节气门信号(来自Arduino的伺服输出)和功率。在那之后,移动电表控制电机的速度和方向很好。只有当控制器从一边移动到另一边太快时,电机的反转才会非常快,电源才会关闭。可能反向电流对电源保护来说太大了。