Униполярный -> Биполярный

датчики, экраны, кнопки и т.п.

Униполярный -> Биполярный

Сообщение Djeck » 29 янв 2013, 23:21

Здравствуйте, вопрос по поводу униполярного ШД http://robocraft.ru/shop/index.php?route=product/product&product_id=244
Возможно ли его как-то переделать под использование с моторшилдом в качестве биполярного?
Я правильно понимаю, нужно разомкнуть общий контакт, соединяющий обе обмотки?
Звучит вроде просто, вот только как бы его разобрать?
Djeck
 
Сообщения: 21
Зарегистрирован: 26 сен 2012, 09:26
programming: TurboPascal

Re: Униполярный -> Биполярный

Сообщение Zoltberg » 30 янв 2013, 01:18

Правильно думаете :a_g_a: .
Разбирать - отогнув загнутые-заштампованные ушки корпуса-стакана (так чтобы освободить крышку - ту из которой вал торчит).
Сам разбирать пока не пробовал но в интернетах есть фотки и отчёты, вот например:
Изображение
Правда товарищ жалуется что собрать сложно так чтоб работал нормально :hi_hi_hi:
Но платка к которой припаяны провода-выводы вселяет надежду, обычно перемычка находится на ней.
Думаю можно попробовать не вандаля мех часть, расковырять пласмаску синюю и так добраться до платы. :a_g_a:
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград

Re: Униполярный -> Биполярный

Сообщение Djeck » 30 янв 2013, 14:52

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

А вообще Шилд не может работать с Униполярниками? (имеется ввиду тот, что в магазине, на основе L293D).
Djeck
 
Сообщения: 21
Зарегистрирован: 26 сен 2012, 09:26
programming: TurboPascal

Re: Униполярный -> Биполярный

Сообщение Zoltberg » 30 янв 2013, 16:21

Разберите шаговик от флоповода или CD-ROMа там на привод каретки с такими же обмотками стоят.
Моторшилдом можно, конечно.
Просто это крайне избыточно - в L293 стоят два полных моста что позволяет менять направление тока в 2х обмотках - это для биполярника особенно хорошо подходит.
А для униполярника надо просто подавать "+"питания относительно средней точки - хватит по транзистору на каждый вывод и среднюю точку на землю ну или ULN - (она и есть сборка транзисторов).
Зато если удастся оборвать соединение средних точек обмоток и включить через L293 - момент вырастет. :a_g_a:
Говорят прямо таки в 2а раза. :ts_ss:
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград

Re: Униполярный -> Биполярный

Сообщение Djeck » 01 фев 2013, 00:23

Попробовал вскрыть, итоги таковы:

Отковырять внешнюю крышку не удалось, больно загибы маленькие, подковырнуть сложно, а спиливать не хотелось.
Вобщем приступил к выковыриванию пластиковой крышки и не зря. Как выяснилось она довольно просто вынимается, просто подковырнув отверткой снизу.
Для разъединения двух обмоток, просто перерезаем среднюю дорожку. Постарался показать на фото, сорри если размыто.
Изображение
Модификация самого шаговика прошла успешно, а вот подключение к шилду не очень.
Код взял как из статьи с шилдом:

Код: Выделить всё
#include <Stepper.h> //подключим библиотеку

const int stepsPerRevolution = 48;  // число шагов на оборот вашего шаговика

// инициализируем библиотеку, устанавливаем входы управления шаговикомy - 8 и 7:
Stepper myStepper(stepsPerRevolution, 8,7);           

void setup() {
  // зададим скорость вращения:
  myStepper.setSpeed(50);
 // для работы с нашим моторшылдом надо выставить еденички на входах PWM1 и PWM2
    digitalWrite(3, HIGH); // т.е на 3 и 11 выводах
    digitalWrite(11, HIGH);
}

void loop() {
  // прошагаем полный оборот в одну сторону:
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
  myStepper.step(stepsPerRevolution);
 
  delay(1500);// постоим пол-секунды
 
  // и прошагаем полный оборот в другую сторону:
   myStepper.step(-stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   
  delay(1500);
}


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

Подключение проводов пробовал во всех комбинациях, ошибка явно не в этом.
Есть идеи, что может быть не так?
Djeck
 
Сообщения: 21
Зарегистрирован: 26 сен 2012, 09:26
programming: TurboPascal

Re: Униполярный -> Биполярный

Сообщение Zoltberg » 01 фев 2013, 02:06

Ну первое что в голову приходит - прозвоните обмотки.
Второе - восстановите соединение и посмотрите нормально ли ходит с ULN-кой.
Третье - завтра тоже попробую :)
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград

Re: Униполярный -> Биполярный

Сообщение Djeck » 01 фев 2013, 09:28

Обмотки прозванивал:
от средней точки сопротивление 30 ОМ, а полная обмотка 60.
После перерубания перемычки, сопротивление обмоток осталось 60.
Между катушками контакта нет.

ULN драйвера у меня нет, т.к. изначально планировал переделать под биполярник.
Кстати а планируется в магазине этот же ШД, только без ULN, но дешевле?
Если конечно удастся разобраться с этой переделкой под биполярник.

Причем мотор можно заставить крутиться в другую сторону, если развернуть обмотки. Но опять же ШД будет крутиться только в одну сторону просто в этот раз уже в другую.

Моторшилд вроде тоже цел, проверено на коллекторном двигателе, каждый канал может крутить как в одну так и в другую сторону.
Я ведь правильно понимаю, что если коллекторник крутится в одну сторону, то на шилде горят все равно оба светодиода и это нормально. Только ярче горит тот светодиод, в которую крутится коллекторник. Я так понимаю это влияние помех от двигателя. Если отсоединить двигатель, то четко светится только один светодиод.

Подозрения у меня разве что на библиотеку, возможно в двигателе как-то хитро полюса раскиданы, не так как на обычном ШД.
При работе шаговика светятся в основном только три диода, в первом канале при повороте шаговика в другую сторону, направление тока не меняется.
Т.е. шилд при повороте в одну и в другую сторону работает не полностью симметрично.
И это при том, что даже при вращении в одну сторону, ток в обоих каналах должен течь то в одну, то в другую сторону.
Изображение
Djeck
 
Сообщения: 21
Зарегистрирован: 26 сен 2012, 09:26
programming: TurboPascal

Re: Униполярный -> Биполярный

Сообщение Zoltberg » 05 фев 2013, 00:29

Так, ну попробовал, работает.
Шаговик у вас работает правильно, это в скетче ошибка -
Код: Выделить всё
 // и прошагаем полный оборот в другую сторону:
   myStepper.step(-stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
   myStepper.step(stepsPerRevolution);
тут.
С минусом должны быть все эти значения "stepsPerRevolution" - а то он только 48 шагов назад делает (только в той строчке где минус)- это даже люфт не выбирает, а потом закономерно шагает в ту же сторону по 48 нагов ещё 9 раз ;)

Теперь всё подробно, для последователей.
Делаем биполярник
1. Сковырнуть синюю пластмаску
2. Обрезать самую среднюю дорожку
3. подключать так: синий-жёлтый - одна обмотка (Motor 1), розовый-оранжевый - другая (Motor 2), красный теперь не нужен.
Питать теперь можно(нужно) от 10В, подавал 16В - ничего не греется, так что есть куда гнать, а то момент никакой - пальцами тормозится :(
Так же, при реверсе, пальцами хорошо чувствуется, как выбирается люфт - если применять куда-то стоит сделать программную компенсацию...

Теперь про скетч и библиотеку Stepper, напишу коротенько тут, а то неизвестно когда я статьёй разрожусь.
Stepper(steps, pin1, pin2)
steps - число шагов на оборот, в скетче из статьи указывается в константе stepsPerRevolution
pin1, pin2 - надеюсь ясно - пины с которых управляем
setSpeed(rpm) - скорость в оборотах в минуту(!)
step(steps) - шагать сколько нибудь шагов со скоростью указанной в setSpeed, в одну сторону если положительное число, если отрицательное - в другую.
Теперь нюанс.
Обратите внимание, что частота работы рассчитывается исходя из числа шагов на оборот - вы указываете не скорость шагания(шаг/сек), а скорость вращения - об/мин, где 1 оборот = число шагов на оборот(Ваш КО).
Дело в том, что шаговик может шагать (начать по крайней мере) не с любой, сколь угодно большой частотой - инерция ротора не даст ему стартануть с произвольно безумной скоростью - будет только трястись на месте.
Теперь глядим, что у нас имеется в случае 28BYJ-48 - шагов на оборот выходного вала - 64*64(передаточное отношение редуктора)=4096, если мы честно укажем его в качестве параметра steps, то при скорости даже в 5RPM наш шаговик будет лишь уныло жужжать :(
(У меня при 16В вертелся максимум при 4RPM )
Так что ставьте steps по-меньше:
Код: Выделить всё
#include <Stepper.h> //подключим библиотеку

const int stepsPerRevolution = 64;  // число шагов на оборот (не считая редуктора)

// инициализируем библиотеку, устанавливаем входы управления шаговикомy - 8 и 7:
Stepper myStepper(stepsPerRevolution, 8,7);           

void setup() {
  // зададим скорость вращения:
  myStepper.setSpeed(50); //50об/мин - скорость, естественно, самого движка, вал будет крутится в 64 раза медленней
 // для работы с нашим моторшылдом надо выставить еденички на входах PWM1 и PWM2
    digitalWrite(3, HIGH); // т.е на 3 и 11 выводах
    digitalWrite(11, HIGH);
}

void loop() {
  // прошагаем ПОЛНЫЙ оборот в одну сторону:
  myStepper.step(stepsPerRevolution*64);
  delay(500);// постоим пол-секунды
 
  // и прошагаем ПОЛНЫЙ оборот в другую сторону:
   myStepper.step(-stepsPerRevolution*64);
  delay(500);
}
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград

Re: Униполярный -> Биполярный

Сообщение drey » 31 мар 2013, 14:45

Изображение
drey
 
Сообщения: 2
Зарегистрирован: 31 мар 2013, 14:17
programming: c++, pascal

Re: Униполярный -> Биполярный

Сообщение Zoltberg » 31 мар 2013, 15:03

Тоже вариант, вообще без вскрытия.
Только что-то мне подсказывает что выигрыша в моменте тут не будет :du_ma_et:
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград

Re: Униполярный -> Биполярный

Сообщение drey » 31 мар 2013, 17:31

Zoltberg писал(а):Тоже вариант, вообще без вскрытия.
Только что-то мне подсказывает что выигрыша в моменте тут не будет :du_ma_et:

Не будет. Теперь 5-ти вольтовые обмотки последовательно соединены (ну и при вскрытии тоже самое)
drey
 
Сообщения: 2
Зарегистрирован: 31 мар 2013, 14:17
programming: c++, pascal


Вернуться в Периферия

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

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

© 2009-2017 |  О проекте  |  Политика Конфиденциальности  |