Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
02.04.2012, 23:54
|
|
Временная регистрация
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Управление Сервой Mg995 Через Аппаратный Шим
Всем привет.
Есть необходимость крутить сервопривод, в наличии есть 2шт Tower Pro MG995 (Digital servo)
Управлять собираюсь через Хардверный ШИМ (юзаю PIC16f73) Другие варианты мне просто не подходят, мк нужно задействовать на другие целы нежели генерировать Программный ШИМ
Для положения 90градусов генерю ШИМ частотой 50 гц и длительностью импульсов 1500us
HPWM 1,19,50
(пишу на PicBasic )
скважность 19 получил вот так (1500/20000*255) Кварц 4mhz
Серва поворачивается и занимает нужное положение, однако когда она его занимает она начинает "Жужжать" как бы вибрировать и гудеть, как-будто она пытается вращаться и что-то ей мешает..
что у меня может быть не так?
И насколько это парвильно управлять сервой аппаратным ШИМ?
программный ШИМ через PULSOUT работает идеально.
|
|
|
|
03.04.2012, 12:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Управление Сервой Mg995 Через Аппаратный Шим
Аппаратный ШИМ не дает меньше 244Гц из-за делителя при такой тактовой частоте. Может, потому и жужжит... У меня маленькая серва уже на 100Гц почти не работала.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
04.04.2012, 09:37
|
|
Временная регистрация
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Управление Сервой Mg995 Через Аппаратный Шим
хм... На самом деле я пытался и 300 герц, мне казалось что серве больше важна длинна импульса чем частота, но эффект одинаковый..
Нашел на забугровых форумах некоторые комментарии что аппаратным ШИМ обычно сервами не управляют так как это сложно. А почему так и не понял. И еще не понимаю а как быть если надо управлять 2мя сервами например
|
|
|
|
04.04.2012, 10:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Управление Сервой Mg995 Через Аппаратный Шим
да хоть 10 - как программно управляют десятками светодиодов на портах МК?
синхронно выдают на выходы МК образы по прерыванию таймера. образы готовят в основном теле
|
|
|
|
04.04.2012, 13:54
|
|
Временная регистрация
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Управление Сервой Mg995 Через Аппаратный Шим
Я по правде говоря не пробовал упралвять несколькими.
Вот какой момент не понятен.
Я управляю одной вот так (код образный)
в теле
PHP код:
|
PULSOUT b.0 1500us PAUSE 20000us
|
Если я вставлю в тело импульс на вторую серву
PHP код:
|
PULSOUT b.0 1500us PULSOUT b.1 1200us PAUSE 20000us
|
то первая серва будет получать импульс уже не каждые 20мс а 20+1,2мс
это не скажется на работе?
|
|
|
|
04.04.2012, 15:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Управление Сервой Mg995 Через Аппаратный Шим
например, у вас программный шим - период 20мс, число ступеней 200.
тогда:
- делаем программный счетчик ШИМ на 200;
- таймер настраиваем на 100мкс;
- в прерывании таймера выводим "образы" портов, обрабатываем счетчик ШИМ;
- в основном теле выполняем подготовку "образов", математику и т.д.
параллельно можно хоть десяток обработать
|
|
|
|
04.04.2012, 17:12
|
|
Временная регистрация
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Управление Сервой Mg995 Через Аппаратный Шим
не совсем понял... то есть вместо такого подхода
PHP код:
|
PULSOUT b.0 1500us
PAUSE 20000us
|
вы имеете ввиду подавать и гасить импульс по счетчику?
например
PHP код:
|
переменная=0
тело
{
если переменная=0 то b.0=1
если переменная =15 то b.0=0
пауза 100 мкс
переменная++
если переменная=200 то переменная=0
}
|
|
|
|
|
04.04.2012, 17:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Управление Сервой Mg995 Через Аппаратный Шим
Сообщение от Vyazikov
|
вы имеете ввиду подавать и гасить импульс по счетчику?
|
да, в основном цикле:
- при "0" счетчика ШИМ включаете выход при ненулевой величине скважности;
- производите сравнение, подготавливая выключение при равенстве или с упреждением на 1
|
|
|
|
04.04.2012, 18:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Управление Сервой Mg995 Через Аппаратный Шим
Возможно несколько подходов.
1. Одновременный запуск. Тут все хорошо с точки зрения одинакового периода. Но необходимо реализовать сортировку по длительности импульса для всех серв. Оправдано для большого числа машинок - больше 5. Ограничено длительностью периода (собственно, кто говорит, что обязательно 50Гц надо? И на 20 работать можно). Большой плюс - кол-во прерываний равно количеству серв. Такой алгоритм реализовывал DiHalt (на его сайте исходники есть). Проблемы могут возникнуть с малым шагом регулирования (т.е. если нужна точность большая). Когда разница по времени между длительностью соседних импульсов сравнима с временем выполнения самой подпрограммы.
2. Последовательный запуск. Т.е. после импульса одной сервы следует импульс следующей. Легкая реализация. Для небольшого числа серв подходит идеально. Насколько я понимаю, при разных периодах импульсов меняется скорость работы машинок. Если это принципиально (если не больше 3-4, то можно и не заморачиваться), то надо думать уже. Если пофиг... ну тогда вообще пофиг
З.Ы. Кстати, есть одна проблема... если ваш МК занимается еще чем-то, кроме управления сервами и использует прерывания - может возникнуть неприятный эффект - джиттер. Я на это нарвался в процессе экспериментов. Здорово дергается привод у меня. Хы. В программе задействованы все таймеры, EXT INT, да еще прерывания от порта В (от них избавился, но легче не стало). Будем переезжать на другой модуль. Там прерываний нет почти. Но придется на проводках цеплять.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
04.04.2012, 18:19
|
|
Временная регистрация
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Управление Сервой Mg995 Через Аппаратный Шим
Чтож поэксперементирую! Спасибо!!
пока у меня стоит задачка управлять 1 Сервой и дальномером.
Дальномер работает так, посылается импульс 10мкс и ждется обратный импульс. Длинна обратного импульса и будет расстояние до обьекта. Но как я понимаю длинну импульса обратного нужно мерить PULSIN что заставит весь МК ждать.
и после как мы получим расстояние его тоже надо вывести как ШИМ программный.
Однако я попробую. Может с 1 сервой и дальномером справлюсь
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:38.
|
|