Вопросы новичка, подключение шаговика

Mitrich
Offline
Зарегистрирован: 04.07.2011

Если написал не там то поправьте или перенесите пожалуйста.Просто рубрики схожей по тематике не нашел.

А теперь по делу.До покупки ардуино(у меня аналог Сarduino) никогда програмированием не занимался,но очень долго занимаюсь ремонтом электроники.Тут возникла задача,есть штатный магнитафон(Лексус)который управляется с дисплея,команды идут по штатной шине AVC-Lan,есть проигрыватель который управляется с пульта.Собственно возникла мысль считать команды штатного монитора и присвоить им команды пульта.Ничего универсального не нашел и понял,что надо делать самому.

Решил идти последовательно и учиться понемногу.Первым этапом решил тупо выдавать команду на ик диод,т.к раньше ничем подобным не занимался возникает несколько простых и глупых вопросов.Я считал код кнопки пульта программулиной,она мне выдала код из шести цифр и букв(как я понял в 16 кодировке)протокол NEC.Как я понял ик диод нужна вешать на цифровой выход,подойдет ли 13 вывод(внутри к нему привязан по умолчанию резистор).В какую систему мне надо переводить 16-ный код, что бы программа поняла его или она поймёт его.

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

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

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

leshak
Offline
Зарегистрирован: 29.09.2011

 Правильно ли я понял, что вы хотите ардуиной эмулировать IK-пульт. Что-бы она посылала сигналы типа "нажата такая-то кнопка"?

>подойдет ли 13 вывод

Да подойдет. Но это не лучший вариант. Обычно к 13-тому привязан и встроенный на плату светодиод, которым удобно мигать в диагностических целях. Напрмер "послал команду" - мигнул диодом. Удобно при отладке, лучше не терять эту возможность.

Тем более что цена вопроса - купить за пару копеек резистор и использовать любой другой цифровой пин.

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

Не только. Длина каждого моргания тоже играют роль. Одна длина означает единицу, другая - ноль. Конкретные цифры "длины" - нужно смотреть в описание протокола. Вот эти "промарганные" единицы и нули и есть ваш код в двоичной форме. Кроме того могут еще быть еще "длинный миг" вначале, означающий "щас начнем данные передавать" и в конце "данные закончены".

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

Писать все с нуля - не обязательно. Есть библиотека IRRemote, протокол NEC там вроде уже реализован (а мне в свое время с томпсоном пришлось танцевать, у них свой код). Позволяет как "ловить сигнал" и декодировать (можете посмотреть какие коды шлет ваш пульт), так и "послывать, воспроизводить".

Вот блог ее автора:www.arcfn.com/search

 

Fenrir
Offline
Зарегистрирован: 03.07.2011

 у меня вопрос по шаговому мотору

мотор -  28BYJ-48 12VDC выглядит -

 

в туториалах 4х и 6ти пиновые моторы что ввело меня в некоторый ступор.

но подключил по такой схеме - 

залил немного переделанный motorknob.

#include <Stepper.h>

#define STEPS 64

Stepper stepper(STEPS, 8, 9, 10, 11);


void setup()
{
  stepper.setSpeed(400);
}

void loop()
{
  int val = 2047;
  stepper.step(val);
  delay(1000);
 
}
 

Собственно вопросы -

если установить setSpeed больше 500, то двигатель залипает("свистит", вибрирует, но вал не крутит), почему?

нормально ли что я отдаю ему 5В с ардуины?

Можно ли его ускорить?

у мотора как я понял 64 шага.

однакоже в вышеприведенном коде он поворачивается на полный круг. хотя если я понял правильно stepper.step он должен прокрутиться на 2047 шагов. 

Буду рад любому ответу.

 

 

 

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Нормально ли что я отдаю ему 5В с ардуины?

- не нормально спалите ардуино, мотору надо 12В и большой ток

Можно ли его ускорить?

-После подачи 12В можно дальше експериментировать.

Сейчас прекратите, а то потом будет беда с платкой

Fenrir
Offline
Зарегистрирован: 03.07.2011

 блин, вот знал же что копировать нельзя -  не то скопирую =(  мотор - 28BYJ48 5V DC

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Даже если он и 5В, ток потребления высокий, киньте отдельное питание. Самый простой случай из компа выведите 5В там ток такой что дальше будет ограничение микросхемы ULN)  

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

И кстате эти моторы не скоростные, в них стоит еще редуктор. А шаговики нужно постепенно разгонять, сразу большая частота ничего не даст. Сделайте цикл и в нём гоняйте скорость

leshak
Offline
Зарегистрирован: 29.09.2011

 

  • Возможно физическое ограничение движка, он просто не не успевает сделать шаг, до того как приходит "следующая команда".
  • Возможно  у него схема  подачи импульсов не такая как зашита в библиотеке stepper.   Возможно ему нужно подавать по схеме (1)-(2)-(3)-(4), а не (1,3)-(2,3)-(2,4)-(1,4) как это делает stepper. Как именно "правильно" - смотреть даташит. Например вот www.yoonitrading.co.kr/doc/step-geared-fulling/(10)28BYJ48-12-300-01.pdf раздел "Switching Sequence". Как видим тут и количество фаз другое, и пины другие. Кстати этот даташит говорит что он таки 12v, а не 5v.
  • Библиотека  "по очереди" устанавливает пины в нужное состояние. Используя digitalWrite. То есть "обмотки включаются-выключаются" с небольшим рассогласованием. При больших скоростях это "рассогласование" может оказася сопоставимым с задержкой между самими степами (когда вы устанавливаете "скорость" это и есть установка этой задержки). Нужно попробовать "дергать пины" самому, одновременно, с помощью прямой записи в порт.
  •  

 

Shurup
Offline
Зарегистрирован: 30.05.2011

Adessit пишет:

И кстате эти моторы не скоростные, в них стоит еще редуктор. 

Сам придумал про редуктор или ктото подсказал?

Ты же модератор, прежде чем писать 7 раз подумай и проверь, я уже не первый раз встречаю такие ошибки

в напсаных тобой ответах пользователям . 

leshak
Offline
Зарегистрирован: 29.09.2011

2Shurup:

  1. Нужно уяснить, что вам никто ничего не должен. Даже модератор. Сайт бесплатен, советы бесплатны. 
  2. Увидели ошибку, поправте. Я сильно удивлюсь если вы никогда не ошибаетесь, если человек начал выполнять РОЛЬ модератора, это не значит что он стал безошибочен и "знает все". Вы наверное удивитесь, но модератор тоже учится и все время узнает что-то новое. Не нравится - сделайте свой сайт и будте там безошибочным модератором. Модератор это "следить за порядком", и какие-то советы он может давать только в рамках собственных знаний, которые, естественно, не безграничны. Если же вы их воспринимаете как "истину в последней инстанции", то вы сам себе злобный буратино.
  3. Прежде чем безаппеляционно заявлять глупости, да еще с наездом на других - воспользуйтесь гуглом. По слову "28BYJ48". Вторая ссылка будет vrtp.ru/index.php, где человек долго думал что у него не работает  такой движок именно потому что у него был редуктор и он просто не замечал поворота "Разобрался с движком: для полного оборота нужно подать 200 импульсов на управляющие входы. Отметил положение вала движка и начал тупо подавать импульсы по схеме 1-2-3-4. После 10 раза увидел небольшой сдвиг.". 
  4. Гораздо более продуктивно поощрять положительное, а не ругать за ошибки (которая, в данном случае, очень под вопросом). Я, например, благодаря модератору узнал что "шаговики нужно постепенно разгонять". Лучше было бы что-бы он вообще молчал, пока не будет 100% уверен?

 

Shurup
Offline
Зарегистрирован: 30.05.2011

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

2-Я если чегото не знаю то лучше промолчу чем писать заведомо не верную информацию.

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

3-на фотографии которую выложил пользователь движек без редуктора

4-Если честно вчера был в плохом настроиении вот и попался этот пост под руку :)

Если я кого то обидел извините

leshak
Offline
Зарегистрирован: 29.09.2011

Ладно про оферты и "должны быть" (никто ничего не должен) и проч. пропустим. Не будем раздувать флейм :)

 >Если я кого то обидел извините

Ну я тоже может немного излишне горячо высказался :) Тем более что "наезд" был не на меня.

Просто совет на будущие: критикуйте совет, идею, позицию, но не автора, личность, человека. В этом случае намного больше шансов что вашу мысль услышат.

>Я если чегото не знаю то лучше промолчу чем писать заведомо не верную информацию

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

К тому же, если вообще ударится в философию, если вы чего-то _действительно_ не знаете, то вы даже не знаете того что вы этого не знаете :) Получается что "нужно молчать всегда" ;)

Для чего мы тут собрались? Учится. Например я ответил. Неправильно. Если я угалал причину проблемы - мне скажут спасибо, если скажут "нет, проблема была в другом" - я скажу спасибо, я чему-то научился. Главное - психологический комфорт для всех участников процесса. Иначе не получится "сообщество".

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

О чём вы господа? Разве этот мелкий моторчик из кондиционера не с редуктором???

 

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Shurup пишет:

3-на фотографии которую выложил пользователь движек без редуктора

то схема включения, а не фото. Картинка нарисована во http://fritzing.org/

Shurup
Offline
Зарегистрирован: 30.05.2011

Adessit пишет:

О чём вы господа? Разве этот мелкий моторчик из кондиционера не с редуктором???

 

Этот с редуктором, но это не шаговый двигатель, у шагового двигателя должно быть минимум 2 обмотки, а это значит минимум 4 провода для подключениея

leshak
Offline
Зарегистрирован: 29.09.2011

 >у шагового двигателя должно быть минимум 2 обмотки, а это значит минимум 4 провода для подключениея

Лезем в код библиотеки стандартной библиотеки Stepper (что можно перевести как "шаговик"). Файл Stepper.h

Смотрим строку 31: "The sequence of controls signals for 2 control wires is as follows"

Вообщем, если посмотреть код, то четко видно что степеры бывают 1 питание + 4 управляющих, и 1 питание + 2 управляющих.

>2 обмотки, а это значит минимум 4 провода для подключениея

На две обмотки, достаточно 3-х проводов подключения. Либо питание, либо землю можно сделать общими. Если вы посмотрите на первую картинку, второго поста, то увидите, что 4-рьмя управляющими рулятся, фактически, четыре обмотки.

leshak
Offline
Зарегистрирован: 29.09.2011

 Я вообще не понимаю о чем спор идет. Я выше давал ссылку на форум, где у человека был движок именно с такой маркировкой с четырьмя управляющими. И проблема у него была именно из-за того что он не знал о наличии в нем редуктора. Когда он это понял - проблема рассосалась.  То есть то что в этих движках редуктор, как минимум, "бывает" сомнений не вызывает. И предположение о наличии редуктора, со стороны Adessit было вполне логично.

Есть ли редуктор в экземпляре Fenrir-а? На это ответить может только он.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Реудктор по любому есть, если гдето сбоку находится выход "якоря". А у этой серии у всех так. Он по ходу понижающий обороты

этот моторчик шаговый, картинка кривая, сидел этот моторчик в моём случае в кондиционере и подключен был в ULN2003 

Вот более красивая картинка специально для вас

Fenrir
Offline
Зарегистрирован: 03.07.2011

 да мотор очень похож на тот что выше разве что приписка там не 12V DC а 5V DC

запитал от внешнего питания, так и вправду стало спокойнее на душе) 

что такое редуктор я примерно представляю - как узнать что он есть или нет - не очень. 

пробовал через digitalWrite включать как 1-2-3-4 так и как в указанном даташите 4- 4,3 - 3 - 3,2 - 2 - 2,1 - 1 - 1, 4  если я правильно понял. ничего. ни малейшего движения.

 для  использования stepper.step я вчера включал не  так как тут 4-3-2-1 если смотреть out,

а 4-2-3-1, соответственно либа пускает (1,2)-(2,3)-(3,4)-(1,4). про "разгон" не совсем понял. как его правильно делать?

не вот так же - 

  for(i=0;i<465;i++){
  stepper.setSpeed(i);}

 

Shurup
Offline
Зарегистрирован: 30.05.2011

leshak пишет:

 

На две обмотки, достаточно 3-х проводов подключения. Либо питание, либо землю можно сделать общими. 

Если бы ты понимал принцип работы шагового двигателя думаю что ты бы не написал этого

как я уже писал ранее 4 провода это минимум

 

leshak
Offline
Зарегистрирован: 29.09.2011

 > как узнать что он есть или нет - не очень.

Ну скорее всего, если вал двигателя "по центру", как было на вашей картинке - то редуктора нет. А если "как-бы сбоку", не на центральной оси, а паралельно ей (как на фотках Adessit), то редуктор есть. Если он есть, то нужно сделать "много шагов", прежде чем вы сможете увидить их визуально.

>и как в указанном даташите 4- 4,3 - 3 - 3,2 - 2 - 2,1 - 1 - 1, 4

Все-таки это не совсем "ваш" даташит, попробуйте найти имменно на 5v, может у них схемы включения отличаются :( А может там будет написано какая у него макс. скорость, может с мелницей воюете.

Но, как я понял при speed<500 у вас и стандартная либа, все-таки крутит? Попробуйте все-таки "разгон". Идея выглядит проще в проверке чем, "подбирать схему", "прямая запись в порты" и т.п. Если не получится "разгон", тогда уж в дебри... :(

>не вот так же

Почти так, только вам же нужно "больше 500". И кроме "установки скорости" покрутить не мешало-бы.

for(i=10;i<1000;i++){ // возможно нужно подобрать шаг увеличения скорости, что-бы "быстрее разгонялось
stepper.setSpeed(i); 
stepper.step(100); // крутим. тоже можно поигратся сколько шагов нужно "для разгона"

};
stepper.step(2000);// крутим на максимальной скорости.

 

 

 

leshak
Offline
Зарегистрирован: 29.09.2011

 >Если бы ты понимал принцип работы шагового двигателя думаю что ты бы не написал этого

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

Вам не хватило того что вы громко пукнули в лужу по поводу редукторов? Вам недостаточно того что вам уже показали фотки реального девайса? недостаточно того что указали строчку в библиотеке? Вы не можете посмотреть в документацию arduino.cc/en/Reference/StepperConstructor что-бы увидеть пример управления шаговым двигателем по  двум управляющим проводам?

Example
Stepper myStepper = Stepper(100, 5, 6);

Взять словарик и перевести "pin3, pin4: optional the last two pins attached to the motor, if it's connected to four pins (int)" религия не позволяет?

Или просто Чувство Собственной Важности, не допускает что бывает что-то что вы понимаете не  в полном объеме?

Так что возможно вы и больше разбираетесь в "принципах работы шагового двигателя", возможно вы даже правы по поводу "четерых проводов", но не пошли бы вы нахер со своим всезнанием излагаемой в такой форме?

Fenrir
Offline
Зарегистрирован: 03.07.2011

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

Model -28BYJ48;
Rated Voltage (DCV)-5;
Resistance Ω/Phase(at25℃) - 60;
Max.Freeload Pull-in Frequency (PPS) - ≥500;
Max.Freeload Pull-out Frequency(PPS)≥900;
Pull-in Torque(mN.m)- ≥29.4;
Operation Frequency (PPS)- 100
Detent Torque (mN.m)- ≥29.4
Temperature Rise(K) - ≤40
Noise(dB)- ≤35;
Step Angle (1-2phase) - 5.625°/64
Insulation Class - E

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

 

leshak
Offline
Зарегистрирован: 29.09.2011

 Смотрите что я выкопал в либе:

void Stepper::setSpeed(long whatSpeed)
{
  this->step_delay = 60L * 1000L / this->number_of_steps / whatSpeed;
}

Как я понял, эта задержка между импульсами которые посылает либа на обмотки.

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

void setup(){
  
  Serial.begin(115200);
  Serial.println("OK");
  unsigned long step_delay;
  step_delay = 60L * 1000L / 64 / 470;
  Serial.println(step_delay);

}

В терминалах мне вернуло "1". То есть при данном наборе 64steps/470speed. Задержка между импульсами уже составляет одну миллисекунду. Значит самой библиотеке уже "ускорятся" некуда.
Она уже начинает гнать импульсы фактически без пауз, да еще с небольшим разнобоем из использования digitalWrite, вместо прямой записи в порт.
Так что похоже, без жестких извратов типа "напрямую писать в порты", как-то по другому генерировать частоту и т.п. не получится даже если "движок" может быстрее.
Можно еще попробовать "подхачить" библиотеку, перевести ее внутренюю кухню с миллисекунд, на микросекунды, но.... вообщем без танцев с бубном не обойтись.

Shurup
Offline
Зарегистрирован: 30.05.2011

Потер все сообщение, т.к. кроме оскорблений никакой полезной информации или вопросов в нем нет.

Администратор

P.S. Shurup забанен

Fenrir
Offline
Зарегистрирован: 03.07.2011

если так уж хорошо разбираетесь в шаговых моторах посоветуйте пару тройку хороших ссылок.

Alexander
Offline
Зарегистрирован: 25.04.2010

Я у всех присутствующих прошу прощения, мне его (Shurup) надо было забанить после первого или второго сообщения в этой ветке.

leshak
Offline
Зарегистрирован: 29.09.2011

2Alexander

 >надо было забанить

Ну в будущие никто смотреть не умеет. А банить "с плеча", тоже не дело. Все иногда "выходим из себя", тем более что во втором сообщении он как бы извинился. "Официально предупредить" - возможно стоило. 

Кстати, раз вы тут (а я помню, что вы правкой переводов занимаетесь) http://arduino.ru/Reference/Micros

Оригинал: "function has a resolution of four microseconds....has a resolution of eight microseconds"

Текущие перевод: ""функция micros() имеет разрешение 4 секунды ...... разрешение 8 секунд "

Как видим микросекунды превратились в секунды.

 

leshak
Offline
Зарегистрирован: 29.09.2011

 2Fenrir

Я попробую на симуляторе собрать степер (у меня "в железе" только сервы есть) и попытаться раскрутить его использую прямую запись в порт и микросекундные задержки. Если получится, попробуете потом мой скетч на реальном железе?

Alexander
Offline
Зарегистрирован: 25.04.2010

leshak пишет:

..... Как видим микросекунды превратились в секунды.

 

Спасибо. Поправил.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Оффтоп.

Похоже всё самое интересное я пропустил 

Что-то я обвяз проблемами после свадьбы, пока. Есть у меня и моторшилд, о котором пишу материал,(отдельное спасибо http://domit.co.uk/) и моторчик и лаб.блок питания - проверил бы всё это, но нет же мебель скоро приедет надо квартиру довести до ума((((

Zaliv
Offline
Зарегистрирован: 05.03.2011

Adessit пишет:

Похоже всё самое интересное я пропустил 

Не то чтоб. Так, — эмоции бушуют. :)

leshak
Offline
Зарегистрирован: 29.09.2011

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



byte phase=1;
unsigned long step_delay=2000; // изначальная задержка между степами, фактически установка стартовой скорости
unsigned long text_time=0;// когда нужно выполнить следующий тик.
unsigned long steps2reduce=20;// сколько шагов нужно выполнить, прежде чем увеличивать скорость

unsigned long stepsCounter=0; // сколько шагов выполнили, с предыдущего "ускорения".




void setup()
{
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);

  stepsCounter=steps2reduce;
}

void loop()
{

  if(  micros()>text_time) { // пришло время выполнять следующий шаг, если время не пришло - ничего не делаем

/*
   Step C0 C1 C2 C3
     1  1  0  1  0
     2  0  1  1  0
     3  0  1  0  1
     4  1  0  0  1
*/     
      switch (phase) { // выполняем шаг прямой записью в порт. Устанавливаются пины 11,10,9,8
        case 1:
          PORTB=B0101; 
          break;
        case 2:
           PORTB=B0110; 
          break;
        case 3:
           PORTB=B0101; 
          break;  
        case 4:
           PORTB=B1001; 
          break;        
     
      }
      
        phase++;
        if(phase>4)phase=1;
        
        text_time=micros()+step_delay; //вычисляем время когда будет нужно делать следующий шаг.
        
        stepsCounter--;
        if(stepsCounter==0){ // пора ускорятся
           step_delay-=100 ;// уменьшаем время задержки между шагами, в микросекундах , возможно нужно "более плавно"
           stepsCounter=steps2reduce;// занаво начинаем отсчет выполненных шагов
        }
  }
  

}

 По идее, "пишем напрямую в порт" (что обеспечивает синхронность пинов) и постепенно ускоряемся (уменьшаем время задержки между степами). Возможно нужно будет поигратся со стартовой задержкой между шагами, через сколько шагов ее уменьшать и на сколько. Подключение предполагал как в вашем первом скетче (пины 8,9,10,11). Схему включения взял из библиотеки ( при кодировании ее битовой маской в порт, нужно "перевернуть зеркально", 8-пин - самый младший бит).

Но чем дальше, тем больше подозреваю что "воюем с ветряными мельницами". Например в симуляторе, для степпера, такой параметр моделирования как "максимальная скорость" - 360RPM. Что даже хуже чем "у вас в реале".

Fenrir
Offline
Зарегистрирован: 03.07.2011

 leshak спасибо за помощь, но мне тут приехал freeduino motorshield а к нему вот здесь и пример freeduino.ru/arduino/mshield.html

там присоединяют мотор один в один как у меня и описывают что стоит мотор с шагом 32 и понижающий редуктор на 64. вот откуда и полный оборот получился 2048 = 32*64.  тоесть неправильные данные я дал исходные к моему сожалению. получается, чтолюбую скорость что я устанавливал надо делить на 32. вобщем мотор не скоростной. Спасибо еще раз =)

leshak
Offline
Зарегистрирован: 29.09.2011

 >толюбую скорость что я устанавливал надо делить на 32

Я думал это стало понятно после того Adessit намекнул на редуктор, а гугл подтвердил. Но ведь даже из "деленной" скорости можно попытся выжать "еще чуть-чуть". В данном случае видно, что достигнут "предел библиотеки" (поэтому и попытался без нее сделать). Совпадает ли "предел библиотеки" с "пределом движка" - не известно. Только "попробовать".

Люди разгоняют шаговики до 3600 оборотов в минуту, даже если поделить на 64, получается примерно "оборот в секунду".

Вот обсуждение подобного "темного леса" forum.cxem.net/index.phpkhalus.com.ua/kh/show/flm/stepper-article/index (раздел "разогнать"), делают обратную связь что-бы точно знать положение вала и т.п.

Вообщем при желании и большом запасе времени это может быть очень "долгоирающие" развлечение. В какой-то мере "спортивное" :)

 

kadushkin
Offline
Зарегистрирован: 18.12.2011

А как реализовать подключение и управление шаговым двигателем 12В от ардуино?

Типа такого http://www.haydonkerk.com/LinearActuatorProducts/StepperMotorLinearActua...

Сила тока свыше 2А.

Неплохо бы готовое решение для ардуино...

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

kadushkin пишет:

А как реализовать подключение и управление шаговым двигателем 12В от ардуино?

...

Сила тока свыше 2А.

12В - пожалуйста, а вот 2 А - извините. Микросхема на шилде расчитана только на 0,6 А, нужно ставить внешние ключи.

kadushkin
Offline
Зарегистрирован: 18.12.2011

Кажется нашел http://www.ebay.co.uk/itm/L298N-LMD18200-DC-Dual-H-bridge-isolated-Stepp...

Посоветуйте подойдет ли?

И куда там 12В подключать?

L298N LMD18200 DC Dual H-bridge isolated Stepper Motor Driver Controller Module

Size: 51mmX46mmX28mm.
Chip: LMD18200.
Work voltage: Control signal DC 4.5 ~ 5.5V.
DC motor drive voltage up to 55V, suggested the actual use of 12 - 48V (not less than 12V), with a drive power indicator.
Maximum output current of 3A (instantaneous peak current 6A), the maximum output power of 75W.
Motor speed can be achieved by smooth PWM speed control.
Anti-interference ability.
With a continued flow protection.
Can be individually controlled a DC motor or a solenoid or a single bi-directional solenoid and so on.
Reversing can be achieved.
Peak output current up to 6A, continuous output current up to 3A;
Working voltage up to 55V;
Low RDS (ON) typically 0.3W per switch;
TTL / CMOS compatible input level;
No "shoot-through" current;
With temperature alarm and overheat and short circuit protection;
Junction temperature of 170 ℃, the chip off;
Have good immunity.

 А вот еще http://uk.shopotam.ru/catalog/260901173986-item.html

может он подойдет

kadushkin
Offline
Зарегистрирован: 18.12.2011

А вот китайцы предлагают...

http://item.taobao.com/item.htm?id=13237717196

Если вот такой мотор на 12В прицепить к тому контроллеру будет ли работать?

http://item.taobao.com/item.htm?id=12640015828

Сможет ли этот мотор ~4 кило сдвинуть и с какой силой тока? Может 2А и не нужно

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Любая из этих приблуд подойдет. А 4 кило любой мотор может сдвинуть, но на разное расстояние - от рычага зависит :) Ибо моторы дают момент а не тягу.

kadushkin
Offline
Зарегистрирован: 18.12.2011

А для управления упиполярным ШД подойдет этот контроллер?

Как подключить к нему? У ШД два провода лишние получаются

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Средние выводы обмоток не подключать

kadushkin
Offline
Зарегистрирован: 18.12.2011

Спасибо.

А при этом мощность упадет?

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

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

kadushkin
Offline
Зарегистрирован: 18.12.2011

 

Как подключить ШД к контроллеру?

А1 на контроллере это А на схеме?

А2 на контроллере это А с черточкой на схеме?

Управлять контроллером с четырех ШИМ выходов ардуины?

Что за кнопка "logic power supply mode choose button" на контроллере, зачем она?

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

A1 - A

B1 - А с чертой

A2 - B

B2 - B с чертой

Управлять 4 выводами с ардуины

kadushkin
Offline
Зарегистрирован: 18.12.2011

AlexFisher пишет:

Управлять 4 выводами с ардуины

Обычными или с ШИМ?

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Если нужны дробные шаги, то ШИМ. Если полный шаг или полушаг, то без разницы. Использовать стандартную библиотеку Stepper

kadushkin
Offline
Зарегистрирован: 18.12.2011

Не работает, в чем причина не пойму

Мотор 12В, 1,8 град.

Питание 10В подаю.



#include <Stepper.h>
int Motor2A1Pin = 50;// Контакт 50 для второго привода
int Motor2B1Pin = 51;// Контакт 51 для второго привода
int Motor2A2Pin = 52;// Контакт 52 для второго привода
int Motor2B2Pin = 53;// Контакт 53 для второго привода
Stepper Motor2(200, Motor2A1Pin, Motor2B1Pin, Motor2A2Pin, Motor2B2Pin);

void setup()
{
Motor2.setSpeed(400);
}

void loop()
{
Motor2.step(100);
delay(1000);
}

 Мотор дергается чуть ощутимо, если центральные провода посадить на +12В - дергается сильнее.

Но вращения нет.

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Неправильно иницилизируете

Правильно:

Stepper Motor2(200, Motor2A1Pin, Motor2A2Pin, Motor2B1Pin, Motor2B2Pin);

 

kadushkin
Offline
Зарегистрирован: 18.12.2011

спасибо. помогло + помогло снижение скорости до 100.

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

Читая эту ветку, я так понял вопрос по скорости не решился.

Что его придется разгонять?

Двигатель 42BYGH801, не могу найти частоту вращения, но думаю она явно не 100.