Возможно ли как то реализовать обратную связь для сервопривода?

timur2008
Offline
Зарегистрирован: 06.03.2013

Здравствуйте. Скажите возможно ли как то реализовать для моторчика обратную связь чтобы определять его состояние? Либо как то по хитрому задавать ему импульс, возможно по формуле какой-нибудь чтобы более точно контролировать сервопривод.

maksim
Offline
Зарегистрирован: 12.02.2012
leshak
Offline
Зарегистрирован: 29.09.2011

Да.

Для этого, естественно нужны какие-то датчики.

Если вас интересуют определенные точки (например 0,90 и 180) - подводите проводки, что-бы он в этих положениях их замыкал (в коде будете читать это как обычную кнопку).

Если "универсально" хотим. Всегда знать текущие реалное положение - энкодер ставим. Лучше цифровой (особенно если много "движухи" намечается).

Бывают сервы с уже ствроенным энкодером, но дорогие и редкие.

А если сама серва "не точно становится", "дрожит" и т.п., то возможно просто более качественую/дорогую серву брать нужно.

Можно еще (в зависимости от задачи) посмотреть в сторону степперов (шаговых двигателей)

 

timur2008
Offline
Зарегистрирован: 06.03.2013

аа понял спасибо :) 

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

А можно подключиться к штатному потенциометру сервы.

leshak
Offline
Зарегистрирован: 29.09.2011

nestandart пишет:

А можно подключиться к штатному потенциометру сервы.

В статье которую дал Максим именно так и делают. Просто очень не люблю "разрушающие" методы (вскрытие того что не предполагает штатного вскрытия/подключения), поэтому даже в голову не пришло включить это в перечисление вариантов. Только "что-то внешнее". Без утери товарного вида сервы :)

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

leshak, это классическая "палка о двух концах".

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

С другой стороны операция.

С третьей стороны , зачем вообще это нужно ?

Известно что серва удерживает заданый угол. Значит если мы ее в этот угол установили , то она там и будет.

Т.е. программа теоретически знает где находится серва. И если что то сильное и злое провернет качалку в другое положение , то я считаю что серву можно выкинуть. Проворот шестеренок редуктора, бешеная нагрузка на мотор и Н мост.

 

leshak
Offline
Зарегистрирован: 29.09.2011

Когда я говорил "в голову не пришло", то имел ввиду не "потому что это фигово", а скорее про личные "стереотипы мышления". Выбрыки подсознания которые сужают поисковое поле. Не люблю я необратимых изменений/решений, вот и образует "слепое пятно" в миро-восприятии.

А обратная связь - иногда очень нужна. Когда, к примеру, нужно выполнять следующие действие скетча СТРОГО после того как серва заняла положение. Не раньше и не позже. Можно, конечно, высчитывать время необходимое для поворота, но... серва изнашаевается, может сменится тип, акум может просесть, нагрузка увеличится... вообщем "не точно выходит".

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

nestandart пишет:

С третьей стороны , зачем вообще это нужно ?

Т.е. программа теоретически знает где находится серва. И если что то сильное и злое провернет качалку в другое положение , то я считаю что серву можно выкинуть. Проворот шестеренок редуктора, бешеная нагрузка на мотор и Н мост.

А вот  "не доехала" или "кто-то ее свернул" можно выяснить по току потребления:

ACS712

http://www.ebay.com/itm/5A-range-ACS712-module-current-sensor-module-/25...

С четвертой  стороны , зачем вообще это нужно ? 

leshak
Offline
Зарегистрирован: 29.09.2011

>А вот  "не доехала" или "кто-то ее свернул" можно выяснить по току потребления:

Хорошая идея.

>ACS712

А если серва 5-ти вольтовая то думаю можно и резистором обойтись можно (соорудить из сервы и резистора делитель напряжения и мерять аналоговым пином).

Немного не в тему, но может знаете, а есть какие-то аналоги ACS712 которые могут на 12V до 500A пережить/померять (хочу мониторинг стартера автомобильного прикрутить)

>С четвертой  стороны , зачем вообще это нужно ?

В прошлом посте вроде писал. Там где нужно выполнять какие-то действия в скетче сразу после того как серва заняла требуемое положение. Например в соседней теме - шагающий робот. Двигать ногу вперед нужно не раньше чем выполнен наклон туловища, а если "дать время с запасом", то возникают паузы в движении.

Или скажем пушку какую-то самонаводящуюся :)  Стрелят нужно - после того как навелся. С одной стороны вытрелить нужно как можно быстрее, с другой - не раньше чем выполнено наведение :)  Да много где вообщем может потребоваться.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

 

>>А вот "не доехала" или "кто-то ее свернул" можно выяснить по току потребления:

Хорошая идея.<<

Не совсем хорошая. При старте или реверсе ток может достигать тех же значений что и в момент клина.

leshak
Offline
Зарегистрирован: 29.09.2011

nestandart пишет:

 

>>А вот "не доехала" или "кто-то ее свернул" можно выяснить по току потребления:

Хорошая идея.<<

Не совсем хорошая. При старте или реверсе ток может достигать тех же значений что и в момент клина.

Натурные испытания с конкретным железом - конечно требоватся будут. А "клин" - это редкая проблема. Я бы даже сказал это "форс.мажор". Он вообще не должен существовать в нормально функционирующем устройстве.

А вот задачу узнать "завершила серва движение или нет" (при нормальной работе) - эта идея должна решать неплохо. То есть для задачи "синхронизации движений" идея более чем подходит.
Для задачи "детектить аварийные состояния" - может быть и не очень. Хотя и тут - может прокатить. Если скажем известно что поворот должен завершится примерно за 50-100 микросекунд (но мы не знаем точно, поэтому нам и нужна обратная связь), а ток не падает уже 150-200 микросекунд - значит "клин".

Вообщем как любое решение - не идеально. Но идеальных не бывает. А по соотношению полезность/простота - решение, все-таки, очень не плохое.

vfear
Offline
Зарегистрирован: 20.06.2019

Всех приветствую. Вопрос:

Необходимо получать данные от сервопривода подключенного к RC приемнику для радиомоделей.

При определенных показаниях подавать 1 на цифровой пин ардуины.

Разобрал серву и подпаялся к штатному потенциометру сервы.

RC приемник питается от ардуины - сервопривод в разъем приемника - от потенциометра на А0.

Для проверки подключил модуль реле на цифровой выход.

Запускаю схему, все работает откланяю серву на заданный угол - на 7 пин выходит 5в - реле щелкает. Все хорошо.

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

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Может быть где-то в схеме присутствует картофель

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

интересно, ток короткого замыкания какой?

vfear
Offline
Зарегистрирован: 20.06.2019

Да не картохи нет вроде

vfear
Offline
Зарегистрирован: 20.06.2019

Диоды на питание приемника с сервоприводом может поставить?

Я просто не особо электронщик, а сделать одну штуковину очень хочется. Прошу помощи)

sadman41
Offline
Зарегистрирован: 19.10.2016

Схему публикуйте и скетч кратенько. А то тут многие неособоэлектронщики по две недели сообщество возбуждают, а потом оказывается, что у них земля подключена к батарее отопления, а не к реле.

Morroc
Offline
Зарегистрирован: 24.10.2016

vfear пишет:

Запускаю схему, все работает откланяю серву на заданный угол - на 7 пин выходит 5в - реле щелкает. Все хорошо.

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

Например импульсное напряжение на потенциометре от самой схемы сервы (...да откуда я знаю зачем ?). Есть чем глянуть ? В это "все время" в каком положении серва ? Возможно в нем нечетко определяется уровень 0/1.

vfear
Offline
Зарегистрирован: 20.06.2019

void setup()
{
pinMode(7, OUTPUT);

}
void loop()
{

//Плата:1
digitalWrite(7, ( (analogRead (0))) > (300));

}

vfear
Offline
Зарегистрирован: 20.06.2019

В момент работы сервы, и когда подводишь ближе к максимальному углу сильнее.

схему выложил

Morroc
Offline
Зарегистрирован: 24.10.2016

Могут быть просто помехи. Желательно осциллографом глянуть. Попробуйте прицепить между A0 и землей (на стороне ардуины) конденсатор ~1 мкФ и подать этот сигнал через резистор 10к. Если это повлияет на работу сервы - поставьте конденсатор поменьше, а резистор побольше (в разы).

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Ток потребления сервы он что, действительно проходит через приёмник?

vfear
Offline
Зарегистрирован: 20.06.2019

Обычный приёмник и пульт к нему вот такой http://allrc.pk/wp-content/uploads/2018/09/71jkx4NgL._SL1500_-1200x1200.jpg

MacSim
Offline
Зарегистрирован: 28.11.2012

sadman41 пишет:

Может быть где-то в схеме присутствует картофель

 тут фото картофеля

интересно, а если закоротить жареная будет :-)?

MacSim
Offline
Зарегистрирован: 28.11.2012

отслеживайте положение того что передвигаете. линейкой, энкодером, резистор на крайняк воткните если механика расстояний позволяет

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

vfear пишет:

Обычный приёмник и пульт к нему вот такой http://allrc.pk/wp-content/uploads/2018/09/71jkx4NgL._SL1500_-1200x1200.jpg

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

vfear
Offline
Зарегистрирован: 20.06.2019

И что, это влияет на pinMode(7, OUTPUT) ?

vfear
Offline
Зарегистрирован: 20.06.2019

Можете объяснить, что в этом случае можно сделать?