Подскажите по элетронике
-
- Новичок
- Сообщения: 24
- Зарегистрирован: 06 апр 2011, 19:29
- Репутация: 0
- Контактная информация:
Re: Подскажите по элетронике
а четвертая ось для каких целей нужна, добавлять ее или не стоит. почти заканчиваю
Re: Подскажите по элетронике
фото чего получилось то?shurikss123 писал(а):а четвертая ось для каких целей нужна, добавлять ее или не стоит. почти заканчиваю
-
- Новичок
- Сообщения: 24
- Зарегистрирован: 06 апр 2011, 19:29
- Репутация: 0
- Контактная информация:
Re: Подскажите по элетронике
Там по проводам пока не понятно, вид ужасает, но исходник такой
Можно еще добить и пульт с дисплеем, приделать сюда
Код: Выделить всё
/*
* main.c
*
* Created on: 24.09.2012
* Author: shurik
*/
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/iom16.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define a 0b1000
#define b 0b0100
#define c 0b0010
#define d 0b0001
#define z 0b0000
volatile uint8_t Control_Port = 0;
volatile int stepX = 0;
volatile int dirX = 0;
volatile int posX = 0;
volatile int stepY = 0;
volatile int dirY = 0;
volatile int posY = 0;
volatile int stepZ = 0;
volatile int dirZ = 0;
volatile int posZ = 0;
volatile int operation = 0;
volatile uint8_t Xcount[] =
{ a, b, c, d, z };
volatile uint8_t Ycount[] =
{ a, b, c, d, z };
volatile uint8_t Zcount[] =
{ a, b, c, d, z };
int main()
{
PORTA = 0xff;
while (1)
{
Control_Port = PINA;
// control start
// X
switch (!(Control_Port & (1 << PIN0)))
{
case 1:
{
dirX = 1;
break;
}
case 0:
{
dirX = 0;
break;
}
default:
break;
}
switch (!(Control_Port & (1 << PIN1)))
{
case 1:
{
if (stepX == 0)
{
stepX = 1;
}
break;
}
case 0:
{
if (stepX == 1)
{
stepX = 2;
}
break;
}
default:
break;
}
// Y
switch (!(Control_Port & (1 << PIN2)))
{
case 1:
{
dirY = 1;
break;
}
case 0:
{
dirY = 0;
break;
}
default:
break;
}
switch (!(Control_Port & (1 << PIN3)))
{
case 1:
{
if (stepY == 0)
{
stepY = 1;
}
break;
}
case 0:
{
if (stepY == 1)
{
stepY = 2;
}
break;
}
default:
break;
}
// Z
switch (!(Control_Port & (1 << PIN4)))
{
case 1:
{
dirZ = 1;
break;
}
case 0:
{
dirZ = 2;
break;
}
default:
break;
}
switch (!(Control_Port & (1 << PIN5)))
{
case 1:
{
if (stepZ == 0)
{
stepZ = 1;
}
break;
}
case 0:
{
if (stepZ == 1)
{
stepZ = 2;
}
break;
}
default:
break;
}
//X
if (stepX == 2)
{
if (dirX == 1)
{
if (posX < 3)
{
posX++;
}
else
{
posX = 0;
}
}
else
{
if (posX > 0)
{
posX--;
}
else
{
posX = 3;
}
}
operation = 1;
stepX = 0;
}
//Y
if (stepY == 2)
{
if (dirY == 1)
{
if (posY < 3)
{
posY++;
}
else
{
posY = 0;
}
}
else
{
if (posY > 0)
{
posY--;
}
else
{
posY = 3;
}
}
operation = 1;
stepY = 0;
}
//Z
if (stepZ == 2)
{
if (dirZ == 1)
{
if (posZ < 3)
{
posZ++;
}
else
{
posZ = 0;
}
}
else
{
if (posZ > 0)
{
posZ--;
}
else
{
posZ = 3;
}
}
operation = 1;
stepZ = 0;
}
if (operation == 1)
{
DDRD = (Xcount[posX]) | (Ycount[posY] << 4);
DDRC = Zcount[posZ];
operation = 0;
_delay_ms(20); //тут можно откалибровать под двигатель
}
else
{
DDRD = (Xcount[4]) | (Ycount[4] << 4);
DDRC = Zcount[4];
}
}
}
- wldev
- Мастер
- Сообщения: 1647
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: Подскажите по элетронике
Это исходник чего?shurikss123 писал(а):Там по проводам пока не понятно, вид ужасает, но исходник такой
-
- Новичок
- Сообщения: 24
- Зарегистрирован: 06 апр 2011, 19:29
- Репутация: 0
- Контактная информация:
Re: Подскажите по элетронике
контроллера (atmega16)Bender писал(а):Это исходник чего?shurikss123 писал(а):Там по проводам пока не понятно, вид ужасает, но исходник такой
- wldev
- Мастер
- Сообщения: 1647
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: Подскажите по элетронике
Тяжко читать ваш исходник...((
Оч. много лишних "{ }"
Так вы просто по нажатию кнопки делаете шаг? И считаете его?
Оч. много лишних "{ }"
Код: Выделить всё
*
* main.c
*
* Created on: 24.09.2012
* Author: shurik
*/
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/iom16.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define a 0b1000
#define b 0b0100
#define c 0b0010
#define d 0b0001
#define z 0b0000
volatile uint8_t Control_Port = 0;
volatile int stepX = 0;
volatile int dirX = 0;
volatile int posX = 0;
volatile int stepY = 0;
volatile int dirY = 0;
volatile int posY = 0;
volatile int stepZ = 0;
volatile int dirZ = 0;
volatile int posZ = 0;
volatile int operation = 0;
volatile uint8_t Xcount[] =
{ a, b, c, d, z };
volatile uint8_t Ycount[] =
{ a, b, c, d, z };
volatile uint8_t Zcount[] =
{ a, b, c, d, z };
int main()
{
PORTA = 0xff;
while (1)
{
Control_Port = PINA;
// control start
// X
dirX=!(Control_Port & (1 << PIN0)))
switch (!(Control_Port & (1 << PIN1)))
{
case 1: if (stepX == 0) stepX = 1; break;
case 0: if (stepX == 1) stepX = 2; break;
}
// Y
dirY=!(Control_Port & (1 << PIN2)))
switch (!(Control_Port & (1 << PIN3)))
{
case 1: if (stepY == 0) stepY = 1; break;
case 0: if (stepY == 1) stepY = 2; break;
}
// Z
dirZ=!(Control_Port & (1 << PIN4)))
switch (!(Control_Port & (1 << PIN5)))
{
case 1: if (stepZ == 0) stepZ = 1;break;
case 0: if (stepZ == 1) stepZ = 2;break;
}
//X
if (stepX == 2)
{
if (dirX == 1)
if (posX < 3) posX++; else posX = 0;
else
if (posX > 0) posX--; else posX = 3;
operation = 1;
stepX = 0;
}
//Y
if (stepY == 2)
{
if (dirY == 1)
if (posY < 3) posY++; else posY = 0;
else
if (posY > 0) posY--; else posY = 3;
operation = 1;
stepY = 0;
}
//Z
if (stepZ == 2)
{
if (dirZ == 1)
if (posZ < 3) posZ++; else posZ = 0;
else
if (posZ > 0) posZ--; else posZ = 3;
operation = 1;
stepZ = 0;
}
if (operation == 1)
{
DDRD = (Xcount[posX]) | (Ycount[posY] << 4);
DDRC = Zcount[posZ];
operation = 0;
_delay_ms(20); //тут можно откалибровать под двигатель
}
else
{
DDRD = (Xcount[4]) | (Ycount[4] << 4);
DDRC = Zcount[4];
}
}
}
-
- Новичок
- Сообщения: 24
- Зарегистрирован: 06 апр 2011, 19:29
- Репутация: 0
- Контактная информация:
Re: Подскажите по элетронике
А мне наоборот удобней и ясней.Bender писал(а):Тяжко читать ваш исходник...((
Бросается в глаза. да.Bender писал(а):Оч. много лишних "{ }"
Почему кнопки? я не считаю, шаги он их делает в зависимости от направления и сигнала степ.Bender писал(а):Так вы просто по нажатию кнопки делаете шаг? И считаете его?
- wldev
- Мастер
- Сообщения: 1647
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: Подскажите по элетронике
Это оч. просто...shurikss123 писал(а):Почему кнопки? я не считаю, шаги он их делает в зависимости от направления и сигнала степ.
Сделайте разгон и торможение + переходы с торможения на разгон.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Подскажите по элетронике
Насколько я понял это простой контроллер для управления микродрайверами шаговых двигателей, который выдает драйверам задание в виде такой обмотке такой ток.
Кстати, продумай микрошаговый режим - с ним будет интереснее.
Кстати, продумай микрошаговый режим - с ним будет интереснее.
-
- Новичок
- Сообщения: 24
- Зарегистрирован: 06 апр 2011, 19:29
- Репутация: 0
- Контактная информация:
Re: Подскажите по элетронике
Ну если вы мне опишите то что вам требуется могу и сделать, 4-й день мебель в свою комнату собираю по этому немного не до этого, кстати хочу сделать при запуске контроллера, чтоб он делал 10 шагов + после 5 шагов назад, чтоб соответствовала двигателя и контроллера
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Подскажите по элетронике
Чего делал?shurikss123 писал(а):чтоб он делал 10 шагов + после 5 шагов назад, чтоб соответствовала двигателя и контроллера
-
- Новичок
- Сообщения: 24
- Зарегистрирован: 06 апр 2011, 19:29
- Репутация: 0
- Контактная информация:
Re: Подскажите по элетронике
чтоб первый шаг соответствовал позиции двигателя.Nick писал(а):Чего делал?
Re: Подскажите по элетронике
В железе (hardware) что-то воплотилось? Прошивку (firmware) для авр отладили?
p.s.
МК целесобразно применять если реализовывать фичи, или в какойто степени рагрузить комп, а также если подключать к USB. Иначе овчинка выделки не стоить.
p.s.
МК целесобразно применять если реализовывать фичи, или в какойто степени рагрузить комп, а также если подключать к USB. Иначе овчинка выделки не стоить.
Последний раз редактировалось 2cme 01 окт 2012, 19:33, всего редактировалось 1 раз.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Подскажите по элетронике
А это имхо не так важно, все равно, при любом перемещении произойдет тоже самое.shurikss123 писал(а):чтоб первый шаг соответствовал позиции двигателя.
-
- Новичок
- Сообщения: 24
- Зарегистрирован: 06 апр 2011, 19:29
- Репутация: 0
- Контактная информация:
Re: Подскажите по элетронике
не до конца нет нормального кабеля(LPT), так что тока один двигатель тестил, вроде работает как надо,будем тестить в конце недели.2cme писал(а):В железе (hardware) что-то воплотилось? Прошивку (firmware) для авр отладили?.
Re: Подскажите по элетронике
???shurikss123 писал(а):будем тестить в конце недели.
- Rafiq
- Мастер
- Сообщения: 1053
- Зарегистрирован: 28 сен 2012, 18:11
- Репутация: 6
- Откуда: Tatarstan Respublikası, Yar Çallı şəhəre
- Контактная информация:
Re: Подскажите по элетронике
Тоже интересует этот вопрос. Оно конечно можно на AVR реализовать шаг и полушаг, даже аппноты есть на Атмеле, но подойдет ли это для станка? Обязательно ли для станка микрошаг? Не будет ли заметной "лесенки" на диагональных линиях в режиме шага и полушага? Ведь даже дешевые драйверы на TB6560 юзают микрошаг.
Да и дешевле наверное взять упомянутую TB6560 (всего ~$3 на Ибэе, урвал сейчас на аукционе одну за $2.26, сильно удивился, почему не могу взять три, ведь в Buy It Now можно указать количество, а когда аукцион выигрываешь, почему то нет), ведь для МК придется либо городить мосты на дискретных транзисторах, либо подвешивать к нему специализированную микросхему.
Да, еще момент, shurikss123, перед тем как цеплять к компу, комп должен быть опторазвязан от станка быстрыми оптронами, например 6N137. Иначе будут помехи, и даже могут возникнуть зрелищные пиротехнические эффекты.
Да и дешевле наверное взять упомянутую TB6560 (всего ~$3 на Ибэе, урвал сейчас на аукционе одну за $2.26, сильно удивился, почему не могу взять три, ведь в Buy It Now можно указать количество, а когда аукцион выигрываешь, почему то нет), ведь для МК придется либо городить мосты на дискретных транзисторах, либо подвешивать к нему специализированную микросхему.
Да, еще момент, shurikss123, перед тем как цеплять к компу, комп должен быть опторазвязан от станка быстрыми оптронами, например 6N137. Иначе будут помехи, и даже могут возникнуть зрелищные пиротехнические эффекты.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Подскажите по элетронике
Лесенки не будет, насколько я понимаю микрошаг в основном делают для более плавной работы двигателей.Rafiq писал(а):Не будет ли заметной "лесенки"
Re: Подскажите по элетронике
Если я не ошибаюсь: Микрошаг делают для того чтобы получить большую разрешающую способность, избавится от резонанса и т.д.Nick писал(а):Лесенки не будет, насколько я понимаю микрошаг в основном делают для более плавной работы двигателей.
Недостаток микрошага: уменьшается крутящий момент.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5182
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Подскажите по элетронике
Микрошаг не увеличивает разрешающую способность т.к. не гарантируется, что например в режиме полушага ротор можно спозиционировать точно посередине между полными шагами. И чем мельче микрошаг (больше цифра) тем больше будут отклонения от теоретического положения.
Но за счёт микрошага апроксимация получается более плавная.
Но за счёт микрошага апроксимация получается более плавная.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...