Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/136: Рейтинг темы: голосов - 136, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 15.02.2015
Сообщений: 444

Дискретные перемещения вдоль прямой

27.04.2015, 14:07. Показов 25426. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Ко мне на днях приедет заказанный ЧПУ станок, но без драйверов и контроллера. Как пояснили мне в компании, экспортные ЧПУ станки подпадают под европейские санкции и ввозить их нельзя. А вот станки, «подготовленные к ЧПУ», то есть с уже установленными шаговиками и концевыми выключателями, вполне себе можно. Короче, пришлось докупить драйвера, благо их предостаточно на рынке и заняться изготовлением котроллера. Думаю, возьму какую-нибудь stm-ку под него, хотя конкретно пока не решил.

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

На данный момент я думаю над аппроксимацией прямых дискретными перемещениями вдоль двумерной координатной сетки. Итак, примерный алгоритм:

Дины две точки детали, А и В, с координатами (х1, у1) и (х2, у2) соответственно (для простоты полагаем, что они лежат пересечениях координатной сетки), вдоль прямой на которых надо срезать материал с заготовки. По двум точкам строится уравнение прямой линии (не обязательно параллельной координатным прямым). Далее выбирается начальная точка и добавляется в список точек для прохождения. Положим, это точка А.

Двигаясь вдоль линий координат, из этой точки можно попасть в соседние на сетке четыре точки с координатами (х1, у1 + 1), (х1 + 1, у1), (х1 – 1, у1) и (х1, у1 – 1). Задача состоит в том, чтобы выбрать такую точку, которая бы была наименее отдалена от заданной линии. Для этого, во-первых, исключим ту точку, из которой мы пришли (для всех точек, кроме начальной).

Далее, посчитаем «манхэттенское» расстояние между оставшимися вариантами и конечной точкой (в данном случае это точка В). Это нужно для того, чтобы сразу исключить те точки, которые уведут нас в неправильном направлении. А «манхэттенское» расстояние считать проще и в данном случае именно оно нас и интересует. Отбрасываем те точки, которые уводят нас от точки В.

Наконец, считаем наикратчайшее расстояние от оставшихся точек до заданной прямой и выбираем наименьшее значение. В том случае, если расстояния совпадают (например, когда прямая проведена под углом в 45 градусов) выбираем случайным образом. Далее повторяем действия до тех пор, пока не попадаем в точку В.

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

Вроде бы все так и достаточно просто. Не вижу смысла усложнять простые вещи. Можно было бы перевести все это на язык линейной алгебры и многообразий, но проще вряд ли станет.

В общем, хочу услышать ваши комментарии по алгоритму. Вдруг тут есть специалисты, хорошо знакомые с ПО ЧПУ станков. Да и просто любое мнение может оказаться полезным. В тех книгах, что я открыл, объясняется уже программирование в G-кодах, без низкоуровневых вещей. Не все мне здесь нравится (например, случайный выбор), но в целом, это лучшая из идей, что пока пришли мне в голову. С другой стороны, это «жадный» алгоритм, который может привести к неоптимальному решению. Если нужна картинка, то скажите, я могу вечером нарисовать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2015, 14:07
Ответы с готовыми решениями:

Создать анимацию перемещения отрезка косинусойды вдоль вертикальной оси
Создать анимацию перемещения отрезка косинусойды вдоль вертикальной оси.

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

Вычислить интеграл вдоль отрезка прямой
Вычислить \int_{f}^{}3{y}^{2}dx+4xdy вдоль отрезка прямой, соединяющего точки A(1,1), B(3,-2)

26
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
29.04.2015, 13:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от El1te
Я думаю сейчас остановить свой выбор все-таки на grblе, хотя от необходимости использовать ардуйню меня ломает.
Я бы присмотрелся к SmoothieBoard. Он, во-первых, уже портирован на кортекс (хотя и не самый популярный у нас). Во-вторых, там меньше ограничений, которые накладываются архитектурой МК. В-третих, там реализованы значительно более продвинутые алгоритмы разгона и торможения. Да, есть еще такая штука как TinyG (код вот тут https://github.com/synthetos/TinyG ). Там тоже с алгоритмами разгона и торможения все существенно лучше, чем у grbl: http://makezine.com/2013/09/23/why-your ... s-a-tinyg/
0
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 901
29.04.2015, 17:10
Цитата Сообщение от El1te
Ну, если использовать для одной заготовки несколько режимов, например, микрошаг 1/1 и 1/16, для трудных мест
удачи вам со внезапным повышением точности в середине хода :-)
то, возможно, проще считать непрерывно и потом проводить дискретное преобразование. Не знаю.
Советую еще предварительно переводить в футы и дюймы, затем считать в них с правающей точкой, а потом опять переводить из имперских в СИ, и уж после этого - дискретизировать... чисто чтоб не скучно было.
Я думаю сейчас остановить свой выбор все-таки на grblе, хотя от необходимости использовать ардуйню меня ломает.
Если дуйня обеспечит нормальную работу - почему бы и нет? Хотя имхо лучше что-нибудь посерьезнее для управления разгонными режимами двигателей.
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
02.05.2015, 06:25
Не, ну может я немного погорячился с категоричностью неправильного пути :) Просто с прямыми и окружностями по брезенхему я давно уже разобрался и как то более интересно попробовать что то новенькое.
А недавно я ради интереса потестил синусы и косинусы на авр-ке, и вроде получилось около нескольких тысяч синусов в секунду да еще с переводом из градусов в радианы и отрисовкой на дисплее.
Да, а кроме окружностей и прямых надо ведь рисовать и дуги, рассчитывать их сопряжения, а это для станка с ЧПУ наверное основной контур будет.
Т.е. я как то не вижу, на чем тут экономить вычислительную мощщ и для чего. А вот поэкономить человеческое время, быстро прикинуть необходимую точность и т.д. - это я понимаю.
Тем более, что вроде автор рассматривал и STM32.
0
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
04.05.2015, 13:02
IMHO, в данном случае имеет смысл рассмотреть самый простой вариант - простейший адаптер на LPT + драйверы шаговиков. Этот вариант точно будет работать будет самым простым в установке и настройке. Дальше можно уже изголяться и пилить что-то более продвинутое. Тем более, что ничего не мешает сделать продвинутый контроллер так, что бы он управлял шаговиками ровно через тот же LPT. Заодно и конструкция в целом упростится. Вобщем, "есть слона по кусочку", вместо того, что бы пытаться проглотить его целиком за раз.
0
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 901
04.05.2015, 16:17
Цитата Сообщение от ivsy
Вобщем, "есть слона по кусочку", вместо того, что бы пытаться проглотить его целиком за раз.
возникает вопрос оптимальной разделки слона...
в том смысле, чтоб кусочки были используемы в обоих версиях проекта, но при этом сделаны "так просто, как только возможно, но не проще этого"©
0
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 924
04.05.2015, 17:12
Цитата Сообщение от Mykysoft
Цитата Сообщение от ivsy
Вобщем, "есть слона по кусочку", вместо того, что бы пытаться проглотить его целиком за раз.
возникает вопрос оптимальной разделки слона...
в том смысле, чтоб кусочки были используемы в обоих версиях проекта, но при этом сделаны "так просто, как только возможно, но не проще этого"©

Драйвера шаговиков понадобятся в любом случае. "Контроллер LPT" не более чем набор оптронов (что тоже не помешает) подключенных к пинам параллельного порта. Так что эта часть будет использована практически полностью как самостоятельно, так и в продвинутом контроллере. Если хочется "по богатому", то можно купить отдельные драйверы шаговиков (в отдельных драйверах типа, например, такого опторазвязка встроена) и отдельно купить (или сделать самому) плату "контроллера" (там будут только разъемы). В таком случае в продвинутой версии плату "контроллера" можно будет выбросить, а все остальное использовать без переделки.
0
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 22
04.05.2015, 17:16
Погуглите - "ЧПУ Метод оценочной функции"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2015, 17:16

Параллельный перенос гиперболы вдоль прямой
Гипербола задана уравнением: y = \frac{a}{x} + b Прямая задана уравнением: y = kx+c Записать уравнение гиперболы полученной...

Движение машины справа налево вдоль прямой
Движение машины справа налево вдоль прямой.

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

Два космических корабля движутся вдоль одной прямой…
Два космических корабля движутся вдоль одной прямой. Скорости v1 и v2 их в некоторой ИСО соответственно 12 и 8 км/с. Определить частоту...

Построить график зависимости напряженности суммарного электрического поля зарядов вдоль прямой
Два заряда величиной q1=-5нКл и q2= 2 нКл находятся на расстоянии r=5см друг от друга в среде с диэлектрической проницаемостью ℰ=9. Нужно...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru