Почему Arduino использует диапазон ШИМ от 544 до 2400?
В школе я узнал, что типичные сервоприводы используют простую систему ШИМ для управления сервоприводом. Для этого мы сгенерируем импульс длительностью 1000 мс, чтобы установить сервопривод на 0 градусов, и импульс 2000 мс, чтобы установить его на 180 градусов. Простые основы, не так ли?
Недавно я попытался настроить свой HS-311 с этими значениями и обнаружил, что сервопривод движется менее чем на 90 градусов.
Я переключился на библиотеку Servo.h
, и она работала нормально. Я заглянул в файл Servo.h
и обнаружил следующее:
#define MIN_PULSE_WIDTH 544 // самый короткий импульс, отправленный на сервопривод
#define MAX_PULSE_WIDTH 2400 // самый длинный импульс, отправленный на сервопривод
#define DEFAULT_PULSE_WIDTH 1500 // ширина импульса по умолчанию при подключенном сервоприводе
544? 2400? Откуда эти цифры?
Я просмотрел старая таблица данных для этого сервопривода и найдена
OPERATING TRAVEL: 40�/ONE SIDE PULSE TRAVELING 400usec
DIRECTION: CLOCK WISE/PULSE TRAVELING 1500 TO 1900usec
Трудно сказать, что означают цифры, но они определенно не от 1000 до 2000!
Затем я взглянул на спецификации на servocity.com и увидел:
Max PWM Signal Range 575-2460μsec
Это соответствует исходному коду Servo.h
!
Что здесь происходит? Производители обычно выходят за пределы диапазона 1000–2000 мкс? Эти значения, которые я вижу, намного превышают то, что я считаю приемлемыми допусками. Помогите, пожалуйста, разобраться, откуда взялись эти цифры!
@DSdavidDS, 👍6
Обсуждение1 ответ
Arduino очень терпим к пользователю. Некоторым пользователям может потребоваться немного выйти за пределы стандартного диапазона, поэтому он расширен на 400 мкс в обоих концах.
- Tower Pro MG996R сервопривод с высоким крутящим моментом 180 °, управляющий с помощью Arduino
- Как заставить сервопривод вращаться на угол больше 180°
- Пповорот сервопривода на 90 градусов
- Как синхронно управлять двумя сервоприводами?
- Ошибка "Servo" does not name a type
- Библиотека плавного сервоуправления
- Подключение Arduino к сервоприводу с внешним источником питания
- Мой сервопривод не работает плавно
IIRC первые модели таких сервоприводов появились в 70-х годах, около 50 лет назад. По крайней мере, один производитель использовал низкие импульсы в отличие от других брендов. Диапазон ширины импульса также не был стандартизирован. Так что эти вариации могут быть исторически необходимыми, или неизбежным разным качеством продукции, или просто попыткой выйти за рамки. Но поскольку я не эксперт, это всего лишь комментарий, а не реальный ответ... Возможно, вы захотите начать исследование по этому вопросу. ;-), @the busybee
Вы можете изменить это на «Почему Servo...» или что-то в этом роде. Большинство людей, читающих текущий заголовок, вероятно, подумают, что речь идет об
analogWrite()
., @timemageНет, он использует 2 мс, 1 мс и 1,5 мс, чтобы пройти где-то около 90 градусов. 1000 и 2000 — это микросекунды, а не миллисекунды., @Theo Moelich