Официальный сайт компании Arduino по адресу arduino.cc
ШД и библиотека Stepper
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 19/04/2011 - 05:25
Решил в первые вжизни добраться до ШД. Надыбал из старого принетера биполярный ШД на 6-24в, 48 шагов. Собрал контроллер:
Проще кажется некуда. Но вот делема. При тестировании выяснилось что управляется только правая часть а на левой вообще ноль эмоций. сигналы с ардуино идут с обоих выходов. при подключениии светодиодов вместо обмоток ШД моргает только правая часть.
Вот я понять не могу в чем причина.
Код программы использовал этот:
#include <Stepper.h> // change this to the number of steps on your motor #define STEPS 48 // create an instance of the stepper class, specifying // the number of steps of the motor and the pins it's // attached to Stepper stepper(STEPS, 11, 12); void setup() { // Initialize random number generator randomSeed(analogRead(5)); } void loop() { // Pick a random direction and distance to move int rand = random(-48, 48); // Pick a random speed int spd = random(25, 100); // Go stepper.setSpeed(spd); stepper.step(rand); delay(1000); }
Всеже грешу на схему. Сам что то уже в замешательстве, так как реально все проверил, все работать должно. Микросхема рабочая, все рабочее.
Грешить можно на схему. Собрать можно без транзисторов. И опять же проверить все контакты.
Проверьте развязку земли многие и я в том числе её плохо развязывают с ардуино. Связан ли блок питания землей с землей ардуино?
Ага я вот тоже так думал, сначало у мну сразу земля была приконекчена к арде, нифига, потом оторвал все равно нифига, напругу поднимал и т.д. Вот думаю попробовать законектить как для управления по 4ем управляющим входам. Вобщем буду пытать до талава. Правда уже одну микруху спалил. ))
По коду я так понимаю претензий нет да?
Вобщем проверил микросхемку, она сдохла. Взял новую протестил все работает, подключил по вышеприведенной схемы и опять сдохла левая часть. Что то тут не то однако.
Может в моторчике чего-нить коротит?
Собираете на макетке? Если на печатке то фото в студию, проверим схему. Еще что за мотор фирма модель? Может он униполярный или еще чего 3х фазный;))
Собираю на "печатной макетке"))). Мотор из принтера 4 вывода, 2е обмотки. Идентифицировать не удалось. Опытным путем выяснил что шаг 7.5' колво шагов 48, питание по заводской схеме подается от 6в до 24в, в зависимости от режима работы. Фирма двигла похоже Mitsumi - так как основной шаговик 24в, 48 шагов, именно этой фирмы. Но он униполярный (подключен по биполярной схеме) и довольно мощный. Думаю в итоге проще все же использовать униполярники. ПРосто хотелось бы разобраться со схемой.
Транзисторы я взял BC547 - вот щас думаю достаточно ли открытия транзистора для появления лог 1.
Униполярник действительно проще и дешевле реализовать на одной ULN2003(2004)
Нужно тестером померять сопротивления катушек. И покрутить сам мотор нет ли где короткого.
Фото "макетной печатки" в студию. Среди сотен соплей я тоже часто ищу ошибки в своих схемах на "печатных макетках". Где-то может быть КоЗа;)
да вот я все разобрал уже. Щас пока готовлюсь к поездке за деталями новыми.
Все заного )) ПРиобрел вчера 3 ШД за 100р от 5-ти дюймового флопа.
они униполярные. Те которые с 6-ю выводами можно подключать по биполярной схеме. Вот с ним то и по эксперементирую. А остальные буду пока мастрячить для своих основных нужд.
Наконец добыл новые запчастюли. Собрал схему все заработало, проблема была в бракованных микрухах.
Также приобрел ULN 2003, собрал на ней схемку для униполярного - тоже работает. Но вот теперь есть несколько вопросов:
1 некоторые из двигателей греются (местами выводы менял), так и должно быть?
2 если задать в программе скорость более 150 то ШД дергается но не крутится, как это обяснить.?
1. Нагрев при работе - вполне обычное явление, мотор крутится вхолостую, без нагрузки, поэтому обмотки и греются
2. ШД не может мгновенно разогнаться до своей максимальной скорости, поэтому для использования его на полную катушку необходимо разгонять его с определённым ускорением.
От себя советую отличную библиотеку AccelStepper http://www.open.com.au/mikem/arduino/AccelStepper/ . Стандартная библиотека Stepper не позволила мне нормально управлять шаговым стрелочным индикатором, а с этой - просто сказка: и программируемое ускорение/замедление, и автоматическое определение 1-2-4-обмоточного шаговика, и несколько шаговиков сразу, и прочие вкусности.
Блин там на японском все написано
Вот прямая ссылка на файлы - http://www.open.com.au/mikem/arduino/AccelStepper/AccelStepper-1.5.zip
Разобраться несложно, там в архиве есть несколько Examlpe`ов, по ним можно легко разобраться в основных командах
Огромное спосибо поюзаю, отпишусь.
Да замечательная библиотека, тока я не понял к каким пинам подключается
По умолчанию это пины 2,3,4 и 5. У меня одна обмотка биполярного ШД подключена ко 2 и 3 пину, а вторая - к 3 и 4. Пины меняются то ли в *.h, то ли в *.cpp файле, точно не помню
а если надор другие то просто прописать в скобках через запятую, да?
По-видимому, да, в файле AccelStepper.h нужно править строчку:
Константы uint8_t pin1 - uint8_pin4 определяют номера портов ардуино, к которым подключаются контакты, а в константе uint8_t pins указано число этих контактов.
Добрый день! Я так понимаю - это ШД ИЗОТ СДХ 1,8\40 ??? С 6 выводами (2 из них коричневые). Если это так, да даже если и не так, подскажите по этому движку распиновку? Всю голову сломал что куда подключать, если можно прям по пунктам. Кстати - использую микруху L293D. Хотелось бы увидеть ответ так:
1. Красный - куда подключаем? (например, к 1му out на микросхеме)
2. Белый - и т.д.
3. Желтый - и т.д.
4. Синий -и т.д.
5. Коричневый_1 - и т.д.
6. Коричневый_2 - и т.д.
Буду Вам очень признателен...
О! Это та библа, которую мне надо! Чуть сам не сел за ее написание! Извините, что поднял старую тему, просто мне актуально, чтобы 3 шаговика одновременно с разными скоростями шагали :)
juniorluck я щас занимаюсь чпу на этих шаговиках. Но применяю ULN 2003. Причем у меня подобных шаговика 3 шт, но у всех цветовая маркировка разная, выявлял опытным путем. Тупо мерил сопративления соответственно получалось например 100 ом и по 50 соответственно где 100 это большой круг а где 50 это отвод с малого круга.
Я тоже делаю чпу. Но у меня в управлении "EasyDriver" - на входе нужно Step+Dir, эта библа как раз умеет :)
По умолчанию это пины 2,3,4 и 5. У меня одна обмотка биполярного ШД подключена ко 2 и 3 пину, а вторая - к 3 и 4. Пины меняются то ли в *.h, то ли в *.cpp файле, точно не помню
По-видимому, да, в файле AccelStepper.h нужно править строчку:
Константы uint8_t pin1 - uint8_pin4 определяют номера портов ардуино, к которым подключаются контакты, а в константе uint8_t pins указано число этих контактов.
не, не, не...
"По умолчанию" это значит "если вы не указали", но указать-то можно. Править библиотеку не нужно. А если у вас будет два степера, так что две библиотеки делать?
Предположим вам нужно один степер повесить на ноги 4,5,6,7 а другой на 8,9,10,11
Значит вы пишете, прямо в скетче, ну мучая библиотеку, вместо
Примерно так:
Привет
подскажите пожалуйста как подключить шаговые биполярные движки с родными драйверами к Ардуино (ваще просто дуб)
на выходе драйвера
STEP — Тактирующий сигнал, сигнал шага. Один импульс приводит к повороту
ротора ШД на один шаг (не физический шаг ШД, а шаг выставленный на драйвере — 1:1, 1:8, 1:16
и т.д.). Обычно драйвер отрабатывает шаг по переднему или заднему фронту импульса.
DIR — Потенциальный сигнал, сигнал направления. Логическая единица — ШД
вращается по часовой стрелке, ноль — ШД вращается против часовой стрелки, или наоборот.
Инвертировать сигнал DIR обычно можно либо из программы управления или поменять местами
подключение фаз ШД в разъеме подключения в драйвере.
ENABLE — Потенциальный сигнал, сигнал включения/выключения драйвера.
Обычно логика работы такая: логическая единица (подано 5В на вход) — драйвер ШД
выключен и обмотки ШД обесточены, ноль (ничего не подано или 0В на вход) — драйвер ШД
включен и обмотки ШД запитаны.
Vcc+2,5....5v
и как использовать библиотеку,... по пунктам пж, ваще тяж. дается
Просто.
Если, скажем, Step подключим к 4, Dir к 5, то иницилизация будет:
С сигналом ENABLE нужно разбираться отдельно - библиотека его не поддерживает. Есть пример: www.schmalzhaus.com/EasyDriver/Examples/EasyDriverExamples.html
Огромное пасиба
C enable думаю что тоже не проблема судя по схеме (и назначению) GND и +5 -просто включение (активация) драйвера шагового движка
С сигналом ENABLE нужно разбираться отдельно - библиотека его не поддерживает.
Извините за дезу! Библа поддерживает ENUBLE, после инициализации нужно вызвать метод setEnablePin. Cкажем, ENUBLE подключен к 6:
AccelStepper MyStep(1,4,5);
А не подскажете почему при компиляции кода с такой строкой
выдает это:
"no matching function for call to 'AccelStepper::AccelStepper(int,int,int)'"
AccelStepper MyStep(1,4,5);
А не подскажете почему при компиляции кода с такой строкой
выдает это:
"no matching function for call to 'AccelStepper::AccelStepper(int,int,int)'"
Сам разобрался, была кривая версия библиотеки.
Ребят а подскажите есть ли описание этой библиотеки на русском, или где посмотреть примеры использования этой библиотеки
Тут же есть примеры:
http://www.open.com.au/mikem/arduino/AccelStepper/examples.html
А про саму библиотеку текст можно и гуглом перевести для начала, понять можно уже будет.
ссылка не открывается. Да я понимаю что можно перевести - просто все равно ни че не понятно после гавенного перевода.
>ссылка не открывается.
Уберите лишний пробел в конце.
> Да я понимаю что можно перевести
Ну вот и сделайте это. Только не переводчиком, а словариком. Словарный запас там - не шибко большой. Через пару дней, максимум неделя, - будете уже без словаря читать.
Если не хотите это делать - тогда плюнте на ардуину. Без минимальной способоности прочитать технический текст, help, даташит существуют только один способ завершить проект: нанять кого-нибудь.
Заниматся программированием без хотя бы "самого базового english" - не возможно. Благо, если есть желание, выйти на этот уровень может любой человек за считанные дни (и наверное даже быстрее это произойдет, чем если бы он пытался учить язык "с учителем").
Подтверждаю!
Я в свое время технический англиский выучил на базе школьного (то есть никакого) по help-у от с++, потому что с++ нужно было освоить за неделю имея базовые знания pascal. Все дело в мотивации. Если чувствуешь (не знаешь, а именно чувствуешь), что надо - язык учится "на ура"
Извините за оффтоп
Да дело в том что технический английский у меня по профессии неотъемлемая часть, но когда он касается программирования, а так как первый язык программирования это ардуино скетч, то для меня становится просто невооброзимо некоторое понятийное согласование некоторых слов и сочетаний. Но если мне показать кусок программы например - вот программка заставляет шд крутиться на 200 шагов с таким то ускорением, а вот обратно то все сразу становится понятно. Както даже processing проще дался - потому что в референсе приведены примеры на каждую функцию и т.д.
Но если мне показать кусок программы например - вот программка заставляет шд крутиться на 200 шагов с таким то ускорением, а вот обратно то все сразу становится понятно.
Ну так ссылка выше как раз и ведет на примеры использования библиотеки. Да подозреваю и если качнуть саму библиотеку, то в папке examples примеры найдутся.
Но если мне показать кусок программы например - вот программка заставляет шд крутиться на 200 шагов с таким то ускорением, а вот обратно то все сразу становится понятно.
Ну так ссылка выше как раз и ведет на примеры использования библиотеки. Да подозреваю и если качнуть саму библиотеку, то в папке examples примеры найдутся.
Абсолютно верно, когда добавишь библиотеку, то в стандартном меню с примерами появлются все примеры по этой библиотеке.
Ну да все верно, вроде начал разбираться потихоньку, просто сразу ссылка не открывалась.))
Валялся у меня ДШГ 5618А1-07 (вроде как от советского принтера), от него шесть проводов прозвонив и подключая напрямую к блоку питания на 6.3В выяснил какие куда провода на нем ещё остался разъём распиновка получилась 1к - пустышка - общий 1к,3к - 3к - 4к - пустышка - общий 4к,2к - 2к , общие соеденил и кинул на +, собрал схемку с UNL2003 , пробуя библиотеку Stepper.h что-то не очень пришлось писать все самому немного выбрав из библиотеки.
работает добавил связь с сом потом
дополнительно выходы с UNL2003 подключил - конденсатора, + соответственно на + блока питания, конденсатор на 470мкф (ушол эффект трактора)
P.S. если у кого получится исправить код что-бы сразу можно было вводить -23 (к примеру), у меня не вышло поэтому сначало - или + а потом значение.
P.S. если у кого получится исправить код что-бы сразу можно было вводить -23 (к примеру), у меня не вышло поэтому сначало - или + а потом значение.
Если я правильно понял че вы хотите, то вот как-то так:
P.S. Только что-бы работало, не забудти в Serial Monitor поставить Line Ending в любом значение кроме "No line ending" (справа, внизу, чуть левее скорости порта выставляется)
А еще, рекоменду, почитать Прямое управления выходами через регистры микроконтроллера Atmega
и отказаться от digitalWrite
так как, какое-никакое а время исполнения он имеет. И выставить ОДНОВРЕМЕННО четыре ноги в нужноное состояние - вы не можете.
В данном случае эта одновременность не столь критична (на чуть-чуть может сбиваться время шагов, скорее всего - не заметите), но иногда это критично бывает.
Да и код, можно будет сократить в несколько раз. Правда "переехать на другие пины" будет уже чуток сложней.
Спасибо поправил
По поводу прямого управления есть компилятор который за меня все делает, да просто пишется код немного по другому
я заморачиватся не стал просто из библиотеки выдернул и немного подправил под свои нужды.
По поводу прямого управления есть компилятор который за меня все делает, да просто пишется код немного по другому
я заморачиватся не стал просто из библиотеки выдернул и немного подправил под свои нужды.
1. Так, конечно, симпатичней... только к "прямому управлению" это нифига не имеет отношения.
По прежднему - каждая нога выставляется отдельно и медленно (по сравнению с прямым доступом).
2. Нужно больше память для хранения состояний, нельзя одно состояние записать в виде байта (а следовательно и записать все это ввиде массива - что-бы еще более компактый код сделать).
3. "Компилятор" тут нифига за вас не делает. Код, конечно, уже более приличный, только вызов функции тоже имеет свои накладные расходы. Что-бы он был "и красивый" и работал не медленее вышей изначальной версии - почитайте про ключевое слово "inline"
Ну а вообще - как хотите, конечно :) Тут прямой вывод не есть "обязательно нужно", но как повод разобратся с ним и освоить битовые операции - вполне себе. А уж осваивать или нет - ваш выбор.
Вопрос может и не к этой теме, но попробую. Чтобы подключить двухфазный шаговик по схеме обычного с шестью проводками, нужно два мостовых драйвера, как например L6203? И можно пользоваться стандартной библиотекой?
Вопрос может и не к этой теме, но попробую. Чтобы подключить двухфазный шаговик по схеме обычного с шестью проводками, нужно два мостовых драйвера, как например L6203? И можно пользоваться стандартной библиотекой?
вызваниваешь средние провода
выкусываешь
получаешь хорошо расписанный биполярник
и можно пользоватся всем что найдешь
с появлением извращенных драйверов мотать лишние провода становится не актуально
мы всем миром переходим на биполярники потихоньку
сколько у меня таких покусанных работает
щас обернусь попробую посчитать
вроде 9 штук сейчас
и где это ты схему 6 проводного униполярника увидель
выбрось
забудь
глупость это уже
лишнее
и не правильнее взять всего 1-один корпус L298 для мотора типового NEMA17
есть даже ардуиновский шилд и не изобретать велосипеды
вы на сайт http://arduino.cc/en/Main/Products ходили?
Я немного неправильно вопрос поставил) Для того, чтобы использовать стандартную библиотеку степпер для управления двухфазным ШД, необходимо взять два мостовых драйвера, кстати, действительно L298 дешевле, чем L6203, и тогда при стандартном управлении через степпер по 4 входам диаграмма на обмотках будет такая:
Что соответствует порядку свечения диодов на драйвере униполярного ШД. Но надо, получается, два мостовых драйвера, а не один?
На ардуино.цц был, перешерстил алиэкспресс в поисках приемлемого решения. С одной стороны, конечно проще взять готовое решение. Но хочется и свое иметь, на случай компактного встраивания.
Я немного неправильно вопрос поставил) Для того, чтобы использовать стандартную библиотеку степпер для управления двухфазным ШД, необходимо взять два мостовых драйвера, кстати, действительно L298 дешевле, чем L6203, и тогда при стандартном управлении через степпер по 4 входам диаграмма на обмотках будет такая:
Что соответствует порядку свечения диодов на драйвере униполярного ШД. Но надо, получается, два мостовых драйвера, а не один?
На ардуино.цц был, перешерстил алиэкспресс в поисках приемлемого решения. С одной стороны, конечно проще взять готовое решение. Но хочется и свое иметь, на случай компактного встраивания.
вроде уже третий станок с ЧПУ поднимаю а вас понять не могу
мне не известны термины "двухфазные" моторы где-то c 1980-ых
биполярные и тут же произносится униполярние как архаизм и забывается как только произносится
поищите тут на форуме я кода на самые различные драйверы я накидал
готовое бери не хачу
никаких библиотек все подпрограмками решается
какие неперенносимости кода я постич не могу
компактное без микрухи с H-мостом для шаговика на рассыпухе это круто
вы типа не хотите красненькие и зелененкие а хотите черненькие
осцилограммы спионерили откуда-то
давайте еще уровни ферме будем анализировать
можно я буду сразу жидкости наливать твердости двигать шаговыми моторами
мне как-то глубоко начхать на каком соотношении фаз удерживается якорь в EM-34 13430 STH-39DI50-01 A4988 в зависимосьти от коэфициента который я высчитал если тока мало я буду добавлять если греется я буду уменьшать а в режиме простоя как нибудь digitalWrite(motor3enablе,LOW); обойдусь
может с утра смогу понять
1 Униполярные и биполярные. Это понял.
2 По поводу библиотек тоже ясно. Не панацея.
3 На фото к одной L298 подцеплен один ШД, или это не L298?
4 Не спионерил, а процитировал) Прежде чем к коду переходить, хотелось бы досконально в принципах работы ШД разобраться, а тут я еще не волшебник. Но учусь)))
Все остальное не очень пока понятно, т.к. до кода я еще не добрался, это самая легкая часть. А за подсказки спасибо. Если бы еще комментарии к фотке были, то вообще респект) Буду искать.
1 Униполярные и биполярные. Это понял.
2 По поводу библиотек тоже ясно. Не панацея.
3 На фото к одной L298 подцеплен один ШД, или это не L298?
4 Не спионерил, а процитировал) Прежде чем к коду переходить, хотелось бы досконально в принципах работы ШД разобраться, а тут я еще не волшебник. Но учусь)))
Все остальное не очень пока понятно, т.к. до кода я еще не добрался, это самая легкая часть. А за подсказки спасибо. Если бы еще комментарии к фотке были, то вообще респект) Буду искать.
а вам теория вращения шагового мотора щас поищу
устроит?
а теперь забудьте
1 шаг "полношаговый режим" модно
щас народ не полу(1/2)
1/4 не модно
1/8 распространнено
1/16 нередко
1/32 в будущую моду может прийти но все таки экзотика
1/10000000 совсем не держит визжит дрожит греется а толком не крутится это часто
шагает
берете готовый микрушку драйвер подходящую шагового мотора и шагаете
если микрошаги фигня неустойчивая редуктор прикручиваете
моды сейчас вижу две просто H-мост и вы сами шагаете 4-мя ногами L293 L298 и в моду пришел стиль DIR STEP вы направление выбрали 1нога и сами шагаете 2 нога спец дравер какой-нибудь
на arduino тоже не исключение такие же моды
а так все как из 20 лет назад ничего нового
только вместо движков 2-ух проводных постоянного тока появились 4-ех проводные движки постоянного тока
6 8 проводов движки постоянного тока из моды вышли потому как микрушки-фигнюшки наваяли тоннами
все из кАрОпки
вам шашечки или ехать
Все курс шаговых двигателей закончен.
Зачет завтра.
Задание:
На микропроцессоре заставте шаговый двигатель вращатся сначало в одну сторону потом в другую то есть классический маятник.
Можете использовать arduino
Подсказка ключевое слово ищем на вашем диске C:\... stepper_oneRevolution.ino
L298 ищем на секретнейшем http://alldatasheet.com