Автономный контроллер своими руками.

    Рекомендованный
  • #721
Я не спорю, я просто взываю к логике
А логика взывает к вам - прочитайте же наконец документацию по GRBL...

Есть же аварийные ситуации
Да, случаются. Для этого есть в кнопка аварийного останова (хард-резет МК), команда удержания '!' или команда 0х18 софт-резета. Это применительно к "обычному" G-коду. Про Jog-перемещение вам написали выше - команда 0х85 останавливает движение с очисткой команд в буфере планировщика. С "обычным" G-кодом (G1...) тоже возможно выполнить останов, для этого необходимо - выполнить удержание Hold, затем, после перехода из статуса Hold:1 в статус Hold:0 запомнить текущие смещения рабочих координат, выполнить софт-резет и восстановить смещения рабочих координат.

Зачем нужен некий шаг и т.п.?
Для Jog-перемещений.
В режиме Jog обеспечивается имитация непрерывного движения, для чего необходим расчёт шага (дистанции) перемещения за единицу времени с заданной скоростью и ускорением. Это для того, что бы обеспечить минимальную задержку между шагами и вместе с тем, что бы буфер планировщика (он на 16 линейных команд) не переполнялся. Полная инфа по расчёту - тут.
 
Но, можно вас попросить "на пальцах", как отвечают профессора,
Я не знаю как отвечают профессора, но для меня ответ очевиден. Когда разработчик делал прошивку ГРБЛ, он хотел создать ЧПУ станок а не самокат. А ЧПУ станок подразумевает движение по ЗАРАНЕЕ созданной программе, в отличии от самоката на котором можно двигаться куда угодно и как угодно.
Я не спорю, я просто взываю к логике;).
Ну вот логика как раз и предлагает использовать предусмотренный разработчиком вариант для данной задачи.

Честно говоря, я не нашел подробного описания команды М0 в нашей прошивке. А вот для Jog-перемещений есть подробная инструкция по использованию.
 
  • Последнее редактирование:
Последнее редактирование:
Честно говоря, я не нашел подробного описания команды М0 в нашей прошивке.
Файл gcode.c
Код:
      case 'M':

        // Определите команду 'M' и ее модальную группу
        if (mantissa > 0) { FAIL(STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER); } // [[Нет команд X.x]
        switch(int_value) {
          case 0: case 1: case 2: case 30:
            word_bit = MODAL_GROUP_M4;
            switch(int_value) {
              case 0: gc_block.modal.program_flow = PROGRAM_FLOW_PAUSED; break; // Программная пауза
              case 1: break; // Дополнительная остановка не поддерживается. Игнорировать.
              default: gc_block.modal.program_flow = int_value; // Завершение программы и сброс настроек
            }
            break;
Отсюда имеем:
M0 - плановая пауза (например для смены инструмента или стружку смахнуть)
M1 - не поддерживается
M2 и M30 - Завершение программы и сброс настроек (причём, не имеют никакой разницы)
 
M0 - плановая пауза (например для смены инструмента или стружку смахнуть)
Ну, те есть она никак не останавливает уже начатое движение, а просто делает паузу в нужном месте.
Для того чтоб остановиться Необходимы команды ни г-кода, а команды реального времени. Например эта:
0x18 (ctrl-x): Мягкая перегрузка

- немедленно останавливается и безопасно сбрасывает Grbl без выключения питания.

- принимает и выполняет эту команду в любое время.

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

- если сброс происходит не при движении, положение сохраняется, и перемещение в исходное положение не требуется.

- доступен входной контакт для подключения кнопки или переключателя.

Или эта:
! : Удержание подачи

- переводит Grbl в состояние приостановки или удержания. В случае движения машина замедлится до остановки, а затем будет приостановлена.

- команда выполняется, когда Grbl находится в состоянии IDLE, RUN или JOG. В противном случае игнорируется.

- случае JOG режима удержание подачи отменяет толчковое движение и сбрасывает все оставшиеся толчковые движения в буфере планировщика. Состояние вернется из режима JOG в состояние IDLE или DOOR, если оно было обнаружено как открытое во время активного удержания.

- по определению управления машиной удержание подачи не отключает шпиндель или охлаждающую жидкость, только движение.

- доступен входной контакт для подключения кнопки или переключателя.

Отправляются эти команды через Serial.write(!);
 
Иными словами, не получится сделать так, чтоб был некий джойстик, и в положении, скажем" "вперед" фреза двигалась плавно до момента отпускания джойстика?
подключи джойстик pin к pin enable драйвера.
p.s.. и grbl тут вообще не причем - это просто управление шаговиков (с драйверами).
 
0x18 (ctrl-x): Мягкая перегрузка
Отлично! Поставил на отжатие кнопки. Все ОК! Нажал - едет, отпустил -стоп. Можете же! А то... шаг, буфер ;) Дай Вам Бог, Александр, здоровья и творческих успехов!
Правда, перед новым движением приходится повторять команду $X.
ПС. А самокаты тоже некоторым нужны, на то и изобретательство.
 
А! не учел, что шпиндель тоже останавливается. Тогда попробую потом "!"
 

Мыши кололись и плакали, но продолжали грызть кактус... :)

оффтоп
 
Правда, перед новым движением приходится повторять команду $X.
отключите в прошивке концевики и не нужно будет разблокировать $22=0

ПС. А самокаты тоже некоторым нужны, на то и изобретательство.
Вам же рассказали как делать самокат, генератор импульсов, кнопка и тумблер.

Можете же! А то... шаг, буфер ;)
Вам с самого начала несколько раз тыкали в эти команды, но вам же читать "религия" не позволила.
Мне так кажется, что вы потыкаетесь, потыкаетесь и сделаете и на шаг и буфер...
 
вы невнимательно читаете мое ТЗ. 1) будут макросы на автоматическое выпиливание простейших фигур по заданным значениям длины и ширины. Аналогично - по заданным радиусам. 2) Есть СД карта - в которой при необходимости будут прописывать УП. 3) А также основной режим - на котором вы несколько делаете излишнее внимание - перемещение по нажатиям кнопок/джойстика.
Не уподобляйтесь шаблонным стереотипам присущим форумам - охаять новичка. Уверен, что здесь собрались настоящие, мыслящие творческие люди, а не молодняк. Или я ошибаюсь?
 
Не ошибаетесь. Здесь все в возрасте, но молоды душой. И не смотря на возраст, не занимаются бесконечными пререканиями размахиваниями мало нужными ТЗ. Берите пример, со старых, умных и умелых...и главное что при этом не корчат из себя умников. И не относят себя к каким то избранно ( настоящим) мыслящим творческим людям, хотя именно такими они и являются. Потому....не нуди мужик, будь проще, тут умней и знающей тебя, каждый второй.
 
вы невнимательно читаете мое ТЗ. 1) будут макросы на автоматическое выпиливание простейших фигур по заданным значениям длины и ширины. Аналогично - по заданным радиусам. 2) Есть СД карта - в которой при необходимости будут прописывать УП. 3) А также основной режим - на котором вы несколько делаете излишнее внимание - перемещение по нажатиям кнопок/джойстика.
Ну так это всё есть в автономном контроллере который обсуждается в данной теме.
Не нужен вам экран - не подключайте. На ненужные для вас функции кнопок повесьте нужные вам макросы фигур. На кнопку старт повесьте команду старта файла с конкретным именем, например 1.nc.
 
Выкладываю работоспособный проект - Автономный контроллер для лицевых панелей корпусов электронных изделий. 3 режима: Ручной режим -фрезерует, пока держишь кнопку. По Пресетам (макросам), прописанным в прошивке АК – буду использовать вместо разметки отверстий по шаблонам. СД карта – как расширение функционала.

Энкодером можно задать параметры скорости подачи и частоты шпинделя для тестов.

Упрощения:
  • Скорость холостой подачи равна скорости фрезерования.
  • Для ручного режима применен метод Jog, но очистка буфера переполнения не делается, так как проще в момент останова кратковременно иницировать снова команду дополнительным нажатием кнопки.
  • Не учитывается диаметр фрезы, мне особая точность не нужна.
  • Фрезеруем только прямоугольники и размечаем отверстия, которые потом досверливаем дрелью.
  • Нет оптимизации прошивки.

Код приложен, некоторые команды почему то с ошибкой – буду разбираться.
 

Вложения

  • 3018.zip
    3.7 KB · Просмотры: 21
  • балкон.jpg
    балкон.jpg
    155.9 KB · Просмотры: 30
  • корпус.jpg
    корпус.jpg
    104.2 KB · Просмотры: 30
  • меню.jpg
    меню.jpg
    85.5 KB · Просмотры: 30
Видео бы как работает. Было бы более наглядно.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

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

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать