Расчет АЦП-преобразователя Arduino
Я пытаюсь выбрать проводной кодер для своего проекта. До сих пор я нашел этот проводной кодер (см. ссылку). Предположим, что диапазон измерений моего цилиндра равен 1 м. Тогда с помощью 10-битного АЦП-преобразователя моего Arduino Mega2560 я получу разрешение 0,09 см (= 100 см/1024). Но допустим, что какой-то цилиндр имеет диапазон измерений всего 0,5 м. Тогда разрешение будет равно 0,048 (=50 см/1024).
Я вижу, что здесь чего-то не хватает, потому что разрешение более позднего случая должно быть хуже, чем в случае с полным диапазоном измерений 1 м. Я был бы очень признателен за любые чаевые.
Правка:
- Диапазон перемещения цилиндра 0~1 м
- Диапазон измерения проводного энкодера 0~1.25 м
- Аналоговый выход проводного энкодера 0~10в
- Разрешение АЦП 10 бит
@Joe, 👍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
- Высокоскоростной внешний АЦП
- HX711 - Несогласованные показания
- Неточное считывание напряжения с аналогового вывода Arduino
- Ardunio Mega/ATmega2560: использование порта F или K как для аналоговых входов, так и для цифровых выходов.
- Чтение сигнала 4-20 мА на ардуино
- Arduino, python, pyfirmata, стандарт компании
- Проблема при попытке ограничить скорость двигателя определенным числом оборотов в минуту с помощью модуля триггерного переключателя MOSFET
- Сколько АЦП ADS1115 можно подключить к одному Arduino Mega 2560
Я полагаю, что под "диапазоном действия моего цилиндра" вы имеете в виду его окружность. Тогда ваш расчет верен и логичен. АЦП имеет фиксированное разрешение 1024 шага. Если вы распределите эти шаги по меньшему диапазону, это означает, что шаги расположены ближе друг к другу, таким образом, вы получаете лучшее разрешение. В основном вы меняете расстояние, которое покрывается одним поворотом, на разрешение. Большее расстояние дает более низкое разрешение и наоборот. Я не понимаю, почему это должно быть по-другому. Если этот аргумент вас не убедил, можете ли вы объяснить подробнее, почему вы считаете, что должно быть хуже?, @chrisl
Я подразумевал под "диапазоном действия моего цилиндра" диапазон перемещения моего цилиндра. Я добавил дополнительную информацию. Но все еще не уверен, как следует сопоставлять движение кодировщика с движением цилиндра...Не могли бы вы немного проводить меня сюда?, @Joe
Хорошо, теперь я не понимаю вашего заявления. Что на самом деле представляет собой этот цилиндр? Чего вы пытаетесь достичь? Какова ваша настройка проекта? Мне нужно более подробное описание, чтобы понять, что вы пытаетесь сделать., @chrisl
Я добавил некоторую картинку, чтобы уточнить дальше. В принципе, я хочу измерить движение цилиндра с помощью проводного кодера, и поскольку выход моего кодера-напряжение, я хотел бы прочитать значение с помощью АЦП-преобразователя Arduino Mega2560. И я хотел бы оценить решение в данном случае..., @Joe
Ах, хорошо, под цилиндром вы подразумеваете гидравлический цилиндр. Об этом я как-то не подумал., @chrisl
@Джо, ты же знаешь, что эта штука, связанная, стоит около 700+ долларов, верно? Я не уверен, откуда вы взяли это изображение, но даже если оно дешевле, похоже, что вы все равно можете найти лучший АЦП, чем тот, который встроен в ATmega2560. Или, может быть, один из них с цифровым интерфейсом. В противном случае, как сказала Крисл., @timemage