roboforum.ru

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


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

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

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

Сообщение Revenger » 19 дек 2014, 21:15

Я как бы извиняюсь... не проверил, а оно вона чо... движок то подключил не правильно :(
Не знаю, сейчас верно или нет, но без ЕН+ мотор крутится медленно против часовой стрелки. Тихо, почти не слышно звук. Светодиод на драйвере моргает примерно 2-3 раза в сек.

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

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

Сообщение RootAdmin » 20 дек 2014, 14:47

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

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

Сообщение Revenger » 20 дек 2014, 14:52

RootAdmin писал(а):Да!
Допишу скетч (плавный старт и управление) и будем пробовать.

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

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

Сообщение RootAdmin » 20 дек 2014, 15:02

Да!
Допишу скетч (плавный старт и управление) и будем пробовать.

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

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

Сообщение Revenger » 20 дек 2014, 15:48

Ну тогда я весь ожидание :) Еще потом переменник туда прилепить.. будет вашпе хорошо, а потом (если получится собрать всё в кучу) уже думать на счет эл.контроля скорости :)
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

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

Сообщение Revenger » 27 дек 2014, 21:52

А есть смысл для этого дела что-то готовое поискать? Например чтобы просто через эту УСБ штуковину менять программу и всё. Или эта штука только для програмирования ардуино через комп?
А с флешки, автоматом можно программу загружать как, например, в контроллерах бегущих строк (воткнул, 10сек и готово)?
Аватара пользователя
Revenger
 
Сообщения: 1728
Зарегистрирован: 01 ноя 2014, 00:50
Откуда: Ставрополье
ФИО: Александр

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

Сообщение RootAdmin » 28 дек 2014, 01:50

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

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

Сообщение RootAdmin » 30 дек 2014, 16:36

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

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


//Переменная для значения таймера
unsigned char timerLoadValue;
//значение минимальной частоты
#define LowFreq 20
//значение МАКСИмальной частоты
#define HighFreq 300
//Переменная для шага чаcтоты на едниницу изменения АЦП
float FreqStep;



//Переменная для текущего значения резистора
int sensorValue = 0;
//Переменная для Старого значения резистора
int OLDsensorValue = 0;



void setup() {               
// Конфигурим вывод Step_pin как выход
pinMode(Step_pin,OUTPUT);
// Конфигурим вывод Dir_pin как выход
pinMode(Dir_pin,OUTPUT);
// Конфигурим вывод Dir_pin как вход
pinMode(Resistor_pin,INPUT);


//Установим на выходах 0
digitalWrite(Step_pin, LOW);
digitalWrite(Dir_pin, LOW);

// Посчитаем "шаг" изменения частоты на единицу изменения резистора
FreqStep=(float)(HighFreq-LowFreq)/1024;

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

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

//Запускает таймер и получает загружаемое значение таймера.
//Параметр - желаемая частота в герцах.

timerLoadValue=SetupTimer2(50);

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

void loop() {

//Тут будем читать занчение
sensorValue=analogRead(Resistor_pin); 

//Сравним значение со старым, если отличается - пересчитаем установку таймера
if (sensorValue!= OLDsensorValue)
  {  //Serial.println("ReCall");
    OLDsensorValue=sensorValue;
   timerLoadValue = SetupTimer2(LowFreq+FreqStep*sensorValue);
  }



//  Serial.println(sensorValue,DEC);
//  Serial.println(timerLoadValue,DEC);
//delay (100);

}



//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);
}


Движок резистора подключаем к ноге A0, выводы к VCC и GND ардуины.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

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

Сообщение Revenger » 30 дек 2014, 16:57

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

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

Сообщение RootAdmin » 30 дек 2014, 19:03

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

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

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

В общем то вроде как всё работает :)
Переменник (10кОм вроде) воткнул прямо в макетку (дай Бог здоровья тому, кто ее придумал и тому, кто меня подстегнул её купить :) ), правда когда я его кручу, то мотор то перестаёт вращаться, то наоборот, рывком начинает крутить быстрее. Наверное он долго провалялся на столе и контакт плохой. Попробую найти "нормальный".

В левом крайнем положении обороты "на максимум", вправо меньше, а в середине почему то еще меньше. :)

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

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

Сообщение Myp » 31 дек 2014, 11:21

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

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

Сообщение Revenger » 31 дек 2014, 15:43

Да фиг с ним, с шагом этим )) (к тому же.. гудел с неправильными и предыдущей программой нормально) Бум после пьянок разбираться теперь уже ;)

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

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

Сообщение RootAdmin » 31 дек 2014, 21:09

Всегда пожалуйста. Программу проверю, может там что не учел. На осциллографе вроде плавно частота меняется.
С наступающим!
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1725
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

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

Сообщение Revenger » 18 янв 2015, 04:00

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

Пред.След.

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

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

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