Технический форум по робототехнике.
torresok » 26 апр 2015, 23:05
Всем привет!
Столкнулся с такой проблемой: есть скетч для управления сервомашинкой.
#include <Servo.h>
int servoPin = 8; // порт подключения сервы
int myAngle; // будет хранить угол поворота
int pulseWidth; // длительность импульса
void servoPulse(int servoPin, int myAngle)
{
pulseWidth = (myAngle * 11) + 755; // конвертируем угол в микросекунды
digitalWrite(servoPin, HIGH); // устанавливаем серве высокий уровень
delayMicroseconds(pulseWidth); // ждём
digitalWrite(servoPin, LOW); // устанавливаем низкий уровень
delay(20); //
}
void setup()
{
pinMode(servoPin, OUTPUT); // конфигурируем пин сервы, как выход
}
void loop()
{
// медленно поворачиваем серву от 0 до 180 градусов
for (myAngle=0; myAngle<=90; myAngle++) {
servoPulse(servoPin, myAngle);
}
delay(1000);
// а теперь обратно
for (myAngle=90; myAngle>=0; myAngle--) {
servoPulse(servoPin, myAngle);
}
delay(1000);
}
На маленьких сервах все отлично работает. Но тут недавно приобрел большую серву (мощную). И начала твориться какая-то фигня. Серва крутится два раза по часовой, три раза против. Как быть? Питание у меня отдельное. Заранее спасибо!
AndreiSk » 26 апр 2015, 23:12
питание отдельное чего? схему как соединяли нарисовали бы тогда, больше пользы
slom » 27 апр 2015, 08:49
может у вас серва постоянного вращения а скетч для сервы от 0 до 180град? и из за этого проблема?
torresok » 27 апр 2015, 10:12
AndreiSk писал(а):питание отдельное чего? схему как соединяли нарисовали бы тогда, больше пользы
Питание для ардуинки с USB, серва с источника питания (от копьютерного блока питания) с общей землей.
Добавлено спустя 5 минут 6 секунд:slom писал(а):может у вас серва постоянного вращения а скетч для сервы от 0 до 180град? и из за этого проблема?
Хм, может быть, не задумался над этим почему-то. Спасибо! А таким сервам можно задавать угол поворота?
slom » 27 апр 2015, 11:05
не знаю, я сам новичок... с такими сервами еще не знаком, слышал только что сервы 360 продолжают движение, а скорость вращения зависит вроде как от заданного угла. тоесть если задали 180 - крутит быстро, если 91 крутит медленно. если 0 то крутит в другую сторону а 90 - стоит.
но я могу ошибаться! а постоянный угол им вроде как не задать! тоесть они по сути как моторы.
Angel71 » 27 апр 2015, 11:36
угол поворота задавать можно будет, если у них есть датчик угла. +управление не ppm/pwm, а какой-нибудь более адекватный протокол. в модельных сервах если и есть, то это будет редкость.
если серве хватает тока, то начинать стоит с указания модели сервы, что бы можно было понять примерно что она из себя представляет. бо 2+ секунды для поворота на "90" градусов скорей всего легко хватает и так поворачиваться не должна. может какой прикол с тем, что подаваемый вами диапазон 755-1745 выходит за пределы. может действительно серва постоянного вращения (читайте в описании или просто прокрутите и посмотрите, есть ли ограничитель угла). может бракованая. и т.д., гадать можно долго.
torresok » 27 апр 2015, 12:00
http://ru.aliexpress.com/item/NEW-MG995 ... dVersion=1 Серва такая. Я сначала подумал, что брак, но их у меня 2 и поведение одинаковое.
Angel71 » 27 апр 2015, 12:08
может и брак, разок было. физическое ограничение угола у неё скорей всего максимум 170-190. диапазон импульсов скорей всего где-то в диапазоне 750-2500. может 750-2000 или 1000-2000 или 750-2250 и т.д. какой угол поворота это уже зависит от схемы и деталей. сделайте тестовый скетч и проверьте диапазон (ну допустим по уарту угол отсылайте и смотрите, как поворачивается). на всякий - для поворота ей нужно постоянно подавать импульсы. в вашем коде после первого цикла стоит задержка, в это время управляющие импульсы не идут и серва соответственно не работает.
torresok » 27 апр 2015, 12:32
только что покрутил качалку, физического ограничителя нет...видимо и вправду машинка постояноого вращения.
Angel71 » 27 апр 2015, 12:39
995я вообще не постоянного вращения, хотя китайцы такие китайцы... любую наклейку налепить могут или просто механика без физического ограничителя. ну тогда попробуйте поуправлять, как сервой постоянного вращения. центр по идеи примерно 1500, она при таких импульсах не должна вращаться. +- в любую сторону это в какую сторону вращать. чем больше разница от 1500 или сколько там у вас, тем быстрей должна вращаться в ту или иную сторону.
torresok » 27 апр 2015, 13:27
а как они определяются? Ну кроме тех.характеристик? Вы написали, что раз MG995, то обычные, это из опыта?
Angel71 » 27 апр 2015, 14:14
кто они?
у оригинальных 995 угол может быть и 180 и 360. у вас с почти единичной вероятность просто какая-то китайская стандартная (чего tower-pro их в x-large записала, я понятия не имею) серва с от балды наклееной наклейкой и что она из себя представляет можно только выяснять.
http://torqpro.com/product/mg995-robot-servo-180-rotation/http://torqpro.com/product/mg995-robot-servo-360-180-rotation/http://torqpro.com/product/mg995r/
Myp » 27 апр 2015, 16:44
torresok писал(а):только что покрутил качалку, физического ограничителя нет...
именно так
и управлять как обычной не выйдет. серва непрерывного вращения не умеет поворачиваться на заданный угол. она тока крутится по часовой или против часовой, или быстро или медленно.
скорей всего это урезанная версия без переменного резистора, может быть её можно переделать на обычную
но проще купить ещё парочку обычных, а эту использовать для других целей, например для колёс робота.
Angel71 » 27 апр 2015, 17:23
они могли просто без ограничителя сделать. я часто встречал наклейки и все запчасти серв по отдельности. чтот мне подсказывает, что некоторые просто набирают запчасти и собирает.
Myp » 27 апр 2015, 21:07
что-то мне подсказывает что даже без ограничителя серва с переменным резистором не будет крутится на два оборота туда и на три сюда)))