Народный проект драйвера (привода) для шаговика на AVR

plasmacut

Уважаемые господа.
Предлагаю развить тему “народный проект управления шаговым двигателем”.
История этого дела такова. Лет пять назад я задался целью создать свой станок с ЧПУ. Купил у одного америкоса два биполярных шаговика (5амперных) и привода GeckoDrive. Работали неплохо. Сделал на этом комплекте одному знакомому простую машинку для плазменной резки. Кстати работает до сих пор. Фото прилагается.
Потом сделал на работе фрезерную машину. Фото ее и работы, выполненные на ней приведу позже.
Потом задумал попробовать сделать свой драйвер для шаговиков вместо GeckoDrive.
Был у меня один знакомый. Мы вместе с ним начали реализацию такого проекта. На контроллере 90S2313 сделали драйвер, работающий в шаге/полушаге. Микрошаг реализовать не успели. Знакомый уехал на ПМЖ в Германию.
Схема реализовала идеи, описанные Л.И.Редико. Помимо Step/Direction реализовала функцию снижения тока через несколько секунд после остановки двигателя (чтобы не грелся). Испытания провели. На первый взгляд работало нормально, но конечно с оговоркой, что были такие явления, характерные для шага/полушага, как резонанс на определенной частоте вращения. Но как мне кажется проект нужно развивать дальше. Он может послужить основой для многих простых приложений. В свое время я вложил в проект хотя небольшие, но все же деньги, оплачивая работу программиста и экспериментальные работы. Хотелось бы как-то довести до конца.
Это как бы предисловие…

Ну так вот вопрос. Есть ли желающие, кто хотел бы принять участие в развитии "Народный проект драйвера (привода) для шаговика на AVR " Предлагаю всем заинтересованным, кто пишет на СИ для контроллеров AVR, поучаствовать в этом проекте. Если будет достаточно заинтересованных, выложу схему и чуть позже исходный текст проекта. Наверное нужно будет перевести устройство на более современный AVR контроллер, но не очень навороченный, например Mega8. Может еще будут какие-то предложения…

mura
plasmacut:

Уважаемые господа.
Предлагаю развить тему “народный проект управления шаговым двигателем”.

А какова цель данного проекта?
Т.К. про драйверы уже есть море инфы, все разжевано до нимагу.

plasmacut
mura:

А какова цель данного проекта?
Т.К. про драйверы уже есть море инфы, все разжевано до нимагу.

цель - создать простой, из доступных деталей, драйвер биполярного шагового двигателя. Такой, чтобы мог ток приличный (5-7А) обесечить, а не только принтерный или дисководный шаговик крутить. Чтобы снижал ток в СТОПе, чтобы движок не грелся до кипения.
А то начинается: купи L297, L298 и напаяй еще приличное количество рассыпухи. А току, хорошо если несколько ампер получишь. Я предлагаю делать схему, описаннную Редико, с некоторыми изменениями. Берем контроллер ( у меня был 90S2313) ставим мощные полевики с драйверами конечно и пролучи любой ток. Во всяком случае серъезный портал двигать можно. Может я не все разработки, что в Интернете в свободном доступе есть, знаю, но что-то с такими параметрами не припомню. Если я не прав, то прошу дать ссылки.

argusstar
plasmacut:

Я предлагаю делать схему, описаннную Редико, с некоторыми изменениями. Берем контроллер ( у меня был 90S2313) ставим мощные полевики с драйверами конечно и пролучи любой ток. Во всяком случае серъезный портал двигать можно.

ну а где схема и прошивка?

mura
plasmacut:

цель - создать простой, из доступных деталей, драйвер биполярного шагового двигателя. Такой, чтобы мог ток приличный (5-7А) обесечить, а не только принтерный или дисководный шаговик крутить. Чтобы снижал ток в СТОПе, чтобы движок не грелся до кипения.
А то начинается: купи L297, L298 и напаяй еще приличное количество рассыпухи. А току, хорошо если несколько ампер получишь. Я предлагаю делать схему, описаннную Редико, с некоторыми изменениями. Берем контроллер ( у меня был 90S2313) ставим мощные полевики с драйверами конечно и пролучи любой ток. Во всяком случае серъезный портал двигать можно. Может я не все разработки, что в Интернете в свободном доступе есть, знаю, но что-то с такими параметрами не припомню. Если я не прав, то прошу дать ссылки.

Море, на любой вкус ТУТ

argusstar
mura:

Море, на любой вкус ТУТ

извините …но я в иностранных языках не силён

boldive
plasmacut:

Наверное нужно будет перевести устройство на более современный AVR контроллер, но не очень навороченный, например Mega8. Может еще будут какие-то предложения…

А почему навороченный нельзя? Например Atxmega16 или 128 или 256, разница в цене невелика, на общей стоимости драйвера скажется ну очень мало.
Простое сравнение:
www.atmel.com/products/AVR/default_xmega.asp

Prog RAM I/O Freq. EEPROM Analog-Digital Core
ATMEGA8-16PU $3.66 8Kx8 1Kx8 23 16Mhz 512x8 A/D 6x10b 8bit
ATXMEGA16A4 $4.30 16Kx8 2Kx8 36 32Mhz 1Kx8 A/D:12x12b D/A:2x12b 8/16bit

Уж если что-то новое делать то делать на современной базе.
Можно еще дальше пойти и взять 32bit CPU. Например AT32UC3A0128-ALUT $13.65. Тут уже можно и компьютер собирать. Опять-таки разница в цене невелика, 10 долларов (3-4 MOSFET транзистора)
Кого интересуют цены на все это добро смотрят/покупают тут: www.digikey.com

ATLab
plasmacut:

цель - создать простой, из доступных деталей, драйвер биполярного шагового двигателя. Такой, чтобы мог ток приличный (5-7А) обесечить, а не только принтерный или дисководный шаговик крутить. Чтобы снижал ток в СТОПе, чтобы движок не грелся до кипения.

Цель благородна, непонятно только кому конкретно это нужно.
Вам? Сколько Вам нужно драйверов? 10…20? И станки, вероятно, для работы.
Не проще ли купить?
Вы поймите, таких драйверов, как Вы заявляете, нет в общем доступе не потому, что их нельзя сделать, а потому, что такая разработка, вместе с отладкой и тестированием занимает довольно много времени и сил (читай денег).
И в повторении, скорее всего, не будет простым.
Профессионалам это не нужно: кому охота задаром ушлому дяде отдавать свою работу, ведь такие драйверы производят и продают не за маленькие деньги куча контор, берите любой и повторяйте (если сможете). Или попросите у них схему, прошивку и топологию печатной платы.
Думаете не поймут? Правильно думаете…
А любительские потребности покрывают любительские же конструкции.

… Я предлагаю делать схему, описаннную Редико, с некоторыми изменениями. Берем контроллер ( у меня был 90S2313) ставим мощные полевики с драйверами конечно и пролучи любой ток…

Начнем с того, что:

  1. контроллер г-на Ридико управляется нестандарным для любительского станка образом - сигналов DIR/STEP там нет, так что про его прошивку можно сразу забыть (если Вы не собираетесь еще и написать свой софт для компьютера);
  2. контроллер г-на Ридико - для униполярных двигателей.
    Про микрошаг заявки не было, так что упомяну факультативно: микрошага там нет.
    И что осталось от прототипа, на основе которого должен был родиться “народный драйвер”?
    Ни-че-го.

P.S. Некоторое время назад (в октябре) boldive предлагал нечто в этом же духе, ветка “AVR и контроллер шагового двигателя”.
Насколько я помню, дальше начальных слов здесь дело не пошло и ветка “засохла”.
Спросите у него сами: далеко ли продвинулось дело.

boldive

Дело не продвинулось и наверно двигаться так как хотелось-бы уже не будет. Причина простая: тех кто реально мог бы помочь (читай выложить свои разработки) душит жаба (все мое мое). И это понятно, максимально что он получит в ответ это спасибо. Ну а человека как Граф, который мог-бы хотябы в теории расписать и по полочкам разложить как это должно быть сделано похоже пока нет.

Операционная система Linux в каком-то роде также народный проект, и никто там в сообществе не прячет исходные тексты, более того, даже настоятельно рекомендуют не забывать их выкладывать. Таковы условия лицензионного соглашения. А тут вначале на форуме скажут - Я вот тут такое собрал!!! А потом приписочка, а проект коммерческий.

Наверно надо брать логику на Mega8 отсюда rcopen.com/forum/f110/topic40981 (Усовершенствованный сервопривод Чена) ну а силовую часть уже в зависимости от двигателя и нагрузок лепить по стандартным схемам. Тут уже кому подешевле а кому понадежней. Каждый пусть сам решает.

mura:

все разжевано до нимагу.

А можно ссылочку на программу написанную на С под Atmel? Да не урезанную демо версию для ознакомления а нечто реальное к применению.

Ну вот очень хорошо тут рассписано в теории khalus.com.ua/kh/show/flm/stepper-article/index, а кто готов на практике это воплотить?

ATLab
boldive:

Дело не продвинулось и наверно двигаться так как хотелось-бы уже не будет. Причина простая: тех кто реально мог бы помочь (читай выложить свои разработки) душит жаба (все мое мое). И это понятно, максимально что он получит в ответ это спасибо. Ну а человека как Граф, который мог-бы хотябы в теории расписать и по полочкам разложить как это должно быть сделано похоже пока нет.

Ну вот очень хорошо тут рассписано в теории khalus.com.ua/kh/show/flm/stepper-article/index, а кто готов на практике это воплотить?

Вы сами себе притоворечите в одном и том же посте: теория разжевана у Ридико, достаточно подробно все расписано еще и в pdf на драйверы от Allegro и Toshoba.
Какой еще “Граф от драйверов” Вам нужен? У Графа ведь тоже не указаны размеры и чертежи он не выкладывал.

Операционная система Linux в каком-то роде также народный проект, и никто там в сообществе не прячет исходные тексты, более того, даже настоятельно рекомендуют не забывать их выкладывать. Таковы условия лицензионного соглашения

Вот про бесплатный и альтруистический Linux лучше не надо. Вы что, всерьез думаете, что люди работающие над Linux, делают это бесплатно? Не исключаю, конечно энтузиастов - куда же без них - но основную работу люди в проекте выполняют за вполне прозаическую зарплату (или гранты или еще как-нибудь это назовите, суть та же - деньги за работу). Иначе на что они бы жили?

Наверно надо брать логику на Mega8 отсюда rcopen.com/forum/f110/topic40981 (Усовершенствованный сервопривод Чена)

И опять мимо лузы: что и зачем можно взять в шаговый драйвер от серводрайвера? PID регулирование? Обработку сигналов энкодера? Cхему включения меги?..

ну а силовую часть уже в зависимости от двигателя и нагрузок лепить по стандартным схемам. Тут уже кому подешевле а кому понадежней. Каждый пусть сам решает

И на этом народный драйвер закончится не начавшись.
Кто мешает с бОльшим успехом взять tiny2313 с прошивкой из проекта Mardus-Kreutz, обсуждаемого в соседней ветке, и к нему “силовую часть уже в зависимости от двигателя и нагрузок лепить по стандартным схемам…” и далее по цитате?
Этот проект завершен уже довольно давно, а что-то никто не сподобился к нему приделать силовую часть для биполярного двигателя. Ни у нас, ни у альтруистичной буржуинии.

P.S. Пока что смысл всех этих “народных” затей я вижу в желании подешевле (для затейника) обзавестись драйвером. При этом практический вклад от затейника в проект равен 0.

mura
boldive:

Дело не продвинулось и наверно двигаться так как хотелось-бы уже не будет. Причина простая: тех кто реально мог бы помочь (читай выложить свои разработки) душит жаба (все мое мое). И это понятно, максимально что он получит в ответ это спасибо. Ну а человека как Граф, который мог-бы хотябы в теории расписать и по полочкам разложить как это должно быть сделано похоже пока нет.

В твоей-же ссылке все разжевано.

Ну вот очень хорошо тут рассписано в теории khalus.com.ua/kh/show/flm/stepper-article/index, а кто готов на практике это воплотить?

А навороченый проц ставить зачем, если простой справляется?
В драйвере нет ничего сложного, попробую изложить для микрошагового

1.Силовая часть - выбираем под требуемый ток по вкусу.
2.Схема контроля тока (компаратор, триггер - можно использовать встроенные в МК, хотя я сторонник рассыпухи для этого узла)
3.Управление - тут нуна без “дребезга” принять шаговый импульс и из таблицы выдать напряжение на компараторы,
способ формирования - ШИМ (мне нравится), встроенный ЦАП, внешний ЦАП, вобщем по вкусу.
Программы тут на 1-2 экрана.

Но если требуемый ток до 3А логично использовать готовый (TB6560, TA8435) дешевле будет.

bolt

Народных проектов не бывает, они всегда авторские. Да и само использование ШД – тупиковое направление. Попытки выжать из ШД все возможное, делают схему контроллера слишком сложной даже для копирования. А чтобы такую схему улучшить нужно еще и разбираться в теме не хуже автора.

boldive

Извиняюсь, ссылку на серводрайв выложил потому как сейчас больше к нему склоняюсь.

Linux пишут люди по большей части бесплатно. И по большей части эта система живет за счет энтузиазма. Компании делющие на этом деньги живут за счет поддержки продукта а не от продажи лицензий.

Те кто для себя написали программу для ШД на AVR и потом решили решили продавать готовый продукт много денег заработали? Не думаю что они зарабатывают себе на жизнь программирую микроконтроллеры для драйвов шаговых двигателей или продавая свой собственный продукт.

Больше начинаем флудидь нежели что-то обсуждать. Меня это тоже касается 😦

boldive

Если кто-то пользуется “промышленными” контроллерами для шаговых двигателей с токами 5-7А (например Geckodrive G203V) может сказать что там за начинка используется и на чем собрана силовая часть?

ATLab
boldive:

Если кто-то пользуется “промышленными” контроллерами для шаговых двигателей с токами 5-7А (например Geckodrive G203V) может сказать что там за начинка используется и на чем собрана силовая часть?

Вот Вам фото китайского клона одной из версий G201. Все достаточно хорошо видно, на обратной стороне платы лежат IRF540.

P2000_03.zip

MMX
ATLab:

Вот Вам фото китайского клона одной из версий G201. Все достаточно хорошо видно, на обратной стороне платы лежат IRF540.

Китаезы монстры уже и до Геко добрались. 😃
А где Вы его нашли? Очень интересно посмотреть, да наверно идешевле будет.
По схеме практически один в один. Немного отличается компоновка, но это мелочи. А “сила”, как в оригинале.

ATLab
MMX:

Китаезы монстры уже и до Геко добрались. 😃
А где Вы его нашли?

Это не я его нашел, это на CNCZONE.COM кто-то нашел, а Марисс (автор gecko) по этому поводу и выдал про китайское пиратство и что это клон устаревшей версии gecko.

arisov77
mura:

3.Управление - тут нуна без “дребезга” принять шаговый импульс и из таблицы выдать напряжение на компараторы…

Как сделать без дребезга, если длительность импульса от Масh не более 25мкс (Вы писали rcopen.com/forum/f110/topic40981. Допустим (сейчас делаю управлялку для ШД-4М на PIC16F676 с внутренним генератором 4МГЦ, без ШИМ, одиночный шаг), Step подаю на вход с прерываниями RA2(INT). В п/программе прерываний надо 2-3 раза повторить опрос входа (при времени команд у PIC для 4МГц=1мкс, а команд перехода =2мкс)- ? Или всё таки сразу перейти на опрос состояния Dir как в Ченовском сервоприводе (там, только по таймеру опрос)? У Mechanic rcopen.com/forum/f110/topic94068/45, судя по его прошивке rcopen.com/files/4928e1cd997073007705628c повторный опрос вообще через 100мкс происходит. Что посоветуете, а то опыта пока мало.
И ещё вопросик: Я ввожу задержку между шагами 100мкс, это надо? Т.к. контроллер я испытываю на светодиодики, а сам двигатель находиться на работающем станке за 50км, то хотелось бы на месте выяснить все нюансы. Первая поездка на выходных и установка прошла не очень успешно (и усовершенствованного Ченовского сервопривода тоже- из-за больших люфтов между движком и энкодером). При большой установленной частоте в Mach движок “засвистел” на месте и через несколько минут после эксперементов “сгорел” полевик IRL3705N (55В, 77А) (при токе одной фазы 3А). Радиатор на транзисторы надо вешать или задержку между шагами увеличить (для случая - большой входной частоты)?

mura
arisov77:

Как сделать без дребезга, если длительность импульса от Масh не более 25мкс .

Самый простой способ
Вход ШАГ на прерывание, в обработчике считываем его N-раз если все разы ОК считаем что пришел ШАГ, если хоть один неправильный - вываливаемся.

Допустим (сейчас делаю управлялку для ШД-4М на PIC16F676 с внутренним генератором 4МГЦ, без ШИМ, одиночный шаг), Step подаю на вход с прерываниями RA2(INT). В п/программе прерываний надо 2-3 раза повторить опрос входа (при времени команд у PIC для 4МГц=1мкс, а команд перехода =2мкс)- ? Что посоветуете, а то опыта пока мало.

Использовать AVR он побыстрее будет или поставить RC фильтр на вход и считать что каждый импульс правильный.

Т.к. контроллер я испытываю на светодиодики, а сам двигатель находиться на работающем станке за 50км

Ну это я давно понял. 😉

ATLab
arisov77:

Как сделать без дребезга, если длительность импульса от Масh не более 25мкс Допустим (сейчас делаю управлялку для ШД-4М на PIC16F676 с внутренним генератором 4МГЦ, без ШИМ, одиночный шаг), Step подаю на вход с прерываниями RA2(INT).

А откуда берется дребезг?

  1. На входе оптопара, если нет - обязательно поставить, убиваем двух зайцев: выполняет роль ФНЧ из-за своих инерционных свойств и снижается чувствительность к помехам, поскольку входной светодиод работает в токовом режиме (см. “токовая петля”)
  2. Вход Int в 16F676 с триггером Шмитта.

В п/программе прерываний надо 2-3 раза повторить опрос входа (при времени команд у PIC для 4МГц=1мкс, а команд перехода =2мкс)- ?

  1. От прерываний нужно вообще отказаться, какой смысл в их использовании? Какие еще сигналы кроме STEP должен обрабатывать PIC? Никаких.
    А на вход/выход из прерывания уходит много времени, даже если не сохранять/восстанавливать регистры.
    Достаточно в цикле анализировать ФЛАГ прерывания и сбрасывать его. Посмотрите исходник программы, который я приводил для управления LB1845. Он basic-е, так что все будет понятно.
  2. Что мешает поставить кварц на 20 МГц? Лень, проблема с кварцем? Не изобретайте проблем там, где их нет.

И ещё вопросик: Я ввожу задержку между шагами 100мкс, это надо?

Зачем? У мача ядро кажется 40 кГц, это значит он считает шаги с дискретом 25 мкс, а Вы их серпом по яй…м, чтобы гады не пролезли?
Опять таки вещь без логического обоснования.

Т.к. контроллер я испытываю на светодиодики, а сам двигатель находиться на работающем станке за 50км, то хотелось бы на месте выяснить все нюансы.

😃 Неужто притащить домой какой-нибудь шаговик проблема? Это будет адекватнее, чем использовать светодиоды, хотя начать можно и с них.

Первая поездка на выходных и установка прошла не очень успешно …
При большой установленной частоте в Mach движок “засвистел” на месте и через несколько минут после эксперементов “сгорел” полевик IRL3705N (55В, 77А) (при токе одной фазы 3А).
Радиатор на транзисторы надо вешать или задержку между шагами увеличить (для случая - большой входной частоты)?

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

arisov77
mura:

Использовать AVR он побыстрее будет…

Выбор этого МК, обусловлен, тем что он у нас используется в производстве и у меня их «завались».

mura:

Ну это я давно понял. 😉

Это Вы поняли по сервоконтроллеру? 😉 Ну, я никогда и не скрывал, что испытывал его на макете.

ATLab:

А откуда берется дребезг?

  1. На входе оптопара, если нет - обязательно поставить, убиваем двух зайцев: выполняет роль ФНЧ из-за своих инерционных свойств и снижается чувствительность к помехам, поскольку входной светодиод работает в токовом режиме (см. “токовая петля”)

Да, на входе HCPL-2531. Дребезга может и не быть, а случайная микросекундная помеха может (рядом несколько работающих электросварок). Сейчас я не использую повторного опроса состояния, потом при необходимости изменю программку.

ATLab:
  1. От прерываний нужно вообще отказаться, какой смысл в их использовании? Какие еще сигналы кроме STEP должен обрабатывать PIC?

У меня немного специфический контроллер, управляет высотой Z плазмо(газо)резки и в нём кроме Step/Dir предусмотрел отдельные входы F/R для системы стабилизации высоты (на будущее) и для управления от кнопок непосредственно около заготовки. Также есть концевики ограничения входа, регулятор скорости при автономном управлении. И если все эти входа опрашивать без прерывания от Step, то можно будет пропустить их часть.

ATLab:
  1. Что мешает поставить кварц на 20 МГц? Лень, проблема с кварцем? Не изобретайте проблем там, где их нет.

Зачем ставить кварц, когда он в данном применении он не нужен. Высоких скоростей, супер точности, формирования ШИМ мне не надо, так что 4МГц хватает.

ATLab:

Зачем? У мача ядро кажется 40 кГц, это значит он считает шаги с дискретом 25 мкс, а Вы их серпом по яй…м, чтобы гады не пролезли?

В п/программе обработки прерывания выставляю флаг того или иного направления. В основной программе опрашиваю эти флаги, при необходимости делаю шаг в нужном направлении, затем задержка и сбрасываю эти флаги. Так, что импульсы по Step не пропущу (мне надо только до 1кГц), это что типа фильтра.

ATLab:

😃 Неужто притащить домой какой-нибудь шаговик проблема? Это будет адекватнее, чем использовать светодиоды, хотя начать можно и с них.

Шаговик от принтера СМ6337 в соседней комнате валяется, лень подключать и по светодиодикам всё видно, особенно при автономном управлении и при убавленном регуляторе скорости, а частоту частотомером замерю. А нагрев транзисторов по нему я всё равно точно проконтролировать не смогу.

erozia

я счас делаю станочек типа фрезерный и слепил драйвер “народный” на меге восьмой на 3 движка … вобщем он задумывался как микрошаг шимом без контроля тока … но счас пока работает как драйвер полушага… написано на си. там пока для одного движка кому надо добавит строчек 10 и будет для 3х… сам думаю на микрошаг переходить… но это не скоро будет… вобщем в любом случае тем кто знает что такое си, атмел и шаговый двигатель будет полезно взглянуть на исходники…

п.с. если умные вопросы то аська 282720882

Driver_Step_Motor.rar

ATLab
arisov77:

…У меня немного специфический контроллер…

Понятно: задаем вопрос с фигой в кармане, в надежде на ответ телепата.