Step/Dir - исходник?

создание собственных программ управления станком, управление LPT

Модераторы: Ruz_and, Master-VRI, al-drw, Мастак

Аватара пользователя
lucky_sever
Сообщения: 25
Зарегистрирован: Ср июн 30, 2010 23:00
Откуда: Брест
Контактная информация:

Step/Dir - исходник?

Сообщение lucky_sever » Вс апр 15, 2012 14:43

Подскажите пожалуйста, исходник Step/Dir для AVR на C (C++)

Аватара пользователя
Ruz_and
Сообщения: 510
Зарегистрирован: Вс ноя 09, 2008 00:00
Откуда: РТ г. Лениногорск
Контактная информация:

Re: Step/Dir - исходник?

Сообщение Ruz_and » Вс апр 15, 2012 15:20

# include "ioavr.h"

#define Step PIND_Bit2
#define Dir PIND_Bit1
#define Enable PIND_Bit0

__flash unsigned int cod[8] = {1,3,2,6,4,12,8,9};
int X = 0;
unsigned char dim_set = 0;
void init_port(void)
{
DDRD = 0x00;
PORTD = 0x07;
DDRB = 0xFF;
PORTB = 0x00;
}

void main (void)
{
init_port();
PORTB = 0;
while (1)
{
if (Step == 0)
{
dim_set = Dir;
if (dim_set == 1)
{
X++;
if(X>7) X=0;
PORTB = cod[X];
}

if (dim_set == 0)
{
X--;
if(X<0) X=7;
PORTB = cod[X];
}
while (Step==0)
{}
}

}
}
Не стреляйте из пушки по комарам (Конфуций)

Аватара пользователя
lucky_sever
Сообщения: 25
Зарегистрирован: Ср июн 30, 2010 23:00
Откуда: Брест
Контактная информация:

Re: Step/Dir - исходник?

Сообщение lucky_sever » Вс апр 15, 2012 16:51

Ruz_and писал(а):__flash unsigned int cod[8] = {1,3,2,6,4,12,8,9};


скажите, что значит эта строка, что за цифры


если мне нужно сделать только три шага, необходимо отправить три '1' STEP. ТАК?

Аватара пользователя
Horeen
Сообщения: 1905
Зарегистрирован: Сб янв 16, 2010 00:00

Re: Step/Dir - исходник?

Сообщение Horeen » Вс апр 15, 2012 18:04

Это то, что выйдет из порта.
1 = 00000001
3 = 00000011
2 = 00000010
6 = 00000110
и т.д.
Просто использована десятичная система.

если мне нужно сделать только три шага, необходимо отправить три '1' STEP. ТАК?
Каждый сигнал Step приведёт к шагу ШД. В данном случае, физически к половине шага, т.к. использован полушаг.
Если нужно 3 полных шага ШД, то подать нужно 6 сигналов.

Аватара пользователя
Ruz_and
Сообщения: 510
Зарегистрирован: Вс ноя 09, 2008 00:00
Откуда: РТ г. Лениногорск
Контактная информация:

Re: Step/Dir - исходник?

Сообщение Ruz_and » Вс апр 15, 2012 19:44

программа рассчитана на инверсный сигнал опторазвязки то есть если на ножке step минус контроллер делает шаг после того как сигнал вернется в плюс.
Это связанно с тем что ножка всегда подтянута на плюс программно что не требует внешнего потягивающего резистора.
Не стреляйте из пушки по комарам (Конфуций)

Аватара пользователя
lucky_sever
Сообщения: 25
Зарегистрирован: Ср июн 30, 2010 23:00
Откуда: Брест
Контактная информация:

Re: Step/Dir - исходник?

Сообщение lucky_sever » Вс апр 15, 2012 21:38

Ruz_and писал(а):программа рассчитана на инверсный сигнал опторазвязки то есть если на ножке step минус контроллер делает шаг после того как сигнал вернется в плюс.
Это связанно с тем что ножка всегда подтянута на плюс программно что не требует внешнего потягивающего резистора.

Я так понимаю, что если Step будет 1 на протяжении допустим 5 секунд - это будет удержание на определенном шаге?

alx25v
Сообщения: 58
Зарегистрирован: Пн июн 20, 2011 16:44

Re: Step/Dir - исходник?

Сообщение alx25v » Вс апр 15, 2012 22:00

В данной программе для МК, удержание будет всегда.

Аватара пользователя
Horeen
Сообщения: 1905
Зарегистрирован: Сб янв 16, 2010 00:00

Re: Step/Dir - исходник?

Сообщение Horeen » Вс апр 15, 2012 22:32

Топикстартер, видимо, имеет ввиду удержание пониженным током (не зря же упомянул про 5 секунд).
Нет, эта программа не реализует снижение тока. Если негативных импульсов нет, то ШД просто стоит на месте и держится за счёт тока на тех обмотках, которые были запитаны при последнем шаге.

Аватара пользователя
lucky_sever
Сообщения: 25
Зарегистрирован: Ср июн 30, 2010 23:00
Откуда: Брест
Контактная информация:

Re: Step/Dir - исходник?

Сообщение lucky_sever » Вс апр 15, 2012 23:20

С пониженным током все понятно.

подается 10 импульсов Step:
1111111111 - шаговый двигатель будет стоять на месте на последнем шаге;
1010101010 - шаговый двигатель будет вращаться при "переходе" '0' в '1'.
Так?

Аватара пользователя
Horeen
Сообщения: 1905
Зарегистрирован: Сб янв 16, 2010 00:00

Re: Step/Dir - исходник?

Сообщение Horeen » Вс апр 15, 2012 23:36

1111111111 - шаговый двигатель будет стоять на месте на последнем шаге;
По сути, это не будет являться подаванием 10ти импульсов. Это просто кусок во времени, при котором уровень на входе не будет изменятся. Но да, смысл вы уловили.

1010101010 - шаговый двигатель будет вращаться при "переходе" '0' в '1'.
Да. С тем лишь уточнением, что вращаться при переходе уровней он не будет. А просто будет делать шаг в нужную сторону. Именно цикличность изменений этого уровня приводят к вращению ШД в нашем понимании.

Я не силён в Сях, но мне кажется, что эта программа будет делать шаг всё же сразу при переходе от 1 к 0, а не при возвращении в единицу после нулевого уровня.

Кстати, Ruz_and, просвяти, пожалуйста, такой момент (для повышения общей образованности, так сказать).
Не вижу, как тут реализовано запоминание того, что шаг был (т.е. уже поступало 0 на вход), т.е. прога должна зафиксировать приход 1, перед тем как снова разрешить сделать шаг при 0. Смотрел и не понял.
Кажется, что в цикле просто проверяется наличие 0 на входе и потом, согласно уровню на входе Dir, делается шаг в ту или другую сторону. Стало быть, при постоянно висящем 0 на входе Step контроллер будет с бешеной скоростью постоянно же крутить ШД.
Последний раз редактировалось Horeen Вс апр 15, 2012 23:48, всего редактировалось 1 раз.

Аватара пользователя
lucky_sever
Сообщения: 25
Зарегистрирован: Ср июн 30, 2010 23:00
Откуда: Брест
Контактная информация:

Re: Step/Dir - исходник?

Сообщение lucky_sever » Вс апр 15, 2012 23:47

Отлично! Спасибо большое! Скажите, а больше нет примеров Step/Dir?

Аватара пользователя
Ruz_and
Сообщения: 510
Зарегистрирован: Вс ноя 09, 2008 00:00
Откуда: РТ г. Лениногорск
Контактная информация:

Re: Step/Dir - исходник?

Сообщение Ruz_and » Пн апр 16, 2012 08:20

когда на вход придет 0 контроллер сделает один шаг (полушаг) и если не вернуть ногу в 1 последующие шаги не будут отрабатываться это сделанно для того чтобы контроллер делал шаги только тогда кода на ножке степ сигнали изменится с 1 на 0, а в состояние ожидание вернется только тогда когда сигнал 0 на 1.
Не стреляйте из пушки по комарам (Конфуций)

Аватара пользователя
Ruz_and
Сообщения: 510
Зарегистрирован: Вс ноя 09, 2008 00:00
Откуда: РТ г. Лениногорск
Контактная информация:

Re: Step/Dir - исходник?

Сообщение Ruz_and » Пн апр 16, 2012 08:22

Это вариант кода по прирыванию INT0
если на ножку внешнего прерывания сигнал изменяется с 1 на 0 контроллер делает шаг (полушаг).
но при данной программе нужно обеспечить помехо защищенность по питанию контроллера
#include <iom8.h>

#define Step PIND_Bit2
#define Dir PIND_Bit1
#define Enable PIND_Bit0

unsigned int cod[8] = {1,3,2,6,4,12,8,9};
int tik=0;
void init_port(void)
{
DDRD = 0x00;
PORTD = 0x07;
DDRB = 0xFF;
PORTB = 0x00;
GICR |=(1<<INT0);
MCUCR |=(1<<ISC01)|(0<<ISC00);
SREG |= (1<<7);

}

void main (void)
{
init_port();
PORTB = 0;
while (1)
{

}

}

#pragma vector = INT0_vect
__interrupt void steping(void)
{
if (Dir == 0)
{
tik++;
if (tik > 7) tik=0;
}
if (Dir == 1)
{
tik--;
if (tik < 0) tik=7;
}
PORTB = cod[tik];
}
Не стреляйте из пушки по комарам (Конфуций)

Аватара пользователя
Horeen
Сообщения: 1905
Зарегистрирован: Сб янв 16, 2010 00:00

Re: Step/Dir - исходник?

Сообщение Horeen » Пн апр 16, 2012 09:30

когда на вход придет 0 контроллер сделает один шаг (полушаг) и если не вернуть ногу в 1 последующие шаги не будут отрабатываться это сделанно для того чтобы контроллер делал шаги только тогда кода на ножке степ сигнали изменится с 1 на 0, а в состояние ожидание вернется только тогда когда сигнал 0 на 1.
Это понятно. Но в упор не вижу (а возможно просто не понимаю, т.к. СИ мне не родной), как это реализовано в viewtopic.php?p=39536#p39536
Укажите, пожалуйста, кусок кода, ответственный за это (что бы не обрабатывался следующий 0, до того, как перед ним будет 1).
А то кажется, то в проге скорее всего не хватает куста.

Аватара пользователя
lucky_sever
Сообщения: 25
Зарегистрирован: Ср июн 30, 2010 23:00
Откуда: Брест
Контактная информация:

Re: Step/Dir - исходник?

Сообщение lucky_sever » Пн апр 16, 2012 16:07

Такой вопросик!
Step - шаг
Dir - направление
Enable - он для чего?


Вернуться в «програмирование»

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

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