【问题标题】:necessity to give delay to adc必须延迟 adc
【发布时间】:2014-10-15 18:26:05
【问题描述】:

我试图通过串口将模拟信号从 arduino 发送到计算机。为了获得输入模拟信号的最大样本,我将波特率设置为最大限制。代码是给定的

void setup()
{
  Serial.begin(115200);
}
 void loop()

{
  int a=analogRead(A0);
   Serial.println(a);
   delay(1);
}

该程序适用于我的频率非常低的信号。但在较高频率的信号中,仍然会出现混叠问题。我尝试减少延迟。我得到了更多样本当我这样做时,但我的一些数字值我得到的无法使用,即一些错误的数字值如 353?12 等等。是否必须为 ADC 提供 1 毫秒的最小延迟??或者有什么方法可以增加我的示例故事

【问题讨论】:

    标签: arduino adc


    【解决方案1】:

    您遇到了 arduino 中默认预分频器设置的问题。默认设置每毫秒只能获得少于 10 个样本。

    如果您想使用一些底层设置,您当然可以从 ADC 获得更快的读取速度: www.microsmart.co.za/technical/2014/03/01/advanced-arduino-adc/ 有一篇关于这个主题的好文章。他们通过一些调整使其以每毫秒 50 个样本的速度运行。

    另一种选择是获得一个运行速度更快的 ADC 芯片。在 sparkfun 中搜索“mcp3002”。由于它使用 spi 输入,因此无需调整您的 arduino。

    【讨论】:

    • 非常感谢。它起作用了。但我需要更多样本。我听说 analogRead 读取输入的速度很慢,并且使用寄存器访问数据会加快速度。可以你建议我该怎么做??
    • 您现在的采样率是多少?你的目标是什么?
    • 我认为 50 个样本。我现在将预分频器设置为 16。实际上,我尝试对信号进行采样并绘制它们以获得波形,就像示波器一样。但是每当我超过 100 赫兹时,我得到的样本不足
    • 我可以为您提供很好的帮助:您对 c 编程、二进制操作和字节变量的熟悉程度如何?如果您没有经验,请不要担心,如果需要,我会尽力解释我所做的一切。
    • 我知道 c 编程的基础知识,但我没有深入了解。所以如果我进入二进制级别,我可以提高采样速度吗?请帮帮我
    猜你喜欢
    • 2020-10-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多