Как остановить сервопривод, если он достигнет сопротивления?

Я пытаюсь сделать устройство, которое будет поворачиваться под ключ с помощью сервопривода.

Однако я хочу, чтобы он перестал поворачивать ключ, если сопротивление слишком велико (то есть он заблокирован и никогда не повернется).

Как мне это сделать? Могу ли я просто сказать ему повернуть, а затем через некоторое время вернуть его обратно (потому что, если он заблокирован или нет, это должно быть сделано в течение этого времени)?

Я не хочу повредить сервопривод, пытаясь повернуть то, чего он не может повернуть.

Я использую Arduino Uno и библиотеку «Servo.h». Используемый сервопривод — Batan S1123.

, 👍6


4 ответа


0

Лучший способ — использовать внешнюю обратную связь. Датчик Холла например. 200–250 мс после использования сервопривода, проверка состояния датчика Холла

,

Или датчик тока на линии питания сервопривода: измените положение, когда вы обнаружите, что ток возрастает из-за остановленного двигателя., @CrossRoads

Да, это возможно. Холл кажется проще, @Pararera

Не могли бы вы рассказать, как вы будете использовать датчик Холла для выполнения этой задачи?, @mikeY

Поместите небольшой магнит на ключ и датчик Холла рядом с конечной точкой ключа., @Pararera

Ах. Таким образом, если датчик не может обнаружить магнит через x моментов после запуска сервопривода, обнаружено сопротивление, прекратите нажатие., @mikeY


1

Вы можете:

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

  2. Измерьте ток двигателя, подключив резистор низкого номинала к заземленной стороне источника питания двигателя. С помощью одного из контактов A/D измерьте напряжение на резисторе со стороны двигателя, которое увеличивается с ростом тока двигателя. Вам нужно будет выяснить, какой ток потребляет двигатель при нормальной работе. Если двигатель заглохнет, ваш контроллер может почувствовать это, увидев увеличение тока. Выберите значение (например, 150 %) перегрузки по току в качестве индикатора остановки двигателя и верните его в исходное положение.

Первый способ проще реализовать, но он может привести к остановке двигателя, пока вы ждете истечения ожидаемого времени движения. Второй способ позволяет обнаружить заминку и немедленно принять меры.

,

Я не думаю, что решение с концевым выключателем помешает сервоприводу отключить шестерни, если он заблокируется до того, как вы проверите переключатель. Вариант 2 был бы лучшим вариантом для изучения., @linhartr22

Вы должны понимать, что управляете сервоприводом импульсами ШИМ. Сервопривод преобразует ширину импульса в величину вращения. Стандартный сервопривод не имеет средств указания своего текущего положения. Вы можете только сказать ему, где вы хотите, чтобы он был., @linhartr22

Если бы он мог снять шестерни, значит, он недостроен; он не должен быть в состоянии повредить себя при предсказуемых обстоятельствах (остановка). Но даже в этом случае измерение тока должно дать вам достаточную возможность защитить его., @JRobert

«Если он мог снять шестерни, значит, он недостроен» - это обычно верно для игрушек и небольших приложений (так что, вероятно, это также относится и к ОП), но не верно в целом. Большинство продуктов, двигатель которых не предназначен для работы на скорости 0 об/мин (миксеры и т. д.), легко разбирают шестерни при остановке, если только в них не реализована защита в программном обеспечении., @Dmitry Grigoryev


0

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

,

2

Это зависит от того, какого именно провала вы ожидаете. Если вы боитесь, что двигатель может сломать ваше соединение (шестерни, шатуны, ремни и т. д.), вам придется реагировать очень быстро, и это возможно только при измерении тока. Для достижения эффективности потребуется распознавать ток и очень быстро реагировать на перегрузку по току.

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

,