Необходимость задержать АЦП

Я пытался посылать аналоговые сигналы от arduino на компьютер через последовательный порт. Для получения максимальной выборки входных аналоговых сигналов я установил максимальную скорость передачи данных. Код соответствует

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

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

Эта программа хорошо работает с моими сигналами с очень низкой частотой. Но на более высоких частотах все еще возникает проблема алиасинга. Я попытался уменьшить задержку. Я получил больше выборок, когда я сделал это, но некоторые из моих цифровых значений, которые я получил, не может быть использован, то есть некоторые неправильные цифровые значения были, как 353?12 и т. д. Является ли это необходимо, чтобы дать минимальную задержку в 1 мс для АЦП? Или есть ли способ, которым я могу увеличить мою историю выборки

1 ответ

Решение

У вас проблема с настройкой прескалера по умолчанию в arduino. Настройка по умолчанию будет получать только менее 10 выборок за миллисекунду.

Вы можете, конечно, получить более быстрое чтение со своего АЦП, если хотите поиграть с некоторыми из базовых настроек: www.microsmart.co.za/technical/2014/03/01/advanced-arduino-adc/ имеет хорошую статью о предмет. Они работали со скоростью 50 сэмплов в миллисекунду с некоторой настройкой.

Другой вариант - получить чип АЦП, который будет работать быстрее для вас. Ищите sparkfun для "mcp3002". Никакой настройки вашего arduino не требуется, поскольку он использует ввод spi.

Другие вопросы по тегам