Pull to refresh

Comments 120

>> Исходный код программы не знаю пока как выложить. Она хоть и сырая но свои функции выполняет. Там около 20 файлов.Как их залить сюда?
ИМХО лучший способ — на гитхаб, а сюда ссылку.

Во сколько примерно обошелся станок?
Спасибо, сейчас скину код управляющей программы.
Насчет стоимости могу приблизительно сейчас посчитать. Конструктив 1000, мебельные ручки рублей по 100-150 рублей взависимости от длины 6 шт. примерно 1000, подшипники по 250 р — 16 шт =4000 р. сейчас наверно еще дороже выйдет. думаю пошипники и отечественные такие можно найти, резьбовой вал 200 р. соединительные скобы рублей по 20 х 12 шт = 240 р. шаговики за 2 121,98 руб купил 5 шт. нам нужно 4, один в запас. Концевые выключатели где-то по 200 р. х 3 шт. = 600р. Ну пускай метизов еще рублей на 300. Контроллер ардуино c RAMPS1.4 примерно 3000 р. в итоге где-то 12-13 тысяч рублей.
Кстати, что-бы еще бюджетней станок получился можно не тратить 4000 на подшипники, заместо них использовать медные втулки из ремкомплекта стартера ВАЗ 2101.
Либо самостоятельно сделать фторопластовые втулки из фторопластого прутка, просвелив в нем отверстие диаметром 12мм.
Если у вас есть своя мастерская с оборудованием, которое позволит выполнить обработку нужной точности ;-) Уверены что ваши направляющие имеют одинаковый диаметр по всей длине? Фторопластовая/капролоновая втулка не будет залипать на них?
Что можно сделать на вашем станке? Вот что интересней всего.
Любую небольшую деталь, не из стали. Что-бы из тердого метала вытачивать нужно помассивнее станок. А так можно из дерева барельефы, из пластика, фторопласта, текстолита. Алюминий не пробовали еще, ну думаю потянет.
А печатные платы методом фрезеровки можно?
А пробовали? И какая точность возможна? (Интересует для корпусов QFN32 и им подобных с шагом выводов 0.8мм)
Нет, не пробовали. но точность получилась просто изумительная, во-первых шаговый двигатель шагает 1/16 шага, во-вторых вал с мелкой резьбой. Когда в станок вставили ручку вместо фрезы, он нарисовал сложную фигуру, потом еще несколько раз обвел эту фигуру, а на рисунке видно как будто он один раз рисовал, под лупой рассматривали пытались другую линию найти.
Точность не определяется микрошагом двигателя и шагом резьбы! Шаг резьбы меняется по длине шпильки — это не прецезионная нарезка резьбы. На нее влияют люфты пары винт-гайка, в случае применения редукторов на двигателе влияет мертвый ход шестерней, в случае использования приводного ремня — растяжение ремня.

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

По поводу технического зрения — в проекте openpnp.org решили как сделать это из спичек и желудей (из веб камеры и компьютера и библиотеки opencv)
Машинное зрение на чпу...

О, на хабре статья такая была habrahabr.ru/post/61048/ использовали библиотеку opencv. Спасибо за идею. Классная библиотека.
Пожалуйста! Я бы на вашем месте поискал бы готовый open source софт, которой делает многое из того что вам нужно.
А для контроля за пропуском шагов использовал бы самодельный энкодер, т.к. один промышленный стоит как весь ваш материал на станок и даже больше(если абсолютный и высокой разрешающей способности)

code.google.com/p/wheel-encoder-generator/

www.dgkelectronics.com/inkscape-optical-rotary-encoder-disc-generator-added-single-track-gray-encoder-support/
Я темой станочка тоже озадачился. Пробежался по ибею и али, есть практически все. Например, винт, рельсы, направляющие. Если поискать там, есть любые размеры.

Судя по фотографии ось X управляется двумя двигателями, так? Чтобы не было перекоса?
И еще поясните пожалуйста, как у вас двигается ось Z.
Да, по оси Х двигатель работают синхронно. На оси Z сверху стоит двигатель он виден хорошо на фото, то которое получше от него вниз идет через муфту резьбовой вал, на валу удлиненная гайка, по обе стороны от вала напраляющие с подшипниками. остается тока прикрепить жестко пластину(на фото ее нет) к удлиненной гайке и подшипникам с помощью соединительных скоб. и по оси Z будет ездить пластина, к которой уже можно приклеплять хоть дрель хоть шпиндел. т.е. все так-же как и на других осях.
Должен сказать, что два двигателя на Х — неудачное решение.
На моем самодельном станке с полированными направляющими Ф20, линейными подшипниками и ШВП — и то, бывает, пропускает мотор шаги. Без обратной связи по оборотам (без энкодера) отловить это нельзя. В результате, через какое-то время ось просто клинит. Обычно это происходит после выполнения 80% работы, что особенно обидно.
Правильно было бы делать либо две оси с ременной передачей, либо вообще одну ось посредине.
Да, ну и пара «резьбовая шпилька-гайка» — это очень ненадолго.
Кстати если камеру прикрутим, то можно отслеживать пропуски шагов. Я думаю эту мысль нужно развивать. Этим косяком грешат даже супер навороченные станки без энкодера.
Поставьте лучше оптический энкодер, это проще и обычнее.
камеру мы все равно будем ставить для других задач, попутно и эту проблемму решим
Я не понимаю ход вашей мысли. Суть проблемы: два двигателя на оси X, один прошел N1 шагов, второй — N2, N1 != N2.

У Вас используется микрошаг, 1/16, то есть, 0,1125 градуса вала на один микрошаг.
Шаг резьбы винта — 1.25мм, таким образом, за один микрошаг двигателя, гайка продвигается на 1.25/360*0,1125=0,000390625. 0.4 микрона.
Ладно, что это сильно (порядка так на два как минимум) внутри люфта гайки, но как, даже при помощи камеры, даже если это было бы на два порядка больше, то есть, 40 микрон, Вы планируете увидеть такое расхождение?
Пропускаются в итоге целые шаги, причём они накапливаются — вот тогда и клинит.
Однако, как поможет камера — тоже не понял. Энкодер — наше всё!
Ну мы же бюджетный станок строим, энкодер на каджую ось тоже деньги стоит. А камеру все равно ставить. А насчет корректировки мысль тока в процессе обсуждения пришла, мысль пока сырая но думаю не лишенная смысла. конечно 40 микрон не скорректируешь, а вот как написал jaiprakash, когда уже несколько шагов пропустили. камера сфотографирует, и программа уже займется вычислениями, угол отклонения камеры относительно оси Х, расстояние от начала координат до оси Y, с обоих сторон, и соответственно дает команду одному двигателю помолчать несколько шагов. Ну как то так вот понесло Остапа.
Энкодер из старой мыши — это практически бесплатно. Его чувствительность намного ниже обычно применяемых, но критическую ситуацию распознает. Надёжность, быстродействие и лёгкость обработки на порядки выше чем компьютерное зрение. Я не отговариваю, вы сделайте и зрение, это само по себе прикольно.
А поначалу проще забить на это и использовать заведомо низкие ускорения и скорости. И надёжное питание, конечно же!
А не дадите ссылку, на реализацию?
Вот здесь vk.com/club71815206 в нашей страничке клуба есть кое какое видео первой реализации станка. Подробное как доберусь до станка сниму. Я сейчас дома болею
В старинных мышах используется квадратурный инкрементальный энкодер, информации — море. Например, или вот. Некоторые STM'ы даже аппаратно поддерживают, помню была статья как на AVR реализовали программную параллельную обработку показаний.
Так что если нет $15 на энкодер, то как раз это — делается, это не ШВП на коленке.
Понял, то есть вы имели ввиду не фото-элементы из лазерных мышей?
Старомодные тёплые ламповые шариковые мыши. А если их не найти — то детекторы продаются, диск можно напечатать.
А у них не такое и плохое разрешение, ведь каждая прорезь — это 4 фронта сигналов. Трудности — в механике, приспособить их к валу.
Я встречал в интернете, как народ вместо камеры ставил мини-камеры с лазерных мышей!
Про люфты можно почитать забив в гугле «anti-backlash nut»
Почему нельзя через N шагов возвращаться в стартовое положение и перезапускаться с него? Это должно бы повысить средний процент удачных изделий и породить особенно угарные запоротые изделия.
Здесь говорится о том, что на оси Х установлены два двигателя и они должны работать синхронно. А если один двигатель пропустит несколько шагов, то пойдет перекос. А этот перекос стартовым положением не исправить, здесь нужен другой метод. впринципе если на обоих двигателях на оси Х поставить концевики… тогда можно и возвращатся на старт. Нужно возможно G- код вручную править, и прошивку затачивать под это. Игра не стоит свеч. Концевики контролируют тока по концам а энкодер или камера на всем протяжении движения.
Кстати, поясните пожалуйста еще где расположили оптические концевики и что они делаю.
оптические концевики расположены в начале каждой координаты. При включении станка прошива отрабатывает возврат на исходную позицию, т.е. до концевиков.
Концевики надо ставить так же и на конец оси, и лучше всего чтобы они были хардварными, то есть не зависили от кривости работы прошивки. Ну или приоритет у них был наивысший при обработке событий.
Любую небольшую деталь, не из стали. Что-бы из тердого метала вытачивать нужно помассивнее станок. А так можно из дерева барельефы, из пластика, фторопласта, текстолита. Алюминий не пробовали еще, ну думаю потянет.
Всё хорошо, но их этих материлов, оно через сотню часов работы начнёт люфтить. И нужно отсос опилок делать.
Да, подкручивать болтики наверное прийдется каждые сотню часов. Ну можно попробовать граверы под каждый болтик поставить.
В авиастроении делают как-то так:

и ничего не нужно подкручивать :)
Супер. Если один болтик начнет откручиваться другой сильнее затягиваться. Вот это решение, все гениальное просто.
Прошу прощения, но конструкция ужасна.

На моем станке, усилие на фрезе при обработке дерева без черновой обработки (бук, фреза 1.5мм, скорость
1200мм/мин, глубина 5 мм) порядка 130-250 грамм.
В ньютоны не перевожу, поскольку мерил самодельными пружинными весами и результат довольно грубый.
При этом даже на нагрузке 500 грамм, отклонение в статике не превышает 0.05 мм (микрометром с часовым циферблатом).

Предположу, глядя на конструкцию, что у вас вылезет за 1мм при прикладывании 0.5 кг усилия к кончику фрезы.
А уж как это все будет болтаться с тяжелым шпинделем с водяным охлаждением (трубки то же тянуть будут)…

Купить дорогой шпиндель и пр. и собрать из чего попало такую слабую конструкцию. Просто не понимаю.
Полно форумов по самодельным ЧПУ станкам. Зачем наступать на известные грабли.
А так можно из дерева барельефы, из пластика, фторопласта, текстолита. Алюминий не пробовали еще, ну думаю потянет.


Фторопласт и алюминий — не потянет. И шпиндель слишком высокооборотистый. А для силовой фрезировки с другим шпинделем конструкция станка, мягко говоря, хлипкая.
ну так я и писал в конце статьи — В планах у нас, сделать более мощный станок на двигателях NEMA 23, шпиндель не пропадет.
Насчет высокооборотистого шпинделя не согласен, он идет впаре с частотным преобразователем, причем векторным. А мы знаем, что векторный хорош тем, что на малых оборотах крутящий момент не уменьшается.
Шпиндель (судя по виду, у меня такой же) не предназначен для силовой фрезеровки.
Обороты от 5000 до 24000. Причем 5000 это очень оптимистично. Не очень он любит меньше 7000-10000.
Он конструктивно (обмотки/подшипники) предназначен для высоких оборотов и небольшой осевой нагрузке.

Силовая обработка металов до 3000. А будете на малых оборотах с большим усилием резать — умрут подшипники в нем за пару часов работы.

Алюминий этим шпинделем можно только гравировать… да и то максимум на 0.2мм за проход.
Фрезеровку сколько не пробовал — фреза забивается/перегревается и ломается. И вода в качестве ОЖ не очень.
А фрезеровать по 0.2 на 200мм/мин (что бы не портить фрезы) — мазохизм.
Малые обороты для стали — это 300 об/мин. 6000 это пластики, дерево и гравировка цветмета. Да и усилия на стали совсем другие.
Своя прошивка — хорошо, но всё же погуглите grbl, почувствуете разницу :)
спасибо посмотрю. вот еслиб вы нагуглили управляющую гибкую программу были бы Вам очень благодарны. Так не хочется ее причесывать.
Она на java. ну может и к лучшему. посмотрю. Вот если-бы на с++ еще найти.
Нашёл неделю назад.
Там и энкодеры есть.
Ближе к концу треда — исправленная версия и ссылка на github форка.
Большое спасибо за щедрость!
LinuxCNC чем не устроило? Зачем вообще контроллер городить, если G-code все равно с компа идет?
Неплохой пакет программ, но линус не для всех все-таки к сожалению доступен до понимания. Многие винду всетаки предпочитают.
Для пользователя это не пакет, а одна программа для управления станком. И заменяет она не винду, а ваш «контроллер» или виндовый мач3 (на входе — G-code, на выходе — сигналы драйверу шаговика), который как раз на порядок сложней для понимания, да еще и денег стоит. Если бы не проприетарные платы на моих станках, заточенные под винду, все бы перевел на LinuxCNC, более удобного в обращении софта по управлению станком с ПК не встречал.
на форумах мебельные резьбовые валы с гайками ругают — заедают, говорят, и повторяемость плохая. Пишут нужны специальные, а они дорогие. Или вам удалось их за недорого найти?
не, мы мебельные ручки используем для направляющих. а в качестве резьбового вала в любом магазине продается шпилька с резьбой. она бывает разного диаметра, если нужно более надежно можно хоть 16мм купить. мы выбрали 8. А специальные дорогие.
какая разница где резьбовую шпильку покупать — в мебельном или строительном :) Я читал что в ней резьба в принципе не подходит. И под нагрузкой — это не значит Камазом вырывать, это значит что заедать гайка будет, когда будет нагружена.

Но вы этот вопрос не изучали, как я понял, у вас пока все работает?
мы гайку удлиненную купили. обычная конечно заедает
Удлиненная тоже заедает, просто обычная сразу же, а удлиненная — через десяток часов работы. Чисто теоретически, набор из 2х удлиненных с капролоновой проставкой может отъездить и пару суток.

Если хотите совсем бюджетный вариант — зубчатые ремни, если чуть менее — трап-резьбы, если по человечески — все-таки купите ШВП.
вот кстати да, на форуме ЧПУшники вполне себе используют ремни, видел даже видео где американец из каких-то стандартных деталей и профилей делал самодельную раму с платформой с перемещением на ремнях.
Факт, со временем «ручки» провиснут под тяжестью двигателя, а резьба из-за прогиба будет стираться еще сильнее. Увеличение толщины резьбовой шпильки не поможет, а даже навредит: по стандарту, увеличение диаметра резьбы ведет к пропорциональному увеличению люфта в паре винт-гайка, то есть приблизительно в те же два раза. Для М8 это будет около 0.1мм, для М16 — уже около 0.2мм И тут речь о стандарте, а на сколько ему соответствуют шпильки непонятного происхождения из строительного магазина — никто не знает.
На ручном станке даже при люфте ведущих винтов в несколько миллиметров работать можно, потому что токарь это знает, и будет компенсировать люфт тем, что будет резать только в одном направлении. На CNC это возможно, но лишено смысла. Например, при вырезании отверстия большого диаметра по спирали фреза будет резать при движении в обоих направлениях по каждой оси, кроме вертикальной, так что отверстие получится неправильного размера. И так далее. Нельзя просто взять и сделать точное надежное устройство из хлама. Можно только дешевое.
Поймите, нас правильно. Как бы это обяснить. Двумя словами если выразить. Мы хотим сделать прототип недорогого станка из доступных деталей, а погрешности, люфты исправлять мозгами станка.
т.е. есть станок, недорогой но есть люфты, пропуски шагов, заклинивание и т.п. мы поставим камеру, возможно будем контролировать еще ток двигателей, возможно и другие датчики поставим. Мозги должны на основании снимаемых показаний и корректировать в непрерывном режиме. Ну как-бы мы хотим повысить чувствительность станка. Система технического зрения с зачатком интеллекта. Если это удастся сделать, то любой, как Вы выразились из хлама соберет станок и он будет работать наравне с суперпупер навороченными. Ну конечно износ будет быстрее чем у дорогих станков. Ну общем есть такая мысль. Будем благодарны за любую помощь, особенно в плане технического зрения и хотябы зачатком искуственного интелекта. Приглашаем нам в клуб(удаленно), помочь в этом интересном и увлекательном деле. Есть кстати у нас одна идея как удаленщикам работать на нашем станке — установить в комнате камеру, ну а компьютером через тот-же радмин заходить.
Я прекрасно знаком с мотивацией самодельщиков, которые хотят, в первую очередь, сэкономить деньги, а заведомые недостатки конструкции скомпенсировать каким-нибудь wunderwaffe собственного изобретения. Проблема с таким подходом в том, что хотя действительно, некоторые решения не применяются в промышленности не потому, что они негодные, а потому что так исторически сложилось, но это касается не всех решений.
Для того, чтобы, например, заменить традиционные (очень простые и надежные) энкодеры положения на машинное зрение, вам придется городить очень сложную систему, которая в итоге окажется неэффективной и дорогой. Ведь обязательно выяснится, что для относительно точного (лучше 0.1мм) распознавания перемещений вам понадобится смотреть камерой разрешения HD (1280x1080) на область с диагональю около десяти сантиметров (иначе вы просто такие маленькие перемещения не заметите), означает либо применение нескольких камер, либо использование камеры большего разрешения, которая будет стоить дороже всего остального станка.
Либо, вам придется извратиться и заставить камеру работать точно также, как работают простые и дешевые энкодеры.

Самое смешное, что тратя всего лишь немного большие суммы и используя правильные компоненты, люди действительно строят себе устройства достаточно высокого уровня. А все потому, что не надо считать минимально возможную цену главным плюсом — она обычно идет в комплекте с куда большими издержками при эксплуатации и ремонте, а также с низким качеством продукции.
Немножо неправильные рассуждения у Вас, поверьте мы не бедные люди. Зайдите на нашу страничку vk.com/club71815206 посмотрите сколько оборудование мы за пол года купили в наш клуб. Почему мы тогда не использовали дорогие детали? попробую объяснить.
Вот многие на хабрахабре ругают ардуино, да, корявое программное обеспечение, да, он хуже чем другие контроллеры и можно еще перечислять запоем все его недостатки. Но, он доступен. Порог вхождения в увлекательный мир системотехники, програмирования и роботостроения доступен для каждого. Вот и мы попытались сделать ЧПУ станок доступный для каждого. И у нас это уже получилось. Уверен многие уже приступили его делать прочитав нашу статью.Почти все детали можно готовые купить, в остальных отверстия просверлить и готово. Кто слышит и думает заняться этим подтвердите пожалуйста мои слова. А сейчас мы будем его усовершенствовать, конечно-же используя бюджетную камеру, даже относительно хорошие сейчас уже не дорого стоят. А может действительно, спасибо за идею, 4 камеры по 300р. по углам поставить.
Я не писал ничего о том, что вы «бедные люди». Я прекрасно понимаю суть вашей идеи-фикс по поводу дешевого доступного устройства для других. Но максимально дешевое устройство получится автоматически плохим. При том что совсем немного более дорогое (и правильно спроектированное, а не от балды) выйдет на порядок лучше и надежнее. Такие рассуждения я слышал до вас уже раз десять, про самые разные вещи.

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

Вместо этого, вы думаете в обратном порядке: «У нас есть идея как-то приспособить к этому машинное зрение, а все остальное мы купим в строительном магазине. А еще — камеры за 300 рублей.» Зачем вам четыре камеры по 300 рублей (1200р в сумме), которые не дадут вам нужного разрешения, если можно использовать самодельные энкодеры, которые обойдутся вам в сумму в три раза меньшую, а эффективность будут иметь на порядок лучшую? Думаю, вы не сможете объяснить.

Максимум, что может получиться при таком подходе — технически сложная, но довольно бесполезная и быстро приходящая в негодность игрушка. То, что возможности камеры и точность станка вы не удосужились сопоставить — это не признак «простоты» конструкции, а признак глубокого недостатка инженерной подготовки.
Помоему главную мысль Вы не поняли, чот я неправильно объясняю наверно. А на счет камеры, она изначально для других целей ставилась. Мысль о дополнительной функции — заменить энкодеры, появилась при обсуждении в этой ветке, об этом я уже писал выше, видимо как то непонятно наверно писал.
Использовать шпильку вместо ШВП нормального, нуууу… Надежности и точности этого решения не хватает даже в банальном 3д принтере Prusa i3 (кстати, почему было не взять готовую прошивку Marlin?), а как оно будет в стенке, где нагрузки на порядок больше — сложно представить.
Ага, попробуйте взять шпильку на 16 мм нарутить на нее удлиненную гайку и камазом вырвать ее наверно с первого раза фиг получится. Я понимаю, что компьютер с 4 ядрами намного лучше чем с одним, но и с одним ядром для некоторых задач, таких как набирать текст он вполне сгодится. Прошиву Marlin мы смотрели, листинг на десятки страниц сложно изучить. Свою мы начали делать потому, что как я писал в статье, у нас дальнейшая цель прикрутить камеру к станку, а тут изменение прошивки неизбежно. Есть идеи по техническому зрению?
Лучше возьмите готовую прошивку, её будет проще модифицировать. В вашей сначала стоит:
открывающие и закрывающие скобки ставить с одинаковым отступом. Пример:
if (kol<0)
for (int i=0; i<=abs(kol); i++){
if(f_test_coord&&end_button(coord)){
impstep(coord,200,0);
return 0;
}
digitalWrite(IN_dir, LOW);
digitalWrite(IN_step, HIGH);
delay(pause);
digitalWrite(IN_step, LOW);
delay(pause);
}else

Закрывающая скобка перед else закрывает не if, а for.
Порезать её на функции. Функция loop на 240 строк не читаема.
Избавиться от мегаотступов: 10 табов — это слишком много. Тоже решается выделением функций.
Определиться сколько пробелов в табе: один, два или три.
Ну и разбить это все на несколько файлов.

Не использовать имена переменных _X и _Y — они зарезервированны компилятором и их использование приводит к UB.

Избавиться от глобальных однобуквенных переменных:
int n_t=0;
int c_i=0;
char c;
int i,j;

Глобальные переменные и так зло, а когда им дают имена, обычно используемые под локальные счетчики, очень легко забыть объявить счетчик и потереть глобальную переменную.
Ну вот честно Вам говорю, дня три мы втыкали в Марлин. Многое, конечно поняли, но не все. А потом взяли и за одну ночь создали свою прошивку, ну точнее костяк прошивки. Потом еще месяцами дорабатывали, да и сейчас нет-нет да что-нибудь поправим.
Короче есть еще над чем работать в этом Вы правы.
С первого раза конечно не получится. При прогоне туда-обратно с нагрузкой в сотню кило — резьба начнет подминаться. На километре прогона — сорвется. А теперь простая математика: скорость метр в минуту, километр — 1000 минут, итого ресурс — 16 часов под нормальной нагрузкой. Это пара деталек в капролоне формата 100*200*50 мм, две рабочих смены. Китайский станок на ШВП стоит 120 тыр с доставкой, у нас набег на таких станках исчисляется реально годами. При смене 8 часов китаец относительно вашего поделия окупится за неделю.
Ну все убедили, заменим шпильку на ШВП, но только после того как сломается шпилька. О результатах испытаний напишу.
а есть форум про ШВП, а то мне все сайты заводов попадаются, с рассказами как они круто умеют делать :)? Как я понял дешевые — это HIWIN?
Нет, дешевые ZNT например. HIWIN значительно дороже и лучше.

Сравнения ресурса ШВП наверное не встречал, сравнения по точности были на cnc-club вроде.
ага, спасибо, погуглил, наткнулся на человека который сделал примерно то что мне нужно. Мне интересно попробовать сделать аналог StackShot. Там нагрузки мизерные, но точность должна быть высокой, мебельная шпилька точно не подойдет :)
Почему мебельная шпилька, не в одной мебели я такой не встречал. Они при строительстве применяются www.ds78.ru/goods/1256095/
не знаю :) в строительных гипермаркетах они мне на стендах с мебельной фурнитурой попадаются. И при применении хоть в строительстве хоть для подвеса полок во встроенном шкафу гайка на них не крутится, ее раз закручивают и все.
В вашем случае оптимально будет использовать станочные ремни. Не брезгуйте, на CO2 лазерах ремни дают повторяемость в сотках на довольно высоких скоростях. Если точность должна быть совсем высокой — сделайте обратную связь в виде УЦИ, и будете работать в микронах.
спасибо, посмотрю. Жаль на ремнях платформу Стюарда не сделать :), а то 6 актуаторов по нынешним временам…
Ну почему не сделать. Во-первых, никто не запрещает сделать актуаторы на ремнях: рельса либо сдвоенная круглая направляха и каретка с ременным приводом. Только надо понимать что фактически ход каретки для актуатора — половина от длины направляющей. Во вторых, можно использовать не прямые, а круговые актуаторы, как тут www.youtube.com/watch?feature=player_embedded&v=Hz-M7G7jPA4, кинематика будет значительно сложнее, но не невозможна. В третьих, при относительно небольших размерах можно вообще обойтись без ремней, а движение с движков в линию переводить коленвалом или аналогичным механизмом.
ну да, здесь была статья с реализацией на на сервах, ее и планирую вначале повторить
Что за тяга в контроллер закидывать gcode'ы, они же совершенно неудобны для этих целей. Не лучше бы их на машинке во что-то более простое и тупое переколбашивать? Мы вообще ограничились перемещениями по ломаным линиям и всякими сервисными командами типа установить выход 12 в единичку или на выход 13 подать шим с такой то частотой и скважностью. Плюс еще пара сервисных команд и всё.
Зато появляется возможность нормально на компьютере просчитать ускорения, а не ехать с мизерной скоростью.
Зачем ехать с мизерной скоростью? Нормальные контроллеры учитывают разгоны/торможения, в нормальном CAM можно задавать стратегии разгона.

Основные G-code (G0-3) — простые перемещения. Куда еще проще-то? Зачем оператору держать в голове с какой скоростью и что подавать?

А с любым колхозингом запаришься постпроцессоры для CAM писать. А все-таки любая более-менее сложная деталь — это КАМ по определению.
В чем проблема иметь больше логики на стороне клиента, у него больше информации о траектории, он может посчитать разгон для всей траектории, а не только для текущего буфера. Его проще менять, а не возиться с обновлением прошивки.
Да и с шаговыми двигателями все равно движение вырождается в ломанную линию. Зачем контроллеру знать что-то большее? Система команд на контроллере должна скорее на ассемблер походить, а не на язык высокого уровня.
Я вообще в этом смысле против использования «контроллера» в обсуждаемом проекте. LinuxCNC форева, при этом роль контроллера начинает выполнять компьютер. Только при чем тут убирание G-code и замена его на ассемблероподобный язык?
G-code — вполне нормальный язык описания траектории движения инструмента и некоторых настроек станка, доступный для оператора. Я в своей практике достаточно часто правлю полученный из КАМа код ручками по мелочи, например, при запуске программы на другом станке или с другим инструментом, или просто часть объектов из траектории выкидываю, или сращиваю несколько траекторий в одну. Если бы на месте кода был ассемблер, не очень представляю себе, как бы я это делал. Кстати, на большом токарном станке, где траектории значимо проще чем на фрезерах, мне проще КАМ вообще не открывать и писать прямо в коде, тем паче что КАМа с нормальной поддержкой макро-Б не нашел.
Не думаю, что использовать компьютер на системе линукс или виндовс в качестве контроллера правильная идея. Эти операционные системы не являютя системами реального времени, даже если у них убрать все лишнее как поступил LinuxCNC.
Контроллер, даже ардуино уже можно назвать системой реального времени.
А зачем это «реальное время» в бюджетном станке? У меня на линуксцнц стоят станки уже годы без сбоев. Да и будет сбой на пятый год — абсолютно не жалко, косяки с инструментом/заготовкой/крепежом/оператором бывают чаще.
По поводу LinuxCnc вы не правы, используется ядро с RTAPI. Что позволяет программе обрабатывать события и посылать управляющие комманды в реалтайм потоке.
А какой толк если там всё-равно используется x86, в котором сама архитектура процессора не подходит для реального времени? Прибежит какой-нибудь SMM и чхал он на реальное время.
Да и зачем для управления шаговиками вообще операционная система нужна?
Там достаточно простого прерывания по таймеру и несложного алгоритма Бразенхема.
Для управления обмотками шаговика не нужна ОС, достаточно контроллера) Аппаратный контроллер получает на вход импульсы step/dir. Если вы про это…

Вопрос в корректной интерпретации G кода, поддержки его подмножеств, конфигурируемости решения — возможность работать не только с конкретными шаговыми двигателями, но и с сервоприводом, манипуляторами PUMA. Вот тут удобства разработки программы, возможность обновлений и видимо и мотивировали разработчиков на rtapi + ОС общего назначения. Стоимость реализации всего объема функционала linuxCnc в железе было бы несравненно дороже и трудозатратнее.

По поводу SMM вы правы, но чтобы минимизировать такие риски есть latency тест перед запуском контроллера, результаты которого потом используются в конфигурации. В любом случае бодрее чем работа с ЧПУ в windows да еще и через usb контроллер)
Где же он нормальный, если на него даже нет общего стандарта и куча расширений, а некоторые станки даже не по стандарту вообще некоторые коды обрабатывают?
Мы обмен между контроллером и компьютером производили вообще по бинарному формату с фиксированной длиной команды по ethernet вместо морально устаревшего uart'а.
Далее, этот бинарный формат обмена вообще не имеет отношения к гкодам: он сугубо внутренний, а программа на компьютере спокойно себе есть гкоды, но контроллер об их существовании даже и не догадывается, вместо этого исполняя совершенно дубовые примитивы. В итоге логика работы прошивки контроллера становится простой и быстрой, а главное предсказуемой.
ISO7 вполне себе стандарт, первая группа (перемещения по координатам) используется на всех станках одинаково. Различия возникают в циклах, иногда офсетах и пр., но я так понимаю, ваш станок это даже в планах поддерживать не собирается. В принципе для бытового применения и правильно, я начал всерьез углубляться в г-код и макро-б при появлении в хозяйстве станков, позволяющих делать серийную обработку и всякое баловство типа волнового точения.

Погодите, получается что у Вас станок (контроллер) кушает не г-код, а нечто специально подготовленное специальной программой на компе? Тогда вообще ничего не понимаю, нафига такое городить? Только чтобы избежать сбоя раз в 20 лет из-за нериалтаймовости линукса? И это все на станке, где благодаря качеству комплектующих сбои будут просто по определению по нескольку раз на час? У Вас же концепция "
ничего лишнего", зачем добавлять абсолютно ненужный заново изобретенный велосипед?
Это больше соответсвует unix way во первых. Во вторых дает +много к кроссплатформенности. Я запускал программу даже с Андроида по вифи. Станок ездил на скоростях 120мм/сек на 1/16 шага. Да и код контроллера оказался на удивление простым и дубовым.
А еще в новых компьютерах нет lpt и прочего устаревшего хлама типа ком портов.
можно даже с девайсов типа rapsberry pi управлять станком.
Я бы на каркас что нибудь объемное типа квадратной трубы использовал. Доступно и несравнимо жестче.
А так с нетерпением жду видео и отчета с поделками! Очень нравится.
Это отличная идея с квадратной трубой.
Видео к сожалению не могу скинуть сейчас я болею дома, да и оператор с меня такой-же как фотограф. Ну вот здесь кусками есть видео первого станка.
vk.com/club71815206?z=video255324247_169886117%2F45c95fbba824252b98
и вот здесь vk.com/club71815206?z=video23178224_169159655%2F7281df9f052f587638
Ой как здорово у вас там! Обожаю все вот эти вот поделки из палок и хлебного мякиша!
Кстати о жесткости и проверке рисованием.
При одинаковой нагрузке люфты и перекосы выбираются примерно одинаково. Поэтому для проверки рисунок нужно нарисовать в обратном направлении от конца к началу.
То есть если на первом проходе кружок рисуем по часовой стрелке на втором проходе против.
>> «Кто не знает, G-код — это последовательность конструкций типа G1X10Y20Z10, которая говорит станку переместится по оси X на 10 мм, Y на 20 мм и Z на 10 мм.»

Не на 10,20 мм, а на точку X = 10 мм, Y = 20 мм. По-крайней мере, если перемещаться в G90. Если же использовать референтную точку (G91), то тут да. Перемещаемся на 10 по X и так далее…
Совершенно верно, взависимости от выбранной системы координат относительной или абсолютной. У нас контроллер понимает коды G90 и G91. можно часть программы в абсолютной системе фрезеровать а остальное в относительной.
Системы координат — от G54 до G59, как правило, где последней являются обычно «нулевые точки» станка, куда он отъезжает при вызове подпрограммы безопасной зоны (M98 P1). А Custom Macro встроили? В планах есть?
Нет, особых наворотов не будем делать. Мы хотим сосредоточится на техническом зрении. Эта тема нас давно интересовала. Собственно и станок делали не ради станка, а для дальнейшей модификации его до станка с глазами.
Прошу прощения, немного неправильно интерпретировал ваш комментарий. Про системы координат вопрос снимается…
Хмм… M98 P1 — просто «вызов подпрограммы №1».
G54..G59 — это нулевые точки (начала координат) не станка, а деталей, и безопасными они совершенно не являются — такая точка может находиться внутри заготовки, и это нормальная практика.
G90 и G91 — это не абсолютная и относительная системы координат, это абсолютный и относительный режим позиционирования. В G90 любое значение X,Y,Z будет означать движение в точку с такими координатами в ранее использованной системе (G54...G59), а в режиме G91 это будет означать движение на такую величину вдоль соответствующей оси.
А возврат в безопасную позицию (или позицию смены инструмента) — G28.
Ну вообще да, M98 — вызов подпрограммы №1. Например, в станках со стойками Fanuc (0i-MD Series) и Mori Seiki (MSX-501), по умолчанию, программа эта самая зарезервирована под подпрограмму (та которая заканчивается на M99) под названием «безопасная зона». Вручную дёргать G28 нет необходимости, ибо в ней (безопасной зоне) прописаны такие операции (если мне не изменяет память), как выключение СОЖи, остановки шпинделя, ну и соответственно выход на концевую точку (или как это правильно называют, что-то вроде G91 G28 X0 Y0)…
Насчёт G54-G59… Это системы координат для привязки деталей, да… Что Вы имели ввиду под «находится внутри заготовки», позвольте полюбопытствовать? :)
Если мы говорим о G-коде вообще, то случай, о котором вы говорите — частный. В общем случае такого нет (скажем, на Haas). Если программа пишется вручную, не вижу ничего сложного в том, чтобы вставить пару-тройку команд по вкусу, как то подъем шпинделя (мы говорим вроде как о фрезерном автомате), его остановка, выключение подачи охладителя, всякое в духе G91 G28 X0. Y0. и собственно остановка программы.

Под «находится внутри заготовки» я имел в виду то, что нулевая точка системы координат детали может находиться внутри заготовки (при чем, как на фрезерных, так и на токарных автоматах, где Z0. может быть определена на плоскости торца патрона) — это зависит от принятой на предприятии практики и от того, кто писал программу, либо генерировал ее в CAM-е. Потому то, что вы написали вот тут:
Системы координат — от G54 до G59, как правило, где последней являются обычно «нулевые точки» станка, куда он отъезжает при вызове подпрограммы безопасной зоны (M98 P1).

— не только не имеет смысла, но еще и опасно (нулевая точка детали и безопасная позиция, скажем — позиция смены инструмента — разные вещи).
Эмм… Под «нулевыми точками» я имел ввиду… Например, систему G59 (X:0, Y:0, Z:500, насколько помню). При M98 P1 стол отъедет мне в правый ближний угол. T3 M106 и вуаля… ничего страшного не произошло… Инструмент целый, сменился удачно, УСП и прочее не задето… Что не так? Spinner VC750, Mori Seiki Duracenter 5…
Не так — то, что это частный случай, я уже об этом говорил. Если говорить об абстрактном G-коде (независимо от конкретного блока управления и фирменного диалекта), то G59 не является в нем чем-то особенным, это просто еще одна система координат детали.
Тут я не спорю, не является, тут уже на усмотрение наладчика, как и что делать. Цель комментария была другая. Акцентировать внимание в том, что опасности никакой нет и не было и не понятно, откуда она должна была взяться…
Мне приходится писать (или модифицировать) код для четырех разных машин, при том с учетом того, что в них ровно перед запуском кто-то покопался и никому не сказал, и что заготовка может быть закреплена как угодно (тиски, шпильки и т.п.). В таких условиях понятие безопасного кода становится более широким. Потому хранение положения безопасной точки в одной из систем становится нецелесообразным, как и использование для этого подпрограмм. Итог — безопасная позиция — только позиция смены инструмента, выход на эту позицию только через вертикальный подъем инструмента, а потом уже горизонтальное перемещение, и так далее. Если имеешь полный контроль над тем, что происходит на станке — да пожалуйста. Но вы просто об этом так говорите, будто это универсальная практика.
У меня ситуация немного иная. Мы с другим наладчиков договорились между собой, что вот там и там должно храниться то и то. Если что-то не так с инструментом (износ, слом) или в программной части нужно что-то дописать (изменить), то мы оставляем друг другу записки, где подробно расписываем, что и как. Про итог… ну оно так и есть, тут не могу не согласиться: поднялись, отъезжаем… А про подпрограмму: она оставлена в станке самим производителем, чтобы как раз отъезжать в безопасную зону перед сменой инструмента и прочее-прочее. И при отъезде там выполняется (G90 G59 G0 X0 Y0; G90 G0 Z0;), грубо говоря. Т.е. так задумано самим производителем и глупо было бы не пользоваться этим, дабы не писать самим велосипеды всякие разные. Контроль полный (ну тут смотря о чем речь): знаю, что делали, как делали, чем делали, если были и есть неполадки — тоже знаю. Про универсальную практику — ни в коем разе… Я же сразу практически упомянул, на каких стойках и станках работаю, чтобы не разводить лишнюю демагогию. Еще раз: моё высказывание было справедливо лишь для Spinner VC750 и Mori Seiki Duracenter 5 (с Fanuc 0i-MD Series и Mori Seiki MSX-501 на борту, соответственно)…
Про частный случай… вы меня видимо не поняли немного… то, что это есть в системной подпрограмме не меняет того факта, что всё равно в любой программе я само собой дописываю вкл/откл СОЖ, отключаю вращение шпинделя и вот это всё… Т.е. на пару простых операций выходит такой код, например… gist.github.com/michaeldavydenko/b664b8adeaf3098ce006
Sign up to leave a comment.