roboforum.ru

Технический форум по робототехнике.


Arduino pro mini для управления шаговым двигателем

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 16 дек 2014, 22:04

RootAdmin писал(а): Для этого подключаем к модулю двигатель, выводы EN+, CW+, CLK+ подключаем к +5V через сопротивления в 100 ом (не вижу на фото платы токоограничивающих резисторов).
Как раз макетку использовать удобно. К выводам EN-, CW-, CLK- подключаем провода.
Подаем питание на драйвер.
Берем провод CLK- и замыкаем его на массу (обязательно источника +5V, НЕ питания двигателя).
Если двигатель начинает шагать (на глаз можно не заметить, лучше рукой щупать) - хорошо.
Если нет - замыкаем на массу EN- и повторяем процедуру.


Ура! Шагает паразит! :Yahoo!: Да, на clk- срабатывает. Если проводок "тюлюпать" туды сюды то даже вращается (тоже тудф сюды :) ) светодиод то потухнет то погаснет @RUN@
Можете подсказать что дальше? Ардуино уже на макетке я установил и дрова поставил. :oops:

Добавлено спустя 3 часа 43 минуты 38 секунд:
В опчем не знаю.. туда аль не туда, но загрузил я в ардуино про тестовую прошивку (в папке ардуино софта) степ-чего то там. Подключил методом тыка... в общем на пине 8 ардуины мотор начал делать попытки шагов. Впрочем делает он это и если воткнуть провод драйвера и на пин 9 и 10 и.. короче на нескольких..
Пойду посмотрю, что там в этом етстовом файле зашито в плане шагов...



Вот.. попробовал залить туда прошивку степреволюшн (почему такое название?) и изменил кол-во шагов с 200 до 1200
ну и на ходу попереключал черные переключалки на драйвере.. мотор начал какой-то странный танец:



Причем довольно сильно нагрелся :(
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Myp » 17 дек 2014, 00:16

переключать на ходу нельзя, убьёшь драйвер.(ну то есть в некоторых случаях можно но пока не знаешь нельзя)

с дуру можно и Х.. сломать, ты бы вначале прочитал что там в примере за драйвер используется
там прям сверху английским по бело написано.
пример вобще для другого типа драйверов и для драйвера степ/дир вобще не подходит.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 17 дек 2014, 01:03

Да? А я подумал, что ардуино и ардуино... жужжит и жужжит.. Ну до взрыва не довёл, отключил давно и остыло.
Буду ждать вердикта специалистов. Главное мне было попробовать проводочки куда надо понатыкать. Вроде получилось. По крайней мере не дымится - уже хорошо. :)
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Myp » 17 дек 2014, 11:38

там пример для вот такого драйвера
Изображение
тоесть каждый контакт ардуины управляет своим выводом обмотки,
а ты туда подцепил сигналы направления и шага))) естественно получились конвульсивные дёргания.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Arduino pro mini для управления шаговым двигателем

Сообщение RootAdmin » 17 дек 2014, 15:05

То, что заработало - уже хорошо.
Будем ваять скрипт.
Для начала - попробуем просто включить двигатель и повернуть.
Ногу 6 подключаем к STEP
Ногу 5 подключаем к DIR

Код: Выделить всёРазвернуть
/*
Управление шаговиком степ-дир переменным резистором */

#define Step_pin 6 //вывод Arduino для ноги STEP контроллера
#define Dir_pin 5 //вывод Arduino для ноги DIR контроллера
#define Resistor_pin A0 //вывод Arduino для ноги DIR контроллера


//Переменная для значения таймера
unsigned char timerLoadValue;

void setup() {               
// Конфигурим вывод Step_pin как выход
pinMode(Step_pin,OUTPUT);
// Конфигурим вывод Dir_pin как выход
pinMode(Dir_pin,OUTPUT);
//Установим на выходах 0
digitalWrite(Step_pin, LOW);
digitalWrite(Dir_pin, LOW);

//Запускает последовательный порт
Serial.begin(9600);

//Сообщение о запуске программы
Serial.println("Program started"); 

//Запускает таймер и получает загружаемое значение таймера.
//Параметр - желаемая частота в герцах.
timerLoadValue=SetupTimer2(120);

//Выводит загружаемое значение таймера
Serial.print("Timer2 Load:");
Serial.println(timerLoadValue,HEX);
}

void loop() {


 
 
}



//Timer2 указатель вектора прерывания по переполнению
//Собственно говоря частота будет в два раза ниже.
ISR(TIMER2_OVF_vect) {
  //Переключение IO-вывода в другое состояние.
  digitalWrite(Step_pin,!digitalRead(Step_pin));

//Перезагрузка таймера и коррекция по задержке
TCNT2+=timerLoadValue;
}



#define TIMER_CLOCK_FREQ 15625.0
//15625 for /1024
//2MHz for /8 prescale from 16MHz

  //Установка Таймера2.
//Конфигурирует 8-битный Таймер2 ATMega168 для выработки прерывания
//с заданной частотой.
//Возвращает начальное значение таймера, которое должно быть загружено в TCNT2
//внутри вашей процедуры ISR.
//Смотри пример использования ниже.
unsigned char SetupTimer2(float timeoutFrequency){
unsigned char result; //Начальное значение таймера.

//Подсчет начального значения таймера
result=(int)((257.0-(TIMER_CLOCK_FREQ/timeoutFrequency))+0.5);
//257 на самом деле должно быть 256, но я получил лучшие результаты с 257.

//Установки Таймер2: Делитель частоты /8, режим 0
//Частота = 16MHz/1024 = 15625 герц или 64 мкс
//Делитель /1024 дает нам хороший рабочий диапазон
//так что сейчас мы просто жестко запрограммируем это.
TCCR2A = 0;
//TCCR2B = 0<<CS22 | 1<<CS21 | 0<<CS20; //это на 8
TCCR2B = 7;

//Подключение прерывания по переполнению Timer2
TIMSK2 = 1<<TOIE2;

//загружает таймер для первого цикла
TCNT2=result;
return(result);
}
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 17 дек 2014, 16:01

Чтобы не получилось снова "методом тыка"... степ и дир на драйвере, это CLK+ CLK- ?
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение RootAdmin » 17 дек 2014, 16:14

Нет. Можно уже переключить "нормально. То есть все выводы
EN-, CW-, CLK- на землю.
А CW+ это DIR
CLK+ это STEP
Их подключить к ардуине.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 17 дек 2014, 17:00

В обчем не увидел сначала сообщени... подключил 6 на clk+ и 5 на clk-
Мотор начал типа двигаться, то так..не охотно, типа паровоза старого "чух-чух-чух" издаёт звуки и потихоньку вращается по часовой. Это ожидаемо?

п.с. сейчас полез переключать правильно.

Добавлено спустя 4 минуты 19 секунд:
Так не получилось.. ничего. просто всё молчит. Мотор отруки вращается, т.е. на него ничего не идёт.
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Myp » 17 дек 2014, 17:42

RootAdmin писал(а):То есть все выводы
EN-, CW-, CLK- на землю.

так работать не будет.
если импульсы управления положительные то используем провод CLK+
если отрицательные то CLK-
на драйвере они сделаны отдельно тупо для удобства, чтобы чтобы не пришлось делать инверсию выводов в программе прошивке контроллера.

в нашем случае контакты с знаком минус вобще не нужны и про них можно забыть.
использовать только контакты с знаком плюс
CLK расшифровывается как CLocK по нашему "Тик", как часы "тик-тик-тик", то-есть на этот провод нужно подавать импульсы для делания шага, другое название STEP.
EN это ENable, то-есть этим проводов включается и выключается драйвер.
CW это CW/CCW , ClockWise/CounterClockWise. направление, по часовой стрелки/против часовой стрелки, тоесть Dir от Direction. подали напряжение крутимся по часовой, убрали напряжение - крутимся против.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 17 дек 2014, 17:54

Так мы про минусовые забыли, а ЕН+ нам нужен? Точнее мне он нужен?
При подключении что на минус минусовые клеммы, что без минуса - не процует.
На ЕН+ тоже ... подключал и с 5 и с 6 пина ардуины и +5 - ничего.
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Myp » 17 дек 2014, 22:43

Когда включаешь EN, вал мотора должен за фиксироваться, перестать вращаться руками и начинать тихонечко греться.
землю надеюсь соединил общую?
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 17 дек 2014, 22:58

нет наверное, а может... земля только с минуса 5В на питание ардуины что, ну и она же на всякий случай идет на эти, ненужные нам минусовые.
Просто втыкаю степ и дир и ничего не происходит. вообще ничего. С "неправильным" скриптом и с неправильным подключением хоть что-то было... :(
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Myp » 18 дек 2014, 10:28

фотку давай
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Arduino pro mini для управления шаговым двигателем

Сообщение Revenger » 18 дек 2014, 13:23

Надеюсь видно что-то
Вложения
12200001.JPG
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

Re: Arduino pro mini для управления шаговым двигателем

Сообщение RootAdmin » 18 дек 2014, 13:48

Наверно я не сильно хорошо смотрел на фото, но ИМХО стоят там на развязке обычные оптроны. У светодиода которых анод и катод ессно. Вот эти аноды и катоды выведены на клеммы. И подключай как хочешь. Я бы все катоды (выводы с "-") подключил на землю. Землю ардуины. А выводы с "+" - использовал для управления.


На фото на 5 вывод ардуины прицеплен какой контакт драйвера?
Dir? Поменяйте местами...

Добавлено спустя 2 минуты 39 секунд:
И да, скетч еще недоработан. Двигатель должен вращаться с частотой заданной в timerLoadValue=SetupTimer2(120);
Шестьдесят шагов в секунду.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Пред.След.

Вернуться в Arduino и другие Xduino

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

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