Линнйное преобразование напряжения

Статус
В этой теме нельзя размещать новые ответы.

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
Рефералки запрещены, см. правила. Исправь или ветка будет удалена. Срок 1 час
Добрый день.
Есть у меня один долгострой, я делаю гексапода с мозгами на STM32. В каяестве обратной связи положения его ног был выбран вот такой энеодер абсолютного положения:
1 342,01 руб. 24%OFF | DC 5V Hall Angle Sensor Non contact Industrial 0-360 Degree Rotation Angular displacement Sensor
По всем параметрам вещь обалденная! Но вот выход его 5в. То есть на ноге выхода у него от 0 до 5в в зависимости от положения вала, мне же надо соответственно от 0в до 3.3в
Подскажите пожалуйста самый лучший метод линейного преобразования напряжения.
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
Резистивный делитель. Обязательно убрать pull-up/down на соответствующем входе микропроцессора.
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
Резистивный делитель. Обязательно убрать pull-up/down на соответствующем входе микропроцессора.
Я вот тоже в первую очередь о нем подумал, но так как на работе эксперемент провести не могу. Вы уже пробовали такую схему? Он не будет на верхах и низах заваливать показания?
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
Вы имеете в виду линейность? Да, учитывать выходное сопротивление энкодера придётся, но ошибка будет невелика, особенно, если делитель взять относительно большого номинала (в терминах сопротивления). Да и, думаю, легко нивелируется корректирующими коэффициентами. Входное точно будет значительно превышать сопротивление нижнего плеча делителя и из рассмотрения будет убрано.
 
  • Лойс +1
Реакции: Spindle

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
Вы имеете в виду линейность? Да, учитывать выходное сопротивление энкодера придётся, но ошибка будет невелика, особенно, если делитель взять относительно большого номинала (в терминах сопротивления). Да и, думаю, легко нивелируется корректирующими коэффициентами. Входное точно будет значительно превышать сопротивление нижнего плеча делителя и из рассмотрения будет убрано.
Именно ее, решил на всякий случай поподробнее расписать что имею ввиду.

Спасибо за совет! Вечером буду эксперементировать.
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
@Эдуард Анисимов, не вижу в данном случае необходимости в сложной схеме. Если почитать то, что Вы прислали, то отказ от резистивного делителя вначале был обусловлен необходимостью получить высокоомный вход (указанный энкодер может работать на нагрузку 10кОм, поэтому для него этого не требуется), вся вторая часть посвящена двухполярному сигналу (энкодер выдаёт 0-5В, т.е. сигнал однополярный и дополнительных преобразований не требует).
.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,395
971
58
Марий-Эл
@poty, Я знаю что упрощение вносит бОльшие погрешности. Я не знаю какая погрешнось нужна автору. Он об этом не говорил. Я предложил вариант. А так да. Может ему и не нужно делать всё очень точно.
вся вторая часть посвящена двухполярному сигналу
Почти любая двухполярная схема может быть переведена в однополярную и наоборот.
Пусть сам решает что ему нужно. Мы ему предложили варианты.
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
@poty, Я знаю что упрощение вносит бОльшие погрешности. Я не знаю какая погрешнось нужна автору. Он об этом не говорил. Я предложил вариант. А так да. Может ему и не нужно делать всё очень точно.

Почти любая двухполярная схема может быть переведена в однополярную и наоборот.
Пусть сам решает что ему нужно. Мы ему предложили варианты.
Точность мне высокая не нужна, мне нужна обратная связь от шаговика, который управляет положением ноги гексапода по горизонтали, так что погрешность в пару градусов мне не критична. За скинутые материалы спасибо огромное. Однако, как манкин электронщик (я экономист) я не могу понять, зачес сне в это схеме оу? Если можно вот прям совсем для дураков поясните если не сложно. Я залез на ютюб, посмотрел несколько видео про оу (работать с ними не доводилось) и пока для себя ответа не нашел.
Примастырив энкодер к stm adc выводит показания с очень большой погрешностью, параллельно я снимаю данные мультиметром (видимо анализатор сигнала надо всетаки купить) и если adc stmки показывает с достаточно значительным разбросом, я аот сижу и думаю, это особенность работы датчика хола в энкодере, это хреновые контакты контакты на брэдборде, или это особенности работы китайской stmки.
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
Не правильно я написал. Не с очень большой погрешностью, а со значительным разбросом показаний при одном положении вала энкодера. Вот так корректно.
Извините, не нашел где редактировать мое сообщение.
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
@Spindle, для начала нужно понять, что показывает мультиметр. У мультиметров, конечно, в большинстве случаев используется усреднение за некоторое окно времени, но всё равно - грубые изменения он покажет, тем более, что диапазон напряжений невелик. Алгоритм такой: сначала меряем выходное напряжение на выходе энкодера, это покажет нам, изменяется ли оно примерно также, как измеряет STM. Если да - источник нестабильности найден. Если нет - измеряем напряжение на средней точке делителя (кстати, какие номиналы Вы поставили в делитель?). Это устранит проблему контактов и всего такого. Если и там стабильно всё, то проверяем STM: подаём на вход ADC через переменный резистор (крайние выводы на питание 3В и землю, движок - на вход) напряжение питания, выставляем в примерно среднее положение, измеряем получившееся значение на STM. Должно быть стабильно.
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
Да в результате никакие =) мне для раьоты нужно не 360 градусов а примерно 150, в результате я просто установил энкодер в диапозоне градусов где напряжение не превышает 3.3в, эксперементальнвм путем так же ввяснид что stm при напряжении менее 150 мВ показывает 0.
В делителе я взял r1 4.7кОм а второй рещистор взял подстроечный на 10кОм. Мультиметром я мерил конечно с той же точки откда берет сигнал stm, то есть со средней ноги подстроечного резистор, так же пробовал брать со входа подстроечного. Давал на вход r1 5в (у меня серверный блок питания в качестве источника) и соответственно подстраивал чтобы в делителе было 3.3в. Но из-за помех приходилось использовать 8бит adc, и в результате прлучался очкнь маленький диапозон значений, на все 150 нужных мне градусов приходилось примерно 80-100 единиц разницы (значенте снятое с adc и выведенное в uart из 8бит диапозона 0-255), при этом скачки в показаниях при постоянном положении вала энкодера помехи составляли +- 1ед. Почесав репу я решил что херня... Точность слишком низкая и информативность обратной связи о положении ноги при таком ущком лиапазоне значений, далеко не та что хочется.
В той ситуции что есть сейчас (вал энкодера установлен так, что радиус действия ноги попадает в лиапазон от 1в до 3в примерно) диапозон adc примерно составляет 150 ед, как раз тотчто мне надо, при жтом помкхи примкрно +-1.5 ед (например при среднем значении 200 модет колбаситт 198-201) я думаю попробовать устранить это пробоемму конденсатором маленьклй ёмкости.
В целом, пока писал все это, пришел к выводу, ято мне то надо как раз не делить напрядение а усиливать =) чтобы получить больше диапазон значений при условии огрантченности работы вала на определенном диапазоне его поворота. Надеюсь вы поняли о чем я. =)
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
Что-то здесь не складывается. Нужно проверить настройки AD преобразований в STM. Я их не использовал, но сомневаюсь, что существует предел в 150мВ со стороны 0 напряжения.
Помехи возможны всегда, поэтому провод, соединяющий энкодер со входом, нужно как минимум свивать вместе с землёй. Также стоит нагружать выход энкодера хоть каким-то сопротивлением (это я про случай прямого подключения энкодер-вход). В целом, если передача происходит на длинные расстояния, лучше применять буферизацию перед линией передачи (а лучше - увеличение напряжения) и на приёмной стороне адаптировать входное напряжение к входному диапазону ADC.
Делитель нужно делать раза в два по сопротивлению больше допустимого импеданса для энкодера (20-30кОм), у Вас получалось практически на пределе
По поводу усиления - задайте другой референс для ADC и Вы получите нужное усиление, но без мер по передаче без помех, описанных выше, Вы усилите и шумы тоже.
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
А что понимается под буферизацией? У меня промелькнула мысль собирать показания с adc 3 раза подряд и брать среднее.
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
@Spindle, нет, речь о получении низкого импеданса на выходе перед линией передачи.
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
@Spindle, давайте оценим с чего всё начиналось: нужно было сопрячь уровни. Этот вопрос был решен аж двумя разными способами.
Проблема плавно перетекла в поиск источника шумов и ограниченный диапазон ADC. Причём данных по текущему состоянию: как соединено, как запрограммированно... крайне мало. И если по программированию и использованию STM я сейчас вряд ли помогу, то по электрическому соединению мог бы. Но ответы на вопросы поступают пока лишь в условно утвердительном смысле на мои предположения, и я не могу сдедуцировать из них что либо внятное, кроме продолжающихся предположений.
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
@Spindle, нет, речь о получении низкого импеданса на выходе перед линией передачи.
Так что сделать то надо для этого? У меня перед линией передачи вообще от блока питания до питания энкодера только конденсатор.
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
Для начала нарисуйте это так, как сейчас соединено. Или сфотографируйте.
Как питается энкодер и МП, есть ли нагрузка у энкодера и т.д.
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
Итак, подключение выхода с показаниями энкодера было прямое, сейчас я поставил в разрыв резистор на 220Ом и конденсатор на 100nF, при 10битном значении получил разницу показаний при статичном положении вала энкодера =- 4,5 (498-507) считаю такой результат удовлетворительным для своего проекта.
Запитан энкодер напрямую (через брэдборд) от серверного блока питания (линия 5В).
Проблему с тем что stm не видит сигнал ниже 150мв в рамках данного проекта решать не буду наверно, закажу ещё один и буду колдовать с ним на bluepill, там же разберусь со схемой на ОУ. Когда всё приедет наверно заведу на форуме отдельную тему.
То что я не отвечал на ваши вопросы, прошу не примите в обиду, носился по работе аки лось с йайцами.
Если я проигнорировал какие-то вопросы которые вам интересны, я не специально, если они вам любопытно повторите я готов ответить, или прислать схему подключения.
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
Параллельно 100нФ поставьте сопротивление 30-100кОм.
Девиация напряжения может быть из-за нестабильности питания энкодера или МП.
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
1612458041793.png
Надеюсь от моей схемы кровь из глаз не пошла. =)
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
Добавил параллельно резистор на 47, теперь схема выглядит так
1612458202830.png
Разброс при 10 битах составляет около 5-6 ед. (447-452) =) результат стал лучше!
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
Если энкодер включен правильно, а не так, как на схеме, то разница в 18мВ, которую детектирует ADC вход всё же высока. Включение 47кОм должно было уменьшить шумы, думаю, дальше нужно смотреть над стабильностью +5В, поступающих на энкодер, плюс добавить пару байпас конденсаторов: один на питание энкодера, другой - на питание STM.
 

Spindle

✩✩✩✩✩✩✩
3 Фев 2021
39
0
Если энкодер включен правильно, а не так, как на схеме, то разница в 18мВ, которую детектирует ADC вход всё же высока. Включение 47кОм должно было уменьшить шумы, думаю, дальше нужно смотреть над стабильностью +5В, поступающих на энкодер, плюс добавить пару байпас конденсаторов: один на питание энкодера, другой - на питание STM.
Посмотрел в интернетах как, всетаки, правильно на схеме рисовать потенциометр (он же энкодерив моем случае) ошибку понял, исправлю. Проведу вечером эксперемент, расскажу об эффекте.
 
Статус
В этой теме нельзя размещать новые ответы.