roboforum.ru

Технический форум по робототехнике.
Текущее время: 03 июн 2025, 01:40

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




Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Управление сервами
СообщениеДобавлено: 20 сен 2011, 09:19 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Не могу разобраться в чём проблема :cry:
Взял код (из робовики) управления сервами при помощи 4017 счётчика
Код:

uint16_t servo_position[9] = {3000 //для среднего положения

volatile uint32_t i;


SIGNAL(SIG_OUTPUT_COMPARE1A)
{
   
   static uint8_t current_servo = 1;
   
   
   static uint16_t pause = 40000;

   
   TCCR1A |= _BV(FOC1A);

   if (current_servo == 9) {
      current_servo = 0;
      OCR1A += pause;
      pause = 40000;
   } else {
      
      OCR1A += servo_position[current_servo];
      pause -= servo_position[current_servo];
      current_servo++;
   }
}


Переделал все значения под частоту 7.3728
в итоге получилось
Код:
interrupt [TIM3_COMPC] void timer3_compc_isr(void)
{
static char current_servo=1;
static unsigned int pause = 18432;

TCCR3C|=(1<<FOC3C);
       
        if (current_servo == 9)
        {
         current_servo = 0;
         OCR3C += pause;
         pause = 18432;
        }
        else
        {
         OCR3C+=servo_position[current_servo];
         pause -= servo_position[current_servo];
         current_servo++;
        }
}     
servo_position[9]={1382 //среднее положение

Пред делитель счётчика на 8
Серва работает некорректно дергается сдвигается в сторону при заданном среднем
положении :shock:
Подскажите где ошибка?

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 09:55 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Форму и время сигналов посмотрите в PROTEUS или осцилом

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 11:07 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Протеус кажет.
Но как так (1<<FOC3C) бит принудительного сброса?

Добавлено спустя 2 минуты 1 секунду:
Может посмотреть в железе осцилупой? Но чё то боюсь своими кривыми руками лезть...


Вложения:
pr.JPG
pr.JPG [ 15.06 КиБ | Просмотров: 3028 ]

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 13:03 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Вот длинющий импульс похоже и колбасит вашу серву.

переключите осцил PROTEUS в режим DC пост. ток и покрупней покажите цену деления по времени укажите.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 14:31 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Счётчик неправильно считает?
Код:
#define OCR3C (*(unsigned int *) 0x82) //прописал сам как 16 битовую переменную может //здесь косяк?
//файл mega128.h
#define OCR3CL (*(unsigned char *) 0x82)
#define OCR3CH (*(unsigned char *) 0x83)

//--------------------------------
TCCR3C|=(1<<FOC3C);
       
        if (current_servo == 9)
        {
         current_servo = 0;
         OCR3C += pause;
         pause = 18432;
        }
        else
        {
         OCR3C+=servo_position[current_servo];
         pause -= servo_position[current_servo];
         current_servo++;
        }



проект выложить?


Вложения:
12.JPG
12.JPG [ 91.82 КиБ | Просмотров: 2717 ]

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 14:47 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Давно пора. Вам нужны импульсы шириной 1500 мкС каждые 20000 мкС а у вас меандр похоже. Время примерное.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 14:56 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Вот оно.


Вложения:
ADC.rar [127.82 КиБ]
Скачиваний: 0

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 14:59 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
А где у вас 4017 ?

добавил 4017 - servo импульсы стали нормальные, но все слишком долго даже при 8 МГц такта.


Вложения:
servo_avr_hc4017.rar [253.53 КиБ]
Скачиваний: 0
servo_4017.png
servo_4017.png [ 166.03 КиБ | Просмотров: 2698 ]

_________________
Читайте !
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 15:22 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Дк выходящий сигнал с мк уже не тот.

Добавлено спустя 1 минуту 27 секунд:
avr123.nm.ru писал(а):
А где у вас 4017 ?

добавил 4017 - servo импульсы стали нормальные, но все слишком долго даже при 8 МГц такта.

Пересчитать?

Добавлено спустя 9 минут 31 секунду:
Почему 1 на выходе сразу не сбрасывается(обведено кружком)?
TCCR3C|=(1<<FOC3C); Этот бит в прерывании сразу должен сбрасывать 1 в 0.


Вложения:
11.JPG
11.JPG [ 23.08 КиБ | Просмотров: 2679 ]
23.JPG
23.JPG [ 28.99 КиБ | Просмотров: 2680 ]

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 20:01 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Почему то не срабатывает сброс ножки в 0??????
Код:
TCCR3C|=(1<<FOC3C);

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 20:31 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2008, 14:41
Сообщения: 997
Откуда: СПб
прог. языки: C,Python
потому что CVAVR
сам с таким сталкивался , решение которое нашел - дёргать лапки программно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 20:37 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Korbofos писал(а):
Почему то не срабатывает сброс ножки в 0??????
Код:
TCCR3C|=(1<<FOC3C);
Дак в PROTEUS разверните АСМ подстрочник под Си кодом и посмотрите почему.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 21:06 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Asm я незнаю :cry:

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 21:08 
Не в сети
отсылающий читать курс
Аватара пользователя

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

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление сервами
СообщениеДобавлено: 20 сен 2011, 21:11 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2011, 11:27
Сообщения: 317
Откуда: Челябинск
прог. языки: C/C++
ФИО: Александр
Вот.


Вложения:
ADC.rar [129.94 КиБ]
Скачиваний: 0

_________________
РАБОТА, РАБОТА перейди на Федота, с Федота на его брата, а ко мне их зарплата.
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2, 3  След.

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


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

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


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

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