отзыв duxe.ru отзывы duxe.ru Шаговые двигатели и контроллеры в моем магазине duxe.ru

самодельный станок с ЧПУ, отзывы duxe.ru

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » самодельный станок с ЧПУ, отзывы duxe.ru » Схема контроллера, шаговые двигатели » Контроллер станка с ЧПУ на PIC с возможностью автономной работы


Контроллер станка с ЧПУ на PIC с возможностью автономной работы

Сообщений 91 страница 120 из 237

91

life написал(а):

Блин, опять накасячил!  :blush: В строчках всетаки точка на оси куда должны приехать. Но это сути не меняет. Вычислить пробег очень просто. Нужно просто от следующей координаты отнимать предыдущую, получившееся число и есть пробег в мм а знак-направление, и получаем шаги.

Пробег вычислять нет необходимости. Это делает постпроцессор. Ему просто указывают каким образом нужно указывать координаты перемещения - абсолютные или относительные. Если указать относительные, то числа в файле и будут пробегом.

0

92

3BEPb написал(а):

Сейчас он в сторону пиков не смотрит, только плюеться!
Попробуйте перейти!
Благо я не задел время пиков и сразу начал изучение атмеги!!!

Имхо это лично дело каждого. Если мега сможет делать то, что я не смогу сделать на пике, тогда я подумаю над её освоением. Иначе - пустая трата времени на освоение периферии, выбор компилятора, выяснение его глюков/особенностей и т.д.
Я вот пробовал лет 5 назад атмеловские камни - плевался. Кому что удобнее.

0

93

koolhatcker написал(а):

Вы наверное не понимаете одну вещь...
Отличие между кодами G00 и G01.
G00
X6.02Y10.40
Будет передвигать по оси X с максимальной скоростью и по оси Y с максимальной скоростью, т.е.
двигатели по X и Y крутятся с одинаковой скоростью.
Т.е. к тому моменту, как по оси X перемещение уже закончится, по оси Y ещё будет продолжаться движение на 4мм.
G01
X6.02Y10.40
Эта команда означает, что нужно переместить по X на 6.02мм и по Y на 10.49мм.
НО двигатели должны достичь конечных точек ОДНОВРЕМЕННО.

Вы точно все сообщения читали? Я привел пример расчитанной УП для кружка диаметром 5мм в G-cod. Где там что про скорость?? В результате на станке мы видим (замедленно) несколько шагов туда, потом сюда, опять туда и опять сюда. Шаг за шагом, вот вам и кружок. При разрешении в несколько шагов, для вас это будет идеальный круг, а вот для станка 66угольник.

0

94

Трудоголик написал(а):

апример, для реального станка с подачей 200 шагов на мм, для перемещения из точки 0, 0 в точку 3,1 ( в миллиметрах)    нужно сделать 600 шагов по оси Х и 200 шагов по оси Y.
Максимальное приближение к прямой линии между этими точками будет, если двигатели будут делать Х=3 шага Y=1 шаг, Х= 3 шага и Y=1 шаг,  и так 200 раз подряд.

У меня вот какой вопрос - это обязательно делать "змейкой" или можно(нужно) вращать 2 двигателя одновременно, чтобы вместо ступеньки была наклонная под 45 градусов линия?

0

95

все уже изобретено до нас

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

0

96

koolhatcker написал(а):

У меня вот какой вопрос - это обязательно делать "змейкой" или можно(нужно) вращать 2 двигателя одновременно, чтобы вместо ступеньки была наклонная под 45 градусов линия?

Если контроллер умеет выдавать шаг одновременно на два движка, а движки умеют делать шаг синхронно, то почему бы и нет?
Только при точности 0,0025 мм это совершенно не обязательно.

0

97

Трудоголик написал(а):

Приведите кусок листинга.

Вы сами его приводили чуть выше
X16000Y0D02*
X0Y0D01*
X0Y10000D01*
Или сверловка из оркада
%
T0
X5080Y3810
X11430Y3810
X26670Y3810
Те же яйца, только не светим, а сверлим.
При шаге станка в 1мкм шаги уже в файле.
Если шаг другой - просто предварительно делим циферки из файла на шаг станка :)
Тривиально. :)

Трудоголик написал(а):

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

От этого и пляшу. Нужно 3 байта для хранения координаты.
Кто не согласен - обоснуйте, буду переделывать.

Отредактировано koolhatcker (2008-03-18 14:05:00)

0

98

life написал(а):

Вы точно все сообщения читали? Я привел пример расчитанной УП для кружка диаметром 5мм в G-cod. Где там что про скорость??

Все прочитал. Про скорость там - между строк. И вы этого не видите к сожалению. Тем не менее, надеюсь, что вас в ближайшее время "осенит" :)
Если в моих сообщениях я недостаточно внятно для вас объясняю, то ознакомьтесь с описанием формата RS274 или посмотрите исходники управляющих программ.
Если кто-то из нас заблуждается, надеюсь общественность рассудит :)

0

99

Трудоголик написал(а):

Если оптика хорошая,:-)  то можно разглядеть, вон Кулхацкер различил змейку в движениях по 3 и 1 шагу, а это для станка соответствует 0,0075 и 0,0025 мм. :-)

Я - за чистоту идеи и правильность алгоритмов. Даже в крайностях :)

0

100

Трудоголик написал(а):

Если контроллер умеет выдавать шаг одновременно на два движка, а движки умеют делать шаг синхронно, то почему бы и нет?
Только при точности 0,0025 мм это совершенно не обязательно.

Это экономит время. При рисовании прямой линии под углом в 45 градусов - экономит в 2 раза.

0

101

Трудоголик написал(а):

Если контроллер умеет выдавать шаг одновременно на два движка, а движки умеют делать шаг синхронно, то почему бы и нет?
Только при точности 0,0025 мм это совершенно не обязательно.

Абсолютно согласен, при 200шаг/мм, 1 шаг это 0,005мм, кто интересно заметит ступеньки 0,005Х0,005?? А самое главное у кого станок с такой точностью?? И при этом заморачиваться синхронными шагами? А все вытекающие из этого? Одновременный импульс питания на ВСЕ двигатели, синхронизация, и другие заморочки? Обскакать (можно убрать букву с) промышленные образцы? Только не сейчас, и не на этом этапе.

0

102

koolhatcker написал(а):

Вы сами его приводили чуть выше
X5080Y3810
X11430Y3810
X26670Y3810
Те же яйца, только не светим, а сверлим.
При шаге станка в 1мкм шаги уже в файле.

Ну и где здесь микронный шаг?

0

103

koolhatcker написал(а):

Я - за чистоту идеи и правильность алгоритмов. Даже в крайностях

Я тоже за разумную ДОСТАТОЧНОСТЬ.

koolhatcker написал(а):

Это экономит время. При рисовании прямой линии под углом в 45 градусов - экономит в 2 раза.

Не согласен, никакой экономии времени здесь нет, если программа
контроллера достаточно быстро считает. Время перемещения на 1 шаг при скорости 2000 шагов в минуту составляет 500 микросекунд.
Если программа впихнет данные в два порта  хотя бы с интервалом 50 микросекунд, экономии практически не будет заметно.
Это при скорости пробега 10 мм /сек, т.е. при холостых пробегах.
А если говорить о рабочей скорости, например о скорости резания ну хотя бы пластика, которая меньше 1 мм в секунду то и совсем никакой экономии. Кроме того это только идеальный частный случай, когда надо соверщшать по 1 движению по осям. Если рассмотреть случай 2:1, или 3:1, то и совсем смысла нет заморачиваться.
ТО что механика самодельного станка не позволит реализовать теоретическую точность 0,0025 мм - абсолютно   согласен с LIF-om.

Отредактировано Трудоголик (2008-03-18 18:17:09)

0

104

Трудоголик написал(а):

Ну и где здесь микронный шаг?

X5080Y3810
Это координата отверстия на плате.
В разводчике плат её координаты 5,08мм по X и 3,81мм по Y.

0

105

koolhatcker написал(а):

X5080Y3810
Это координата отверстия на плате.
В разводчике плат её координаты 5,08мм по X и 3,81мм по Y.

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

koolhatcker написал(а):

В Ж-кодах шаги уже содержатся..

(сообщение номер 85 в теме).

0

106

заморачиваться синхронными шагами?

Да. Дело в том, что большинство ходов как раз по двум осям, а не просто прямые. При фрезеровке пластика/выжигании/сверлении это примерно на 30% сократит время обработки. Причем МК легко позволяет это сделать.
Самое забавное, что и LPT позволяет, без всякого изменения контроллеров.

От этого и пляшу. Нужно 3 байта для хранения координаты.
Кто не согласен - обоснуйте, буду переделывать.

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

Отредактировано bolt (2008-03-18 19:33:52)

0

107

В общем так...
Пока тут идёт бурное обсуждение я параллельно пытаюсь что-то там программить :)
В данный момент нахожусь в следующей стадии:
пик читает данные из внешней ЕЕПРОМ 24ххх.
в неё зашит файл сверловки типа
M48
METRIC,TZ
FMT,1
ICI,ON
%
T0
X-050764Y038110
X063500Y000000
X152400Y000000
X050800Y000000
.....
X025400Y000000
M30
Пик читает побайтно ЕЕПРОМ и игнорирует всё до первого символа "X".
Затем считывает его координаты с учётом знака.
Далее то же самое проделывает с координатой "Y".
Координата Z обрабатывается таким же образом, просто в данном файле она отсутствует.
После этого с учётом шага перемещения конкретного станка делает перемещение на нужное расстояние.
И так по кругу до тех пор, пока не прочитает из ЕЕПРОМ "M30".
В связи с этим хотелось бы вернуться к разговору о формате файла.
Ну и конечно же услышать критику и пожелания в адрес того, что уже сделано.
Оптимизации по размеру кода не делал.
В PIC16F628 занято ROM 35.8%, RAM 25.9%.
В данном примере PIC при тактовой частоте 1МГц считывает координаты по X и по Y за 76mS. После этого идёт вращать движки. Вроде нормально.
Может участники форума приведут пример распространённого формата файла из которого можно фрезеровать дорожки на плате? А то герберовские Dx в домашних условиях мало применимы :)

0

108

Трудоголик написал(а):

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

Если постпроцессор CADа настроен так, что координаты в файле в представлены в микронах, то ваш станок должен сделать по "Х" количество шагов равное 11430/минимальный шаг вашего станка.
Для игрека - аналогично.
Это же очевидно :)

0

109

bolt написал(а):

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

Сможете написать такую?
Если да, то скажите какой формат у неё будет на выходе. Переделаю своё художество под ваш формат.

0

110

Здавствуйте господа. Почитал то что тут написано, аж голова закипела.
Что хотел бы прежде всего сказать, прошу воспринимать без обид и нt считать наездом
Делать однозначно необходимо на AVR mega 16, 32 и тд
В чем плюсы:
огромное число портов ввода-вывода, в том числе для ацп - 8 каналов
можно иметь по три интерфейса COM, LPT и USB на одном контроллере
аппаратная!!! реализация ШИМ (PWM) от 4х до 8 или 10 штук, никак не ест ресурсы процессора, т.е ШИМом и АЦП можно будет контролировать ток в каждой обмотке четырех шаговиков
упраление шаговиками синхронно
организация выходов на силовые ключи с драйверами
простое внутрисхемное программирование, т.е. даже не надо контроллер вынимать, чтобы залить модернизированную программу
В итоге по количеству компонентов получится дешевый контроллер на одном процессоре с минимум обвязки: кварц, пятерка-десятка кондеров и столько же резисторов. Ну и силовые полевики с их драйверами (я ставлю кт972+973 в преобразователях напряжения)

Тем кто знаком с программированием думаю будет не сложно перейти на avr, тем более если все пишется на си. Разница только в начальном коде.

Как я предлагаю организовать передачу данных в контроллер
Используем для этого пакет из 6 байт: по два байта на ось
0,1 бит - ось
2 бит - направление
3-7 - время шага ( допустим максимальная скорость 10 мм/сек - 4000шагов/сек -->0.00025 сек/имп  ) Вот эти 250мксек и будут множителем этих 5ти бит. То есть получем время шага 5бит*25мксек
второй байт - перемещение по оси в шагах, именно перемещение, а не координаты
выполнение подготовки этих данных возложить на ПК
Пример
по оси X переместить с координаты 10.400 на 10.600 со скоростью 0.5 мм/сек
01_1_10100 --> ось Х_направление_время шага (т.е 0.5мм/с=200 об/с=0.005сек/об которые поделив на 0.00025сек дадут нам 20 или 10100)
01010000 - перемещение на 0.2мм или 80 шагов

можно также использовать и скорость вместо времени шага, но тогда еще придется отправлять отношение шагов/оборот и загружать микроонтроллер
скорости com порта хватит за глаза

0

111

koolhatcker написал(а):

В данном примере PIC при тактовой частоте 1МГц считывает координаты по X и по Y за 76mS. После этого идёт вращать движки.

Просто "считывает" или "считывает и пересчитывает в количество шагов по кратчайшему направлению, делает коррекцию погрешностей"?

0

112

Трудоголик написал(а):

Просто "считывает"

Да. Просто считывает и знает сколько импульсов нужно подать на двигатель.

Трудоголик написал(а):

или "считывает и пересчитывает в количество шагов по кратчайшему направлению, делает коррекцию погрешностей"?

Это за него уже сделал пост процессор оркада.

0

113

koolhatcker написал(а):

Это за него уже сделал пост процессор оркада.

А если шаг другой?

0

114

Трудоголик написал(а):

А если шаг другой?

шаг чего?

0

115

Pierburg написал(а):

Делать однозначно необходимо на AVR mega 16, 32 и тд

Не слишком ли категорично?
Прикажете всё бросить и бежать покупать мегу? Например у меня пики есть, а мег нет.
Всё, что касается про кол-во IO, периферию, ISP и т.д. относится к PIC в той же мере, что и к меге. Единственное - PWM поменьше.
Но так как здесь большинство согласно с тем, что лучше иметь модульную конструкцию, то это не имеет значения.

Pierburg написал(а):

Тем кто знаком с программированием думаю будет не сложно перейти на avr, тем более если все пишется на си.

Ну не скажите... Там и особенности компиляторов и особенности перифери...
Имхо - кому что удобнее, на том и делать надо. Если будет 2 разные прошивки под разные МК с одинаковым функционалом, то наверное будет даже лучше.

Pierburg написал(а):

второй байт - перемещение по оси в шагах

И сколько шагов поместится в одном байте? Например у станка при каждом шаге перемещение 2,5мкм. А нужно переместиться на 40см. Или я что-то не так понял?

0

116

koolhatcker написал(а):

шаг чего?

ШАг станка.

0

117

koolhatcker написал(а):

И сколько шагов поместится в одном байте? Например у станка при каждом шаге перемещение 2,5мкм. А нужно переместиться на 40см. Или я что-то не так понял?

все верно. для этого эти 40 см разбиваются на нужное количество пакетов
Как вариант 2 - использовать 2 байта для задания перемещения

koolhatcker написал(а):

Не слишком ли категорично?
Прикажете всё бросить и бежать покупать мегу? Например у меня пики есть, а мег нет.
Всё, что касается про кол-во IO, периферию, ISP и т.д. относится к PIC в той же мере, что и к меге. Единственное - PWM поменьше.
Но так как здесь большинство согласно с тем, что лучше иметь модульную конструкцию, то это не имеет значения.

в том то и дело, что pic придется обвешивать еще кучей ШИМ модуляторов на этих же пиках или tl494.
И в итоге на 3 двигателя будет выходить 4 контроллера если все делать по уму. Ну а если попроще, без шим, то действительно можно одним обойтись.
Может быть заранее заложить более производительное железо, на печатке сразу предусмотреть доп. входы/выходы, а потом добавлять кикие либо модули с минимальным количеством компонентов и всего лишь обновляя программу в мк.
Вам не кажется такой путь более перспективным? Вы только подумайте - можно одним контроллером синхронно управлять 4ми двигателями в микрошаговом режиме (если такой нужен) и иметь usb, наличие которого с каждым годом все актуальнее!Я уже года 2 не встречал ноутов с лпт и ком. А что дальше будет?
То что Вы пишете для pic-контроллеров я никак не осуждаю. Я за это всеми руками и ногами.
Но вот только похоже на следующую ситацию: в автосервисе не ремонтирут мерседесы по тому что не знают как они устроены, хотя за них платят больше. но  самое страшное - не хотят и узнавать.
Если для Вас принципиален вопрос денег для покупки того же atmega128 стоимостью 200-220р для опытов, то я готов их предоставить. Нужны лишь гарантии что деньги пойдут в правильное русло, а не на пиво.

0

118

данные в два порта  хотя бы с интервалом 50 микросекунд

1мкс на порт, при необходимости можно в 5 раз быстрее

распространённого формата файла из которого можно фрезеровать дорожки на плате?

PLT. PC прога под него есть, только плюет пока по LPT. Если формат устраивает - прошу в мыло, оговорим подробности.

какой формат у неё будет на выходе. Переделаю своё

1byte - шаги, 4bits время шага + 4bits ось и направление

И сколько шагов поместится в одном байте?

думаю, что 255 :) При микрофрезеровке или зубчатой рейке шагов много, но мелкие

0

119

bolt написал(а):

1мкс на порт, при необходимости можно в 5 раз быстрее

Нет в этом необходимости, я имею ввиду экономию времени, все равно основное время (более 95%) тратится на обработку(сверление, фрезерование, выжигание). Вы как будто ни разу станок в работе не видели.   
Да и не получится на 4-х мегагерцовом проце пихать данные в порты с интервалом 0,2 мкс.

0

120

bolt написал(а):

1byte - шаги, 4bits время шага + 4bits ось и направление

Простите но никак не могу понять, что за время шага? В смысле скорость? А зачем ее в файл закладывать? Есть холостой ход, есть обработка. Может устанавливать кнопками на самом контроллере? В зависимости от материала, инструмента и т.д. и почему 4 бита на ось и направление? Достаточно трех. Или планируется больше четырех осей?

0


Вы здесь » самодельный станок с ЧПУ, отзывы duxe.ru » Схема контроллера, шаговые двигатели » Контроллер станка с ЧПУ на PIC с возможностью автономной работы