atmega32: ШИМ для серводвигателя

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Пн ноя 05, 2012 14:14:30

Сообщение desertkun »

Здравствуйте! Пытаюсь заставить сервомашинку вращаться микроконтроллером atmega32, но она не собирается слушаться, а просто вращается в одну сторону, пока не упрётся.

Как пытаюсь: подаю шим с частотой в 50гц и скважностью от 1/20 до 2/20 (1мс..2мс). Использовал atmega32 с частотой в 4Мгц, с такими настройками таймера1 (делитель /8):

TCCR1A=0x82; // судя по CodeVision, делитель /8 + fast PWM = top
TCCR1B=0x1A;
ICR1H=0x27; // 1CR1 = 9999, по формуле TOP = (частота проца / (делитель * 50гц) - 1 = 4кк / (8 * 50) = 4кк / 400 - 1 = 10000 - 1
ICR1L=0x0F;

Чтобы достичь 1..2мс OCR1A кручу от 500 до 1000, к сожелнию, реально измерить вывод не могу, но осциллограф протеуса говорит, что все ок

Изображение

Не могли бы вы подсказать, в чем может быть проблема?
Модель машинки: SM-S3317SR

Спасибо!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

А если управлять потенциометром (это для проверки работоспособности привода)? Может 50Гц маловато или нужно RC-фильтр поставить.
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Пн ноя 05, 2012 14:14:30

Сообщение desertkun »

К сожалению доступа к потенциометру не имею, да и перепробовал 4 сервомашинки, на всех одинаковый результат.
Engineer_Keen писал(а):Может 50Гц маловато или нужно RC-фильтр поставить.
Я, конечно, извиняюсь, но какая частота тогда нужна, если 50гц описано везде где я находил.
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

А как понять вот эту фразу:
desertkun писал(а):Пытаюсь заставить сервомашинку вращаться микроконтроллером atmega32, но она не собирается слушаться, а просто вращается в одну сторону, пока не упрётся.
Так она вращается или нет,и что она должна делать когда упрётся?
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Пн ноя 05, 2012 14:14:30

Сообщение desertkun »

Vov123 писал(а):Так она вращается или нет,и что она должна делать когда упрётся?
Неправильно выразился, хочу изменить угол поворота, просто повернуть на любой допустимый угол. А вместо этого она просто бесконечно поворачивает в одну сторону, пока не наткнется на ограничитель.
Реклама
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

В смысле нажал на кнопку - включилось,отпустил - выключилось?
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Пн ноя 05, 2012 14:14:30

Сообщение desertkun »

Нет, пишу в регистр OCR1A значение от 500 до 1000 (до этого там был ноль, соотв. скважность = 1 и сигнала нет, и машинка стоит) но она вместо того, чтобы переместиться на угол, соотв. длине импульса просто крутится в одну сторону, пока не упрётся, независимо от значения, которое я туда записал.
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

desertkun писал(а):К сожалению доступа к потенциометру не имею
Дома нет ни одного сломанного/ненужного девайса с резисторным регулятором?
desertkun писал(а):да и перепробовал 4 сервомашинки, на всех одинаковый результат.
Ну раз результат одинаковый, то скорее всего все сервы исправны.
desertkun писал(а):Я, конечно, извиняюсь, но какая частота тогда нужна, если 50гц описано везде где я находил.
Да без понятия :))) Но поэкспериментировать никто не запрещает. Для начала делитель на 8 убрать. Ну и еще вольтметром встать на вывод контроллера и проверить, действительно ли там напряжение соответствует 1/20 (ну или сколько у вас там)...
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Боюсь у вас не верное представление о шим и серводвигателях.Шим-ом регулируется среднее действующее значение тока в нагрузке,а серводвигатель будет вращаться до тех пор пока к нему приложено напряжение.Для того что вы хотите сделать,надо использовать шаговый двигатель.
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Пн ноя 05, 2012 14:14:30

Сообщение desertkun »

Engineer_Keen писал(а):Дома нет ни одного сломанного/ненужного девайса с резисторным регулятором?
Ага :(
desertkun писал(а):Да без понятия :))) Но поэкспериментировать никто не запрещает. Для начала делитель на 8 убрать. Ну и еще вольтметром встать на вывод контроллера и проверить, действительно ли там напряжение соответствует 1/20 (ну или сколько у вас там)...
Подключал светодиод, он менял яркость в зависимости от скважности, но проверить вольтметром не додумался, спасибо, попробую!
Но только делитель убрать не могу, мега работает на частоте в 4мГЦ, следовательно TOP должен будет быть = (частота проца / (делитель * 50гц) - 1 = 4кк / 50 = 4кк / 50 = 80000, что не помещается в два байты первого таймера.

UPD:
Vov123 писал(а):Боюсь у вас не верное представление о шим и серводвигателях.Шим-ом регулируется среднее действующее значение тока в нагрузке,а серводвигатель будет вращаться до тех пор пока к нему приложено напряжение.Для того что вы хотите сделать,надо использовать шаговый двигатель.
Ну я-то делал по десяткам статей, например тыц (pdf), судя по ней и прочих похожих шим отлично дружит с сервами.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

desertkun писал(а):SM-S3317SR
:))) это сервомотор непрерывного вращения. Вот кусок из его описания с сайта производителя:
It is not normally used as an actuator, as there is no way of commanding it to move to a particular position, as a standard RC servo does.
Перевод : "Его не используют в качестве актуатора, поскольку при управлении нет возможности указать его положение, так как это обычно происходит в стандартных RC(radio controlled?) сервомашинках"
Ставим плюсы: )
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Да дружить,то дружит,но по другому.Будет вращаться быстро или медленно,но чтобы остановился,надо снять напряжение.
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Пн ноя 05, 2012 14:14:30

Сообщение desertkun »

ibiza11 писал(а):
desertkun писал(а):SM-S3317SR
:))) это сервомотор непрерывного вращения.
Лажанулся, не уточнил. Это один из четырех имеющихся сервоприводов. Два из них — непрерывного вращения, да, но два — вполне себе с ограничителями. К сожалению, сейчас уточнить модель остальных не могу, но за помощь спасибо.
Vov123 писал(а):Да дружить,то дружит,но по другому.Будет вращаться быстро или медленно,но чтобы остановился,надо снять напряжение.
Разве этим не контроллер внутри движка занимается, чтобы знать, когда остановится, судя по потенциометру внутри?
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Не знаю,с такими дела не имел.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

вот еще оттуда же
The 3210 continuous rotation servo converts RC servo position pulses into continuous rotation speed. The default rest point is 1.5 ms, but this can be adjusted by using a small slotted screwdriver to turn the middle-point positioner (see the Mechanical Drawing). Pulse widths above the rest point result in counterclockwise rotation, with speed increasing as the pulse width increases; pulse widths below the rest point result in clockwise rotation, with speed increasing as the pulse width decreases.
это значит, что при определенной (настраиваемой отверткой) величине импульса серводвигатель меняет направление вращения.
Ставим плюсы: )
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Пн ноя 05, 2012 14:14:30

Сообщение desertkun »

ibiza11, нашёл имена оставшихся двух сервомашинок (еще одна такая же, как и в первом посте): SM-S3317S и SM-S4303R. Не могли бы вы подсказать, являются ли эти машинки такого же типа? (Не могу найти соотв. инфу). Спасибо!
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

первая ссылка в гугле
The SM-S4303R continuous rotation servo converts standard RC servo position pulses into continuous rotation speed. The default rest point is 1.5 ms, but this can be adjusted by using a small slotted screwdriver to turn the middle-point positioner. Pulse widths above the rest point result in counterclockwise rotation, with speed increasing as the pulse width increases; pulse widths below the rest point result in clockwise rotation, with speed increasing as the pulse width decreases. Note that this is the reverse of what is described in the datasheet.
видать вы вообще не искали
Ставим плюсы: )
Ответить

Вернуться в «AVR»