Проблема датчика температуры Marlin

У меня есть RAMPS 1.4 и Arduino Mega 2560. Проблема заключается в 100k NTC термисторе. Я проверил его мультиметром, он дает ~122 Ком.

Я использую Marlin 1.0.2 (последняя стабильная версия). Я использую экструдер MK8 и не получаю показаний температуры от термосенсора-независимо от того, как я его подключаю. Однако на прошивке APrinter он работает безупречно.

В configuration.hя перепробовал большинство вариантов, но обнаружил, что "1" - лучший для меня.

Выполнив m105 на Marlin, я получаю следующий результат:

ok T:0.0 /0.0 B:0.0 /0.0 T0:0.0 /0.0 @:0 B@:0

На APrinter результат другой:

ok B:-inf /nan T:25.2076 /nan

Я еще не подключил настольный термистор.

pins.h

#define TEMP_0_PIN          1  // Экструдер / Аналоговая нумерация контактов
#define TEMP_BED_PIN        0  // Desk / Аналоговая нумерация контактов

конфигурация.h

#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_BED 1

...

#define MOTHERBOARD BOARD_RAMPS_13_EFB

Переключившись с "Марлина" на "АПринтер" и обратно, "Марлин" полностью прекратил работу в уокинге. Я настроил ЖК-дисплей (RepRapDiscount Smart Controller), и все степперы работали. Прямо сейчас он даже не отправляет самопроверку в Pronterface при запуске/подключении, или он зависает в соответствии с журналом.

Выход Pronterface

Connecting...
start
Printer is now online.
echo:Marlin1.0.2
echo: Last Updated: Jul 25 2016 17:12:39 | Author: (Rustam Rahimgulov, default config)
Compiled: Jul 25 2016
echo: Free Memory: 3971  PlannerBufferBytes: 1232
echo:Hardcoded Default Settings Loaded
echo:Steps per unit:
echo:  M92 X80.00 Y80.00 Z4000.00 E836.00
echo:Maximum feedrates (mm/s):
echo:  M203 X500.00 Y500.00 Z2.00 E25.00
echo:Maximum Acceleration (mm/s2):
echo:  M201 X9000 Y9000 Z100 E10000
echo:Acceleration: S=acceleration, T=retract acceleration
echo:  M204 S300.00 T3000.00
echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s),  Z=maximum Z jerk (mm/s),  E=maximum E jerk (mm/s)
echo:  M205 S0.00 T0.00 B20000 X20.00 Z0.40 E5.00
echo:Home offset (mm):
echo:  M206 X0.00 Y0.00 Z0.00
echo:PID settings:
echo:   M301 P22.20 I1.08 D114.00
start
echo:Marlin1.0.2
ec  (nothing more here, output just ends)

, 👍7

Обсуждение

Что произойдет, если вы вручную запросите температуру с помощью M105? Что такое "прошивка aprintr"?, @Tom van der Zanden

а) Насколько я сталкивался с термисторами 100K, они обычно дают близко около 100K резистивности при комнатной температуре. б) когда вы говорите о конфигурации.h, вы имеете в виду в Марлине? Вы убедились, что ваш Марлин находится в рабочем состоянии и не был испорчен во время передачи?, @kamuro

@kamuro Это первый раз, когда я работаю с arduino, но, как я знаю, arduino ide использует **avrdude** на Linux для загрузки прошивки на чип, а затем он читает ее, чтобы проверить, что файл *hex* был правильно записан в память. Однако в последнее время мне показалось, что прошивка загружается неправильно, я провел тест замыкания на себя, и все было в порядке. Как мне убедиться, что прошивка на чипе не повреждена?, @hrust

@kamuro 122k-это довольно нормальное чтение. Цифра 100K котируется на уровне 25C, 122k соответствует примерно 20-22c., @Tom van der Zanden

У вас есть термистор, подключенный к нужной розетке? Возможно, aprintr считывает температуру с другого контакта, чем настроен Marlin., @Tom van der Zanden

@TomvanderZanden Я тестировал термистор как в выводах t0, так и в выводах t1, и прошивка **APrinter** способна различать их и получать данные, однако это не относится к **Marlin**. В настоящее время термистор экстурдера подключен к t0, а стол-к t1., @hrust

Я имел в виду, что вы должны проверить, соответствует ли вывод, с которого marlin настроен считывать температуру (в pins_ramps_14.h) физическому выводу, к которому подключен ваш термистор., @Tom van der Zanden

@TomvanderZanden Как бы я проверил это физически? В **pins.h** это аналоговые контакты 0 и 1, @hrust

На рампах термисторы находятся на аналоговых выводах 13/14/15. Если булавки.h имеет 0 и 1 набор, то это *неверно*. Убедитесь, что у вас правильно настроена плата в Marlin., @Tom van der Zanden

@TomvanderZanden Существует так много переопределений temp_0_pin, что очень трудно проследить, правильно это или нет. Я могу найти линии, которые назначают аналоговые контакты 13 и 15 датчикам *bed* и *extruder*., @hrust

@Tom: приятно это знать, я тоже сейчас искал кривые, но не знал, что значения меняются так быстро. Ну, тогда, кажется, в моем доме было довольно жарко при температуре 25°C, когда я попробовал свои термисторы ;) **Джемма**: похоже, ты знаешь о arduino IDE больше, чем я. Я бы просто проверил, работает ли дисплей и правильно ли выполняются последовательные команды G-кода. Вы убедились, что плата в Marlin правильно настроена на RAMPS 1.4 (это идентификатор материнской платы 33)?, @kamuro

@kamuro Я надеюсь, что утверждение "МАТЕРИНСКАЯ ПЛАТА BOARD_RAMPS_13_EFB" в конфигурации**. h** один раз в начале достаточно, чтобы сообщить коду, что я использую RAMPS 1.4, @hrust

Последняя стабильная версия Marlin - 1.1.6: https://github.com/MarlinFirmware/Marlin/releases, @amra


1 ответ


1

В реальной прошивке Marlin все поддерживаемые платы принтера перечислены в файле "boards.h". Этот файл содержит следующие записи для RAMPS 1.4:

#define BOARD_RAMPS_13_EFB 33 // RAMPS 1.3 / 1.4 (Выходная мощность: экструдер, вентилятор, стол)
#define BOARD_RAMPS_13_EEB 34 // RAMPS 1.3 / 1.4 (Выходы питания: Extruder0, Extruder1, Bed)
#define BOARD_RAMPS_13_EFF 35 // RAMPS 1.3 / 1.4 (Выходная мощность: экструдер, вентилятор, вентилятор)
#define BOARD_RAMPS_13_EEF 36 // RAMPS 1.3 / 1.4 (Выходная мощность: Extruder0, Extruder1, Fan)

Наиболее распространенным вариантом может быть вариант . В этом случае вы должны установить значение, как показано в следующих строках.

#ifndef MOTHERBOARD
  #define MOTHERBOARD BOARD_RAMPS_13_EFB
#endif

Включить отображение

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Итак, пришло время внести коррективы, специфичные для вашего 3D-принтера. Сначала вы можете проверить настройку количества экструдеров примерно в строке 58. Большинство новичков 3D-принтеров могут начинать с одного экструдера, поэтому по умолчанию достаточно ввести значение "1".

// Это определяет количество экструдеров

#define EXTRUDERS 1

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

#define TEMP_SENSOR_0 -1
#define TEMP_SENSOR_1 -1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0

Определение для TEMP_SENSOR_0 определяет, какой тип термистора собран на горячем конце экструдера 1. Этот термистор должен быть подключен к первому входу датчика (см. Также схему подключения). Термистор для теплового стола должен быть подключен ко второму входу датчика. Тип термистора настраивается с помощью строки define 'TEMP_SENSOR_BED'. Если вы используете термистор типа EPCOS B57560G104F (100K, Beta = 4036), вы записываете значение "1" в соответствующее определение. Если у вас есть термистор со 100k и Бета = 3950, вы должны установить значение "60" в соответствующем определении. Таким образом, определения будут выглядеть, например:

Для EPCOS (Beta = 4036) на hotend и heatbed:

#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 -1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 1

Для Beta = 3950 на hotend и heatbed:

#define TEMP_SENSOR_0 60
#define TEMP_SENSOR_1 -1
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 60

,