roboforum.ru

Технический форум по робототехнике.
Текущее время: 20 май 2025, 23:55

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: программноое ШИМ управление кучей серв
СообщениеДобавлено: 09 мар 2008, 02:38 
Не в сети
Аватара пользователя

Зарегистрирован: 04 май 2006, 20:50
Сообщения: 35
Откуда: Тосно (около Питера)
есть задача управления 12 сервомоторами(как минимум). так как аппаратно на 128 меге я этого сделать не смогу, то прийдется программно. искал по теме и ничего подходящего не нашел. если по тупому то возможно сделать примерно так, если не ошибаюсь:

...
PA.1=1;
DELAY 2 ms;
PA.1=0;
DELAY 20 ms;
...


но меня не совсем устраивает этот вариант, так как при работе всех 12 сервомоторов, а в будущем их количество планирую увеличить, это значительно снизит быстродействие контроллера и может вызвать неправильную работу приводов, что по программе недопустимо. по идее мне вобще необходимо одновременно контролировать все сервомоторы, но на практике можно ограничиться и чем нибудь более скромным.

вопрос в том, КАК можно более быстро организовать все это хозяйство? так как при управлении 12ю сервами накапливается погрешность около 12*22*0.001=0.264 секунды.
а скорость реакции стандартной сервы - 60 градусов за 0.15 секунды, что вообще недопустимо. устроило бы меня, чтобы полный цикл(чтобы прога успевала "пройтись" по всем сервомоторам) составлял 0.0025(время поворота на 1 град) сек - на крайняк 0.0030, но не больше(эта цифра связана с тем, что критическая точность изменения угла сервы - 1 градус, если за 1 цикл я буду изменять угол поворота сервы больше чем на 1 градус, то у меня сервы начнут двигатьсям не в соответствии с прогой, хотя и будут в итоге становиться в те положения, которые ей послала прога). если кому непонятно, то я нарисую. кварц стоит у меня на 16 МГц. есть вариант прицепить к моей меге еще несколько,как раз таки для контроля моих привов, но мне этот вариант кажется несколько варварским :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 09 мар 2008, 09:13 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Управление кучей серв у меня уже реализовано вот здесь: [[Шлюз-контроллер GATE-A8D8M2]] и [[Шлюз-контроллер GATE-A8D16]].

Если коротко по сути - вешаемся на прерывание по таймеру и каждый момент времени (очередные 2мс) рулим парой серв или отдыхаем (в прерывании заводим счётчик, который сбрасываем 50 раз в секунду, чтобы обеспечить требуемую частоту ШИМа для серв 50Гц. При этом рулим парой серв таким образом - если сейчас только начинаем рулить этой парой, тогда выдаем 1 на выходы, а затем когда нужно - ставим обратно 0.

Теперь по вашим необоснованным требованиям по времени: "устроило бы меня, чтобы полный цикл (чтобы прога успевала "пройтись" по всем сервомоторам) составлял 0.0025сек". Тут вообще полная ерунда :) естественный цикл управления сервы - 50Гц = 0.02сек, быстрее делать смысла нет, потому что сервы из-за протокола не имеют возможности получить эту информацию от МК. Мой метод обеспечивает эту максимальную производительность без каких-бы то ни было проблем.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 09 мар 2008, 14:05 
Не в сети
Аватара пользователя

Зарегистрирован: 28 ноя 2005, 12:05
Сообщения: 583
Откуда: Москва
Возможный вариант управления:
Создаем таблицу в ОЗУ (256 байт)
каждый бит байта отвечает за работу отдельной сервы

цикл выглядит так:
ждем 1 ms
начинаем выводить в порт значения таблицы из ОЗУ каждые 1 ms / 256 = 4мкс
ждем 0,5ms

колгда нужно изменить работу какой-то сервы - вносим изменения в таблицу


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 09 мар 2008, 15:31 
Не в сети
Аватара пользователя

Зарегистрирован: 04 май 2006, 20:50
Сообщения: 35
Откуда: Тосно (около Питера)
хмм... интересная очень схемка. НО я пока что с подобными вещами знаком не очень глубоко на уровне программа - железо, а результата хочется сейчас :oops: . пока спал, подумал, что для моих познаний идеально подойдет след вариант:

тупо и банально вешаю к каждой серве микросхемку-ШИМ контроллер, и управляю уже непосредственно мелкосхемкой. тут момент такой: а вообще существуют такие микросхемки? главное требование - небольшой размер, хотя если нет никаких, то пойдут и здоровые. КТО нибудь знает такие микросхемки? и если нет то где их можно поискать? и если да то как именно они работают и как называются?


а вот насчет таблицы я подумаю...

иеще вопрос. возможно ли, чтобы время от импульса до импульса на мою серву было чуть больше 20ms? скажем, 21-22? не откажется ли серва правильно работать при таком раскладе? и еще: ms - это миллисекунды или микро? :oops:


Последний раз редактировалось Темыч 09 мар 2008, 15:37, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 09 мар 2008, 15:35 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Тёмыч, я вас уверяю, быстрее разобраться с одним из двух предложенных решений, чем городить то, что вы предлагаете.
Либо вообще мою прошивку взять и частично внедрить в свой МК.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 09 мар 2008, 15:57 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Ну програмку то несложно написать, аппаратно рулить или нет, всеравно можно если просто знать принцип действия. Главное читать даташит внимательно, и искать в гугле этот велосипед) А вообще лучше готовым воспользоваца, как у =Dead=


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 09 мар 2008, 16:39 
Не в сети
Аватара пользователя

Зарегистрирован: 04 май 2006, 20:50
Сообщения: 35
Откуда: Тосно (около Питера)
лан. все понял. и последний вопрос: можно ли делать промежутки но 20 мс, а чуть чуть больше?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 09 мар 2008, 17:28 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Темыч писал(а):
лан. все понял. и последний вопрос: можно ли делать промежутки но 20 мс, а чуть чуть больше?

чуть-чуть больше можно, там вроде в пределах нескольких герц в обе стороны серва нормально реагирует, а потом её начинает плющить. :shock:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 11 мар 2008, 10:57 
Не в сети
Аватара пользователя

Зарегистрирован: 28 янв 2008, 09:27
Сообщения: 78
Откуда: Россия
На каждую серву повесить восьми-ногую Tiny. Тюнька ждет сигнал от главного процессора (mega), есть сигнал - включить ШИМ, нет сигнала - Выключить.

_________________
Мои странички в интернете: http://groversuper.ucoz.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 11 мар 2008, 11:09 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Grover писал(а):
На каждую серву повесить восьми-ногую Tiny. Тюнька ждет сигнал от главного процессора (mega), есть сигнал - включить ШИМ, нет сигнала - Выключить.

Всё давно придумано до вас - http://www.openservo.org/, только нифига это не дёшево будет и геммороя нахаваетесь.
Без особой нужды лучше так не извращаться.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 11 мар 2008, 15:00 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Да купить PWM контроллер и не парица.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 11 мар 2008, 17:27 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Сергей писал(а):
Да купить PWM контроллер и не парица.

Я не понимаю чем интерфейс с PWM-контроллером проще управления программного сервами :oops:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 11 мар 2008, 20:13 
Не в сети
Аватара пользователя

Зарегистрирован: 19 июн 2005, 18:27
Сообщения: 1576
Откуда: Камышин
http://www.lynxmotion.com/Product.aspx? ... egoryID=52

Воть... :)
там контроллер на 32 сервы, можно купить, а можно самому сваять - имеюцо и схема и описалово и исходники и софт для управления с компа - открытый проект одним словом :wink:
основа мега8(168) + сдвиговые регистры копеечные + мах232


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 11 мар 2008, 20:34 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
А вот ты попробуй написать софт для аппаратного управления сервами для какогонить МК и програмное управление, и сразу почуешь разницу)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: программноое ШИМ управление кучей серв
СообщениеДобавлено: 11 мар 2008, 20:55 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
FireFly писал(а):
имеюцо и схема и описалово и исходники и софт для управления с компа - открытый проект одним словом :wink:

Так и я выше привёл свой открытый проект тоже, видимо не нравится чего-то... :)

Добавлено спустя 44 секунды:
Сергей писал(а):
А вот ты попробуй написать софт для аппаратного управления сервами для какогонить МК и програмное управление, и сразу почуешь разницу)

Ээээ.... вроде пробовал, и что? Наверное я безчувственный какой-то? :oops:

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO