【问题标题】:how to plot the input analog signals from arduino in matlab如何在matlab中绘制来自arduino的输入模拟信号
【发布时间】:2014-10-05 17:04:23
【问题描述】:

我一直在尝试通过 arduino uno 读取模拟信号并在 MATLAB 中绘制它们。当我从函数发生器给出我的输入波并尝试绘制它时,绘制的信号不正确,例如输入正弦波没有给出正弦波。可能的原因是什么?是否需要外接电路才能流畅阅读?

ARDUINO 代码

void setup() 
{ Serial.begin(9600); } 
void loop() 
{ 
int a=analogRead(A0); 
Serial.println(a); 
delay(1); 
}

MATLAB 代码

s=serial('COM3','BaudRate',9600); 
fopen(s) 
x=1:100; 
n=1; 
while n==1 
   for i=1:length(x) 
       tmp=fscanf(s,'%d'); 
       if length(tmp)>1 
          continue; 
       end 
       y(i)=tmp; 
   end 
   y=y/1024*5; 
   ylim([0 5]); 
   plot(x,y) 
   drawnow 
   end 
fclose(s) 

【问题讨论】:

  • 请发布您的代码。
  • ARDUINO 代码 void setup() { Serial.begin(9600); } void loop() { int a=analogRead(A0);序列号.println(a);延迟(1); }MATLAB 代码 s=serial('COM3','BaudRate',9600); fopen(s) x=1:100; n=1;而 n==1 对于 i=1:length(x) tmp=fscanf(s,'%d');如果长度(tmp)>1 继续;结束 y(i)=tmp;结束 y=y/1024*5; ylim([0 5]); plot(x,y) drawow end fclose(s)
  • 下一次,请将代码添加到问题中而不是 cmets,因为它难以阅读。因此,您通过串行连接以 9,600 波特率采集 100 个数据点。你输入的正弦波频率是多少?你在 MATLAB 中得到什么输出?顺便说一句,看起来你的 while 循环将永远运行......
  • 好吧,我尝试了高达 1khz 的频率。输出非常失真,无论作为输入给出的函数如何,它都类似于三角形。是的,虽然是无限循环,因为我想像在原始图中一样实时绘图示波器
  • 为了调试目的,只获取一个周期的数据并在数据采集完成后尝试绘制它可能是值得的。一旦你得到这个工作,你就可以继续“实时”绘制和连续采集数据。听起来您在混叠,即没有以足够快的采样率采集数据。

标签: matlab arduino-uno analog-digital-converter


【解决方案1】:

只有一个问题:您学习过信号理论吗?奈奎斯特定理?

您正在获取 1 个点(100 us),然后您通过带有 PRINTLN 的串行连接(因此每个字节 10 位)发送它! (例如,您发送 6 个字节,即“1023”+ CR + LF)。所以 60 个字节,在 9600 bps 时超过 6 毫秒。假设每个点是 7 毫秒。

现在你有一个 1 kHz 的波。所以你从一个波中取一个样本,然后等待其中 6 个通过,然后再取另一个点。所以你永远看不到任何东西。

如果您想查看自己的波形,请尝试为每个波形设置至少 10 个点(即不要超过 15 Hz)。如果您想看到更好的波形,请尝试使用 sinc 插值而不是普通插值。

【讨论】:

  • 如果我提高波特率并降低频率,是否有助于更好的情节?
  • 当然可以。由于这里的主要问题是波特率,您可以将其设置为 115200 bps 并在近 0.5 毫秒内实现传输(因此您可以以大约 150 Hz 的速度进行传输)。如果你想更快,你可以检查你的串口和/或程序,看看你能跑多快(arduino 也可以达到 1Mbps)。我建议您更改传输数据的方式:从文本表示(每次传输 6 个字节)切换到二进制;由于您有 10 位,因此您只需发送 2 个字节(因此速度为 x3)。无论如何,由于 ADC 时间,您将无法超过 1 kHz...
猜你喜欢
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 2013-05-20
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多