Слишком короткие импульсы Z-шага (Marlin 2.0.x)

Я заменял степпер-драйвер на плате Melzi 2.0 на модуль A4988 Pololu, и по какой-то причине он не будет сотрудничать с Marlin.

Для справки, я использую Melzi 2.0 TRONXY с 5-кнопочным ЖК-дисплеем в стиле ZONESTAR. Этот ЖК-дисплей может быть связан с моей проблемой. Я использую пользовательскую конфигурацию Marlin 2.0.x с тех пор, как я заменил основную плату, и это давало мне много проблем.

При тестировании принтера с помощью эскиза Arduino ось Z движется безупречно. Однако, когда я загрузил свою конфигурацию Marlin, принтер снова отказался двигаться. Исследуя шаговые и Направляющие контакты с помощью моего осциллографа, я обнаружил то, что, как мне кажется, является проблемой. Я давал команды шага от ЖК-дисплея и от Pronterface, когда я увидел это на штыре Z-Step:

A shot of my oscilloscope showing step pulses ~5 us long

Прошу прощения за размытую картинку. Временная шкала составляет 20 мкс/квадрат, а напряжение-1В/квадрат. То, что я должен был увидеть, - это серия дискретных импульсов 5 В, которые говорят шаговому двигателю двигаться, но вместо этого я получил горстку крошечных вспышек ~5 мкс.

Я понял это так: пин (цифра 3, для тех, кому интересно) устанавливается в импульсное состояние по шаговому запросу, но сбрасывается чем-то другим. Все указывает на прошивку, насколько я могу судить. Опять же, я подтвердил, что 1284p, A4988 и сам двигатель работают, если они правильно запрограммированы с помощью эскиза Arduino. Я также попытался поменять местами определения контактов для Шага и направления (переключил 2 и 3), но у меня была та же проблема.

Возможной причиной этого я думаю может быть мой жидкокристаллический дисплей: Он требует, чтобы пользователь определил аналоговый вывод для считывания кнопок (причуда дизайна жидкокристаллического дисплея). В моих файлах pins_MELZI_TRONXY.h и pins_SANGUINOLOLU_11.h Marlin по умолчанию использует #define ADC_KEYPAD_PIN 1 (аналоговый вывод 1) с выбранным ZONESTAR_LCD. На 1284p pin 3 (Z-Step pin) также указан как AIN1. На макете печатной платы Melzi 2.0 этот вывод не соединен с 10-контактным жидкокристаллическим разъемом. Вывод, который на самом деле использует жидкокристаллический дисплей, - это вывод заголовка A1, который идет к PA1/ADC1 на 1284p. Но, возможно, это определение вызвало некоторую путаницу в прошивке?

Чтобы быть ясным, соответствующие части моей прошивки выглядят следующим образом:

#define ADC_KEYPAD_PIN                     1
        //from pins_SANGUINOLOLU_11.h, which is - as far as I know - the only place this is defined.

#define LCD_PINS_RS                           28 //RS           28
#define LCD_PINS_ENABLE                       29 //EN           29
#define LCD_PINS_D4                           10 //D4 -> RX1 -> 10      
#define LCD_PINS_D5                           11 //D5 -> TX1 -> 11     
#define LCD_PINS_D6                           16 //D6 -> SCL -> 16
#define LCD_PINS_D7                           17 //D7 -> SDA -> 17
        //the rest of the LCD pin definitions from pins_MELZI_TRONXY.h

#define Z_STEP_PIN                             3 
#define Z_DIR_PIN                              2
        //my Z-stepper settings from pins_SANGUINOLOLU_11.h, which I'm pretty sure is normal for all Melzi boards

Если кто-нибудь может дать какое-либо представление об этом, я был бы чрезвычайно признателен! Я новичок в настройке и ремонте 3D-принтеров, поэтому с радостью приму любую вашу помощь!

, 👍1

Обсуждение

Не то, чтобы я мог здесь помочь, но работает ли это с отключенным ЖК-дисплеем? (Вы можете отправлять команды G-кода через последовательный терминал, не так ли?) Зачем вам нужно было что-то переопределять в "pin.h", когда "pins_SANGUINOLOLU_11.h" уже содержит раздел, посвященный платам MELZI: "/ / LCD / Контроллер ""#если HAS_WIRED_LCD "#определить SD_DETECT_PIN -1 ""#если HAS_MARLINUI_U8GLIB ""#если ВКЛЮЧЕНО(LCD_FOR_MELZI) " (и так далее) ?, @octopus8

@octopus8 То, что я имел в виду под "моими файлами pins.h", было файлами "pins_MELZI.../pins_SANGUINOLOLU...h", извините за путаницу. Я отредактировал сообщение для ясности. С другой стороны, я пытался управлять им с отключенным параметром "ADC_KEYPAD_PIN", и он, по-видимому, не вел себя по-другому, но я попробую отключить ЖК-дисплей, если больше ничего не работает., @malachik

Возможно, вы действительно видите предполагаемое поведение. Вспышка 5uS технически не выходит за рамки спецификации. В спецификации A4988 указана минимальная длительность импульса 1 МС. Значение` MINIMUM_STEPPER_PULSE ' настроено в Conditionals_adv.h и равно 1uS для A4988. Вы могли бы попробовать увеличить это значение., @Tom van der Zanden


1 ответ


1

Полностью избегая контакта 3, шагатели оси Z начали двигаться правильно. Мой обогреватель стола вышел некоторое время назад, поэтому я пересмотрел соединения в Marlin, чтобы использовать этот штифт (штифт 12) в качестве штифта Z-step, подключив его к A4988 соответственно. Это не вызвало никаких проблем, кроме небольших проблем с шумом до сих пор. К сожалению, я не могу говорить ни о каких потенциальных проблемах, которые могли бы вызвать это поведение, все, что у меня есть, - это одно потенциальное решение.


,