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 раз.
Аватара пользователя
кулер 23
 
Сообщения: 798
Зарегистрирован: 17 апр 2009, 19:44
Откуда: Югорск
Skype: rizhykot
ФИО: Аксютин Юрий

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

Сообщение =DeaD= » 21 сен 2009, 14:52

ШИМа нету, какой кошмар :) значит робот сейчас еще и дерганный :) переводи всё на шим - потратишь 2-3 вечера на освоение, зато научишься полезной теме.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение кулер 23 » 21 сен 2009, 14:56

((я еще не знаю ни одного языка, мне 13 как, я буду все писать "кошмар"
Аватара пользователя
кулер 23
 
Сообщения: 798
Зарегистрирован: 17 апр 2009, 19:44
Откуда: Югорск
Skype: rizhykot
ФИО: Аксютин Юрий

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

Сообщение =DeaD= » 21 сен 2009, 15:14

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

Добавлено спустя 14 минут 37 секунд:
Да и вообще, я в 16 уже активно в олимпиадах по программированию участвовал, так что в 13 самое то начинать уже копаться в языках.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение кулер 23 » 21 сен 2009, 18:12

ладно начинаю читать толстую книгу про си++ как раз рем комплект приидет к тому времени когда что нить понимать начну
Аватара пользователя
кулер 23
 
Сообщения: 798
Зарегистрирован: 17 апр 2009, 19:44
Откуда: Югорск
Skype: rizhykot
ФИО: Аксютин Юрий

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

Сообщение кулер 23 » 24 сен 2009, 20:49

а как к меге подключать??
Аватара пользователя
кулер 23
 
Сообщения: 798
Зарегистрирован: 17 апр 2009, 19:44
Откуда: Югорск
Skype: rizhykot
ФИО: Аксютин Юрий

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

Сообщение =DeaD= » 24 сен 2009, 20:54

Как и любую другую серву :) в простейшем варианте на аппаратный ШИМ :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение kibo75 » 14 фев 2010, 18:40

Маленький совет.Бегунок на переменнике лучше не откусывать,а алмазным бориком сточить пластмассовые бугорки ограничители на внутренней части корпуса резистора.На много аккуратней будет. :good:
Аватара пользователя
kibo75
 
Сообщения: 15
Зарегистрирован: 20 янв 2010, 20:27
Откуда: Tomsk

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

Сообщение GlassEagle » 09 авг 2010, 02:25

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

Ну так вот - переделанная серва при центрировании тоже слегка прокручивается, а затем никакого реверсирования не наблюдается, а работает так - какую кнопку первую нажали - в ту сторону потом и крутится, независимо от дальнейших нажатий. В чём проблема? В соотношении сопротивлений в потенциометре? Или после переделки вообще должна быть другая идеология управления? (хотя какая там может быть другая?)
Когда я слышу слова "Первый закон робототехники", я вспоминаю анекдот про ноусэров.
GlassEagle
 
Сообщения: 160
Зарегистрирован: 14 окт 2009, 11:46
Откуда: Самара

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

Сообщение blindman » 09 авг 2010, 03:53

Надо подать импульсы соответствующие центральному положению, и вращая переменник на серве добиться остановки вала. Переменник зафиксировать клеем или лаком. Потом управление простое - короткие импульсы крутят в одну сторону, длинные в другую.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

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

Сообщение avr123.nm.ru » 09 авг 2010, 10:09

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


Только АЛМАЗНЫМ !!!
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение GlassEagle » 09 авг 2010, 13:46

Спасибо, blindman!! Понял. Значит надо будет немного программку модифицировать (для режима нахождения среднего положения).
Когда я слышу слова "Первый закон робототехники", я вспоминаю анекдот про ноусэров.
GlassEagle
 
Сообщения: 160
Зарегистрирован: 14 окт 2009, 11:46
Откуда: Самара

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

Сообщение sdn » 20 ноя 2010, 22:40

Уважаемые любители робототехники, подскажите пожалуйста- можно-ли данный сервопривод использовать "напрямую" без электроники, т.е. запитать двигатель постоянным током и все.. Требуется привод лебедки модели подъемного крана, так что "шаговости" и точности не требуется
sdn
 
Сообщения: 4
Зарегистрирован: 20 ноя 2010, 22:37

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

Сообщение sdn » 21 ноя 2010, 00:22

И еще- подскажите пожалуйста, а какой тип двигателя здесь использован? коллекторный или шаговый?
sdn
 
Сообщения: 4
Зарегистрирован: 20 ноя 2010, 22:37

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

Сообщение Radist » 22 ноя 2010, 21:22

Можно моторчик запитать и напрямую. Но не будет реверса. Мотор не шаговый. У шаговых минимум 4 вывода.
Аватара пользователя
Radist
 
Сообщения: 2241
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Пред.След.

Вернуться в Механика

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

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