Прошивка grbl. Старт и пауза по датчикам.

Misha87
Offline
Зарегистрирован: 10.06.2015

Всем здравствуйте. Прошу помощи, может кто сталкивался. Имеется arduino uno,cnc shield v3.0, драйвера А4988 и два шаговых двигателя nema 17. Все подключил,залил прошивку grbl, все работает,все отлично. Вопрос в том,что мне нужно прерывать и запускать работу двигателей по внешним датчикам,а именно принцип такой - есть двигатель,на валу установленно колесо с магнитом, рядом с колесом установлены два геркона. Задача такая,чтобы при прохождении магнита рядом с одним герконом, grbl приостанавливал работу,а при прохождении магнита рядом с другим герконом, grbl продолжал свою работу. Так вот, я подключил герконы к контактам на cnc shield, hold и resume,но даже при скорости вращения вала двигателя в 200об.м. программа не отрабатывает чётко,т.е. проскакивает пауза и запуск. Я грешу на герконы,возможно лучше попробовать на датчике холла или оптическом, но еще я не знаю как прошивка grbl обрабатывает эти сигналы hold и resume, по распиновке эти сигналы подаются на А1 и А2. Очень жду помощи,подсказки. Заранее спасибо.

sadman41
Offline
Зарегистрирован: 19.10.2016

Испытайте систему на гораздо меньшей скорости. Если всё нормализуется, то проблема в скорости срабатывания геркона.

Misha87
Offline
Зарегистрирован: 10.06.2015

К сожалению не могу,200- это минимальные обороты. Может прошивка grbl не может быстро считать на этих пинах?

Misha87
Offline
Зарегистрирован: 10.06.2015

Просто я так понимаю,что эти пины не расчитаны для таких целей,так как они используются просто для ручной паузы и продолжения,для физических кнопок. Вот я и думаю,как можно реализовать то,что мне нужно.

SLKH
Offline
Зарегистрирован: 17.08.2015

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

Возможное объяснение явления: использована программная защита от дребезга кнопок. Нужно смотреть листинг.  

Misha87
Offline
Зарегистрирован: 10.06.2015

SLKH пишет:

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

Возможное объяснение явления: использована программная защита от дребезга кнопок. Нужно смотреть листинг.  

Не очень разбираюсь в библиотеках. Нашел в библиотеке grbl вот такое

// Define user-control controls (cycle start, reset, feed hold) input pins.
  // NOTE: All CONTROLs pins must be on the same port and not on a port with other input pins (limits).
  #define CONTROL_DDR       DDRC
  #define CONTROL_PIN       PINC
  #define CONTROL_PORT      PORTC
  #define CONTROL_RESET_BIT         0  // Uno Analog Pin 0
  #define CONTROL_FEED_HOLD_BIT     1  // Uno Analog Pin 1
  #define CONTROL_CYCLE_START_BIT   2  // Uno Analog Pin 2
  #define CONTROL_SAFETY_DOOR_BIT   1  // Uno Analog Pin 1 NOTE: Safety door is shared with feed hold. Enabled by config define.
  #define CONTROL_INT       PCIE1  // Pin change interrupt enable pin
  #define CONTROL_INT_vect  PCINT1_vect
  #define CONTROL_PCMSK     PCMSK1 // Pin change interrupt register
  #define CONTROL_MASK      ((1<<CONTROL_RESET_BIT)|(1<<CONTROL_FEED_HOLD_BIT)|(1<<CONTROL_CYCLE_START_BIT)|(1<<CONTROL_SAFETY_DOOR_BIT))
  #define CONTROL_INVERT_MASK   CONTROL_MASK // May be re-defined to only invert certain control pins.
 
Я так понимаю,обработка пинов идет по прерыванию или я не прав?