roboforum.ru

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

 

Мой первинец

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Re: Мой первинец

Сообщение AntLer » 05 сен 2008, 14:07

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

Re: Мой первинец

Сообщение spider » 08 сен 2008, 20:59

Я б тоже взглянул

Добавлено спустя 2 минуты 5 секунд:
А робот - зачод :good:
Аватара пользователя
spider
 
Сообщения: 23
Зарегистрирован: 19 авг 2008, 13:59
Откуда: Украина, Одесская область
прог. языки: C, C++, Delphi, Visual Basic, ASM

Re: Мой первинец

Сообщение esprit » 10 сен 2008, 01:00

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

Re: Мой первинец

Сообщение e-not » 14 сен 2008, 16:40

По просьбам читателей :)
Из истории. Валялись они у меня в столе с пол года, как-то было скучно, взял 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 секунд:
А , и вот ещё. плиз как разберётесь со своими непонятками отпишите что и как было не так
Больше не надо работать.
Надо работать лучше.
Аватара пользователя
e-not
 
Сообщения: 11
Зарегистрирован: 02 июн 2008, 13:41
Откуда: Новосибирск
прог. языки: c++

Пред.

Вернуться в Наши проекты

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

Сейчас этот форум просматривают: Yahoo [Bot] и гости: 4

Mail.ru counter