roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Реверс сервы с помощью Arduino
СообщениеДобавлено: 25 июн 2011, 10:43 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс сервы с помощью Arduino
СообщениеДобавлено: 25 июн 2011, 10:47 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Ну вот посмотрите прогу выше - она кривая.
Она МОЖЕТ работать, а может и не работать. А может импульсы пропускать... Серва может дребезжать, а может не дребезжать. Это зависит от того, как наложатся асинхронные события (частота приходящих импульсов, их скважность, частота цикла программы).

Вы же понимаете, что работоспособность программы совсем не является критерием правильно спроектированной программы. То же самое и к железу относится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс сервы с помощью Arduino
СообщениеДобавлено: 25 июн 2011, 11:01 
Не в сети
Аватара пользователя

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

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


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

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

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс сервы с помощью Arduino
СообщениеДобавлено: 25 июн 2011, 22:52 
Не в сети

Зарегистрирован: 05 янв 2010, 23:07
Сообщения: 283
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.
народ а че вы паритесь ? (с дребезгом сервы)

я тут недавно в фотруме про микроконтроллеры создал тему АТМЕГА + серва

все оказалось в том что просто в сырую нельзя серве скормить выход с ШИМА или таймера. Он меняет не только длинну импульсов но и скважность. Соответственно не всегда скважность будет 20 мс

Все решилось добавлением в проект функции мап ардуиновской которая будет мапить угол от нуля до 180 к значению шима от 0ля до 255

Это четко так, проверенно не раз (уже трем людям с этим помог).
Как бы они ШИМ не настраивали серва все равно дергается. Добавляют маппинг и все работает.

прикол библиотеки серво.h - наличие маппинга вот и все.

Добавлено спустя 1 минуту 5 секунд:
forum2/topic10150.html

_________________
#define TRUE FALSE


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс сервы с помощью Arduino
СообщениеДобавлено: 25 июн 2011, 23:02 
Не в сети
Аватара пользователя

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

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

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


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

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 995
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
задержка в 20 мс - это 100% ошибка. Этого в программе не должно быть.
Завтра будет время набросаю на своем макете прогу-реверс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс сервы с помощью Arduino
СообщениеДобавлено: 26 июн 2011, 09:33 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реверс сервы с помощью Arduino
СообщениеДобавлено: 26 июн 2011, 13:16 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 995
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Неизвестно кому было адресовано столь категоричное заявление.
Если мне, то я вроде как уже все изучил довольно давно :)

К сожалению у меня нет Ардуино, только обычные МК + CVAVR, это конечно не совсем по теме, я просто хотел проверить работоспособность. Но думаю на ардуине можно сделать аналог.

Код:
#include <mega32.h>

interrupt [EXT_INT2] void ext_int2_isr(void)
{
    unsigned int channel0;
    if(PINB.2) // Передний фронт
    {
        TCNT1 = 0;      // Обнуление таймера
        MCUCSR=0x00;    // Переключаемся на режим "По заднему фронту"
    }
    else       // Задний фронт
    {
        MCUCSR=0x40;    // Переключаемся на режим "По переднему фронту"
        channel0 = TCNT1;    // В channel0 длительность импульса в 2x микросекундах
        channel0 = (3000 - channel0) + 3000;    // Реверс
        PORTA = 0xFF;   // Старт инмпульса
        TCNT1 = 0;      // Обнуление таймера
        while(TCNT1<channel0) continue;
        PORTA = 0x00;   // Стоп импуьса
    }
}

void main(void)
{
    PORTA=0x00; DDRA=0xFF;
    PORTB=0xFF; DDRB=0x00;
    PORTC=0x00; DDRC=0x00;
    PORTD=0x00; DDRD=0x00;

    // Внешнее прерывание
    GICR|=0x20;
    MCUCR=0x00;
    MCUCSR=0x40; // По переднему фронту
    GIFR=0x20;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    TCCR1A=0x00; TCCR1B=0x02; // Clock value: 2000,000 kHz
    TCNT1H=0x00; TCNT1L=0x00;
    ICR1H=0x00;  ICR1L=0x00;
    OCR1AH=0x00; OCR1AL=0x00;
    OCR1BH=0x00; OCR1BL=0x00;

    TIMSK=0x00;

    #asm("sei")

    while (1) continue;
}




Вроде проблем нет, ничего не дергается.
Вход - порт B пин 2, выход - любой пин порта А


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

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


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

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


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

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