roboforum.ru

Технический форум по робототехнике.

 

DC Servo Controller(makerbot)

Резисторы, транзисторы, конденсаторы, микросборки, чип компоненты ...
Вопросы согласования управляющих модулей с периферией.

Re: DC Servo Controller(makerbot)

Сообщение ilalexey » 08 июл 2011, 11:38

токарь свой есть?
Как вариант - прикрепить всё на соплях, накупить алюминия брусков и сделать капитальное.

Добавлено спустя 2 минуты 50 секунд:
последней фразы не понял. ведь к ком порту подключаемся пока

Добавлено спустя 19 минут 39 секунд:
луче не намного стало. появились цифры введеные в терминале. привецтвенное сообщение появляется после ввода "е". цифры отправляются и выводятся в одну строчку. двиг на их не реагирует. реагирует на е со 150го раза, как и раньше
----
Тут был? http://www.openservo.com/viewcvs/OpenServo/AVR_OpenServo_V3/?root=cvs
Аватара пользователя
ilalexey
 
Сообщения: 1421
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

Re: DC Servo Controller(makerbot)

Сообщение linvinus » 08 июл 2011, 12:30

Ну как крепить я примерно знаю.

>последней фразы не понял. ведь к ком порту подключаемся пока
да пока отлаживаем, а если ты захочешь подключить к reprap то не будет работать т.к. Ожидает рабочего соединения по com порту.

Добавил ручной режим, http://pastebin.com/QbM9d9Gd
команда m
m
затем
123<enter>

Да там я был. Я этот проект хорошо изучил.
Но там управление другое, там подаётся чёткая команда на сколько повернуться, и за какое время.

Добавлено спустя 26 секунд:
e
m
123<enter>
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1581
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: DC Servo Controller(makerbot)

Сообщение ilalexey » 08 июл 2011, 12:46

попрежнему ничего не шевелится. даже леды молчат
может изза этого? - 102...analogWrite(MOTOR_SPEED_PIN, motor_speed);
про ссылку - там вроде пид как-то реализован
Вложения
terminal.PNG
terminal.PNG (7.75 КиБ) Просмотров: 757
Аватара пользователя
ilalexey
 
Сообщения: 1421
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

Re: DC Servo Controller(makerbot)

Сообщение linvinus » 08 июл 2011, 13:04

У тебя что то не то с терминалом.
вот как должно быть.

Код: Выделить всёРазвернуть
Добро пожаловать в minicom 2.5

ПАРАМЕТРЫ: I18n
Дата компиляции Feb  5 2011, 06:31:35.
Port /dev/ttyUSB0

Нажмите CTRL-A Z для получения подсказки по клавишам                                                                   
                                                                                                                       
A                                                                                                                     
MakerBot DC Servo Controller v1.0                                                                                     
newEnable=1                                                                                                           
manual_mode=1
123
motor_speed=123


попробуй нормальный терминал, например http://linsovet.com/putty-check-serial-port

Добавлено спустя 6 минут 14 секунд:
Блин, дошло, что я сразу не догадался ты через терминал ардуино иде никак не отправишь enter! =))))))))))))))))))
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1581
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: DC Servo Controller(makerbot)

Сообщение ilalexey » 08 июл 2011, 15:06

не, через энтер отправлял
в пути заработало, хоть и кривенько. Такое впечатление, что скорость или шаги(с шагами раньше было) подаётся, а двиг на удержании и только толчки делает, но не сдвигается.
когда s подаю скорость 0 всёравно. ставлю 250, потом с - сбрасывает на 0. те оно шагать и не должно при 0 скорости?

Добавлено спустя 4 минуты 8 секунд:
255s ввёл - сработало. Но опять на удержании стоит

Добавлено спустя 1 час 4 минуты 53 секунды:
а почему нигде не указано что "вот это" 1042 позиции, а "вот это" один шаг?
..или что-то в таком духе

Добавлено спустя 44 минуты 25 секунд:
на 158й строчке 100 поставил. "255s" шагает, но до определённого момента и только в одну сторону, не взирая на а и д. потом делает прокрутку
Аватара пользователя
ilalexey
 
Сообщения: 1421
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

Re: DC Servo Controller(makerbot)

Сообщение linvinus » 11 июл 2011, 09:08

Вот что у меня получилось.

Энкодер стоит на первой шестерне которую вращает двигатель, от неё до колеса ещё три понижающих шестерни.
Для видео сделал шаг +10, если сделать +1 то будет очень медленно.
Крутится нормально в обе стороны.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1581
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: DC Servo Controller(makerbot)

Сообщение ilalexey » 11 июл 2011, 14:06

круто.
а как ты настраивал?
Аватара пользователя
ilalexey
 
Сообщения: 1421
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

Re: DC Servo Controller(makerbot)

Сообщение linvinus » 11 июл 2011, 14:40

Вот я поправил код по аналогии со своим.
http://pastebin.com/0sr6qdp1 http://pastebin.com/BjB70ZRH

1) у меня слабый источник питания, поэтому чтобы просто сдвинуть шестерни с места мне нужно подать сигнал pwm 220 это 88% от максимальной мощности.
поэтому у меня двигатель сильно не разгоняется :)

2) данные у меня не с вала двигателя а с шестерни которую он вращает, не помню точное передаточное число, для определённости пусть будет 4.
но т.к. У тебя редуктора нет, то имеет смысл делать шаг не на 1 значение энкодера, а на 10. т.е. За один шаг будет 10 значений энкодера, тебя это пока волновать не должно. за это отвечает константа #define STEP_SIZE 10

3) подбери значение PWM при котором двигатель начинает вращаться, обычно это очень ярко выраженная точка.

в исходнике поправь значение #define MOTOR_START_PWM 50
у меня это значение 220, но у тебя должно быть меньше.

ещё я добавил обнуление счётчиков если они равны в течение 4х циклов. Это должно предотвратить спонтанное прокручивание после превышения максимального значения +-32677.

т.е. Твои действия:
1) в ручном режиме задаёшь скорость и смотришь при какой начинает вращаться, затем записываешь это число на единицу меньше в MOTOR_START_PWM

2)перепрошиваешь

3) теперь запускаешь в автоматическом режиме, задаёшь только шаг, кнопка s
кнопка d должна менять направление для шага s

Добавлено спустя 9 минут 59 секунд:
от reprap пока работать не будет! Я закоментировал //dir = digitalRead(DIR_PIN);

Добавлено спустя 3 минуты 28 секунд:
в коде была маленькая ошибка, вот обновление http://pastebin.com/BjB70ZRH
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1581
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: DC Servo Controller(makerbot)

Сообщение ilalexey » 11 июл 2011, 15:26

что-то я совсем туплю..
при наборе скорости мотор сдвигается на 106-107. выставил на 105
D ничего не переключает. всё время Dir=0
S первый раз ввожу - делает прокрутку, затем дрожит на месте.
Дальше s не шагает

Добавлено спустя 3 минуты 51 секунду:
может так?:
Код: Выделить всёРазвернуть
if (distance > 255)
  motor_speed = MOTOR_START_PWM;
else
  motor_speed = 255 + distance;
Аватара пользователя
ilalexey
 
Сообщения: 1421
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

Re: DC Servo Controller(makerbot)

Сообщение linvinus » 11 июл 2011, 15:47

Я так и не понял
У тебя получается вращать двигатель с разной скоростью как описано тут forum11/topic10232-45.html#p211502 ???

т.е. Ты должен задавать скорость 123<enter> и она должна устанавливаться
единственное, судя по коду не нужно вводить e
т.е.
достаточно
m
123<enter>
двигатель должен вращаться со скоростью 123
затем если ты наберёшь
200<enter> то двигатель должен начать вращаться быстрее.

Это что касается определения PWM с которого начинает вращаться двигатель.

Чтобы задавать шаги нужно выполнить
sssss....

dssss ... должно поменять направление вращения, чтобы сделать 1 шаг нужно два раза нажать s

я надеюсь ты это всё в путти делаешь?

Добавлено спустя 1 минуту 38 секунд:
dir=0 :) да значение менялось но всегда показывало 0 исправил http://pastebin.com/H4jy4S5T

Добавлено спустя 2 минуты 16 секунд:
ilalexey писал(а):Добавлено спустя 3 минуты 51 секунду:
может так?:
Код: Выделить всёРазвернуть
if (distance > 255)
  motor_speed = MOTOR_START_PWM;
else
  motor_speed = 255 + distance;


Нет это савсем не верно!

motor_speed максимум 255! Там всего 8мь разрадов.
если ты запишешь больше то будет ((255 + distance)-255)

Добавлено спустя 3 минуты 41 секунду:
У меня distance всегда равно 1
т.е. Мотор "шагает" без ошибки! на ролике в обратную сторону он идёт мгновенно.
т.е. два раза s = 1 шаг мотора, ни больше ни меньше. d меняет направление и всё тоже самое два раза s = 1 шаг мотора
никаких пропусков шагов.

Добавлено спустя 6 минут 11 секунд:
Я добавил больше информации когда шаг делать будешь
http://pastebin.com/GwW4Jf7V
так должно быть понятнее, но учти что каждый второй раз target на 1 меньше будет показываться.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1581
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: DC Servo Controller(makerbot)

Сообщение ilalexey » 11 июл 2011, 15:49

делаю в путти. сначала скорость так и набиралась(как запланированно). теперь вращение и опять удержание с дрожью
Такое впечатление, что где-то какието артефакты жизни не дают.
Может такое быть изза отсутствия электролита на энкодере(с гнд на вкк)?
Аватара пользователя
ilalexey
 
Сообщения: 1421
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

Re: DC Servo Controller(makerbot)

Сообщение linvinus » 11 июл 2011, 16:04

Дрожать оно должно, в этом нет ничего страшного, но вот на шаг в автоматическом режиме, оно должно реагировать в любом случае.
попробуй последнюю версию + твоё значение START_PWM?
там же если в момент дрожания введёшь s то должен увидеть текущую позицию и назначение.

Добавлено спустя 9 минут 50 секунд:
Алгоритм такой:
когда manual_mode=0

когда значение newStep переключается с 0 на 1 происходит добавление к target+=STEP_SIZE;
далее программа сравнивает
if (position_tmp > target) текущая позиция больше назначения значит, крутим в обратную сторону со скоростью motor_speed = MOTOR_START_PWM + distance;
if (position_tmp < target) текущая позиция больше назначения значит, крутим в прямую сторону со скоростью motor_speed = MOTOR_START_PWM + distance;
иначе position_tmp == target мы достигли места назначения, выключаем двигатель.

но двигатель может не остановиться! Тогда он перелетит и начнётся всё по новой. поэтому он может дёргаться, но в окрестности текущего положения.
если, пока он дёргается, дать ещё один шаг, то должен дёргаться в окрестности нового положения и т.д.

Так же , если в установившемся режиме попробовать сдвинуть вал двигателя он сам должен вернуться в точку назначения! Т.е. Он должен сопротивляться, если его пытаться крутить.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1581
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: DC Servo Controller(makerbot)

Сообщение ilalexey » 11 июл 2011, 16:08

судя по выводу инфы всё шагает и дир переключается.
но сам вал дрожит на месте. при шагании дёргается и становится обратно
Код: Выделить всёРазвернуть
A
MakerBot DC Servo Controller v1.0
newStep=1  target=0 position=0
newStep=1  target=-10 position=32742
newStep=1  target=-20 position=32749
newStep=1  target=-30 position=32748
newStep=1  target=-40 position=-32751
newStep=1  target=-50 position=-32748
newStep=1  target=-60 position=-32756
newStep=1  target=-70 position=-32749
newStep=1  target=-80 position=32751
newStep=1  target=-90 position=-32750
newStep=1  target=-100 position=-32752
Dir=1
Dir=0
Dir=1
newStep=1  target=-110 position=-32758
newStep=1  target=-100 position=-32754
newStep=1  target=-90 position=-32765
Аватара пользователя
ilalexey
 
Сообщения: 1421
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

Re: DC Servo Controller(makerbot)

Сообщение linvinus » 11 июл 2011, 16:43

нет не похоже это на нормальную работу.
во первых target должно быть равно position, и в идеале оно настолько быстро отрабатывает что большую часть времени должно быть 0.
смени один раз dir , target должен изменяться в другую сторону.

а попробуй поменять направления при вращении?
Код: Выделить всёРазвернуть
        //super primitive control of the motor.
        if (position_tmp > target)
        {
            digitalWrite(MOTOR_DIR_PIN, LOW);
            analogWrite(MOTOR_SPEED_PIN, motor_speed);
        }
        else if (position_tmp < target)
        {
            digitalWrite(MOTOR_DIR_PIN, HIGH);
            analogWrite(MOTOR_SPEED_PIN, motor_speed);
        }
        else
        {
            digitalWrite(MOTOR_DIR_PIN, HIGH);
            digitalWrite(MOTOR_SPEED_PIN, LOW);
        }


Добавлено спустя 3 минуты 58 секунд:
или проще выводы мотора поменять местами :)

Добавлено спустя 10 минут 39 секунд:
Dir влияет только на приращение target.
остальное работает в автоматическом режиме и всегда стремится уравнять target и position.
при условии что мотор крутится в верном направлении, если направление вращения мотора реверсивное то контроллер войдёт в резонанс.
R3 forum87/topic15337.html
R2 roboforum.ru/forum102/topic13980.html
R4 roboforum.ru/post336339.html#p336339
Делать надо хорошо - плохо получится само!
Аватара пользователя
linvinus
 
Сообщения: 1581
Зарегистрирован: 29 апр 2011, 12:37
Откуда: Москва
прог. языки: С

Re: DC Servo Controller(makerbot)

Сообщение ilalexey » 11 июл 2011, 17:06

ЗАРАБОТАЛО!! :Yahoo!:
шагает и туда и сюда
иногда попадает в положения, в которых ему какбы трудно крутить и он не шагает туда, а доползает. Наверно это может ещё быть связано со сборкой на соплях энкодер/двиг
пс: поменял код, а не ноги
Аватара пользователя
ilalexey
 
Сообщения: 1421
Зарегистрирован: 13 май 2011, 21:37
Откуда: Bb

Пред.След.

Вернуться в Электроника, электротехника

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Mail.ru counter