Страница 1 из 1
Arduino Uno как генератор шагов для ШД
Добавлено: 14 май 2015, 10:10
tooshka
Мудрю что то вроде простейшего контроллера на Arduino Uno. Пробую крутить leadshain ШД 573S09 драйвером 3DM683 от ардуинки. Как то все очень медленно все крутится. А какую частоту можно выжать из ардуины? Сколько оборотов в минуту раскрутить?
Вечером прикреплю скрины с осцилографа и видео работы ШД.
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 14 май 2015, 11:47
selenur
Покажи код....
Как я полагаю ты используешь паузу между шагами с помощью функций _delay_ms(xxxxx) как можно понять из имени максимальная частота шагов может быть до 1000 в секуду, есть еще функция _delay_ns(xxxx), с её помощью получиться быстрее, но импульсы с чатотой 1мгц конечно уже не получаться, но 10-15 кГц должно быть, при 16 мгц-овом кварце (я незнаю какой у тебя кварц)
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 14 май 2015, 11:58
tooshka
Код вечером прицеплю.
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 14 май 2015, 12:37
AndyBig
selenur писал(а): с помощью функций _delay_ms(xxxxx)
Зачем такие извращения? Таймеры в мегах вроде могут работать и как генераторы, почему не пользоваться ими?
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 14 май 2015, 13:04
tecnocat
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 14 май 2015, 13:25
tooshka
Это я проходил. Мне надо просто сделать определенное количество шагов с определенной скоростью вращения после некоего события. Вот и все. Не хочется ничего городить со всякими моторшилдами и ему подобными. Чем проще тем лучше, я взял стандартный код для степпера в arduino id, кинул на драйвер два провода с ардуины и пытаюсь раскрутить. Не получается даже 100 оборотов в минуту.
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 14 май 2015, 14:14
yurayerz
там вроде скетч-то простой (тестер CNC-shield):
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
// The following is a simple stepper motor control procedures,
# define EN 8 // stepper motor enable , active low
# define X_DIR 5 // X -axis stepper motor direction control
# define Y_DIR 6 // y -axis stepper motor direction control
# define Z_DIR 7 // z axis stepper motor direction control
# define X_STP 2 // x -axis stepper control
# define Y_STP 3 // y -axis stepper control
# define Z_STP 4 // z -axis stepper control
/*
// Function : step . function: to control the direction of the stepper motor , the number of steps .
// Parameters : dir direction control , dirPin corresponding stepper motor DIR pin , stepperPin corresponding stepper motor " step " pin , Step number of step of no return value.
*/
void step (boolean dir, byte dirPin, byte stepperPin, int steps)
{
digitalWrite (dirPin, dir);
delay (50);
for (int i = 0; i <steps; i + +) {
digitalWrite (stepperPin, HIGH);
delayMicroseconds (800);
digitalWrite (stepperPin, LOW);
delayMicroseconds (800);
}
}
void setup () {/ / The stepper motor used in the IO pin is set to output
pinMode (X_DIR, OUTPUT); pinMode (X_STP, OUTPUT);
pinMode (Y_DIR, OUTPUT); pinMode (Y_STP, OUTPUT);
pinMode (Z_DIR, OUTPUT); pinMode (Z_STP, OUTPUT);
pinMode (EN, OUTPUT);
digitalWrite (EN, LOW);
}
void loop () {
step (false, X_DIR, X_STP, 200); / / X axis motor reverse 1 ring, the 200 step is a circle.
step (false, Y_DIR, Y_STP, 200); / / y axis motor reverse 1 ring, the 200 step is a circle.
step (false, Z_DIR, Z_STP, 200); / / z axis motor reverse 1 ring, the 200 step is a circle.
delay (1000);
step (true, X_DIR, X_STP, 200); / / X axis motor forward 1 laps, the 200 step is a circle.
step (true, Y_DIR, Y_STP, 200); / / y axis motor forward 1 laps, the 200 step is a circle.
step (true, Z_DIR, Z_STP, 200); / / z axis motor forward 1 laps, the 200 step is a circle.
delay (1000);
}
Лишние оси и реверс можно убрать.
Изменяя delay (xxx) в теле функции step(), изменяется период импульсов. Для больших скоростей не пойдет, надо учитывать разгон. По сути, добавить цикл уменьшения задержки от 200 к 20
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 14 май 2015, 14:23
tooshka
Сегодня еще на МЕГЕ попробую может побыстрее ракрутится.
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 14 май 2015, 15:02
yurayerz
tooshka писал(а):... на МЕГЕ попробую ...
МК одного класса, различий в производительности нет.
yurayerz писал(а):
...Для больших скоростей не пойдет...
Я имел в виду, что при указанных параметрах будет крутить 1 / 0.0016 / 200ш = 3.125 об/с.
Если просто уменьшить задержки с 800 до 8, то "с-места-в-карьер" ШД может и не дать 312,5 об/с! И это не от Ардуины зависит, а от ШД. Здесь надо будет уже постепенно частоту повышать, учитывая допустимое ускорение. Щитать лень...

Re: Arduino Uno как генератор шагов для ШД
Добавлено: 15 май 2015, 06:46
tecnocat
Я у себя GRBL напрямую к драйверам шаговиков подцепил.
К таким:
и все бегает.
Надоест использовать внутренний планировщик GRBL - перепишу на что нибудь другое.
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 17 май 2015, 17:23
Олег.
Re: Arduino Uno как генератор шагов для ШД
Добавлено: 17 май 2015, 21:07
Тима