Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 02.04.2012, 23:54  
Vyazikov
Временная регистрация
 
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vyazikov на пути к лучшему
По умолчанию Управление Сервой Mg995 Через Аппаратный Шим

Всем привет.
Есть необходимость крутить сервопривод, в наличии есть 2шт Tower Pro MG995 (Digital servo)
Управлять собираюсь через Хардверный ШИМ (юзаю PIC16f73) Другие варианты мне просто не подходят, мк нужно задействовать на другие целы нежели генерировать Программный ШИМ

Для положения 90градусов генерю ШИМ частотой 50 гц и длительностью импульсов 1500us
HPWM 1,19,50
(пишу на PicBasic )
скважность 19 получил вот так (1500/20000*255) Кварц 4mhz
Серва поворачивается и занимает нужное положение, однако когда она его занимает она начинает "Жужжать" как бы вибрировать и гудеть, как-будто она пытается вращаться и что-то ей мешает..

что у меня может быть не так?
И насколько это парвильно управлять сервой аппаратным ШИМ?


программный ШИМ через PULSOUT работает идеально.
Реклама:
Vyazikov вне форума  
Непрочитано 03.04.2012, 12:59  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Управление Сервой Mg995 Через Аппаратный Шим

Аппаратный ШИМ не дает меньше 244Гц из-за делителя при такой тактовой частоте. Может, потому и жужжит... У меня маленькая серва уже на 100Гц почти не работала.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 04.04.2012, 09:37  
Vyazikov
Временная регистрация
 
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vyazikov на пути к лучшему
По умолчанию Re: Управление Сервой Mg995 Через Аппаратный Шим

хм... На самом деле я пытался и 300 герц, мне казалось что серве больше важна длинна импульса чем частота, но эффект одинаковый..
Нашел на забугровых форумах некоторые комментарии что аппаратным ШИМ обычно сервами не управляют так как это сложно. А почему так и не понял. И еще не понимаю а как быть если надо управлять 2мя сервами например
Vyazikov вне форума  
Непрочитано 04.04.2012, 10:53  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Управление Сервой Mg995 Через Аппаратный Шим

да хоть 10 - как программно управляют десятками светодиодов на портах МК?
синхронно выдают на выходы МК образы по прерыванию таймера. образы готовят в основном теле
jump вне форума  
Непрочитано 04.04.2012, 13:54  
Vyazikov
Временная регистрация
 
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vyazikov на пути к лучшему
По умолчанию Re: Управление Сервой Mg995 Через Аппаратный Шим

Я по правде говоря не пробовал упралвять несколькими.
Вот какой момент не понятен.
Я управляю одной вот так (код образный)
в теле
PHP код:
PULSOUT b.0 1500us
PAUSE    20000us 
Если я вставлю в тело импульс на вторую серву
PHP код:
PULSOUT b.0 1500us
PULSOUT b.1 1200us
PAUSE    20000us 
то первая серва будет получать импульс уже не каждые 20мс а 20+1,2мс
это не скажется на работе?
Vyazikov вне форума  
Непрочитано 04.04.2012, 15:18  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Управление Сервой Mg995 Через Аппаратный Шим

например, у вас программный шим - период 20мс, число ступеней 200.
тогда:
- делаем программный счетчик ШИМ на 200;
- таймер настраиваем на 100мкс;
- в прерывании таймера выводим "образы" портов, обрабатываем счетчик ШИМ;
- в основном теле выполняем подготовку "образов", математику и т.д.
параллельно можно хоть десяток обработать
jump вне форума  
Непрочитано 04.04.2012, 17:12  
Vyazikov
Временная регистрация
 
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vyazikov на пути к лучшему
По умолчанию Re: Управление Сервой Mg995 Через Аппаратный Шим

не совсем понял... то есть вместо такого подхода
PHP код:
PULSOUT b.0 1500us
PAUSE    20000us 
вы имеете ввиду подавать и гасить импульс по счетчику?
например

PHP код:
переменная=0
тело
{
если переменная=0    то b.0=1
если переменная 
=15  то b.0=0
пауза 100 мкс

переменная
++
если переменная=200 то переменная=0


Vyazikov вне форума  
Непрочитано 04.04.2012, 17:48  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Управление Сервой Mg995 Через Аппаратный Шим

Сообщение от Vyazikov Посмотреть сообщение
вы имеете ввиду подавать и гасить импульс по счетчику?
да, в основном цикле:
- при "0" счетчика ШИМ включаете выход при ненулевой величине скважности;
- производите сравнение, подготавливая выключение при равенстве или с упреждением на 1
jump вне форума  
Непрочитано 04.04.2012, 18:00  
DK
Почётный гражданин KAZUS.RU
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,528
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Управление Сервой Mg995 Через Аппаратный Шим

Возможно несколько подходов.
1. Одновременный запуск. Тут все хорошо с точки зрения одинакового периода. Но необходимо реализовать сортировку по длительности импульса для всех серв. Оправдано для большого числа машинок - больше 5. Ограничено длительностью периода (собственно, кто говорит, что обязательно 50Гц надо? И на 20 работать можно). Большой плюс - кол-во прерываний равно количеству серв. Такой алгоритм реализовывал DiHalt (на его сайте исходники есть). Проблемы могут возникнуть с малым шагом регулирования (т.е. если нужна точность большая). Когда разница по времени между длительностью соседних импульсов сравнима с временем выполнения самой подпрограммы.
2. Последовательный запуск. Т.е. после импульса одной сервы следует импульс следующей. Легкая реализация. Для небольшого числа серв подходит идеально. Насколько я понимаю, при разных периодах импульсов меняется скорость работы машинок. Если это принципиально (если не больше 3-4, то можно и не заморачиваться), то надо думать уже. Если пофиг... ну тогда вообще пофиг

З.Ы. Кстати, есть одна проблема... если ваш МК занимается еще чем-то, кроме управления сервами и использует прерывания - может возникнуть неприятный эффект - джиттер. Я на это нарвался в процессе экспериментов. Здорово дергается привод у меня. Хы. В программе задействованы все таймеры, EXT INT, да еще прерывания от порта В (от них избавился, но легче не стало). Будем переезжать на другой модуль. Там прерываний нет почти. Но придется на проводках цеплять.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
DK вне форума  
Непрочитано 04.04.2012, 18:19  
Vyazikov
Временная регистрация
 
Регистрация: 09.06.2011
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vyazikov на пути к лучшему
По умолчанию Re: Управление Сервой Mg995 Через Аппаратный Шим

Чтож поэксперементирую! Спасибо!!
пока у меня стоит задачка управлять 1 Сервой и дальномером.
Дальномер работает так, посылается импульс 10мкс и ждется обратный импульс. Длинна обратного импульса и будет расстояние до обьекта. Но как я понимаю длинну импульса обратного нужно мерить PULSIN что заставит весь МК ждать.
и после как мы получим расстояние его тоже надо вывести как ШИМ программный.

Однако я попробую. Может с 1 сервой и дальномером справлюсь
Vyazikov вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ШИМ через таймер в LPC serb-radio Микроконтроллеры, АЦП, память и т.д 8 18.06.2011 16:21
Pic16F887 аппаратный I2C через MicroC Pro GunFighter Микроконтроллеры, АЦП, память и т.д 4 18.12.2009 21:29
Дистанционное управление нагрузкой через ПК. igorm_ Автоматика и аппаратура связи 42 04.09.2008 12:14
Управление мотором с помощью ШИМ Zahar Микроконтроллеры, АЦП, память и т.д 44 29.06.2008 09:41
Управление блоком питания с помощью ШИМ AndrySivolap Источники питания и свет 17 11.08.2006 08:01


Часовой пояс GMT +4, время: 23:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot