Помогите доработать скетч для управления шаговым двигателем

zeonmaster
Offline
Зарегистрирован: 19.09.2012

есть скетч отсюда http://arduining.com/2012/04/22/arduino-driving-a-micro-stepper-motor/ для управления положением ротора шагового двигателя с помощью переменного резистора. надо изменить скетч (или предложить доработку аппаратной части) чтобы подключить более мощный ШД. в идеале, чтобы было два резистора и два ШД, которые управлялись бы независимо. у меня есть ардуино какая-то китайская и микрошаговые контроллеры ШД на А4988. может быть не дорабатывать скетч, а просто докупить другой контроллер, который бы работал не со step/dir, а напрямую с четырьмя выходами ардуино? вариант с А4988 предпочтительнее, потому как их есть 2шт. помогите, пожалуйста!!!!

Vadim111
Offline
Зарегистрирован: 14.01.2015

Простите, не совсем понял вопрос, но если надо подключить более мощные ЩД, то скетч переделывать не надо. Принцип работы всех ШД одинаков: 1 импульс поворачивает ШД а 1 шаг. Ардуина выдает слаботочные импульсы, а драйвер ШД за счет транзисторов и пр. элементов преобразует эти импульсы в сильноточные. Вначале вам надо узнать, какой ток потребляет ваш ШД (можно грубо разделить рабочее напряжение ШД на сопротивление любой обмотки) и в зависимости от этого необходимого тока подбирать контроллер. Для любого драйвера ШД выдаваемый ток - это главный параметр.

Если нужны несколько ШД, то в скетче надо создать несколько объектов ШД

Stepper stepper(STEPS, COIL1, COIL2, COIL3, COIL4);

(только все надо вешать на другие пины Ардуины). Например:

Stepper stepper2(STEPS, COIL1, COIL2, COIL3, COIL4);

А потом установите параметры для второго движка, Например:

 stepper2.setSpeed(30);    // set the motor speed to 30 RPM (360 PPS aprox.).
 stepper2.step(630);       //Reset Position(630 steps counter-clockwise). 

Ну и второй потенциометр тоде надо добавить:

#define PotIn2  1

Ну а в самом коде крутите ваш второй движок, как надо.

 

zeonmaster
Offline
Зарегистрирован: 19.09.2012

да, всё верно, но у меня нарисовалась другая проблема - этот скетч расчитан на пятипроводные ШД, т.е. четырёхфазные, а у меня мотор на две фазы, т.е. четыре провода. как быть?

vvadim
Offline
Зарегистрирован: 23.05.2012
zeonmaster
Offline
Зарегистрирован: 19.09.2012

спасибо, но у вас написана своя программа и мне она, видимо, не подойдёт по причине того, что не использует библиотеку работы с ШД. или я не прав?

vvadim
Offline
Зарегистрирован: 23.05.2012

делаем очередной видеодевайс?)))))

zeonmaster
Offline
Зарегистрирован: 19.09.2012

да, именно - систему управления фокусом для стедикама. в принципе, проще взять пару серв + сервотестер, но ШД мне нравятся больше.

vvadim
Offline
Зарегистрирован: 23.05.2012

в твоей ситуации проще и дешевле купить готовый и заниматься съёмками, а не влазить в эту тему на долгие месяцы.
ты эту тему года два назад уже поднимал)))

zeonmaster
Offline
Зарегистрирован: 19.09.2012

да, поднимал, но тогда идея заглохла, потому как были важнее дела - а сейчас собираю трёхосевой стабилизатор и для полного счастья надо фокусом рулить. хотелось бы всё же добить, потому как вся элементная база есть, станки для изготовления корпуса толкового есть и т.д. дело осталось за малым - адаптировать скетч, или заказать новый движок на 4-е фазы под этот скетч. в принципе, второй вариант тоже реален, просто ждать 2-3 недели не особо охота... у меня самого мозг в другую сторону заточен, с программированием я совсем не дружу - я больше по железу выступаю. вот и ищу сочувствующего человека, который бы смог помочь.

vvadim
Offline
Зарегистрирован: 23.05.2012

на петином форуме ты когда то писал, что у тебя есть корефан, который за три копейки напрограммит любые твои хотелки...

zeonmaster
Offline
Зарегистрирован: 19.09.2012

к сожалению, тот чел испарился в прямом смысле этого слова)))

 

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

vvadim
Offline
Зарегистрирован: 23.05.2012

на серве тоже можно работать, а шум при малых перемещениях совсем не критичный.

только с сервотестером не получить запоминание позиций и т.д.
а сам знаешь как эти фишки украшают картинку)))

zeonmaster
Offline
Зарегистрирован: 19.09.2012

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

vvadim
Offline
Зарегистрирован: 23.05.2012

теоретически можно снять крышку и смазки напихать, кожух сделать - но что получится не пробовал.
да и в сети инфы о подобных экспериментах не встречал.

жужжит потихоньку - ну и пусть себе жужжит)))

vvadim
Offline
Зарегистрирован: 23.05.2012

по точности серва конечно проигрывает из-за большого люфта в редукторе (несколько градусов так точно).

zeonmaster
Offline
Зарегистрирован: 19.09.2012

иногда на съёмке качественный звук критичен. не всегда, но последним временем попадаются именно такие. так что буду пробовать жужжалку присмирить. вторая проблема серв - шлицевой вал, под который проблематично найти шестерню и придётся ещё и этим заморачиваться. вероятно, надо будет идти на поклон к владельцам 3D-принтаков, иначе это не сделать.

vvadim
Offline
Зарегистрирован: 23.05.2012

между качалкой и колесом зубчатым делаем переходник и радуемся)))

zeonmaster
Offline
Зарегистрирован: 19.09.2012

можно и так попробовать, если с 3D-принтаком не срастётся

vvadim
Offline
Зарегистрирован: 23.05.2012

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

zeonmaster
Offline
Зарегистрирован: 19.09.2012

есть такая проблема, но иногда были у меня и толковые детали. зависит от используемого пластика и оптимальнойсти параметров печати.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

vvadim пишет:

на петином форуме ты когда то писал, что у тебя есть корефан, который за три копейки напрограммит любые твои хотелки...

А ссылку на Петин форум можно?

 

srg62
Offline
Зарегистрирован: 31.05.2015

Есть скетч два шаговых крутятся в одну сторону, а как описать каждый отдельно, чтобы один шел на 45град а другой на15, к примеру? если кто может прояснить или где почитать, для делетанта пожалуйста.

// крутятся два в одну сторону на 360
int motor1Pin1 = 2;
int motor1Pin2 = 3;
int motor1Pin3 = 4;
int motor1Pin4 = 5;
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int motor1Speed = 1200;
int count = 0;
int countsperrev = 512;
int lookup[8] = {
  B01000, B01100, B00100, B00110, B00011, B00001, B01001};
void setup ()   {
pinMode (motor1Pin1, OUTPUT);
pinMode (motor1Pin2, OUTPUT);
pinMode (motor1Pin3, OUTPUT);
pinMode (motor1Pin4, OUTPUT);
pinMode (motorPin1, OUTPUT);
pinMode (motorPin2, OUTPUT);
pinMode (motorPin3, OUTPUT);
pinMode (motorPin4, OUTPUT);
}
// описание условий поворота по и против час стрелки 
void loop ()   {
  if(count < countsperrev )
    clockwise();
  else if (count == countsperrev * 2)
    count = 0;
  else
    anticlockwise(); 
  count++;
}
// закончил про поворот по часовой стрелке (3.59).
// функция поворачивает  против часовой стрелки (4.00).
 
 void anticlockwise()
{
    for(int i = 0; i < 8; i++)
    {
      setOutput(i);
      delayMicroseconds(motor1Speed);
     }
}
// функция поворачивает  по часовой стрелке (4.00).
 void clockwise()
{
    for(int i = 7; i > 0; i--)
    {
      setOutput(i);
      delayMicroseconds(motor1Speed);
     }
}
void setOutput(int out)
{
   digitalWrite(motor1Pin1, bitRead(lookup[out], 0));
   digitalWrite(motor1Pin2, bitRead(lookup[out], 1));
   digitalWrite(motor1Pin3, bitRead(lookup[out], 2));
   digitalWrite(motor1Pin4, bitRead(lookup[out], 3));
   digitalWrite(motorPin1, bitRead(lookup[out], 0));
   digitalWrite(motorPin2, bitRead(lookup[out], 1));
   digitalWrite(motorPin3, bitRead(lookup[out], 2));
   digitalWrite(motorPin4, bitRead(lookup[out], 3));
}
 
vvadim
Offline
Зарегистрирован: 23.05.2012

правильно вставьте код и создайте свою тему

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

Vadim111
Offline
Зарегистрирован: 14.01.2015

Вы бы сосредоточились на одном вопросе, а то как-то обо всем сразу.

Тип шд - униполярный или биполярный при решении задачи подобной сложности вас вообще не должен смущать. А то и марка стали корпуса движка может вызвать сомнения :-) Возьмите свой пятипроводный движок и тестер (омметр). Промеряйте поочередно сопротивление всех обмоток и найдите центральный провод (тот, который пятый) Сопротивление с любого другого провода на этот должно быть одинаковым. Обкрутие его изолентой или аккуратно отрежте. Попробуйте покрутить движок примером из библиотеки ШД IDE. Крутится? Можете забыть о 5-6 проводных униполярных ШД до тех пор пока для вас не станет принципиально важна мощность движка и пропущенные шаги. Если вдруг такая принципиальность возникнет, то подключаете этот 5 провод к плюсу источника напряжения от которого питается сам ШД. Менять что-то в скетче при этом не надо. Все! Никаких премудростей!

Дальше берете тот пример, который был приведен в начале поста подключаете свой ШД и пробуете крутить (там как раз 4 пина управляют движком). Если получилось, то создаете второй объект ШД в скетче и дальше я уже отвечал...

Все крайне просто. На каком этапе возникает заковыка?

P.S. Единственное! Надо четко знать маркировку проводов, которые идут от ШД (А1, А2, В1, В2) и подключать эти провода к пинам в строгом соответствии. Это обязательно должно быть указано в документации к ШД. Если вдруг выяснить маркировку проводов невозможно, то надо либо определить последовательность обмоток путем прозвона тестером, либо подключать провода к разным пинам, последовательно перебирая все возможные варианты подключения до тех пор, пока ШД не начнет вращаться устойчиво и без рывков. Все! Это тоже очень просто.

zeonmaster
Offline
Зарегистрирован: 19.09.2012

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

vvadim
Offline
Зарегистрирован: 23.05.2012

ну почему же теоретики, здесь и практиков полно...

maksim
Offline
Зарегистрирован: 12.02.2012

А вы здесь предлагали решить задачу за деньги? Вы пытались получить решение на халяву, а не получив, обратились за возмездной помощью в другое место. Так что теоретик здесь только вы.

zeonmaster
Offline
Зарегистрирован: 19.09.2012

на самом деле мне эту задачу решили без денег - вознаграждения не требовали, просто человеку было интересно не на форумах языком чесать, а в реале что-то делать. на мой взгляд тот, кто бесплатно ничего не может сделать, и за деньги ни хрена не сделает, только ля-ля горазд. не обижайтесь, но вы такие теоретики - а нормальные программеры тут не сидят, у них работы дофига. и не надо обижаться на правду)))

продолжайте тут сраться, мне это не интересно - задача решена, тему можно закрывать.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

О как. :)

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

zeonmaster   ..........всем спасибо, господа теоретики......

Посмотрел все  сообщения, меня нет, слава богу я не засветился в списке теоретиков....
А то бы не знаю что было......

А пока добавлю всех участников обсуждения в список- таких надо знать в лицо! ;)

vvadim
Offline
Зарегистрирован: 23.05.2012

не обижайтесь на зеона, он такой и на других форумах...

всё стоит три копейки и делается элементарно, только его работа стоит денег)))))

maksim
Offline
Зарегистрирован: 12.02.2012

zeonmaster пишет:

на самом деле мне эту задачу решили без денег - вознаграждения не требовали, просто человеку было интересно не на форумах языком чесать, а в реале что-то делать. на мой взгляд тот, кто бесплатно ничего не может сделать, и за деньги ни хрена не сделает, только ля-ля горазд. не обижайтесь, но вы такие теоретики - а нормальные программеры тут не сидят, у них работы дофига. и не надо обижаться на правду)))

продолжайте тут сраться, мне это не интересно - задача решена, тему можно закрывать.

Ну это только ваше неумное и недалекое мнение, и правда тоже только ваша, поэтому обижаться здесь никто не будет. Вы правы в двух вещах.
Первая. Если конечно не врете, что бесплатно и за интерес, тому кто решал эту задачу, данная задача может быть интересна только от недостатка опыта решения подобных задач. Тому кто может решить вашу задачу в уме, прочитав ваш первый пост, данная задача не интересна.
Вторая, все верно, работа предпологает оплату, поэтому да, в вашей теме и подобных темах на этом форуме, человеку, который хотел бы заработать делать нечего.