Снятие показаний с датчика с высокой частотой

Имеется высокоточный лазерный датчик (разрешение 0,001 мм и пределом измерений 0-10 мм). С него имеем аналоговый выход (может и цифра есть, не смотрел). Датчик на данный момент хочу использовать для измерения колебаний детали с частотой в районе 25-50 Гц. Его подключил к ардуинке нано. В связи с 8-битностью самой ардуинки увеличил разрешение при помощи ADS1115 до 16 бит.

А вот проблему со снятием показаний с более высокой частотой не понимаю как решить. Частота ардуинки 100-200 Гц как понял, что само собой в моем случае для измерения не хватает.

Находил возможные увеличения частоты работы ардуинки, но не могу понять:

  1. Вроде как там указано, что ШИМ идет на цифровой пин. У меня аналог.
  2. Как все это подключать и возможно ли такое увеличение частоты

Прошу подсказать грамотных людей: можно ли снять показания с ардуинки нано с ADS1115 с более высокой частотой (хотя бы 2 кГц) и, если можно, то как это программно и по железу подрубить? В некотором смысле новичок по ардуинкам, прошу камнями не кидать)

Дополнительно: сейчас ардуино показания снимаю через программку на VBNet. Показания ардуинка дает раз в 0,01 сек (то есть 100 Гц). Плата Arduino Atmega 328p на данный момент используется.

Скетч ардуинки:

#include "ADS1X15.h"
ADS1115 ADS(0x48);
 
void setup() 
{
  Serial.begin(9600);
  Serial.print("ADS1X15_LIB_VERSION: ");
  Serial.println(ADS1X15_LIB_VERSION);
  ADS.begin();
}
 
void loop() 
{
  ADS.setGain(0);
  int16_t val_0 = ADS.readADC(0);     //чтение с 0 канала ADS1115
  float f = 0.00047091;               // корректриующий коэффициент
  Serial.print(val_0 * f, 3);
  print(";");
  Serial.println(millis());           // вывод времени
}

Не скромничайте. Судя по тексту - полный ноль.
Пассажи о том, что ардуинка 8ми битная, поэтому вы взяли внешний АЦП… это просто жара.

Если серьезно, вам надо открыть даташит ADS1115 и посмотреть, во- первых, с какой частотой он измеряет по умолчанию - и если этой частоты мало - как ее изменить.

Добавка - посмотрел код, основное время вы тратите на печать цифр в мониторе порта с черепашьей скоростью 9600 бод. Поставьте 115200 - ваша ардуинка магически ускорится на порядок.

?

?

Можно, но зачем, если
The ADS111x perform conversions at data rates up
to 860 samples per second (SPS).

Оккей. Тогда как получить с ардуинки 5 значащих цифр без внешнего АЦП?

Даташит сейчас гляну. Руководствовался не даташитом, а подсказками инета

@Mikhail43
А вы случайно не Михаил143 со старого форума? Вы потом ещё на Амперку ушли. Уж больно стиль вопросов похож

Ставил и больше, не сильно ускоряется

Можно. Для этого нужно

  1. Выбросить ADS1115
  2. Спокойно читать ардуиновским 10-битным АЦП со скоростью до 10 тысяч измерений в секунду (что в пять раз Выше Ваших 2 kHz)

Разумеется, для этого потребуется не та программа, что у Вас приведена, но если Вы новичок лишь “в некотором смысле”, то для Вас это не составит труда.

Это Вы здорово придумали! Так победим!

А если без оскорблений и просто подсказать, где косячу и как сделать на этом форуме не приветствуется?

Лукавите. Или просто говоря, врёте.

При скорости порта 9600 вывод в Сериал этих трёх строк

как раз потребует порядка 10мс. То есть виртуально само обращение к АЦП занимает минимальное время, а частота вывода в 100гц обусловлена именно медленный выводом в порт.

Да лана вам прикидываться. Вы отлично знаете, что тут и как на форуме.
И мы вас знаем, вот ваш типичный стиль:

Где Вы там разглядели оскорбления?

Нигде не косячите, просто для скорости 10 килосэмплов/сек. (если быть точным, то 9,6 kS/s) нужна другая программа. Не исправленная эта, а совсем другая.

2 лайка

Не лукавлю и не вру. Выводил с 9600 и с 38400. Хорошо. Тогда как получить с большей частотой результаты на комп, кроме вывода на COM-порт?

Увеличить скорость порта.
Или сначала записать результаты в память, а передать их на комп позже.
Или использовать другой метод связи и другую плату…

Вы точно тот самый Михаил, тут уже никаких сомнений. Он тоже задавал вопросы про любую чушь, лишь бы самому не думать.

Ну сделай 50-100 измерений и только потом выведи в порт…

2 лайка

А давайте Вы определитесь, Вы умный или красивый Вам нужно измерять с большей частотой или печатать на компе в читабельном для человека виде?

Если нужно реально измерять, то см. в даташите режим АЦП “free-running”. Если же нужно печатать в монитор порта, то никак Вы с такой скоростью не напечатаете.

1 лайк

Не исключаю, что там был. В любом случае это было давно. Тогда вообще зачем форум, если тут при вопросах больше засирают пользователей, чем явным образом помогают?

Спасибо. Попробую

К сожалению не знал, где главный тормоз вывода информации. Возможно понял. Попробую. Спасибо

Вам - низачем.
Вам надо вообще запретить вход на форумы.
Вы делаете вид, что занимаетесь контроллерами уже сколько лет? - восемь? десять? - а до сих пор пишете полную чушь про восьмибитные Ардуино и про скорость платы, которая связана с ШИМ :slight_smile:
А знаете почему?
Потому что вы никогда не стремились хоть что-нибудь изучить и в чем-то разобраться, вы всегда шли на форумы и ждали, что вам все разжуют и в рот положат.
Зачем на вас тратить время, если вы завтра все забудете и снова придёте с теми же вопросами?