|
Помогите пожалуйста с шаговым двигателем, замучался совсем :( |
|
|
|
Dec 24 2007, 12:33
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Хочу управлять униполярным шаговым двигателем типа ДШИ200-1-2. Описание двигателя тут: http://purelogic.ru/PDF/SM/57BYGH001.pdfХочу, чтобы вал поварачивался на 90 градусов сначала в одну сторону, затем в другую. Собрал схему на транзисторах IRL2505:
Питаю МК и 2 средних вывода обмоток от 3.3V с помощью AC/DC http://www.terraelectronica.ru/pdf/MW/ES18E03-P1.pdfКак основу ПО использую AVR446: Linear speed control of stepper motor http://atmel.com/dyn/resources/prod_documents/doc8017.pdfПлюс чтобы разобраться самому написал пару функций для волнового, шагового, полушагового режимов. В коде AVR446 реализовано ускорение и замедление вращения. Двигатель ведет себя странно - дергается, при определенных скоростях стоит на месте, переодически начинает вращаться с очень маленьким моментом - пальцами можно удержать. При сбросе скорости появляется период вращения с довольно большим моментом - можно только плоскогубцами удержать. При момощи собственных пошаговых функций двигатель вращается, но с очень низким моментом. Я уж даже обмотки так и так подключал, думал может ошибся - так оказалось, что и при неправильном подключении вращается. Вообщем не знаю куда копать, а может сервопривод попробовать... Подскажите, пожалуйста, что делать.
|
|
|
|
|
Dec 24 2007, 13:04
|

Полное ничтожество
    
Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354

|
Цитата(Filov @ Dec 24 2007, 15:33)  Хочу управлять униполярным шаговым двигателем типа ДШИ200-1-2. Описание двигателя тут: http://purelogic.ru/PDF/SM/57BYGH001.pdfХочу, чтобы вал поварачивался на 90 градусов сначала в одну сторону, затем в другую. Собрал схему на транзисторах IRL2505:
Питаю МК и 2 средних вывода обмоток от 3.3V с помощью AC/DC http://www.terraelectronica.ru/pdf/MW/ES18E03-P1.pdfКак основу ПО использую AVR446: Linear speed control of stepper motor http://atmel.com/dyn/resources/prod_documents/doc8017.pdfПлюс чтобы разобраться самому написал пару функций для волнового, шагового, полушагового режимов. В коде AVR446 реализовано ускорение и замедление вращения. Двигатель ведет себя странно - дергается, при определенных скоростях стоит на месте, переодически начинает вращаться с очень маленьким моментом - пальцами можно удержать. При сбросе скорости появляется период вращения с довольно большим моментом - можно только плоскогубцами удержать. При момощи собственных пошаговых функций двигатель вращается, но с очень низким моментом. Я уж даже обмотки так и так подключал, думал может ошибся - так оказалось, что и при неправильном подключении вращается. Вообщем не знаю куда копать, а может сервопривод попробовать... Подскажите, пожалуйста, что делать. вопрос № 1 - зачем резисторы в затворах
|
|
|
|
|
Dec 24 2007, 13:14
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(rv3dll(lex) @ Dec 24 2007, 16:04)  вопрос № 1 - зачем резисторы в затворах Как мне ранее объяснили: Он нужен для ограничения тока перезарядки ёмкости затвора. Поставил 100кОм. Но и без них такая же ситуация.
|
|
|
|
|
Dec 24 2007, 14:55
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(Евгений Германович @ Dec 24 2007, 17:20)  Нарисуйте временные диаграммы Это я так понимаю последовательность импульсов во времени? Для волновой последовательности возмущаются ( поочереди A+, затем B+, затем A-, затем B-) на 10мс. Просто подается на это время логическая 1 на выход МК. При использовании кода из AN446 - частота как и положено увеличивается, а затем уменьшается. Цитата(Евгений Германович @ Dec 24 2007, 17:20)  Возможно вы спутали фазировку обмоток. Перепробовал все варианты расположения  - всего их 8. Ни в одной из них двигатель себя корректно не ведет. Чаще (при неправильном положении) дергается на месте. При правильном положении наилучшее поведение - он двигается с очень низким моментом, при определенной частоте останавливается (не хватает мометна для преодоления трения), при определенной частоте начинает вращаться с хорошим моментом, а потом момент опять падает. Скорость меняется от 1 до примерно 100 шагов в секунду. Правильное положение это видимо A+ синий, A- красный, B+ желтый, B- коричневый. Извиняюсь!!!! Дал ссылку не на тот двигатель. Правильная http://purelogic.ru/PDF/SM/4SHG-023A.pdf
Сообщение отредактировал Filov - Dec 24 2007, 15:06
|
|
|
|
|
Dec 24 2007, 15:32
|

Профессионал
    
Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654

|
Цитата(Filov @ Dec 24 2007, 17:55)  Это я так понимаю последовательность импульсов во времени? Для волновой последовательности возмущаются ( поочереди A+, затем B+, затем A-, затем B-) на 10мс. Просто подается на это время логическая 1 на выход МК. При использовании кода из AN446 - частота как и положено увеличивается, а затем уменьшается. Перепробовал все варианты расположения  - всего их 8. Ни в одной из них двигатель себя корректно не ведет. Чаще (при неправильном положении) дергается на месте. При правильном положении наилучшее поведение - он двигается с очень низким моментом, при определенной частоте останавливается (не хватает мометна для преодоления трения), при определенной частоте начинает вращаться с хорошим моментом, а потом момент опять падает. Скорость меняется от 1 до примерно 100 шагов в секунду. Правильное положение это видимо A+ синий, A- красный, B+ желтый, B- коричневый. Извиняюсь!!!! Дал ссылку не на тот двигатель. Правильная http://purelogic.ru/PDF/SM/4SHG-023A.pdfВы шутник однако.У подобных двигателей под током находятся 2 обмотки.Те переключение идет с перекрытием.Кроме того вы перегружаете движок.В средние выводы нужно воткнуть резисторы.Обмотки обязательно нужно шунтировать диодами.
Сообщение отредактировал Евгений Германович - Dec 24 2007, 15:35
|
|
|
|
|
Dec 24 2007, 15:34
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(Евгений Германович @ Dec 24 2007, 18:32)  Вы шутник однако.У подобных двигателей под током находятся 2 обмотки.Те переключение идет с перекрытием. Насколько я понимаю возможны 3 режима (кроме микрошага) 1. Волновой - включена 1 фаза 2. Шаговый - включены 2 фазы 3. Полушаговый - включены то 2, то 1 фаза  И в коде из AN используется полушаговый режим. Цитата(Евгений Германович @ Dec 24 2007, 18:32)  Кроме того вы перегружаете движок.В средние выводы нужно воткнуть резисторы.Обмотки обязательно нужно шунтировать диодами. Хорошо. Попробую. У двигателя вроде напряжение питания 2.8В, а я подаю 3.3 неужели так существенно скажется превыщение в 0.5В? Значит в этом может быть проблема?
Сообщение отредактировал Filov - Dec 24 2007, 15:43
|
|
|
|
|
Dec 24 2007, 15:49
|

Профессионал
    
Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654

|
Цитата(Filov @ Dec 24 2007, 18:34)  Насколько я понимаю возможны 3 режима (кроме микрошага) 1. Волновой - включена 1 фаза 2. Шаговый - включены 2 фазы 3. Полушаговый - включены то 2, то 1 фаза  И в коде из AN используется полушаговый режим. Хорошо. Попробую. У двигателя вроде напряжение питания 2.8В, а я подаю 3.3 неужели так существенно скажется превыщение в 0.5В? Значит в этом может быть проблема? Маловероятно но ТУ надо соблюдать всегда.Подобные движки я без резисторов не видел.Если поставите то катоды диодов дб после резистора.Временные диаграммы не убедили Вы уверены что последовательность А потом С а не В.Кстати а скакой частотой вы подаете импульсы и какова их длительность.
Сообщение отредактировал Евгений Германович - Dec 24 2007, 15:50
|
|
|
|
|
Dec 24 2007, 16:04
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(Евгений Германович @ Dec 24 2007, 18:49)  Временные диаграммы не убедили Вы уверены что последовательность А потом С а не В. Во всех материалах, что я просмотрел для волнового режима возбуждается сначала A+ (-A-), затем B+ (-С-), потом A- (-B-), потом B- (-D-). Цитата(Евгений Германович @ Dec 24 2007, 18:49)  Кстати а скакой частотой вы подаете импульсы и какова их длительность. Для самостоятельно реализованного волнового режима 10мс. При использовании реализации из AppNote частота меняется примерно от 1 до 100 импульсов в секунду. Насколько я понимаю код, дискретизация таймера составляет 12500000Hz(частота МК)/64(делитель частоты таймера)=195312 Счет по регистру OCR1A ведется до 10. Соответсвенно длительность подачи напряжения на обмотку составляет 50 мкс.
Сообщение отредактировал Filov - Dec 24 2007, 16:05
|
|
|
|
|
Dec 24 2007, 16:20
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(Евгений Германович @ Dec 24 2007, 19:18)  Давайте упростим задачу.Запитайте только одну половину шд например BLK затем заземлите RED движок должен сдвинуться затем заземлите BLU он должен сдвинутся на столько же и в туже сторону.По моему вы подаете импульсы слишком часто.Пробуйте. Хорошо. Буду пробовать.
|
|
|
|
|
Dec 24 2007, 16:44
|
Гуру
     
Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613

|
Цитата(Filov @ Dec 24 2007, 18:34)  Хорошо. Попробую. У двигателя вроде напряжение питания 2.8В, а я подаю 3.3 неужели так существенно скажется превыщение в 0.5В? Значит в этом может быть проблема? По нормальному, необходимо подавать много большее напряжение питания обмоток с ограничением тока не выше значения приведенного в описании на ШД (1,56А). Указанное Вами значение 2,8В будет равно произведению максимально допустимого тока двигателя на активное сопротивление обмотки. Не забывайте про индуктивность обмоток которая ограничивает скорость нарастания тока при коммутации. Индуктивность обмотки равна 3,6мГн. Например, для частоты коммутации обмотки 100 Гц, индуктивное сопротивление будет 2,26 Ома. Это плюс к активному. Из-за этого момент двигателя будет падать. Ничего хорошего от ШД при таком напряжении Вы не получите. Если требуется сделать один два экземпляра, то возьмите готовую микросхему драйвера шагового двигателя, а контроллером будете ей управлять. Если хотите получить знания, то потратьте побольше времени на получение необходимой информации о работе ШД и уже реализованных схемных решениях. Например, на телесистемах был выложен проект Л.И. драйвера ШД на мк с исходником программы.
|
|
|
|
|
Dec 24 2007, 16:44
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(Евгений Германович @ Dec 24 2007, 19:27)  У меня есть очень нехорошее предчувствие,что ваши временные диаграммы относятся к движку ссылку на который вы дали в первый раз.Кстати я не ошибся.то что вы нарисовали это биполярный режим(временные диаграммы).А вкл вы его в униполярном. На стр. 3 AppNote http://atmel.com/dyn/resources/prod_documents/doc8017.pdf приведены такие данные: Для полного шага (они видимо имеют ввиду волновой режим) так: A+ B+ A- B- Для полушага шага так: Код A+ A+ A- A- A- A+ B+ B+ B+ B- B- B-
Сообщение отредактировал Filov - Dec 24 2007, 16:53
|
|
|
|
|
Dec 25 2007, 08:49
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(gte @ Dec 24 2007, 19:44)  По нормальному, необходимо подавать много большее напряжение питания обмоток с ограничением тока не выше значения приведенного в описании на ШД (1,56А). Указанное Вами значение 2,8В будет равно произведению максимально допустимого тока двигателя на активное сопротивление обмотки.
Не забывайте про индуктивность обмоток которая ограничивает скорость нарастания тока при коммутации. Индуктивность обмотки равна 3,6мГн. Например, для частоты коммутации обмотки 100 Гц, индуктивное сопротивление будет 2,26 Ома. Это плюс к активному. Из-за этого момент двигателя будет падать. Ничего хорошего от ШД при таком напряжении Вы не получите. Спасибо! Теперь понятно куда копать. Нужно каким-то из способов, описанных в проекте на телесистемах регулировать ток. Цитата(gte @ Dec 24 2007, 19:44)  Если требуется сделать один два экземпляра, то возьмите готовую микросхему драйвера шагового двигателя, а контроллером будете ей управлять. Если хотите получить знания, то потратьте побольше времени на получение необходимой информации о работе ШД и уже реализованных схемных решениях. Например, на телесистемах был выложен проект Л.И. драйвера ШД на мк с исходником программы. Требуется один экземпляр. Но я хотел как можно проще. Мне казалось, что 4 транзистора будет не сложно по сравнению с 2 микросхемами. Осознал сложность проблемы и видимо без драйвера не обойтись. Я, конечно, проявляю наглость  Но в проекте на телесистемах указана в качестве примера пара контроллер-драйвер L297 и L298N. Не существуют ли более современные аналоги? Или тогда раз уж драйвер ставить, наверное, стоит перейти на биполярный двигатель... И на драйвер к нему. Вот нашел например LB1845, но он на биполярных транзисторах... Или LMD18245 - но их нужно ставить две... Или вот L6203 тоже 2... Хотя в принципе 2 так 2... Цитата(evgeny_ch @ Dec 24 2007, 20:10)  Спасибо за подборку. Буду читать
|
|
|
|
|
Dec 25 2007, 10:29
|

Частый гость
 
Группа: Участник
Сообщений: 83
Регистрация: 25-10-07
Из: Киев
Пользователь №: 31 728

|
Цитата(Filov @ Dec 25 2007, 10:49)  Я, конечно, проявляю наглость  Но в проекте на телесистемах указана в качестве примера пара контроллер-драйвер L297 и L298N. Не существуют ли более современные аналоги? Или тогда раз уж драйвер ставить, наверное, стоит перейти на биполярный двигатель... И на драйвер к нему. в принципе, если вы согласны крутить не более 20-30 шагов/сек, то думаю ваша схема покатит. резисторы вместо 100ком поставьте 100 ом, диоды к обмоткам приставьте и ок. а лучше (не сильно изменяя схему) взять 5 В питание и по той же схеме, только средние выводы двигателя подключить через резисторы 1 Ом (5 ватные) либо 2 ом - 2хватные (но тогда ток будет меньше). 5 В необходимо для гарантированног отпирания транзисторов, чтобы уменьшить потери в них, да и скорость нарастания тока в обмотках двигателя будет побольше. Причем, не забывайте, что источник питания должен тянуть до 1.5 А, т.е. простой кренкой не отделаться =) п.с. И еще, где то здесь было про импульс в 50мкс - или ошибка, или слишком мало. Импульс должен подаваться все время, пока протекает ток, это же не тиристор/симистор...
Сообщение отредактировал Gogan - Dec 25 2007, 10:30
|
|
|
|
|
Dec 25 2007, 14:20
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(Евгений Германович @ Dec 25 2007, 16:29)  Вчера после окончания общения у меня возник вопрос какими транзисторами вы коммутируете движок. Это транзисторы специально предназначенные для работы с 3 вольтами на затворе?Прежде чем переходить в биполярный режим подумайте стоит ли.Вам придется поднять напряжение питания двигателя.Если вам нет разницы по точности используйте униполярный он проще это IRL2505. А питаю логику от 3.3 V поскольку того требует микросхема интерфейса, который я использую. Заменить ее я скорее всего не смогу - т.к. еле с ней-то разобрался.... А чтобы перейти на 5В логику необходимо будет между ней и МК ставить дополнительную микросхему для преобразования уровней. Как это будет работать я не знаю... Цитата(Gogan @ Dec 25 2007, 13:29)  в принципе, если вы согласны крутить не более 20-30 шагов/сек, то думаю ваша схема покатит. резисторы вместо 100ком поставьте 100 ом, диоды к обмоткам приставьте и ок. а лучше (не сильно изменяя схему) взять 5 В питание и по той же схеме, только средние выводы двигателя подключить через резисторы 1 Ом (5 ватные) либо 2 ом - 2хватные (но тогда ток будет меньше). 5 В необходимо для гарантированног отпирания транзисторов, чтобы уменьшить потери в них, да и скорость нарастания тока в обмотках двигателя будет побольше. Причем, не забывайте, что источник питания должен тянуть до 1.5 А, т.е. простой кренкой не отделаться =) Понял буду пробовать Цитата(Gogan @ Dec 25 2007, 13:29)  п.с. И еще, где то здесь было про импульс в 50мкс - или ошибка, или слишком мало. Импульс должен подаваться все время, пока протекает ток, это же не тиристор/симистор... Видимо я чего-то не так понял в коде из AppNote
|
|
|
|
|
Dec 25 2007, 17:22
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(Евгений Германович @ Dec 25 2007, 18:39)  Про транзистор,посмотрите сколько ему надо для полного открытия,насколько я помню букву Л то не менее 4в.Если я прав то вы не полностью открываете полевик и поэтому теряете мощность.
Про транзистор это не шутка не сможете его открыть то никогда не получите полной мощности. Насколько я понимаю за это отвечает параметр Gate Threshold Voltage. В IRL2505 он может быть от 1 до 2В. Цитата(Евгений Германович @ Dec 25 2007, 18:39)  Про время. Если можете сделайте временно длительность импульса в 0.5 Сек. Хорошо для самописных функций поставлю побольше. А для кода из AppNote я увеличил делитель таймера до 1024. Плюс перешел с полушага на волновой режим (там с помощью define это определяется). Вообщем момент существенно вырос. Особенно для средней частоты импульсов где-то посередине разгона и торможения. 2 пальцами не удержать. А для низкой частоты (при разгоне и в конце торможения) и в максимуме скорости (средняя часть отрезка) момент все так же низок -двигатель останавливается пальцем. Цитата(Евгений Германович @ Dec 25 2007, 18:39)  А осциллограф у вас есть? Осциллографа пока нет, но очень нужен. Но они дорогие блин. Вообщем, как я понял, необходимо поднять напряжение - чтобы ток нарастал быстрее. И вводить регулирование тока.
|
|
|
|
|
Dec 27 2007, 10:16
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 8-10-07
Пользователь №: 31 170

|
Цитата(Евгений Германович @ Dec 26 2007, 12:48)  Про транзистор вы не правы см строчку в описи на одну выше.0.0Х ом при 4в.Те вы не полностью открываете транзистор.Про ваш параметр при 1до 2 вольта ток 250 толи микро толи милли ампер. У вас при этой схеме включения не может быть волнового режима и всех вами приведенных тоже. Ваше утверждение о малом моменте на низкой частоте говорит только об одном: вы на какоето время полностью обесточиваете двигатель. Т.е. Вы хотите сказать, что транзистор открывается неполностью, и поэтому у меня не будет четкого разделения шагов?
Сообщение отредактировал Filov - Dec 27 2007, 11:06
|
|
|
|
|
Dec 27 2007, 15:43
|

Профессионал
    
Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654

|
Цитата(Filov @ Dec 27 2007, 13:16)  Т.е. Вы хотите сказать, что транзистор открывается неполностью, и поэтому у меня не будет четкого разделения шагов? На разделение шагов не повлияет на мощность может,открываемость легко проверить если у вас есть вольтметр.Подайте на затвор любого из транзисторов 3.3 вольта и замерьте падение напряжения на стоке относительно земли.Естественно при подключенном двигателе.А для того чтобы движок уверенно зашагал вам нужно сгенерировать следующую последовательность. А В С Д 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 И ТД и дижок закрутится в одну сторону. 1 -обмотка под током
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|