【发布时间】:2021-01-14 10:15:09
【问题描述】:
我的新项目有问题。 目标是通过 RS485 使用 Arduino MKR Wifi 1010 来控制我的 压电马达。 出于这个原因,我有这些组件:
Arduino MKR Wifi 1010 Arduino MKR 485 盾牌 压电电机驱动器 PM401(手册:https://piezomotor.com/wp-content/uploads/2019/03/150025_PMD401_Technical_Manual.pdf) 压电腿电机
我使用 USB 适配器和压电电机软件测试了 RS485。那行得通。 但是如果涉及到代码,我就没有更多的了解了。
我想以 ASCII 码发送压电驱动器的命令是:
X127M2;
X127J200,0,100;
(他们在 PiezoMotor DriveLab 软件中工作)
我尝试用这段代码来做:
#include <ArduinoRS485.h>
int counter = 0;
void setup() {
RS485.begin(115200);
Serial.begin(115200);
RS485.receive();
}
void loop() {
RS485.beginTransmission();
if (RS485.available()){
Serial.println(RS485.read());
}
else {
Serial.write("Not available");
}
Serial.println(RS485.available());
RS485.write('X127M2;');
RS485.write('X127J200,0,100;');
Serial.print("Count No: ");
Serial.println(counter);
RS485.endTransmission();
counter ++;
delay(2000);
}
在终端我得到了类似的东西:
88
8
Count No: 1
50
15
Count No: 2
67
22
Count No: 3
我怎么知道 MKR 485 Shield 正在向 Piezodriver 发送命令,而不是发送到任何地方?在我看来,终端机的号码是随机的。即使没有任何东西连接到 MKR 485 Shield,它们也会出现。
那么如何在代码中找到或设置PM401的地址呢?
还是我必须发送完全不同的命令?
它们必须以 ASCII 格式发送到 115200n81。 RS485.write('X127M2;'); 行是否提供了这一点?
我有点迷茫,也是因为我在该领域没有太多经验,并且 try&error 在这里不起作用。 希望有一些提示:)
【问题讨论】:
-
请注意,这不是人工阅读服务。请阅读How to Ask
-
停止编辑您的问题,阅读手册。时间投入得更好。 4 小时后,您仍然发送错误的命令。如果您期望得到响应,您可能不会用分号终止您的命令。它将抑制控制器的响应!请阅读手册。它会为你节省很多时间
标签: arduino rs485 motordriver