延迟连接Arduino和Simulink

时间:2017-02-15 05:12:45

标签: matlab arduino serial-port simulink

我正在尝试使用arduino微控制器读取 potentionmeter 的数据(尝试了arduino UNO,arduino FIO)并使用串行通信接口将其用于 Simulink (我试过波特费率从57600-921600不等。

这是 Arduino 源代码:

/*
  AnalogReadSerial
  Reads an analog input on pin 0, prints the result to the serial monitor.
*/
#define ana_pin A0 

void setup() {
  analogReference(DEFAULT);
  Serial.begin(57600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(ana_pin);
  // print out the value you read:
  Serial.print(sensorValue);
 // delay(500);        // delay in between reads for stability
}

我将其与 Tera Term软件连接,并且对应于3 V或0V的值瞬时变化。

然而,当我尝试使用仪器控制工具箱将其与Simulink模型连接时:

enter image description here

当值从3V的ASCII表示变为0V

时,存在10秒滞后

enter image description here

采样时间0.01秒,模型配置参数也相应调整(我尝试了1秒钟或更长时间,延迟仍然存在。此外,我能够记录来自另一个传感器和 LPC1768 开发板的数据,没有任何延迟。

我也在Simulink中使用Arduino支持库进行了尝试:

enter image description here

似乎没有收到任何数据,因为您可以从png文件中的Scope1看到状态信号始终为0。我还在Simulink中附加了Arduino块的硬件实现属性:

enter image description here

你能帮我理解发生了什么以及如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

@Patrick Trentin - 当我使用230400,460800和921600的波特率时,我得到4秒的延迟。 对于波特率57600,115200,我得到10秒的延迟。 感谢您指出,我以前没有关注过。 但是,因为我将在一个应用程序中使用传感器,该应用程序每0.01秒准确读取一次。我不认为我能以4秒的延迟工作。