Arduino Uno как генератор шагов для ШД

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Arduino Uno как генератор шагов для ШД

Сообщение tooshka »

Мудрю что то вроде простейшего контроллера на Arduino Uno. Пробую крутить leadshain ШД 573S09 драйвером 3DM683 от ардуинки. Как то все очень медленно все крутится. А какую частоту можно выжать из ардуины? Сколько оборотов в минуту раскрутить?
Вечером прикреплю скрины с осцилографа и видео работы ШД.
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение selenur »

Покажи код....
Как я полагаю ты используешь паузу между шагами с помощью функций _delay_ms(xxxxx) как можно понять из имени максимальная частота шагов может быть до 1000 в секуду, есть еще функция _delay_ns(xxxx), с её помощью получиться быстрее, но импульсы с чатотой 1мгц конечно уже не получаться, но 10-15 кГц должно быть, при 16 мгц-овом кварце (я незнаю какой у тебя кварц)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение tooshka »

Код вечером прицеплю.
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение AndyBig »

selenur писал(а): с помощью функций _delay_ms(xxxxx)
Зачем такие извращения? Таймеры в мегах вроде могут работать и как генераторы, почему не пользоваться ими?
tecnocat
Опытный
Сообщения: 101
Зарегистрирован: 09 июн 2014, 08:07
Репутация: 39
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение tecnocat »

GRBL вам в помощь :)
https://github.com/grbl
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение tooshka »

tecnocat писал(а):GRBL вам в помощь :)
https://github.com/grbl
Это я проходил. Мне надо просто сделать определенное количество шагов с определенной скоростью вращения после некоего события. Вот и все. Не хочется ничего городить со всякими моторшилдами и ему подобными. Чем проще тем лучше, я взял стандартный код для степпера в arduino id, кинул на драйвер два провода с ардуины и пытаюсь раскрутить. Не получается даже 100 оборотов в минуту.
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
yurayerz
Опытный
Сообщения: 132
Зарегистрирован: 04 янв 2015, 02:46
Репутация: 33
Настоящее имя: Юрий
Откуда: Ярославль
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение 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
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение tooshka »

Сегодня еще на МЕГЕ попробую может побыстрее ракрутится.
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
yurayerz
Опытный
Сообщения: 132
Зарегистрирован: 04 янв 2015, 02:46
Репутация: 33
Настоящее имя: Юрий
Откуда: Ярославль
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение yurayerz »

tooshka писал(а):... на МЕГЕ попробую ...
МК одного класса, различий в производительности нет.
yurayerz писал(а): ...Для больших скоростей не пойдет...
Я имел в виду, что при указанных параметрах будет крутить 1 / 0.0016 / 200ш = 3.125 об/с.
Если просто уменьшить задержки с 800 до 8, то "с-места-в-карьер" ШД может и не дать 312,5 об/с! И это не от Ардуины зависит, а от ШД. Здесь надо будет уже постепенно частоту повышать, учитывая допустимое ускорение. Щитать лень... :oops:
tecnocat
Опытный
Сообщения: 101
Зарегистрирован: 09 июн 2014, 08:07
Репутация: 39
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение tecnocat »

Я у себя GRBL напрямую к драйверам шаговиков подцепил.
К таким:
post-9385-0-87196500-1422903853.jpg (2666 просмотров) <a class='original' href='./download/file.php?id=50236&mode=view' target=_blank>Загрузить оригинал (91.67 КБ)</a>
и все бегает.
Надоест использовать внутренний планировщик GRBL - перепишу на что нибудь другое.
Аватара пользователя
Тима
Почётный участник
Почётный участник
Сообщения: 3162
Зарегистрирован: 01 мар 2012, 20:47
Репутация: 1089
Настоящее имя: Тимур
Откуда: КБР
Контактная информация:

Re: Arduino Uno как генератор шагов для ШД

Сообщение Тима »

Пробовал крутить ШД ардуиной используя эту библу: https://www.pjrc.com/teensy/td_libs_AccelStepper.html
Дорогу осилит идущий!
Я все пойму, Вы только дайте денег!!!
Ответить

Вернуться в «Электроника»