Расчет АЦП-преобразователя Arduino

Я пытаюсь выбрать проводной кодер для своего проекта. До сих пор я нашел этот проводной кодер (см. ссылку). Предположим, что диапазон измерений моего цилиндра равен 1 м. Тогда с помощью 10-битного АЦП-преобразователя моего Arduino Mega2560 я получу разрешение 0,09 см (= 100 см/1024). Но допустим, что какой-то цилиндр имеет диапазон измерений всего 0,5 м. Тогда разрешение будет равно 0,048 (=50 см/1024).

Я вижу, что здесь чего-то не хватает, потому что разрешение более позднего случая должно быть хуже, чем в случае с полным диапазоном измерений 1 м. Я был бы очень признателен за любые чаевые.


Правка:

  • Диапазон перемещения цилиндра 0~1 м
  • Диапазон измерения проводного энкодера 0~1.25 м
  • Аналоговый выход проводного энкодера 0~10в
  • Разрешение АЦП 10 бит

, 👍1

Обсуждение

Я полагаю, что под "диапазоном действия моего цилиндра" вы имеете в виду его окружность. Тогда ваш расчет верен и логичен. АЦП имеет фиксированное разрешение 1024 шага. Если вы распределите эти шаги по меньшему диапазону, это означает, что шаги расположены ближе друг к другу, таким образом, вы получаете лучшее разрешение. В основном вы меняете расстояние, которое покрывается одним поворотом, на разрешение. Большее расстояние дает более низкое разрешение и наоборот. Я не понимаю, почему это должно быть по-другому. Если этот аргумент вас не убедил, можете ли вы объяснить подробнее, почему вы считаете, что должно быть хуже?, @chrisl

Я подразумевал под "диапазоном действия моего цилиндра" диапазон перемещения моего цилиндра. Я добавил дополнительную информацию. Но все еще не уверен, как следует сопоставлять движение кодировщика с движением цилиндра...Не могли бы вы немного проводить меня сюда?, @Joe

Хорошо, теперь я не понимаю вашего заявления. Что на самом деле представляет собой этот цилиндр? Чего вы пытаетесь достичь? Какова ваша настройка проекта? Мне нужно более подробное описание, чтобы понять, что вы пытаетесь сделать., @chrisl

Я добавил некоторую картинку, чтобы уточнить дальше. В принципе, я хочу измерить движение цилиндра с помощью проводного кодера, и поскольку выход моего кодера-напряжение, я хотел бы прочитать значение с помощью АЦП-преобразователя Arduino Mega2560. И я хотел бы оценить решение в данном случае..., @Joe

Ах, хорошо, под цилиндром вы подразумеваете гидравлический цилиндр. Об этом я как-то не подумал., @chrisl

@Джо, ты же знаешь, что эта штука, связанная, стоит около 700+ долларов, верно? Я не уверен, откуда вы взяли это изображение, но даже если оно дешевле, похоже, что вы все равно можете найти лучший АЦП, чем тот, который встроен в ATmega2560. Или, может быть, один из них с цифровым интерфейсом. В противном случае, как сказала Крисл., @timemage


1 ответ


Лучший ответ:

1

Ваш расчет не верен. Энкодер имеет выходное напряжение от 0 до 10 В, распределенное по всему расстоянию, которое может достигать кабель, то есть 1,25 м. И это дает вам разрешение: 1,25 м/1024 = 1,22 мм. Разрешение не меняется, если вы используете меньше максимальной длины. Это все то же разрешение около 1,22 мм. Кодировщик не заботится, если вы используете только 1 м его диапазона.

,

Но если вы попытаетесь написать код: 1) с полным диапазоном 1,25 м cylinder_pos = карта( analogRead(A0), 0, 1023, 0, 1.25 ) 2) с диапазоном всего 0,5 м cylinder_pos = карта( аналоговый поток(A0), 0, 1023, 0, 0.5 ). Это имеет значение, верно?, @Joe

Только, если вы говорите о другом кодировании, которое имеет диапазон 0,5 м. Если вы используете кодировку с диапазоном 1,25 м, вам необходимо использовать это значение для расчета, @chrisl