Серва MG996r с обратной связью.
- Войдите на сайт для отправки комментариев
Всем привет.
Пытаюсь сделать обратную связь на сервомотор MG996r.
Прочитал статью на Хабре https://habr.com/ru/company/amperka/blog/127773/. Там у автора серва DFRobot, в качестве энкодера стоит переменный резистор. Автор припаял провод на бегунок и меряет напругу на нем.
Я попытался повторить. Какой у меня энкодер не знаю, у Чипа и Дипа похожего не нашел, информации по моему энкодеру не нашел. По аналогии со статьей на Хабре подпоял проводок к среднему выводу энкодера.
Написал скетч где в цикле перебираю угол от 45 до 135 с задержкой 1 сек. (задержка чтобы успеть напругу посмотреть) Запускаю скечт и пытаюсь мерять на напряжение на припаяном проводке, но как только прикасаюсь щупом к проводу серва начинает дергаться.
Что я делаю не так?
.
Вот сам энкодер. По надписям ничего не нагуглилось. Вскрывать не хочу т.к. не разборный, только ломать.
Ну вроде похож на переменный резистор.
Ну стоит полагать, что пытаешься шупать мультиметром чуствительную цепь ОС.
Подключил проводок на аналоговою ногу другой ардуины, земли соединил, получил в сериал порт такие значения:
Нашел свободный аналоговый пин на своей ардуине.
Написал такой скетч:
#include <Servo.h> Servo servo; void setup() { Serial.begin(9600); servo.attach(6); servo.write(45); } void loop() { for (int i = 45; i < 135; i+=5) { servo.write(i); delay(1000); Serial.println(analogRead(7)); delay(1000); } }Получил такие значения в СОМ:
Продолжаем.
Повернул серву в 0, с энкодера получил значение 46. Повернул в 180 - получил 586.
Делаю МАР: 46, 585, 0, 180.
Теперь поворачиваю серву от 0 до 180 градусов с шагом 10.
Вывожу в СОМ данные по обратной связи и получаю значения:
#include<Servo.h> Servo Axis; void setup() { Serial.begin(9600); Axis.attach(8); } void loop() { for (int i = 0; i <= 180; i += 10) { Axis.write(i); delay(1000); Serial.println(map(analogRead(1), 46, 586, 0, 180)); delay(500); } }Инструмент для измерения углов - транспортир.
Вы же измеряете напряжение не совсем точным прибором.
Надо сказать, что серва не совсем точно отрабатывает 180 градусов. Это видно даже без обратной связи. С настройками импульса пока не возились.
Напряжение измеряет сама ардуина, там точность измерения до сотых долей вольта.
---------------------------------
Ну то есть такие расхождения допустимы?
Надо сказать, что серва не совсем точно отрабатывает 180 градусов. Это видно даже без обратной связи. С настройками импульса пока не возились.
Так это не шаговый двигатель, а подруливающая серва для моделизма.
Напряжение измеряет сама ардуина, там точность измерения до сотых долей вольта.
Ну то есть такие расхождения допустимы?
Тут чужого мнения не требуется. Берете осциллограф, садитесь на пин ардуины и смотрите, как там напряжение болтается туда-сюда. Потом смотрите на схему ардуины, в которой земли аналоговой части и цифровой объединены. Делаете выводы.
Григорий, если ты учавствовал, то тебе сюда http://arduino.ru/forum/otvlechennye-temy/razdacha-slonov#comment-554082
Делаете выводы.
Сделал вывод что бОльшего от данной сервы в связке с ардуино не добиться. Спасибо за ответ.
хоббийная серва это не устройство высокоточного позиционирования.
не высокого качества потенциометр на 5 ком не может точно отслеживать положение.
довольно болтающаяся кинематика.
хотите точности - шаговый двигатель с нормальным не дешёвым драйвером.
или сервопривод с энкодером в ос (цена не гуманная и с управлением нужно сурьёзно повозиться)