- 22, Oct 2024
- #1
Я заменял драйвер шагового двигателя на своей плате Melzi 2.0 на модуль Pololu A4988, и по какой-то причине он не работает с Marlin.
Для справки: я использую Melzi 2.0 TRONXY с 5-кнопочным ЖК-дисплеем в стиле ZONESTAR. Этот ЖК-дисплей может быть связан с моей проблемой. Я использую специальную конфигурацию Marlin 2.0.x, так как заменил основную плату, и это доставило мне много проблем.
При тестировании принтера скетчем Arduino ось Z движется безупречно. Однако, когда я загрузил свою конфигурацию Marlin, принтер снова отказался двигаться. Проверив контакты шага и направления с помощью осциллографа, я обнаружил, что, по моему мнению, является проблемой. Я подавал пошаговые команды с ЖК-дисплея и из Pronterface, когда увидел это на выводе Z-Step:
Извиняюсь за размытое изображение. Временной масштаб составляет 20 мкс/квадрат, а напряжение — 1 В/квадрат. Я должен был увидеть серию дискретных импульсов напряжением 5 В, которые заставляют шаговый двигатель двигаться, но вместо этого я получил несколько крошечных импульсов ~ 5 мкс.
Я понял, что это означает, что контакт (цифра 3, для любопытных) устанавливается на импульс по запросу шага, но сбрасывается чем-то другим. Насколько я могу судить, все указывает на прошивку. Опять же, я подтвердил, что 1284p, A4988 и сам двигатель работают, если они правильно запрограммированы с помощью эскиза Arduino. Я также попробовал поменять местами определения контактов для шага и направления (переключено
#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
and ADC1
), но у меня была такая же проблема.
Я думаю, возможной причиной этого может быть мой ЖК-дисплей: он требует, чтобы пользователь определил аналоговый контакт для чтения кнопок (особенность конструкции ЖК-дисплея). В моих файлах pins_MELZI_TRONXY.h и pins_SANGUINOLOLU_11.h Марлин по умолчанию использует PA1
(analog pin 1) with the A1
выбрано. В разрешении 1284p контакт 3 (контакт Z-Step) также указан как AIN1
. On the Разводка печатной платы в Melzi 2.0 этот контакт не подключен к 10-контактному разъему ЖК-дисплея. Контакт, который на самом деле использует ЖК-дисплей, — это ZONESTAR_LCD
header pin, which goes to #define ADC_KEYPAD_PIN 1
/ 3
on the 1284p. But perhaps this definition has caused some confusion in the firmware?
Для ясности: соответствующие части моей прошивки выглядят так:
2
Если кто-нибудь может дать какое-либо представление об этом, мы будем очень признательны! Я новичок в настройке и ремонте 3D-принтеров, поэтому буду рад любой вашей помощи!
#marlin #ось z #степпер-драйвер #ЖК-экран