roboforum.ru

Технический форум по робототехнике.

Переделка сервы HXT900 под постоянное вращение

Re: HXT900 continuous rotation modification/hack (пост.вращение)

кулер 23 » 21 сен 2009, 14:50

вот 2 программы я не знаю есть там шим или нет(
Программа для соревновании кегельринг
Код: Выделить всёРазвернуть
/**********************************************************
ПРИМЕР 5 :: РОБОТ ДЛЯ СОРЕВНОВАНИЙ КЕГЕЛЬРИНГ :: MYROBOT.RU
***********************************************************/

#include <avr/io.h>

/***************** Функция задержки ****************/
void delay(unsigned short ms) // Минимальная задержка с кварцем 8 МГц - 1 мс
{
   unsigned short i, j, k; // объявляем переменные
      
              for (i=0; i<ms; i++) // главный цикл формирования задержки
                     for (j=0; j<185; j++) // вложенный цикл формирования задержки
                              k++; // произвольное действие
}
/****************************************************/


int main(void) // начало основной программы
{
   
   DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
   DDRD = 0x00; // все выводы порта D сконфигурировать как входы


   PORTD = 0xff; // установить "1" на всех выводах порта D,
       // включаем подтягивающие резисторы

        while (1) {  // Бесконечный цикл

      // ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА

      if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
      {
                  // -------------- включаем моторы вперед ---------------

                  PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
                  PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
                  PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
                  PORTC &= ~_BV(PC4); // установить "0" на линии 4 порта C

                  // -----------------------------------------------------
      }
      else
      {
                        // ------------------ отъезд назад ------------------
                        // -------- включаем моторы назад на 1,8 сек --------

                        PORTC &= ~_BV(PC1); // установить "0" на линии 1 порта C
                        PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
                        PORTC &= ~_BV(PC3); // установить "0" на линии 3 порта C
                        PORTC |= _BV(PC4); // установить "1" на линии 4 порта C

                        delay(1800); // ждем 1,8 сек.
                        // --------------------------------------------------

                        // --------------------- поворот --------------------
                        //  правый мотор вперед, левый мотор стоп на 0,6 сек

                  PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
                  PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
                  PORTC |= _BV(PC3); // установить "1" на линии 3 порта C

                        delay(600); // ждем 0,6 сек.
                        // --------------------------------------------------
      }
/****************************************************************
ПРИМЕР 4 :: ПРОСТЕЙШИЙ АЛГОРИТМ СЛЕДОВАНИЯ ПО ЛИНИИ :: MYROBOT.RU
*****************************************************************/

#include <avr/io.h>

int main(void) // начало основной программы
{
   
   DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
   DDRD = 0x00; // все выводы порта D сконфигурировать как входы


   PORTD = 0xff; // установить "1" на всех выводах порта D,
       // включаем подтягивающие резисторы

        while (1) {  // Бесконечный цикл

      // ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА

      if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
      {
                  // ---- включаем левый мотор, останавливаем правый -----

                  PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
                  PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
                  PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
                  PORTC &= ~_BV(PC4); // установить "1" на линии 4 порта C

                  // -----------------------------------------------------
      }
      else
      {
                        // ---- останавливаем левый мотор, включаем правый -----

                        PORTC &= ~_BV(PC1); // установить "1" на линии 1 порта C
                        PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
                        PORTC &= ~_BV(PC3); // установить "1" на линии 3 порта C
                        PORTC |= _BV(PC4); // установить "0" на линии 4 порта C

                        // -----------------------------------------------------
      }


        } // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы

        } // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы


и программа для следования по линии
Код: Выделить всёРазвернуть
/****************************************************************
ПРИМЕР 4 :: ПРОСТЕЙШИЙ АЛГОРИТМ СЛЕДОВАНИЯ ПО ЛИНИИ :: MYROBOT.RU
*****************************************************************/

#include <avr/io.h>

int main(void) // начало основной программы
{
   
   DDRC = 0xff; // все выводы порта C сконфигурировать как выходы
   DDRD = 0x00; // все выводы порта D сконфигурировать как входы


   PORTD = 0xff; // установить "1" на всех выводах порта D,
       // включаем подтягивающие резисторы

        while (1) {  // Бесконечный цикл

      // ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА

      if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
      {
                  // ---- включаем левый мотор, останавливаем правый -----

                  PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
                  PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
                  PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
                  PORTC &= ~_BV(PC4); // установить "1" на линии 4 порта C

                  // -----------------------------------------------------
      }
      else
      {
                        // ---- останавливаем левый мотор, включаем правый -----

                        PORTC &= ~_BV(PC1); // установить "1" на линии 1 порта C
                        PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
                        PORTC &= ~_BV(PC3); // установить "1" на линии 3 порта C
                        PORTC |= _BV(PC4); // установить "0" на линии 4 порта C

                        // -----------------------------------------------------
      }


        } // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы
Последний раз редактировалось кулер 23 21 сен 2009, 18:11, всего редактировалось 1 раз.

Re: HXT900 continuous rotation modification/hack (пост.вращение)

=DeaD= » 21 сен 2009, 14:52

ШИМа нету, какой кошмар :) значит робот сейчас еще и дерганный :) переводи всё на шим - потратишь 2-3 вечера на освоение, зато научишься полезной теме.

Re: HXT900 continuous rotation modification/hack (пост.вращение)

кулер 23 » 21 сен 2009, 14:56

((я еще не знаю ни одного языка, мне 13 как, я буду все писать "кошмар"

Re: HXT900 continuous rotation modification/hack (пост.вращение)

=DeaD= » 21 сен 2009, 15:14

Начинать то всё-равно придётся когда-нибудь :)

Добавлено спустя 14 минут 37 секунд:
Да и вообще, я в 16 уже активно в олимпиадах по программированию участвовал, так что в 13 самое то начинать уже копаться в языках.

Re: HXT900 continuous rotation modification/hack (пост.вращение)

кулер 23 » 21 сен 2009, 18:12

ладно начинаю читать толстую книгу про си++ как раз рем комплект приидет к тому времени когда что нить понимать начну

Re: HXT900 continuous rotation modification/hack (пост.вращение)

кулер 23 » 24 сен 2009, 20:49

а как к меге подключать??

Re: HXT900 continuous rotation modification/hack (пост.вращение)

=DeaD= » 24 сен 2009, 20:54

Как и любую другую серву :) в простейшем варианте на аппаратный ШИМ :)

Re: Переделка сервы HXT900 под постоянное вращение

kibo75 » 14 фев 2010, 18:40

Маленький совет.Бегунок на переменнике лучше не откусывать,а алмазным бориком сточить пластмассовые бугорки ограничители на внутренней части корпуса резистора.На много аккуратней будет. :good:

Re: Переделка сервы HXT900 под постоянное вращение

GlassEagle » 09 авг 2010, 02:25

Верно ли я понял, что после такой переделки у сервы сохраняется возможность реверсирования? (т.е. подаём импульсы короче 1,5 мс - крутится в одну сторону, длиннее 1,5 мс - в другую)?
А то у меня получилась странная штука. После переделки тестировал той же прогой, что и обычно непеределанные сервы тестирую (ну простейшая прога - одна кнопка - постепенно укорачивающиеся импульсы в интервале 2,1 ... 0,9 мс (начиная с 1,5 мс), другая кнопка - постепенно удлинняющиеся). Вначале серва центрируется - подается 10 (для надёжности) импульсов по 1,5 мс (естественно, на частоте 50 Гц).

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

Re: Переделка сервы HXT900 под постоянное вращение

blindman » 09 авг 2010, 03:53

Надо подать импульсы соответствующие центральному положению, и вращая переменник на серве добиться остановки вала. Переменник зафиксировать клеем или лаком. Потом управление простое - короткие импульсы крутят в одну сторону, длинные в другую.

Re: Переделка сервы HXT900 под постоянное вращение

avr123.nm.ru » 09 авг 2010, 10:09

kibo75 писал(а):а алмазным бориком сточить пластмассовые бугорки


Только АЛМАЗНЫМ !!!

Re: Переделка сервы HXT900 под постоянное вращение

GlassEagle » 09 авг 2010, 13:46

Спасибо, blindman!! Понял. Значит надо будет немного программку модифицировать (для режима нахождения среднего положения).

Re: Переделка сервы HXT900 под постоянное вращение

sdn » 20 ноя 2010, 22:40

Уважаемые любители робототехники, подскажите пожалуйста- можно-ли данный сервопривод использовать "напрямую" без электроники, т.е. запитать двигатель постоянным током и все.. Требуется привод лебедки модели подъемного крана, так что "шаговости" и точности не требуется

Re: Переделка сервы HXT900 под постоянное вращение

sdn » 21 ноя 2010, 00:22

И еще- подскажите пожалуйста, а какой тип двигателя здесь использован? коллекторный или шаговый?

Re: Переделка сервы HXT900 под постоянное вращение

Radist » 22 ноя 2010, 21:22

Можно моторчик запитать и напрямую. Но не будет реверса. Мотор не шаговый. У шаговых минимум 4 вывода.


Rambler\'s Top100 Mail.ru counter