roboforum.ru

Технический форум по робототехнике.
Текущее время: 03 дек 2024, 15:12

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Мой первинец
СообщениеДобавлено: 05 сен 2008, 14:07 
Не в сети

Зарегистрирован: 29 мар 2008, 18:30
Сообщения: 24
Откуда: Красноярск
Skype: AntLer
прог. языки: C++
Хотелось бы посмотреть как организованно управление шаговыми движками программно. Буду оч признателен


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мой первинец
СообщениеДобавлено: 08 сен 2008, 20:59 
Не в сети
Аватара пользователя

Зарегистрирован: 19 авг 2008, 13:59
Сообщения: 23
Откуда: Украина, Одесская область
прог. языки: C, C++, Delphi, Visual Basic, ASM
Я б тоже взглянул

Добавлено спустя 2 минуты 5 секунд:
А робот - зачод :good:

_________________
не кликайте сюда !!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мой первинец
СообщениеДобавлено: 10 сен 2008, 01:00 
Не в сети

Зарегистрирован: 06 июн 2008, 05:26
Сообщения: 70
Откуда: Уссурийск
Да про моторы тоже интересно. Я пробовал - дергается и все. Хотя бы в псевдо коде.

_________________
Орфография и стилистика автора сохранены.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мой первинец
СообщениеДобавлено: 14 сен 2008, 16:40 
Не в сети
Аватара пользователя

Зарегистрирован: 02 июн 2008, 13:41
Сообщения: 11
Откуда: Новосибирск
прог. языки: c++
По просьбам читателей :)
Из истории. Валялись они у меня в столе с пол года, как-то было скучно, взял 2 провода от блока питания и попробовал потыкать ими в клемы мотора, внимательно наблюдая за его поведеннием. Так, что не читая книжек и не пользуясь плодами прогресса типа гугл выяснил как там что устроено. Советую повторить эксперимент для закрепления знаний.
Далее, уже с подачи прочитанного здесь и на подобных ресурсах обзавелся мелкосхемой L293B. Распаял на монтажке и подключил к LPT-порту. Набросал прогу на LV7 и начал экспериментировать с тем как и что надо переключать.
В итоге получилось, что для того что бы мотор крутился в нужную сторону необходимо последовательно выводить на 4 линии управления ключами следущую последовательность:

порядок соответствует 4 выводам на клемнике моторчика
Катушка А -> биты 7, 6
Катушка В -> биты 5, 4 порта D (в моём случае)

7 - 1-0-0-0
6 - 0-0-1-0
5 - 0-1-0-0
4 - 0-0-0-1
или если изменить способ что бы катушки подкулючались по 2 (то есть промежуточные шаги)
7 - 1-1-0-0-0-0-0-1
6 - 0-0-0-1-1-1-0-0
5 - 0-1-1-1-0-0-0-0
4 - 0-0-0-0-0-1-1-1
Итак, к сути, как это сделано програмно:
Глобальный массив и указатель (что бы постоянно помнил текущее состояние)
Код:
   
char mstp[8] = {0x80,0xA0,0x20,0x60,0x40,0x50,0x10,0x90};
char m1; //

и функция, которая собственно и управляется с этим
Код:
void M_Naklon(char dir)
{   
        switch(dir)
      {
      case 1: // left
         {
            if(++m1 > 17)
               m1=10;
                PORTD = (PORTD & 0x0F) | (mstp[m1-10]);
                break;
         }
      case 2: // right
         {
            if(--m1 < 10)
               m1=17;
                PORTD = (PORTD & 0x0F) | (mstp[m1-10]);
            break;
         }
      case 0:
         {
            PORTD = (PORTD & 0x0F) | 0x0;
            break;
         }
      }
};   

Входной параметр - направление, если влево (например) то надо выводить следующий элемент массива, если наоборот, то предыдущий. Если "0" значит везде вывести ноль. Это что бы отключить обмотки от батарейки. (сначала забыл об этом и моторчики просто кипели)
Такой огород с выводом в порт - ничего умнее не придумал. Но работает. В маске еденичками отмечено то, что изменять не надо.
Из порта D для управления пользуем старшие 4 бита
Цифры 17 и 10 вместо 7 и 0 в кольце потому что это первое что пришло в голову, когда понял что надо было использовать беззнаковую переменную для указателя :)
И самое последнее
В ходе программы вызывать эту функцию с определённым интервалом и нужным направлением шага. В моём случае интервал 2 милисекунды.
Медленне не интересно, хотя чуть увеличивается момент (субъективно, характеристик мотора не знаю), быстрее - у меня не работало, наверное слишком большая нагрузка, в холостую крутится нормально и смешно гудит :)

Всем творческих успехов

Добавлено спустя 59 минут 45 секунд:
А , и вот ещё. плиз как разберётесь со своими непонятками отпишите что и как было не так

_________________
Больше не надо работать.
Надо работать лучше.


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

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


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

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


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

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