ЧПУ станок
|
|
Techno-holst |
Дата: Вс, 09.02.2014, 12:59 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
24
Замечания:
±
На сайте с 13.07.2011
Статус:
Offline
|
Всем привет! Ребят, я хочу сделать ЧПУ станочек работающий от USB. Уже собрал драйвера для шаговиков, контроллер на PIC18F2550. Начал писать прогу для компа. Уже дошел до того что при нажатии кнопки в программе шаговые двигатели крутятся в нужном направлении и ведется отчет шагов. Но как сделать чтобы двигатели крутились одновременно не могу сообразить. Например инструмент находиться в положении Х0 и Y0, нужно переместиться по оси Х на 74мм, а по оси Y на 28мм. При условии что инструмент перемещается на 0,005 мм при одном шаге двигателя имеем: 74/0,005=14800 шагов и 28/0,005= 5600 шагов. Так вот, как сделать чтобы оба двигателя начали одновременно работать и одновременно закончили.
Сообщение отредактировал
Techno-holst - Вс, 09.02.2014, 13:04
|
|
|
|
ADMIN |
Дата: Пн, 10.02.2014, 03:03 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Ну, а каким образом в программе, например, по X движение производится? Этот кусок можно глянуть?
|
|
|
|
Techno-holst |
Дата: Пн, 10.02.2014, 04:59 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
24
Замечания:
±
На сайте с 13.07.2011
Статус:
Offline
|
движение осуществляется передачей либо 0 либо 1 либо 2 через буфер. Если движение не нужно то передаю 0, если двигаюсь в лево посылаю 2, если в право то 1. а PIC получив эти данные уже сам по своей программе вращает двигатель. В приведенном примере я так понимаю по оси Х все 14800 шагов мне нужно подавать 1. а вот по Y мне нужно подавать как нули так и 1. А как вывести эту зависимость я не могу понять.
|
|
|
|
ADMIN |
Дата: Пн, 10.02.2014, 11:01 | Сообщение # 4 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
А может стоит отправлять по два бита на каждую ось? Может, так проще будет? К примеру: 0000 - стоят оба 0001 - вперед по х 0010 - назад по х 0100 - вперед по у 1000 - назад по у 1010 - назад по х и у и т. д. А в теле программы проверять соответствующий бит и присваивать его исполнительному устройству Ну как-то так
|
|
|
|
Techno-holst |
Дата: Пн, 10.02.2014, 11:15 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
24
Замечания:
±
На сайте с 13.07.2011
Статус:
Offline
|
Оно так и получается. Нужно значения (14800 шагов и 5600 шагов) перевести в биты. С 14800 шагами мне понятно- каждый бит будет равен 1, а 5600 нужно дробить на 0 и 1.
Пример для расстояния когда Y в два раза меньше чем Х:
1000 делает шаг двигатель по оси Х 1010 делает шаг двигатель по оси Х и по оси Y 1000 делает шаг двигатель по оси Х 1010 делает шаг двигатель по оси Х и по оси Y и так далее.
А когда значения Х и Y не делятся без остатка?
|
|
|
|
ADMIN |
Дата: Пн, 10.02.2014, 12:41 | Сообщение # 6 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
А может отправлять количество шагов? И бит, вперед или назад? А в программе организовать цикл с одновременной проверкой обоих значений направления движения.
|
|
|
|
seregtlt |
Дата: Пт, 28.11.2014, 15:04 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
13
Замечания:
±
На сайте с 07.12.2011
Статус:
Offline
|
сделал станок? еще надо учитывать какую форму обрабатывать круг, квадрат... 0000 двигатели стоят 0001 +1 шаг 1 двигатель 0010 -1 шаг 1 двигатель 0100 +1 шаг 2 двигатель 1000 -1 шаг 2 двигатель в самой программе - скорость двигателей и их оборотов
третий двигатель "подача" шаг и скорость режущего инструмента (сверло, фреза...)
если нужно узнаю в какой программе подготавливается такой код. лучше брать промышленный стандарт, отработанный годами.
|
|
|
|