Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Управление шаговым двигателем
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Dr. Electronic
Здравствуйте!
У меня появилась такая проблема. Я хочу с помощью AVR или PIC управлять двумя шаговыми двигателями с помощью четырех кнопок (т.е. на каждый двигатель вперед-назад). Но я не знаю какой выбрать микроконтроллер и не могу (не знаю как) разработать алгоритм. Может кто уже сталкивался с такой проблеммой и может помочь.
haker_fox
Я управлял шаговым двигателем от 5,25'' дисковода с помощью AT90S2313. Чтобы просто крутить двигатель с разными скоростями вперед-назад особых усилий прилагать не нужно (я имею ввиду программный код). Так что АВР и PIC подойдет абсолютно любой (главное, чтоб линий портов хватило). А вот по поводу управления сейчас не подскажу, надо в нете искать алгоритм. К сожалению у меня книжка по этой теме дома. Попробуйте поискать в сети, таких задач там добжно быть море.
INT1
Вы наверное всам деле в сети не искали sad.gif , эта статья размещена на огромном количестве сайтов, например:
http://radiotech.by.ru/Shematic_PCB/Avtoma.../step_motor.htm
и еще есть много статей.
но, имхо, лучше применить готовые ICs контроллеров и драйверов, их список есть например:
http://www.electroprivod.ru/elements.htm
,а АВРке поручить более благородные задачи smile.gif
haker_fox
ИМХО: а для меня лично например управление шаговиком было всегда благородным деломsmile.gifsmile.gifsmile.gif И никто, кроме АВР, с этой задачей не справиться smile.gifsmile.gifsmile.gif
jasper
Почитайте еще это - AVR360: Step Motor Controller
Dr. Electronic
Цитата(haker_fox @ Oct 22 2005, 06:23)
ИМХО: а для меня лично например управление шаговиком было всегда благородным деломsmile.gifsmile.gifsmile.gif И никто, кроме АВР, с этой задачей не справиться smile.gifsmile.gifsmile.gif
*


Ну так может ты чем-нибудь поможешь в рассмотрении этого вопроса.
Pat
Цитата(Dr. Electronic @ Oct 22 2005, 23:32)
Ну так может ты чем-нибудь поможешь в рассмотрении этого вопроса.
*

Уважаемый я кАнеЧно ту сории что влажу но:
Вам же выше дали ссылку
http://radiotech.by.ru/Shematic_PCB/Avtoma.../step_motor.htm
Там есть все что надо.
Есть и AVR и схема и прошивка демо версии и сама прошивка на асме тоже есть.
Самое главное что ее сваял Ридико Леонид Иванович.
Человек девайсы которого продаются наверное чуть ли не на каждом рынке нашего СНГ.
Он там так расписал про шаговый двигатель что не понять, как он работает и как им управлять, просто невозможно.
Вы попробуйте повторить его девас.
Dr. Electronic
Цитата(Pat @ Oct 23 2005, 00:56)
Цитата(Dr. Electronic @ Oct 22 2005, 23:32)
Ну так может ты чем-нибудь поможешь в рассмотрении этого вопроса.
*

Уважаемый я кАнеЧно ту сории что влажу но:
Вам же выше дали ссылку
http://radiotech.by.ru/Shematic_PCB/Avtoma.../step_motor.htm
Там есть все что надо.
Есть и AVR и схема и прошивка демо версии и сама прошивка на асме тоже есть.
Самое главное что ее сваял Ридико Леонид Иванович.
Человек девайсы которого продаются наверное чуть ли не на каждом рынке нашего СНГ.
Он там так расписал про шаговый двигатель что не понять, как он работает и как им управлять, просто невозможно.
Вы попробуйте повторить его девас.
*



Я в основном все схемы уже пересмотрел и они были в основном на один ШД или на три (три координаты). А мне надо на нестандартное кол-во - два ШД. Схему Редико я тоже видел, но она на один, а как мне переделать ее на два я не знаю. Может подскажите как?
Pat
Цитата(Dr. Electronic @ Oct 23 2005, 23:34)
Я в основном все схемы уже пересмотрел и они были в основном на один ШД или на три (три координаты). А мне надо на нестандартное кол-во - два ШД. Схему Редико я тоже видел, но она на один, а как мне переделать ее на два я не знаю. Может подскажите как?
*

А что там подсказывать сделайте два и будет вам счастье.
Там детали копейки стоят.
Вы вначале один экземпляр сделайте, посмотрите как будет работать.
Понравится сделаете другой, вот вам и управление двумя двигателями.

Если этот вариант не устраивает то остается, на основании просмотренных
примеров изобретать свой девайс.
Stanley
Позвоните нам вот по этим тел:+7 (812) 327-13-88 (доб 106)
+7 (812) 716-45-72
и мы конкретно обсудим ваш случай, просто можно будет сделать контроллер под вас smile.gif
либо sales@magicsys.spb.ru
mcu
http://www.visual-devices.ru
Dr. Electronic
Цитата(Pat @ Oct 24 2005, 01:40) *
Цитата(Dr. Electronic @ Oct 23 2005, 23:34)
Я в основном все схемы уже пересмотрел и они были в основном на один ШД или на три (три координаты). А мне надо на нестандартное кол-во - два ШД. Схему Редико я тоже видел, но она на один, а как мне переделать ее на два я не знаю. Может подскажите как?
*

А что там подсказывать сделайте два и будет вам счастье.
Там детали копейки стоят.
Вы вначале один экземпляр сделайте, посмотрите как будет работать.
Понравится сделаете другой, вот вам и управление двумя двигателями.

Если этот вариант не устраивает то остается, на основании просмотренных
примеров изобретать свой девайс.


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


В общем случае (я так задумал и хочу сделать) должно получиться следующее:
2 ШД, управляемых с помощью ПК по 2-4 проводам от RS232 или LPT с помощью программы, которая отображает поворот ШД в градусах и которые можно задавать в ручную (т.е. при задании угла поворота ШД поворачивается на этот угол).
Вся эта система предназначена (открою секрет) для управления спутниковой тарелкой (именно для этого мне нужно отображать уголов в программе).
rmo
Это можно сделать на одном контроллере, например mega48/88/168.
На таймере0 формируете тактовую последовательность управления первым ШД,
на таймере2 - вторым.
______
____| |____ фаза А
______ вращение в одну сторону
_______| |____ фаза В

______
____| |____ фаза А
______ вращение в другую сторону
_| |____ фаза В

Если предполагаете использовать драйвер ШД, например, TEA3718 то еще могут понадобиться
сигналы управления им. На каждый двигатель нужно два корпуса TEA.
По RS232 пере даете данные о направлении вращения и количестве шагов.
Величина шага зависит от типа двигателя см. stepmotor.ru
Успеха
rmo
Извините, все уплыло

........______
____|........ .|____ фаза А
..............______ вращение в одну сторону
_______|......... |____ фаза В

........______
____|......... |____ фаза А
..______ вращение в другую сторону
_|......... |____ фаза В
andrey_s
Цитата(Dr. Electronic @ Nov 13 2005, 02:37) *
Вся эта система предназначена (открою секрет) для управления спутниковой тарелкой (именно для этого мне нужно отображать уголов в программе).
Уж секрет так секрет. glare.gif
Не забудте в Вашей системе предусмотреть концевые датчики. Угол Вам нужен ИМХО, не относительный (от предидущей позиции) а абсолютный (от момента срабатывания) концевого датчика (как в принтере). Угол = кол-ву шагов на угол 1 шага (обычно 1.8 градуса, если повезет найти движки на 400 шагов - то 0.9). Софтина должна помнить сколько шагов для каждого из двух движков нужно сделать для настройки на конкретный спутник.

Удачи!

ЗЫ: Паять сами будете? Есть еще замечательные микрухи A3977 от Allegro - в принципе можно обойтись и без микроконтроллера.
Dr. Electronic
Цитата(andrey_s @ Nov 14 2005, 13:32) *
Уж секрет так секрет. glare.gif
Не забудте в Вашей системе предусмотреть концевые датчики. Угол Вам нужен ИМХО, не относительный (от предидущей позиции) а абсолютный (от момента срабатывания) концевого датчика (как в принтере). Угол = кол-ву шагов на угол 1 шага (обычно 1.8 градуса, если повезет найти движки на 400 шагов - то 0.9). Софтина должна помнить сколько шагов для каждого из двух движков нужно сделать для настройки на конкретный спутник.

Удачи!

ЗЫ: Паять сами будете? Есть еще замечательные микрухи A3977 от Allegro - в принципе можно обойтись и без микроконтроллера.


Паять буду сам! Про замечательные микрухи типа А3977, L297+L298 тоже слышал, да и сам делал 3-х координатный станок на связке 297+298 и все это работает до сих пор, но я не об этом.
Моя задача сделать то же самое, но на микроконтроллере, который будет управлять мощными транзисторами. Угол ШД меня интересует мало, т.к. будет применена червячная пара с 360:1, т.е. чтобы колесо совершило один оборот необходимо 360 оборотв червяка. Градусы будут вычисляться програмно (на ПК). Концевые датчики - это само собой разумеещееся, без них ни как.

Цитата
Это можно сделать на одном контроллере, например mega48/88/168.
На таймере0 формируете тактовую последовательность управления первым ШД,
на таймере2 - вторым.
........______
____| .........|____ фаза А
.............______ вращение в одну сторону
_______|......... |____ фаза В

........______
____|......... |____ фаза А
...______ вращение в другую сторону
_|......... |____ фаза В


Это и так известно. Я не знаю как это реализовать программно на контроллере. В этом и есть загвоздка. Здесь http://forum.electronix.ru/index.php?showt...=0&gopid=63386& создана мной такая же тема. В ней один прислал исходники на С к статье Редико, но эта схема мне не гравится, т.к. она сложная и управляет одним ШД. А как ее переделать на работу с 2-мя ШД я не пойму.
Antony Ugolev
Я реализовывал систему управления шаговыми двигателями на ATmega128.

Скажу вам, что когда число двигателей два и более, использовать только микроконтроллер для этого становится непросто.
Я использовал контроллер Toshiba TA8435H. На плате их было установлено три штуки сразу.
В контроллере есть всё, что надо: дробёжка шага, торможение, экономичный режим, выключение и проч.

Я реализовывал алгоритм плавного разгона/торможения с переменным ускорением на этом контроллере.
Работает классно.

Устройство само (внешний вид) вот. Это так, для устрашения. smile.gif

Будут вопросы, пишите. С удовольствием расскажу, что знаю.
rmo
Настраиваете Timer2 так, чтобы прерывания по переполнению или по совпадению
формировались с заданной частотой, например 500Гц.
А далее хотя бы так
#define fasa_A PORTB.0
#define fasa_B PORTB.1

interrupt [TIM2_COMPA] void timer2_comp_isr(void){
switch (PINB & 0x3){
case 0:fasa_A = 1;
break;
case 1:fasa_B = 1;
break;
case 2:fasa_A = 0;
break;
case 3:fasa_B = 0;
break;
}
}
mcu
Цитата
Я бы с радостью изобрел свой девайс, да вот только больших навыков в разработке микроконтроллерных систем нет. Вот именно для этого я и создал тему на форуме.

Уважаемый, я же дал Вам ссылку именно на то что Вы ищите http://www.visual-devices.ru/
Смотрите в портфолио систему управления станком или роботехническим комплексом.
Если не хотите или не можете разработать самостоятельно, почему бы не купить всё уже готовое и отлаженное?
Dr. Electronic
Цитата(mcu @ Nov 15 2005, 19:01) *
Уважаемый, я же дал Вам ссылку именно на то что Вы ищите http://www.visual-devices.ru/
Смотрите в портфолио систему управления станком или роботехническим комплексом.
Если не хотите или не можете разработать самостоятельно, почему бы не купить всё уже готовое и отлаженное?


Понимаете, купить - это много ума не надо. Да и денег у меня столько нет, чтобы так разоряться, т.к. я только студент. А я так понял, что вы или там работаете, или как-то с ними связаны.
mcu
Цитата(Dr. Electronic @ Nov 16 2005, 00:29) *
Цитата(mcu @ Nov 15 2005, 19:01) *

Уважаемый, я же дал Вам ссылку именно на то что Вы ищите http://www.visual-devices.ru/
Смотрите в портфолио систему управления станком или роботехническим комплексом.
Если не хотите или не можете разработать самостоятельно, почему бы не купить всё уже готовое и отлаженное?


Понимаете, купить - это много ума не надо. Да и денег у меня столько нет, чтобы так разоряться, т.к. я только студент. А я так понял, что вы или там работаете, или как-то с ними связаны.


Ваше право воспользоваться или нет предложением. Кстати, я не получал от Вас запроса на стоимость системы, поэтому не понимаю почему Вы не можете её себе позволить. Цена на аналогичные модули контроллеров шаговых двигателей ~ 9000р (С.П.), моего модуля - 650р. Разницу видно невооружённым глазом.

PS. Я пытался быть Вам полезен, так как Вы сетовали на трудность самостоятельного повторения данной конструкции.

Удачи!

С уважением, владелец сайта www.visual-devices.ru, Алексей Тарасов
skopus
Я бы посоветовал использовать специльно заточенные под управление шаговиками комплекты микросхем. Например l297+l298. одна силовая, другая логическая. стоят рублей по 100. Надо буквально отправить команду типа "скорость, кол-во шагов, направление". Все остальное сделают они
mcu
Мой модуль шагового двигателя как раз и построен на этой паре 297 и 298.
INT1
так он и у ST так-же построен, может кто подскажет драйвер на ток 7 - 10А на фазу для биполярного ?
SasaVitebsk
Смотря какие шаговики. biggrin.gif У меня была тема приборный щиток. biggrin.gif
Короче на плате atmega8 в планаре шесть шаговых двигателей по трёхточечной схеме прямо на ноги megi и шесть каналов АЦП. Применено дробление на 6. Разгон-тормажение. Цифровой фильтр второго порядка. Раздельное управление (моя гордость) на основе ошибки по положению.
Особая сложность была с возвратом стрелок после пропадания питания.
Короче написание - дней 10. отладка с доводкой и изменением вводных 2 месяца. И что тут абсуждать?
Если бы все темы были такие-же простые...... biggrin.gif
8419868
Цитата(Pat @ Oct 22 2005, 23:56) *
Уважаемый я кАнеЧно ту сории что влажу но:
Вам же выше дали ссылку
http://radiotech.by.ru/Shematic_PCB/Avtoma.../step_motor.htm
Там есть все что надо.
Есть и AVR и схема и прошивка демо версии и сама прошивка на асме тоже есть.
Самое главное что ее сваял Ридико Леонид Иванович.
Человек девайсы которого продаются наверное чуть ли не на каждом рынке нашего СНГ.
Он там так расписал про шаговый двигатель что не понять, как он работает и как им управлять, просто невозможно.
Вы попробуйте повторить его девас.



извините но эта ссылка на рабочая ((( можете дать активную ссылку? буду признателен
Сергей Борщ
QUOTE (8419868 @ Feb 10 2011, 21:05) *
извините но эта ссылка на рабочая ((( можете дать активную ссылку?
http://530.ru/electronics/projects.php?do=p077
aleksey_g
Вдруг моя разработка Вам поможет.
Есть у меня друг авторемонтник. Уже очень давно мечтает научиться работать с микроконтроллерами. уже несколько раз брался изучать, но все никак не получалось.
Но вот вдруг он захотел сделать фрезерный станок. Под него попросил сделать STEP-DIR драйвер для управления тремя шаговиками, на одной микросхеме. Эта задача легко решается на (к примеру АТМЕГА8, которую он уже купил). Но написать попросил так, чтобы она была понятна ему. Так сказать в учебных целях. Пришлось в большей степени уделить внимание не на оптимальность функционирования, а именно на разжевывание каждого шага. Программа получилась слишком "раздутой" и чересчур медленной.
Не знаю, насколько успешно я справился с учебной стороной вопроса, но все три движка она успешно крутила.
Кстати, друг так и не удосужился "подсесть" на МК. Нашел себе оправдание, что времени не хватает.
Вкратце, что она делает...
На каждый двигатель есть два входа. DIR- указывет, в какую сторону двигателю крутиться. STEP- сигнал сделать один шаг.
Управляет она двигателем с 4 фазами. Если нету сигналов управления более заданного времени, выставляется сигнал для снижения питания (режим простоя).
Режим простоя реализован для каждого двигателя независимо. Как только приходит сигнал STEP, выключается режим простоя того двигателя, которому нужно шагать.
Поскольку входы STEP работают по прерываниям, а у меги8 внешних прерываний всего 2, то для третьего входа используется вход аналогового компаратора. Второй вход этого компаратора подключен ко внутренней опоре програмно. Прерывание от аналогового компататора используется в качестве третьего сигнала STEP.

Прошу сильно не ругать, если в "учебности" или "правильности" обнаружите недостатки. Ведь не очень просто писать так, чтобы было понятно тому, кто не пробовал МК никогда, и при этом получить эффективный и правильный код.
Нажмите для просмотра прикрепленного файла
Забыл добавить. Это под ИАР.
_Pasha
Цитата(aleksey_g @ Feb 11 2011, 12:30) *
Но написать попросил так, чтобы она была понятна ему. Так сказать в учебных целях.

Была аналогичная история - "понятный" релейный контроллер. Итог - человек меня замучал вопросами, почему он не может в аврстудии создать проект sm.gif Вылезло в другом месте.

Цитата
а у меги8 внешних прерываний всего 2, то для третьего входа используется вход аналогового компаратора.

Не поверите! У меги8 внешних прерываний немного больше:
- int0 int1 + компаратор - это понятно
- Т0 при предустановке таймера 0 в 255
- ICP
Итого- целых 5, а при ненужности таймера Т1- 6 прерываний.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.