2 шаговый ЧПУ неточный
Я строю простой станок с ЧПУ, который просто пишет письма. Он использует 2 степпера для оси x и y.
Вот как это работает
- генерируйте буквы в c# и преобразуйте их в список строк
- отправить в arduino mov_xy line.x line.y как строка для каждой строки
- на arduino преобразуйте в int, умножьте на шаги на мм и запустите с помощью speedy stepper
В конечном итоге это приводит к проблемам точности. Если он пишет "ZWX", буква "X" будет немного в стороне.
Вещи, которые я пробовал:
- скорость передачи данных 500000 бод
- накопить остаток от плавающего числа шагов
- различные USB-кабели
- различные станки с ЧПУ
Это ошибка последовательной связи?
Нужно ли мне внедрять CRC?
Сможет ли УНО справиться с этим?
Делает ли SERIAL_8E1 проверку четности автоматически или мне нужно что-то сделать?
Я прошел через все это много раз. Чего мне здесь не хватает?
Это изображение генерируется непосредственно из буквенных строк в c#, поэтому я сомневаюсь, что проблема находится на стороне c#.
@some rand, 👍1
Обсуждение1 ответ
▲ 1
Я забыл позаботиться о негативных шагах в накоплении остатка. Это решило дело.
// x accum
float resX = mmX * (float)X_STEPS_PER_MM;
float lresX = (long)resX;
_x_acum += resX - lresX;
long extraStepsX = 0;
while(_x_acum > 1.0f){
_x_acum -= 1.0f;
++extraStepsX;
}
while(_x_acum < -1.0f){
_x_acum += 1.0f;
--extraStepsX;
}
// move stepper for lresX + extraSteps
,
@some rand
Смотрите также:
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Запустить два степпера одновременно
- Могу ли я запретить библиотеке Stepper удерживать двигатель?
- Питание двух шаговых двигателей с драйверами A4988
- Управление функцией включения на драйвере микрошагового устройства
- Шаговый двигатель с датчиком HCSR-04
- Шаговый двигатель не работает с платой A4988
- Nema 17, Arduino Uno и шаговый двигатель ~2H42B
уменьшите сложность проблемы ... вместо ZWX попробуйте выгравировать три простых квадрата, @jsotola
Вместо того, чтобы фактически управлять двигателями, вы могли бы рассчитать их положение. Это исключило бы неточность в двигателях. Отправляйте фигуры, которые вернутся в исходную точку. Сложите все шаги (фактические шаги, после преобразования из числа float), как ваш код ЧПУ поступил бы с двигателями. Затем отобразите конечную позицию, полученную в результате ваших вычислений. Это показало бы точность части расчета, и вы можете видеть, в чем проблема., @chrisl