Необходимость задержать АЦП
Я пытался посылать аналоговые сигналы от 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.