Официальный сайт компании Arduino по адресу arduino.cc
Возможно ли как то реализовать обратную связь для сервопривода?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 12/03/2013 - 14:39
Здравствуйте. Скажите возможно ли как то реализовать для моторчика обратную связь чтобы определять его состояние? Либо как то по хитрому задавать ему импульс, возможно по формуле какой-нибудь чтобы более точно контролировать сервопривод.
http://habrahabr.ru/company/amperka/blog/127773/
Да.
Для этого, естественно нужны какие-то датчики.
Если вас интересуют определенные точки (например 0,90 и 180) - подводите проводки, что-бы он в этих положениях их замыкал (в коде будете читать это как обычную кнопку).
Если "универсально" хотим. Всегда знать текущие реалное положение - энкодер ставим. Лучше цифровой (особенно если много "движухи" намечается).
Бывают сервы с уже ствроенным энкодером, но дорогие и редкие.
А если сама серва "не точно становится", "дрожит" и т.п., то возможно просто более качественую/дорогую серву брать нужно.
Можно еще (в зависимости от задачи) посмотреть в сторону степперов (шаговых двигателей)
аа понял спасибо :)
А можно подключиться к штатному потенциометру сервы.
А можно подключиться к штатному потенциометру сервы.
В статье которую дал Максим именно так и делают. Просто очень не люблю "разрушающие" методы (вскрытие того что не предполагает штатного вскрытия/подключения), поэтому даже в голову не пришло включить это в перечисление вариантов. Только "что-то внешнее". Без утери товарного вида сервы :)
leshak, это классическая "палка о двух концах".
С одной стороны нужно придумать какое то навесное устройство, при том механическое, при том не мешающее нормальной работе.
С другой стороны операция.
С третьей стороны , зачем вообще это нужно ?
Известно что серва удерживает заданый угол. Значит если мы ее в этот угол установили , то она там и будет.
Т.е. программа теоретически знает где находится серва. И если что то сильное и злое провернет качалку в другое положение , то я считаю что серву можно выкинуть. Проворот шестеренок редуктора, бешеная нагрузка на мотор и Н мост.
Когда я говорил "в голову не пришло", то имел ввиду не "потому что это фигово", а скорее про личные "стереотипы мышления". Выбрыки подсознания которые сужают поисковое поле. Не люблю я необратимых изменений/решений, вот и образует "слепое пятно" в миро-восприятии.
А обратная связь - иногда очень нужна. Когда, к примеру, нужно выполнять следующие действие скетча СТРОГО после того как серва заняла положение. Не раньше и не позже. Можно, конечно, высчитывать время необходимое для поворота, но... серва изнашаевается, может сменится тип, акум может просесть, нагрузка увеличится... вообщем "не точно выходит".
С третьей стороны , зачем вообще это нужно ?
Т.е. программа теоретически знает где находится серва. И если что то сильное и злое провернет качалку в другое положение , то я считаю что серву можно выкинуть. Проворот шестеренок редуктора, бешеная нагрузка на мотор и Н мост.
А вот "не доехала" или "кто-то ее свернул" можно выяснить по току потребления:
ACS712
http://www.ebay.com/itm/5A-range-ACS712-module-current-sensor-module-/25...
С четвертой стороны , зачем вообще это нужно ?
>А вот "не доехала" или "кто-то ее свернул" можно выяснить по току потребления:
Хорошая идея.
>ACS712
А если серва 5-ти вольтовая то думаю можно и резистором обойтись можно (соорудить из сервы и резистора делитель напряжения и мерять аналоговым пином).
Немного не в тему, но может знаете, а есть какие-то аналоги ACS712 которые могут на 12V до 500A пережить/померять (хочу мониторинг стартера автомобильного прикрутить)
>С четвертой стороны , зачем вообще это нужно ?
В прошлом посте вроде писал. Там где нужно выполнять какие-то действия в скетче сразу после того как серва заняла требуемое положение. Например в соседней теме - шагающий робот. Двигать ногу вперед нужно не раньше чем выполнен наклон туловища, а если "дать время с запасом", то возникают паузы в движении.
Или скажем пушку какую-то самонаводящуюся :) Стрелят нужно - после того как навелся. С одной стороны вытрелить нужно как можно быстрее, с другой - не раньше чем выполнено наведение :) Да много где вообщем может потребоваться.
>>А вот "не доехала" или "кто-то ее свернул" можно выяснить по току потребления:
Хорошая идея.<<
Не совсем хорошая. При старте или реверсе ток может достигать тех же значений что и в момент клина.
>>А вот "не доехала" или "кто-то ее свернул" можно выяснить по току потребления:
Хорошая идея.<<
Не совсем хорошая. При старте или реверсе ток может достигать тех же значений что и в момент клина.
Натурные испытания с конкретным железом - конечно требоватся будут. А "клин" - это редкая проблема. Я бы даже сказал это "форс.мажор". Он вообще не должен существовать в нормально функционирующем устройстве.
А вот задачу узнать "завершила серва движение или нет" (при нормальной работе) - эта идея должна решать неплохо. То есть для задачи "синхронизации движений" идея более чем подходит.
Для задачи "детектить аварийные состояния" - может быть и не очень. Хотя и тут - может прокатить. Если скажем известно что поворот должен завершится примерно за 50-100 микросекунд (но мы не знаем точно, поэтому нам и нужна обратная связь), а ток не падает уже 150-200 микросекунд - значит "клин".
Вообщем как любое решение - не идеально. Но идеальных не бывает. А по соотношению полезность/простота - решение, все-таки, очень не плохое.
Всех приветствую. Вопрос:
Необходимо получать данные от сервопривода подключенного к RC приемнику для радиомоделей.
При определенных показаниях подавать 1 на цифровой пин ардуины.
Разобрал серву и подпаялся к штатному потенциометру сервы.
RC приемник питается от ардуины - сервопривод в разъем приемника - от потенциометра на А0.
Для проверки подключил модуль реле на цифровой выход.
Запускаю схему, все работает откланяю серву на заданный угол - на 7 пин выходит 5в - реле щелкает. Все хорошо.
Но заметил, один момент на модуле реле есть светодиод Включения реле, так вот он в полсилы светится даже когда на выходе по идее должно быть 0. Проверил и вправду на 7 пине, к которому я подключил реле все вемя идет небольшой ток. Что это может быть?
Может быть где-то в схеме присутствует картофель
интересно, ток короткого замыкания какой?
Да не картохи нет вроде
Диоды на питание приемника с сервоприводом может поставить?
Я просто не особо электронщик, а сделать одну штуковину очень хочется. Прошу помощи)
Схему публикуйте и скетч кратенько. А то тут многие неособоэлектронщики по две недели сообщество возбуждают, а потом оказывается, что у них земля подключена к батарее отопления, а не к реле.
Запускаю схему, все работает откланяю серву на заданный угол - на 7 пин выходит 5в - реле щелкает. Все хорошо.
Но заметил, один момент на модуле реле есть светодиод Включения реле, так вот он в полсилы светится даже когда на выходе по идее должно быть 0. Проверил и вправду на 7 пине, к которому я подключил реле все вемя идет небольшой ток. Что это может быть?
Например импульсное напряжение на потенциометре от самой схемы сервы (...да откуда я знаю зачем ?). Есть чем глянуть ? В это "все время" в каком положении серва ? Возможно в нем нечетко определяется уровень 0/1.
void setup()
{
pinMode(7, OUTPUT);
}
void loop()
{
//Плата:1
digitalWrite(7, ( (analogRead (0))) > (300));
}
В момент работы сервы, и когда подводишь ближе к максимальному углу сильнее.
схему выложил
Могут быть просто помехи. Желательно осциллографом глянуть. Попробуйте прицепить между A0 и землей (на стороне ардуины) конденсатор ~1 мкФ и подать этот сигнал через резистор 10к. Если это повлияет на работу сервы - поставьте конденсатор поменьше, а резистор побольше (в разы).
Ток потребления сервы он что, действительно проходит через приёмник?
Обычный приёмник и пульт к нему вот такой http://allrc.pk/wp-content/uploads/2018/09/71jkx4NgL._SL1500_-1200x1200.jpg
Может быть где-то в схеме присутствует картофель
тут фото картофеля
интересно, а если закоротить жареная будет :-)?
отслеживайте положение того что передвигаете. линейкой, энкодером, резистор на крайняк воткните если механика расстояний позволяет
Обычный приёмник и пульт к нему вот такой http://allrc.pk/wp-content/uploads/2018/09/71jkx4NgL._SL1500_-1200x1200.jpg
так у вас с передатчика длительности скачут в пределах 1-2 микросекунды, у серв есть зона нечувствительности, то-есть положение не точного баланса
И что, это влияет на pinMode(7, OUTPUT) ?
Можете объяснить, что в этом случае можно сделать?