ШД и библиотека 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 что-то не очень пришлось писать все самому немного выбрав из библиотеки.
// програмка для работы с Stepper мотором через сом порт int znak = 1; //куда крутим -1 по часовой, 1 против часовой int wait = 10; //уменьшает скорость движения int result = 0; // количество циклов в фор byte f1 = 0; //корректор для фор от знака byte f2 = 0; //корректор для фор от знака int motor_pin_1 = 8; //1 пин мотора int motor_pin_2 = 9; //2 пин мотора int motor_pin_3 = 10; //3 пин мотора int motor_pin_4 = 11; //4 пин мотора void setup() { Serial.begin(9600); pinMode(motor_pin_1, OUTPUT); pinMode(motor_pin_2, OUTPUT); pinMode(motor_pin_3, OUTPUT); pinMode(motor_pin_4, OUTPUT); } void loop() { if (Serial.available()) { while (Serial.available()) result = result * 10 + (Serial.read() - '0'); delay (50); } // читает сом порт при в воде "-" или "+" определяем направление // числовое значение определяет сколько крутить. if (result == -3) { result = 0; znak = -1;} // определяет что введен "-" if (result == -5) { result = 0; znak = 1;} // определяет что введен "+" if (result != 0) { Serial.println(result * znak);} if (result != 0 && znak == -1) { f1 = 7; f2 = 0; result--; } //уставки для фор в зависимости от знака if (result != 0 && znak == 1) { f1 = 0; f2 = 8; result--; } //уставки для фор в зависимости от знака // можно убрать если хотите нагружать во время покоя if (result == 0 ) { // 0000 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, LOW); } // пока result имеет какоето значение мотор крутится if (result != 0) { for (int i=f1; i != f2; i = i + znak){ switch (i) { case 0: // 1000 digitalWrite(motor_pin_1, HIGH); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 1: // 1100 digitalWrite(motor_pin_1, HIGH); digitalWrite(motor_pin_2, HIGH); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 2: //0100 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, HIGH); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 3: //0110 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, HIGH); digitalWrite(motor_pin_3, HIGH); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 4: // 0010 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, HIGH); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 5: // 0011 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, HIGH); digitalWrite(motor_pin_4, HIGH); delay(wait); break; case 6: // 0001 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, HIGH); delay(wait); break; case 7: // 1001 digitalWrite(motor_pin_1, HIGH); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, HIGH); delay(wait); break; } } } }работает добавил связь с сом потом
дополнительно выходы с UNL2003 подключил - конденсатора, + соответственно на + блока питания, конденсатор на 470мкф (ушол эффект трактора)
P.S. если у кого получится исправить код что-бы сразу можно было вводить -23 (к примеру), у меня не вышло поэтому сначало - или + а потом значение.
P.S. если у кого получится исправить код что-бы сразу можно было вводить -23 (к примеру), у меня не вышло поэтому сначало - или + а потом значение.
Если я правильно понял че вы хотите, то вот как-то так:
void setup(){ Serial.begin(57600); } void loop(){ if(Serial.available()){ int result=Serial.parseInt(); // читам // выводим что прочитали Serial.print("Readed="); Serial.println(result); while(Serial.available())Serial.read();// очищаем входящий буффер Serial (перевод каретки и проч. мусор) } }P.S. Только что-бы работало, не забудти в Serial Monitor поставить Line Ending в любом значение кроме "No line ending" (справа, внизу, чуть левее скорости порта выставляется)
А еще, рекоменду, почитать Прямое управления выходами через регистры микроконтроллера Atmega
и отказаться от digitalWrite
так как, какое-никакое а время исполнения он имеет. И выставить ОДНОВРЕМЕННО четыре ноги в нужноное состояние - вы не можете.
В данном случае эта одновременность не столь критична (на чуть-чуть может сбиваться время шагов, скорее всего - не заметите), но иногда это критично бывает.
Да и код, можно будет сократить в несколько раз. Правда "переехать на другие пины" будет уже чуток сложней.
Спасибо поправил
// програмка для работы с Stepper мотором через сом порт int znak = 1; //куда крутим -1 по часовой, 1 против часовой int wait = 5; //уменьшает скорость движения int result = 0; // количество циклов в фор int com = 0; // чтение сом порта byte f1 = 0; //корректор для фор от знака byte f2 = 0; //корректор для фор от знака int motor_pin_1 = 8; //1 пин мотора int motor_pin_2 = 9; //2 пин мотора int motor_pin_3 = 10; //3 пин мотора int motor_pin_4 = 11; //4 пин мотора void setup() { Serial.begin(9600); pinMode(motor_pin_1, OUTPUT); pinMode(motor_pin_2, OUTPUT); pinMode(motor_pin_3, OUTPUT); pinMode(motor_pin_4, OUTPUT); } void loop() { if (Serial.available()) { int com=Serial.parseInt(); // читам // выводим что прочитали Serial.print("Readed="); Serial.println(com); result = com; while(Serial.available())Serial.read();// очищаем входящий буффер Serial (перевод каретки и проч. мусор) } if (result > 0) { f1 = 0; f2 = 8; znak = 1;} //уставки для фор в зависимости от знака if (result < 0) { f1 = 7; f2 = 0; znak = -1; result = abs(result);} //уставки для фор в зависимости от знака label: if (result != 0) { Serial.println(result * znak);} // можно убрать если хотите нагружать во время покоя if (result == 0 ) { // 0000 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, LOW); } // пока result имеет какоето значение мотор крутится if (result != 0) { for (int i=f1; i != f2; i = i + znak){ switch (i) { case 0: // 1000 digitalWrite(motor_pin_1, HIGH); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 1: // 1100 digitalWrite(motor_pin_1, HIGH); digitalWrite(motor_pin_2, HIGH); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 2: //0100 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, HIGH); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 3: //0110 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, HIGH); digitalWrite(motor_pin_3, HIGH); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 4: // 0010 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, HIGH); digitalWrite(motor_pin_4, LOW); delay(wait); break; case 5: // 0011 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, HIGH); digitalWrite(motor_pin_4, HIGH); delay(wait); break; case 6: // 0001 digitalWrite(motor_pin_1, LOW); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, HIGH); delay(wait); break; case 7: // 1001 digitalWrite(motor_pin_1, HIGH); digitalWrite(motor_pin_2, LOW); digitalWrite(motor_pin_3, LOW); digitalWrite(motor_pin_4, HIGH); delay(wait); break; } } } if (result != 0) {result--; goto label;} }По поводу прямого управления есть компилятор который за меня все делает, да просто пишется код немного по другому
byte m1 = 0; byte m2 = 0; byte m3 = 0; byte m4 = 0; void motor(byte m1, byte m2, byte m3, byte m4) {digitalWrite(8,m1);digitalWrite(9,m2);digitalWrite(10,m3);digitalWrite(11,m4);} void setup(){ pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); } void loop(){ // присваиваем значения m1 m2 m3 m4 истина или лож motor(m1,m2,m3,m4); //просто одновременно вкидываются значения }я заморачиватся не стал просто из библиотеки выдернул и немного подправил под свои нужды.
По поводу прямого управления есть компилятор который за меня все делает, да просто пишется код немного по другому
byte m1 = 0; byte m2 = 0; byte m3 = 0; byte m4 = 0; void motor(byte m1, byte m2, byte m3, byte m4) {digitalWrite(8,m1);digitalWrite(9,m2);digitalWrite(10,m3);digitalWrite(11,m4);} void setup(){ pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); } void loop(){ // присваиваем значения m1 m2 m3 m4 истина или лож motor(m1,m2,m3,m4); //просто одновременно вкидываются значения }я заморачиватся не стал просто из библиотеки выдернул и немного подправил под свои нужды.
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); обойдусь
//#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 200.0*8/3, 760*1.1} // d //#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 200*16/1.25, 638.23} // //#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 2560, 612} // steps per //#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 200.0*8/3, 612} // steps //#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 533, 612} // steps per u //#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 2132, 612} // steps per #define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 2560, 612} // steps per un //#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 1066, 612} // steps per //#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 1280, 612} // steps per //#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402, 78.7402, 200*16/1.25, 600} // steможет с утра смогу понять
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