Проблемы с пониманием минимальных и максимальных параметров серводвигателя

Эта фотография из arduino.cc . Не мог бы кто-нибудь помочь мне понять эти параметры min и max? Я использовал TinkerCad, принимая входные данные для угла с помощью потенциометра (правильно сопоставив входные данные от (0 до 1023) до (от 0 до 180)), но я не вижу никаких изменений, когда меняю min или max в своем коде. Сервопривод по-прежнему переходит в положение 180 градусов, когда вход равен 1023.

, 👍0

Обсуждение

это ширина импульса управляющего сигнала, который должен быть послан сервоприводу при команде перейти в его минимальное и максимальное положения, @jsotola


2 ответа


0

Он жестко закодирован в библиотеке servo (ну, это на версии ESp8266, которую я использовал).

// Следующие значения указаны в мс (микросекундах).
// Поскольку значения по умолчанию могут быть перезаписаны в новой функции-члене attach (),
/ / они были изменены из значений по умолчанию Arduino AVR, чтобы быть в безопасном диапазоне
// общедоступных спецификаций. Хотя это подразумевает, что многие 180°
// сервоприводы не управляют полной разверткой от 0° до 180°, используя их, это также предотвращает
// ничего не подозревающий урон. Для Arduino AVR обсуждается то же самое изменение.
 #define DEFAULT_MIN_PULSE_WIDTH      1000 // некалиброванный по умолчанию, самый короткий рабочий цикл, посылаемый на сервопривод
 #define DEFAULT_MAX_PULSE_WIDTH      2000 // uncalibrated default, the longest duty cycle sent to a servo 
 #define DEFAULT_NEUTRAL_PULSE_WIDTH  1500 // рабочий цикл по умолчанию при подключении сервопривода

Я обнаружил это, когда сервопривод, прикрепленный к ESP8266, двигался только на половину ожидаемого угла, поэтому я изменил библиотеку (сохранив ее как MyServo) и использовал ее вместо этого. Вы должны быть осторожны при этом, так как вы можете снять сервоприводы, если попытаетесь переместить сервопривод за пределы его возможного диапазона.

,

Ну, я очень новичок! Не могли бы вы подсказать мне, как я могу этому научиться? То, что вы сказали, слишком далеко для меня, чтобы понять. ( пожалуйста, потерпите меня). Но я хочу точно знать, что я должен сделать, чтобы не лишать мои сервоприводы ( так на что же должны быть установлены min и max)? Может быть, вы могли бы дать несколько подробных рекомендаций., @Harry


3

В своем вопросе вы ссылаетесь на библиотеку servo. Вы упоминаете диапазоны отображения 0-1023 (диапазон дискретизации вашего потенциометра) и 0-180 (градусы вращательного перемещения среднего сервопривода хобби).

Существует еще одна важная концепция, с которой необходимо ознакомиться, когда вы узнаете о сервоприводах. Это широтно-импульсный модулированный сигнал (ШИМ), который Arduino (или любой другой контроллер) использует для связи с сервоприводом, чтобы установить, какой угол поворота он должен принимать. ШИМ используется несколькими различными способами в электронике, но в этом сценарии он используется в качестве сигнала сервоуправления, а ширина импульса (измеряемая как длительность времени) сообщает сервоприводу необходимый угол. Библиотека, на которую вы ссылаетесь, помогает пользователям переводить углы и длины ШИМ-импульсов. Но под прикрытием сервоприводы всегда (во всяком случае, достаточно близко для нашего разговора) получают сигнал на основе ШИМ.

Еще одним осложняющим фактором является то, что сервоприводы сильно различаются. Существует расплывчатое соглашение, которое гласит, что ширина импульса 1500 микросекунд-это центральное положение, 1000 микросекунд-это минимальный уклон -90 градусов (или 0 градусов, в зависимости от того, как вы на это смотрите), а 2000 микросекунд-это максимум +90 (или 180) градусов. Они соответствуют значениям по умолчанию, которые @Bra1n отмечает в своем ответе. Servo control convention (Диаграмма пользователя Wikimedia Hforesti - https://commons.wikimedia.org/wiki/File:Sinais_controle_servomotor.JPG, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=101951622)

Но эта конвенция все время нарушается. Некоторые сервоприводы способны поворачиваться меньше или больше 180 градусов. Другие используют разную ширину пульса для указания максимального и минимального оборотов. Именно по этой причине библиотека позволяет задавать минимальную и максимальную ширину импульса (выраженную в микросекундах) для конкретного подключаемого физического сервопривода. Это позволяет библиотеке правильно сопоставить свой диапазон перемещения.

Каждый раз, когда вы используете новый тип сервопривода (или рассматриваете возможность его покупки для нового проекта), вам нужно будет посмотреть его техническое описание, чтобы получить важную информацию о том, как работает этот сервопривод.

Еще одна последняя мысль о ловушках для новых игроков: я также видел сервобиблиотеки, которые выражают максимальные и минимальные значения ШИМ сервопривода в диапазоне 0-4096. Некоторые люди также выражают это как % рабочий цикл (смешивая язык тех других целей, для которых я упомянул ШИМ). Знание того, что все это соотносится с шириной импульса ШИМ, полезно для понимания того, как вы узнаете больше о сервоприводах. Удачи вам!

,