Серва гудит.
- Войдите на сайт для отправки комментариев
Чт, 20/09/2012 - 22:22
Здраввствуйте. Сервомотор Micro Servo SG90 подключён к vin, gnd и 11 пину arduino UNO. Есть джойстик (+5, gnd, A0), его показания отображаются на серву. Вопрос: если серва шумит - это нормально? Шуметь она начинает пр возвращении джойстика в среднее положение из любого другого, и шумит при повороте джойстика в крайнее ненулевое положение. Шумит около 5-10 секунд, потом прекращает. Вал заметно не дёргается во время шума.
"Дребезг" джойстика убрал - это вижу в консольном выводе (цифры бегут действительно только тогда, когда двигаю джойстик). Кстати, мой метод удаления "дребезга" тоже требует критики. Вот код:
#include <Servo.h> Servo myservo; int potpin = 0; int val; int x = 0; int lastx = 0; void setup() { Serial.begin(9600); myservo.attach(11); } void loop() { x = analogRead(0); if ( x != lastx ) { if ( (lastx-5 > x) or (lastx+5 < x) ) { Serial.print("X: "); Serial.println(x); Serial.println(""); lastx = x; if ( x > 1000 ) { x = 1000; } myservo.write(map(x, 0, 1000, 0, 179)); } } delay(100); }
При использовании потенциометра вместо джойстика поведение сервы аналогично - в крайнем "плюсовом" положении гудит, при возвращении в "центр" гудит.
Это нормально. Внутри сервы - тоже стоит потенциометр. Которым она определяет свое текущие положение. Если оно отличается от того что "скомандовали" в виде PWM - доворачивает в нужноую сторону. И этот потенциометр - тоже "шумит". Вот она и совершат "микро-микро-движения".
Если это "мешает-раздражает", можно програмно, если видите что с джостика какое-то время не меняется сигнал (или меняется меньше какой-то дельты) - делать серве detach - это ее выключит. И "жужать" она перестанет. А когда нужно будет ее повернуть - опять делаете attach.
Но.... раз вы ее выключите, то сопротивлятся внешним помехам - она перестанет. Если на ней висит какой-то груз - он может ее "провернуть". Если же для удрежания позиции ей не требуется прикладывать усилия - смело можно выключать (detach). Еще и на электричестве съекономите :)
Кстати, мой метод удаления "дребезга" тоже требует критики.
Кстати - особо не требует. Работает - да и ладно.
Ну разве проверка в 18-то строке - лишняя. Не мешает, но и смысла не имеет. Она является частным случаем следующей проверки. При х==lastx условие в 19-той строке никогда выполнится не сможет. Следовательно проверять в 18-той строки - лишняя работа.
Но, по запаре, или просто что-бы смотреть "а если ли вообще дребезг" - любой мог написать так же как вы.
Ну и 19-то строке можно слегка более понятной проверку сделать if(abs(x-lastx)>5)
Но... это все уже сугубо потому что вы сказали "требует". Без вашего требования - особо придиратся тут не к чему.
P.S. Ну если уж докапыватся, то еще delay глаз режет. Плохая штука это в реальных задачах. Нет, нет да по лбу и врежет. Тем более что не понятно нафига он тут вообще. Кроме как "давать тупняки" - пользы от него не видно.
Не стал создавать специальную тему, вопрос вот в чем. Пришли мне 2 китайских сервопривода MG946R скачал код (стандартный, вроде на всех ресурсах примерно одно и тоже) загрузил его, подключил серву услышил гул она дернулась и встала, вал вроде не вращался или я просто незаметил. Попытки сменить код ни к чему не привели, разобрал ее смотрю она стоит в крайнем положении и вращению мешает ограничитель, а в обратную сторону она не вращается только вправо. Вытащил среднюю шестеренку и стал подавать питание сам двигатель вращается при подаче питания и потом встает. Как я понял сигнал который идет с ардуино серва не воспринимает. Нашел одну статью в интернете где описано что сервоприводы с правым вращением надо переделать перепаять мстами провода идущие к мотору и потенциометру. Может у меня такая же проблема и серву переделать надо, или может как то програмно можно это сделать?
Я не встречал серв с правым или левым вращением, оказывается есть такие...
http://arduino.ru/forum/obshchii/prezhde-chem-sprosit-pro-servomashinku-...
Действительно возможно если полярность мотора перепутана: серва побежит в одну сторону, потенциометр будет давать всё большее значение рассогласования и она с увеличивающимся упорством уйдёт в самый край.
не по теме просто вспомнилось .а ёщё с помощью одной сервы можно управлять другой (режим копира)простой перекомутацией контролирующих потенциометров
Смена полярности результата не принесла, еще конструктив немного смущает шестеренки некоторые клинят. Вообще на мысль о неправильной полярности натолкнула вот эта статья http://habrahabr.ru/post/167441/. Хотел уточнить а как правильно подключать серву от внешнего БП http://www.cyberforum.ru/attachments/379601d1395508969 вот так? есть аккумулятор на 6 вольт я подсоединял питание сервы к нему а управление на ардуино смотрю тут еще минус надо вместе соединить? Соединить так как на схеме? стабилитрона и конденсаторов нет, но наверно если используется акумулятор 6в то стабилитрон не обязательно? Собственно почему спрашиваю 1 серва при таком подключении задымила. причем задымила именно когда минусы вместе объеденил. :) теперь вместо одной сервы просто двигатель.