Недавно я начал возиться с набором Arduino UNO R3, который я купил некоторое время назад, и я был так раскручен, что решил построить роботизированную руку.
Эта роботизированная рука, которую я нашел на Thingiverse, требует использования 4 серводвигателей. Я купил дешевые моторы SG90 на амазоне. Поскольку для работы этих сервоприводов требуется довольно большой ток, я собираюсь использовать внешний источник питания для их одновременного питания и 16-канальный сервоконтроллер PCA9685.
Теперь ... я пришел к пониманию, что положение рупора серводвигателя можно выбрать с помощью широтно-импульсной модуляции (ШИМ) на частоте 50 Гц, с шириной импульса 1 мс, соответствующей 0°, и 2 мс - 180°, согласно техпаспорту. моего сервопривода SG90.
Тем не менее , я видел, что, поскольку мой двигатель довольно дешевый, может случиться так, что положения сервопривода могут соответствовать немного другой ширине импульса из таблицы данных.
Как я могу точно определить, какая ширина импульса соответствует 0° и 180° с помощью Arduino?
Кроме того, если бы я отправил сервоприводу ширину импульса, меньшую, чем та, которая соответствует 0°, не повредит ли это двигатель?
Большое спасибо!
Как я могу точно определить, какая ширина импульса соответствует 0° и 180° с помощью Arduino?
Вы не можете. Начнем с того, что ни один любительский сервопривод, даже дорогой, не имеет точного хода на 180°. Дешевые сервоприводы почти гарантированно отличаются. Кроме того, некоторая дешевая сервоэлектроника зависит от частоты, поэтому положение 0 при 60 Гц может отличаться от положения 0 при 65 Гц.
если бы я отправил сервоприводу ширину импульса, меньшую, чем та, которая соответствует 0 °, повредит ли это двигатель?
Не должно, по крайней мере, не сразу. Но, скорее всего, сервопривод попытается туда добраться, потребляя довольно большой ток срыва и нагреваясь.
Чтобы ответить на оба ваших вопроса, вам необходимо откалибровать минимальный и максимальный рабочие циклы для каждого сервопривода индивидуально. На сайте Adafruit есть хорошее описание этой процедуры. Когда у вас есть данные калибровки, вы можете пропорционально масштабировать команду управления для каждого сервопривода, чтобы попасть в желаемое положение.
Если вы сомневаетесь, обратитесь к спецификации.
0 градусов = 1,5 мс
-90 градусов = 1 мс
+90 градусов = 2 мс
Вы сообщили об ошибке % на частоте 50 Гц? Показать фактические ошибки. Ошибка может быть вычислена или классифицирована как смещение и/или усиление , в зависимости от допусков компонентов (неуказанных).
тлфонг01
тлфонг01