roboforum.ru

Технический форум по робототехнике.
Текущее время: 23 ноя 2024, 11:45

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Управление шаговиком.
СообщениеДобавлено: 18 авг 2012, 19:16 
Не в сети
Аватара пользователя

Зарегистрирован: 12 июл 2011, 00:49
Сообщения: 94
Откуда: Лебедин, Сумская обл. Украина
Skype: PoRuVl
прог. языки: Basic (VB, Blitz), Pascal, Delphi 7, C++
ФИО: Пономаренко Руслан Владимирович
Знаю, тема уже везде и всеми закрыта и дошла до логического конца, но немного подумал я почти случайно вывел формулу управления в полушаговом режиме униполярным шаговым двигателем.
Код:
0001
0011
0010
0110
0100
1100
1000
1001

Так? Прикинул что каждый НЕпарный шаг и меет суму следующего и предыдущего шага, а каждый парный увеличивается на 2^n. вкратце, Формула для однострочного кода переключения шагов.:
Код:
Nx=(2^(x/(деление без остачи)2))+(|x%(остача от деления)2-1|(2^(x/2-1))+x/8(количество полушагов цикла)

Все громоздко и не практично, но выгодно при точном позиционированию. Но все равно, волнует вопрос: формула для шаговика, простая и провереная, switch/case не предлагать.

Добавлено спустя 12 минут 53 секунды:
Nx=(2^(x/2))+(|x%2-1|(2^(x/2-1)))+x/8


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговиком.
СообщениеДобавлено: 19 авг 2012, 03:24 
Не в сети
Аватара пользователя

Зарегистрирован: 24 окт 2011, 23:32
Сообщения: 803
Откуда: Севастополь
прог. языки: асм
а чего стесняетесь использовать вставки на ассемблере ?
для PIC-а это выглядит так

Код:
#asm
PIN_TABLE
   addwf   PCL,f
   retlw   b'00000001'
   retlw   b'00000011
   retlw   b'00000010
   retlw   b'00000110
   retlw   b'00000100
   retlw   b'00001100
   retlw   b'00001000
   retlw   b'00001001

//точка входа
   incf   step,f      //тут приращение шага на единицу
//   decf   step,f      //или, наоборот, его уменьшение
//чтение из таблицы соответствующего кода
   movf   step,w
   andlw   0x07
   call   PIN_TABLE
//... и вывод его в порт
   movwf   PORTB
#endasm

т.о получаем всего 12слов в памяти программ и НЕИМОВЕРНУЮ скорость выполнения
и без всякой хитровы*анной математики


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговиком.
СообщениеДобавлено: 19 авг 2012, 04:43 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Я ваще нарушился с формулой для шаговика :crazy:
Если не понятно на асм (ALS, жестокий ты)

Код:
const u8 step[8] =
{ b'00000001',
  b'00000011',
  b'00000010',
  b'00000110',
  b'00000100',
  b'00001100',
  b'00001000',
  b'00001001'
};

void КрутимШаговик(void)
{
    u8 i;

    for (i = 0; i < 8; i++)
        Порт = step[i];
}



Код виртуальный, не помню где как бинарный тип записывается :pardon:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговиком.
СообщениеДобавлено: 19 авг 2012, 20:23 
Не в сети
Аватара пользователя

Зарегистрирован: 12 июл 2011, 00:49
Сообщения: 94
Откуда: Лебедин, Сумская обл. Украина
Skype: PoRuVl
прог. языки: Basic (VB, Blitz), Pascal, Delphi 7, C++
ФИО: Пономаренко Руслан Владимирович
Я как раз и ухожу от такого решения, я пишу на СВАВР для АВРок, да, можно сделать по всемирно извесному, всеми провереному методу, но мне как раз и хотелось бы сделать через формулу, я ж писал, что буду пытаться уйти от переключения режимов, тоесть не хочу видеть в коду готовый сигнал (b'00001001) а чтоб формула все выставляла. Знаю, не рационально и изобретаю велосипед, но хочу сделать именно формулу, мне нужно оптимизирова её.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговиком.
СообщениеДобавлено: 19 авг 2012, 20:59 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Обьясни зачем? Академический интерес?
Если компилятор мега супер умный, то он сделает в результате таблицу.
А так это просто пипец что будет, разглядывая ассемблерный код: Nx=(2^(x/2))+(|x%2-1|(2^(x/2-1)))+x/8

Можно еще алгоритм гусеницы применить (сдвигающий регистр), чем не академ интерес? Одна константа и сдвигающий регистр.
Вообще, это больше комбинаторика чем алгебра.

Добавлено спустя 13 минут 3 секунды:
Ой, только сейчас заметил как ты управляешь шаговиком :shock:
Вообще-то в шаговом двигателе всегда 2 обмотки под током...
Т.е так тоже будет работать, но будет давать разное усилие, в зависимости от шага.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговиком.
СообщениеДобавлено: 22 авг 2012, 08:51 
Не в сети

Зарегистрирован: 19 мар 2010, 20:11
Сообщения: 468
Не тпутай человека, униполярник и биполярник- разные по смыслу моторы

Добавлено спустя 55 секунд:
от фазы


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление шаговиком.
СообщениеДобавлено: 22 авг 2012, 12:18 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
cjA писал(а):
Не тпутай человека, униполярник и биполярник- разные по смыслу моторы

По смыслу они совершенно одинаковые моторы.
В униполярном проще драйвер и все, создавать токи в полюсах мотора надо точно такие же как и в биполярном. Устройство двигателей одинаковое. Разное только намотка.
Четырехобмоточный двигатель превращается в любой тип (униполярный/биполярный) простым переключением обмоток :pardon:
http://electroprivod.ru/bipolar.htm
А вот токи в шаговом двигателе надо создавать так:
forum16/topic11317-15.html#p236257 :)

Добавлено спустя 18 минут 9 секунд:
Вообще, табличка переключения обмоток из первого поста - бред какой-то
Хоть по поисковику и нахожу такие таблички в инете, с названием режима - полушаговый.
Как бы не располагались фазы униполярника a,b,c,d в этой табличке, получается что на два конца одной обмотки двигателя (при определенной комбинации) подается одновременно напряжение. Т.к. в униполярнике 2 обмотки одной фазы намотаны в противоположные стороны, то создаваемые магнитные поля в этих обмотках компенсируют друг друга.
Или надо идти спать :pardon:

Добавлено спустя 9 минут 48 секунд:
опс, табличка не бред, если фазы: a c b d , то нормально :oops:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

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


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

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


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

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