roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Управление сервомотором с помощью ШИМ
СообщениеДобавлено: 07 фев 2010, 18:44 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Можно и так - стратегий много, один из вариантов ПИД регулятор - http://PIDcontrol.narod.ru

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервомотором с помощью ШИМ
СообщениеДобавлено: 07 фев 2010, 19:31 
Не в сети

Зарегистрирован: 28 ноя 2009, 23:18
Сообщения: 25
Откуда: Подольск
avr123.nm.ru писал(а):
Вашим моторчиком можно плавно управлять как раз так как вы читали в задаче 8 - http://avr123.nm.ru/z8.htm

Скажите пожалуйста, в чем конкретно заключается это плавное управление моторчиком?
В том, что он будет медленно поворачиваться? Или в том что он просто не будет работать на полную мощность от общей цепи питания и не сгорит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервомотором с помощью ШИМ
СообщениеДобавлено: 07 фев 2010, 19:44 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
В том в чем по ссылке написано. ПОЧИТАЙТЕ хоть чуток.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервомотором с помощью ШИМ
СообщениеДобавлено: 07 фев 2010, 19:47 
Не в сети

Зарегистрирован: 28 ноя 2009, 23:18
Сообщения: 25
Откуда: Подольск
Спасибо большое за ссылку, но как я понял из статьи ПИД регулятор используется для систем с обратной связью, а тут её нет, т.к обычный моторчик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервомотором с помощью ШИМ
СообщениеДобавлено: 07 фев 2010, 19:52 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Я про ссылку на задачу 8.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервомотором с помощью ШИМ
СообщениеДобавлено: 25 мар 2010, 15:37 
Не в сети

Зарегистрирован: 25 мар 2010, 15:29
Сообщения: 2
драйвер мотора выше это двойной полный мост
управляется два входа для управления направлением и один включение. 1-0 или 0-1 на управлении переключает мост в одну или другую сторону, включение 1 включено 0 выключено. соответственно процент времени когда на этом входе будет будет соотвествовать проценту максимальной мощьности подаваемой ена двигатель. если этот вход не подключить то что произойдет читать в спеке на девайс - кручение с отключеным выводом говорит об одном из 1) чтото шумит 2) вывод с пассивной 1(пока никуда не подключен считается что 1) 3) некорректно чтото спаял

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервомотором с помощью ШИМ
СообщениеДобавлено: 25 мар 2010, 15:51 
Не в сети

Зарегистрирован: 25 мар 2010, 15:29
Сообщения: 2
ой извиняюсь у меня L298 но сути не меняет - у меня там два полных моста у тебя 4ре половинки)))) отличие только в том что у 298 есть вывод чтоб снимать значение тока нагрузки


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

Зарегистрирован: 06 июн 2005, 02:27
Сообщения: 166
Откуда: Минск, Лида
Цитата:
Вы говорите что моторчиком можно плавно управлять. Т.е вы хотите сказать что можно сделать так что бы колеса машинки не резко в право влево, а медленно поворачивались? Если так, то скажите пожалуйста, какая примерно нужна для этого величина ШИМ, или же нужно что бы величина ШИМ менялась? Т.е возможно при старте чтоб сдвинуть мотор с места нужно ШИМ 100%, а потом резко уменьшить допустим до 20% что бы колеса медленно крутились?



Если речь идёт о механизме поворота колёс - тут не нужен большой пусковой момент, следовательно, можно подавать минимальный процент ШИМа, при котором механизм поворачивает колёса. Этот процент лучше экспериментально найти. ТО есть менять ШИМ и смотреть, хватает напряжения мотору или нет.
Если же речь идёт о ходовом приводе, то тут во время старта можно сделать рывок, для преодолевания сил сопротивления. А потом переходить в штатный режим скорости.


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

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
всем вышеописанным занимается регулятор тока в нормальной системе управления приводом..

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервомотором с помощью ШИМ
СообщениеДобавлено: 06 май 2010, 07:45 
Не в сети

Зарегистрирован: 06 май 2010, 07:37
Сообщения: 2
Для плавности нужно постепенно увеличивать активную фазу ШИМа, удобнее будет сделать 2 внешние кнопки к контроллеру и ими изменять параметры ШИМа. Мост можно сделать на микросхемах, можно спаять на транзисторах как здесь http://rate.bget.ru/ страничка H-bridge.


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

Зарегистрирован: 07 сен 2009, 20:06
Сообщения: 333
прог. языки: c, c#
ФИО: Евгений
Управления сервой при помощи аппаратного ШИМ
Код:
/*
Code Vision AVR C Compiler
MCU atmega16
CLOCK 8 MHz RC INT
*/
#include<mega16.h>
#define TOP 10000
void servo1_position(int pos)
{
OCR1A = pos/2;
}

void servo2_position(int pos)
{
OCR1B = pos/2;
}

void main(void)
{
//настраиваем Timer1
TCCR1A=0xA0;
TCCR1B=0x12;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=(char)TOP>>8;
ICR1L=(char)TOP //максимальное значение таймера
OCR1B=0x00;
OCR1A=0x00;

DDRD=0x30; //PORTD4 & PORTD5 сконфигурированы на выход

servo1_position(1000); //на PD5 появится ШИМ с частотой 50 гц и длительностью имлуьса 1000 мксек
servo2_position(1300); //на PD4 аналогично, но длительность импульса уже 1300 мксек
while(1);
}

Код взят оттуда http://cdxp.zx6.ru/?p=355


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервомотором с помощью ШИМ
СообщениеДобавлено: 19 ноя 2010, 00:36 
Не в сети

Зарегистрирован: 23 сен 2010, 00:07
Сообщения: 6
Понадобилось управлять одной сервой с помощью 8-битного таймера. Аппаратный ШИМ дает слишком маленькое разрешение, два таймера использовать жирно.
Поэтому я применил способ (основанный на методе 3, описанном тут в местной wike), использующий переконфигурирование таймера в каждом прерывании. В этом случае надо всего два прерывания на период управления - одно начинает управляющий импульс, другое его заканчивает. При кварце 14.7456Мгц разрешение получилось примерно 8,68мкс, диапазон ширины управляющего импульса - чуть шире 800-2200мкс. Среднее положение соответствует числу 172 в регистре OCR2, изменение на 1 соответствует примерно изменению ширины импульса на 8,68мкс.
Привожу код для ATMega16a, может кому пригодится.
Управление сервоприводом с помощью 8-битного таймера. Только нужная часть кода.
Код:
...
//global variables
uint8_t servo_position;//содержит текущее положение сервопривода, просто запишите в него нужное значение
...
//начальная инициализация
void init(){
...
sei();
servo_position=172; //сервопривод в среднее положение
DDRD|=1<<servo_pwm; //пин OC2 на выход
OCR2=0xFF; //пин OC2 Timer2 автоматически установится, когда таймер досчитает до OCR2=255
TIMSK|=1<<TOIE2; // активируем прерывание Timer2 overflow
TCCR2=0b00110111; // ck/1024, normal mode, set OC2 on compare
/*первым наступит прерывание Timer2 overflow, при этом пин OC2 автоматически установится потому что
в настройках таймера задана "установка OC2 при равенстве TCNT2=OCR2=255", вручную устанавливать не надо.*/
...
}
...

//ПРЕРЫВАНИЯ

//=================Timer2 overwlow interrupt================
ISR(TIMER2_OVF_vect){
TCCR2=0b00100101; // предделитель ck/128, normal mode, clear OC2 on compare
// при F_CPU=14.7456Мгц один тик таймера 8,6784мкс
OCR2=servo_position; //задаем ширину управляющего импульса
TCNT2=0;
TIFR|=1<<OCF2; //сбрасываем флаг OCF2, флаг TOV2 сбросится при выходе из прерывания
TIMSK|=1<<OCIE2; // активируем прерывание Timer2 compare
TIMSK&=~(1<<TOIE2); // дизактивируем прерывание Timer2 overflow
}

//=================Timer2 compare match interrupt================
ISR(TIMER2_COMP_vect){
TCCR2=0b00110111; // предделитель ck/1024, normal mode, set OC2 on compare
OCR2=0xFF; //счет до 255 даст задержку ~17мс
TCNT2=0;
TIFR|=1<<TOV2; //сбрасываем флаг TOV2, флаг OCF2 сбросится при выходе из прерывания
TIMSK|=1<<TOIE2; // активируем прерывание Timer2 overflow
TIMSK&=~(1<<OCIE2); // дизактивируем прерывание Timer2 compare
}
...


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

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


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

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


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

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