Форум программистов, компьютерный форум, киберфорум
Наши страницы
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/187: Рейтинг темы: голосов - 187, средняя оценка - 4.63
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
1

3х осевое управление ШД

13.11.2014, 19:38. Просмотров 33633. Ответов 58
Метки нет (Все метки)

Тема избита, но всё же. Свой велосипед по круче буде. Есть такая штука: http://purelogic.ru/shop/stomki_cpu/fre ... hpu_plra4/
К ней три PL57H56-D6 с параметрами 57x56мм, 12.6 кг.см, вал 6.35мм, ток 2.6А, шаг 1.8°.
Собсно чего тут думать, 3 драйвера, 1-2 БП, 1 ПК с лпт и оно зашево?лится. Но, поскольку станок используется для своих тёмных целей, то Mach3 не приветствуется и конструкция примет вид 3х драйверов управляемых МК от AVR, к которому хоть клаву, хоть COM (а лучше USB). МК представляет собой атмегу128, ибо она осталась от предыдущего проекта (4х канальный DDS сигнала "любой" формы), к тому же на макетке наличествует FT232. Ну и что что переизбыточно? За то есть!
Драйвера китайские, предположительно на TB6560, своё городить отказались, но посмотрим на поведение этих дров. Плюс в том, что требуется всего 6-8 выводов, 3 на DIR, 3 на STEP, 1,2 или 3 на ENABLE (выбрал 2 вывода, т.к. по оси X и Y двигатели должны управляться вместе (Все говорят, но не многие знают в каком©Цой), следовательно 1 вывод на 2 драйвера, и если 1 ШД фиксирует ротор, то второй тоже должен этим заниматься). Так же не забываем про 3 концевика, ещё +3 ноги. Ось Z управляет приблудой - вибродатчиком! И скорее всего этому датчику посвящён будет другой МК, значит с ним придётся общаться, указывая ему когда начинать снимать данные, мега128 с ейной то переферией асилит эту задачу безусловно! Итого 3 с половиной(порт G) порта будет незаюзано.. Жаль.
Код основывается на использовании таймера, по DIHALTу-флаговый автомат (http://iosyitistromyss.ru/avr-uchebnyj- ... gramm.html) и на ASM, ибо задача требует точности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2014, 19:38
Ответы с готовыми решениями:

В прямом цилиндре построить осевое сечение (графика С++)
В прямом цилиндре построить осевое сечение (графика С++).

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление...

Движение, вращение, управление движением, управление вращением фигуры
Написать программу, выполняющую четыре операции над графическим...

Перенести управление стрелками на управление WASD
Мне нужно чтобы в игре вместо стрелок управление осуществлялось WASD и при этом сами WASD не...

Чем отличается 1с 8.0 Управление персоналом от 1с 8.1 Управление персоналом?
Чем отличается 1с 8.0 Управление персоналом от 1с 8.1 Управление персоналом? Где это посмотреть)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
58
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
13.11.2014, 20:01 2
В виду закрытости разработки, код целиком выкладываться вряд ли будет, да да нубы тоже имеют свои секреты..
Но алгоритм обсуждать предлагаю, если выражаться точнее, то матан. Для позиционирования предлагается использовать 3 2х байтные переменные, пример:
1111 1111 1111 1111=65535 условных единиц;
где условняя единица-шаг двигателя, при 1/16 это 3200 тиков на оборот, следовательно 0,012мм (вал 6.35мм->длина окружности около 40мм->320мм/40мм= чуть больше 8ми оборотов->8*3200=26к шагов максимум).
Т.к. для стола А4 максимальное количество тиков около 26к, а 26к<65к, то 2х байтового числа за глаза хватит чтобы не потеряться. А если деление шага двигателя будет 1/8, 1/4 то и того меньше, но в 1 байт априори никак не уложимся.
Далее, если я уложусь в 250 тактов, то смогу использовать однобайтный таймер/счётчик, при частоте 16МГц.. стоп, скорее всего будет 11059200Гц, так вот, при 255 тактах имеем 0,000023с или 23мкс или 43кГц для сигнала STEP. Многовато, а значит можно не скупиться на код и забабахать не огрызок, а полноценную NOKIЮ и не жалеть TC1 или TC3.
0
Iddy_Im
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,406
13.11.2014, 20:16 3
Я тоже подобный велосипед делал.
Эдакий хеллоуворлд O

код целиком выкладываться вряд ли будет
И чего тогда талдычить было?
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
13.11.2014, 20:21 4
Но поскольку с шаговыми двигателями опыта работы нема (не путать с NEMA), появляются вопросы "как правильно им управлять". Интернет теории и собственной логики хватает чтобы знать-ШД нужно разгонять и тормозить, что не полезно для ответа на вопросы "где я?" и "как туда добраться?", но с другой стороны мы не теряем ротор (по крайней мере не должны), а значит вопрос "где я?" не так остро стоит. Но вот "как туда доехать?" подразумевает то, что разгон должен быть живым! Ну или не мёртвым. Получается он не просто разгоняет движитель до рабочей скорости, но, если потребуется, прерывает разгон и включает торможение, тоже плавное. Такое можно встретить если расстояние, на которое хотим переместиться, относительно мало. И вот задача: как правильно разгонять? Самый простой способ ударить в лоб я вижу в линейном разгоне. А самый правильный-в экспоненциальнологарифмическом (сам придумал), в общем как конденсатор, но наоборот.


http://forum.*******************/download/file.php?id=22257&sid=692ab7d850de53e8832b35eb03c899a9
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
13.11.2014, 20:24 5
И чего тогда талдычить было?
Тот кто хочет-всёравно сделает, а кормить рыбой мне нельзя, но научить-можно. И сам заодно научусь, мне нужны советы, ведь я не знаю подводных камней что тут водятся, всётаки мощная, причудливая, да ещё и индуктивния нагрузка для меня-это впервой. Вашу ссылку уже пытаю, а проект мой пока только в теории, дабы найти в оной изъяны, нужно посмотреть с разных сторон. Я так понял, вы с постоянной скоростью перемещаетесь, без разгона/торможения? И слова "wariant" не встречал, но понял :о). Мне хотелось бы максимально быстро перемещаться по рабочему пространству, я задрот, мне жалко тактов, жалко памяти, жалко времени (не своего). К примеру вместо меток я использую rjmp PC-43 :о), а переменных особо не обзываю, использую r16 as is.
0
Iddy_Im
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,406
13.11.2014, 20:51 6
Я так понял, вы с постоянной скоростью перемещаетесь, без разгоня/торможения?
Да, т.к. скорости низкие, массы небольшие.
Мне хотелось бы максимально быстро перемещаться по рабочему пространству
Если там будут приличные массы, то да - придется разгонять-тормозить. Но это всегда делается элементарным DMA. Вешаем по таймеру на клок каждого шаговика, еще три таймера будут дергать DMA (правда, в этом случае придется брать уже МК с DMA, на STM8 такого нет; не знаю, как там в вашей атмеге). Вот и все. Если перемещение небольшое, то двигатель просто не разовьет максимальную скорость - прерывание (или просто счет) по окончанию движения отрубит все. Но это в теории так, на практике не всегда так с таймерами везет.
Но т.к. скорости совсем уж смешные, можно простым "ногодрыгом" решить проблемы. Скорости менять, скажем, каждые 10 шагов, делая это прямо в обработчике прерываний (я так понял, ничего слишком шустрого не будет, чтобы вызывать зависание МК).
А еще можно купить готовые драйверы, управляющиеся по CAN/232/485. Правда, цена уже подскочит где-то до 500 баксов за контроллер.
0
sitimur
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
13.11.2014, 21:17 7
Сам недавно занимался таким-же, т.с. хитро рассчитал частоты step, но ведь не учел того что одновременно будет перемещение не по одной оси, а по нескольким, и если по оси Х нужно проехать допустим 5 см, а по оси Y 20 см, то тут добавиться математика, которая кучу тактов съест.... да и расчет ускорения торможения, тоже требует математики.
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
13.11.2014, 21:22 8
Поскольку в ассемблере возиться с экспонентой мы не умеем и не хотим, то возимся с постоянным ускорением; и тут уже вопросы к ВАМ знатоки. Допустим мы тикнули по направлению "туда", ждём 255 раз по 255 тактов (23мкс), снова тикаем, ждём 250 раз по 255 и т.д. до некой максимальной скорости, Тик, ждём 10раз*255, Тик ... ждём 10раз*255, Тик, затем тормозимся: Тик, ждём 15раз*255, Тик, ждём 20раз*255, Тик ... Тик, ждём 255раз*255, Тик и баста, приехали, просто держим ENABLE.
МатАНАЛлиз: 10раз*255тактов даёт нам частоту 4337Гц, при 3200 шагов на оборот получаем 54мм/с->3253мм/мин.
При инк/декременте в 5 имеем 49 тактов на разгон или некоторое время, возможно пара секунд.
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
13.11.2014, 21:30 9
Цитата Сообщение от Iddy_Im
Но это всегда делается элементарным DMA
Похожую идею использовал при DDS, где брал нужное значение из памяти, и слал в порт, и там хоть пила, хоть синус, или как у DI сиське! http://iosyitistromyss.ru/parallelnyj-c ... -r-2r.html

Цитата Сообщение от sitimur
но ведь не учел того что одновременно будет перемещение не по одной оси, а по нескольким, и если по оси Х нужно проехать допустим 5 см, а по оси Y 20 см, то тут добавиться математика, которая кучу тактов съест.... да и расчет ускорения торможения, тоже требует математики.
Постскриптум: я знал что я не одинок.
Пофактум: Я вот немного учёл, тобишь в одном цикле вожусь с 3мя осями сразу, а не сначала по Х, потом по У и т.д., но в связи с постоянством разгона и постоянством максимальной скорости движения имею неприятные вещи для гравировщика/резальщика, ибо из А в Б моторы довезут к разному времени и прямая неполучится, но поскольку мне нужно всего лишь туда добраться, то для нашего проекта некритично. Пускай трекинг при виде сверху примет такой вид:


http://forum.*******************/download/file.php?id=22258&sid=692ab7d850de53e8832b35eb03c899a9
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
13.11.2014, 22:19 10
Цитата Сообщение от sitimur
Сам недавно занимался таким-же
Ухты ухты, #defyme SYMB_C 0x43 // C <-- Выполнение задания окружность
Окружность это интересно!
Я вот очкую переходить на Си, боюсь потерять ротор, из-за "хзсколькотактовкомпиляторнатворил".
Что если ШД не замечает разницу между STEP в +-n тактов?
Как вы ориентируетесь в 3х соснах? Моя при старте крутит всё до концевиков, и при их срабатывании медленно крутит назад пока сигнал с концевиков не прекратится, и это назовём 0. Что если МК RESIT, снова придётся следовать к концевикам дабы найти 0? Время же, всё с начала же, аяяй же.
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
13.11.2014, 23:14 11
Выводы за сегодня:
Возражений по поводу линейного ускорения и самой величины этого ускорения не встретил, буду делать как знаю, прибудет драйвер, проверим на нём. Потому планируется делать избыточные задержки, длительности step/dir, низкие скорости. Но ещё хочется уйти от микрошага 1/16 и остановиться на 1/4, ибо даст +в скорости, +в более свободном написании кода, большие допуски, больший момент, но и возможно проявит себя резонанс, недостаточная точность позиционирования, что-нибудь ишо. Посмотрим. Что если выложить тело цикла? Пусть без математики для экспоненты/окружностей/протокола UARTа? Что если для ищущего и этого хватит? Чта Если Начать?
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
14.11.2014, 01:01 12
Цитата Сообщение от Чта Если
Поскольку в ассемблере возиться с экспонентой мы не умеем и не хотим...
Цитата Сообщение от Чта Если
Выводы за сегодня:...Чта Если Начать?
Хватит уже воздух сотрясать. А возиться с экспонентой не надо, надо забить ее в таблицу и доставать по мере надобности. В ассемблере, в С, в АВ (для фанатов), разницы нет.
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
14.11.2014, 19:42 13
Цитата Сообщение от omokost
В ассемблере, в С, в АВ (для фанатов), разницы нет.
Не придумал что есть АВ (абэ, авэ, эйби?). Из умных слов знаю только питоны/явы/паскали/бейсики/пхп/брейнфак/хуча производных от Си..
После утренних событий имеются уточнения, ПО открытое, управление не хитрое (ничего гравировать, сверлить не треба). Нужно добираться до сетки точек на плоскости, расстояние между точками 1см. После тыкания глазами и руками в станок напросился вывод: накой фиксировать ротор? Сия конструкция не двигается просто так! Нужно постараться будет.. А значит ток удержания выставляем самый минимальный. Было решено не использовать точные настройки, зашитые в МК, а задавать их из вне, как в той же Mach3. Вот и решение моих вопросов "какая длительность того/этого", "какова крутизна разгона", "есть ли жизнь на марсе"(привет Метальникову Илексею Нихийловичу); просто методом тыка выбираемподчёркиваем нужное, заодно расширяем ассортимент поддерживаемых двигателей.
?????
PROFIT

0
Iddy_Im
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,406
14.11.2014, 20:03 14
расширяем ассортимент поддерживаемых двигателей
Чтобы расширить ассортимент, лучше всего будет не физически перемычками или припаянным резисторным делителем задавать максимальный ток, а подключить на вход компаратора драйвера ШД ЦАП (или хотя бы ШИМ) выход МК. Тогда программно можно будет ток менять.
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
14.11.2014, 20:35 15
Насколько я нагуглён, ток в обмоткех шимом от драйвера и задаётся, я имел в виду режим удержания ротора, который в некоторых моделях включается через 2 секунды после отсутствия сигнала STEP. Но говоря
А значит ток удержания выставляем самый минимальный.
я наверное ошибся и спутал с Decay mode. Ведь что-то не припоминаю с ходу о настройках именно тока удержания, но помню что настройки две, обе в % и одна из них это установка рабочего тока в % от максимального. Забыл упомянуть, что предполагается использовать ebay подобные драйверы.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
14.11.2014, 22:16 16
Цитата Сообщение от Чта Если
...Не придумал что есть АВ (абэ, авэ, эйби?). ...
Надо было почитать соседние ветки, АВ - Алгоритм Билдер, тут целую войну за АВ некоторые развернули. Ну если вы не знаете эту абревиатуру, оно вам и не надо, и правильно.
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
15.11.2014, 22:35 17
Жалко что миллеметризацией шагов можно будет заняться только на реальном образце, ибо не думаю что быстро найдутся данные о количестве пройденных мм на оборот ротора.
0
sitimur
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
16.11.2014, 06:14 18
Ну ты сейчас уже имей в виду что у тебя будет определенная константа для каждой оси с количеством импульсов для растояния например 0.01 мм :-)
0
Чта Если
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 32
16.11.2014, 19:47 19
Таки настройка тока удержания имеетсо. Но это мелочи; в виду говёности платы-её нужно апгрейдить, но мне неизвестны все аспекты по доведению её до годного состояния, тобишь кроме дополнительного конденсатора ХЗ что ещё куда паять. Так то.

0
Iddy_Im
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,406
16.11.2014, 21:05 20
Такой апломб в начале был, и так все закончилось...
Я-то думал, система управления ШД будет самодельной и универсальной. А тут — кетайское гуано.
0
16.11.2014, 21:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru