Задание 3d печати останавливается при выполнении последовательной команды

Я хочу получить доступ к рабочей температуре 3D-принтера. Я могу получить температуру с помощью последовательного подключения (благодаря помощи Деметриса (доступ к данным датчика температуры 3D-принтера через последовательное подключение)). Проблема, с которой я сейчас сталкиваюсь, заключается в том, что как только я даю команду, я получаю значения температуры, однако задание на печать останавливается. Есть ли способ обойти это? Я хочу получать значения температуры по мере выполнения задания на печать. ТИА!

, 👍2

Обсуждение

Я думаю, что было бы лучше, если бы вы вернули свою правку, так как вопросы о программировании не являются актуальными на этом сайте. "Почему мой принтер перестает печатать, когда я подключаюсь по последовательному каналу" - это разумный вопрос, но "Вот мой код и, пожалуйста, заставьте его делать то, что я хочу" - нет (это даже не было бы принято в программировании SEs)., @Tom van der Zanden

Спасибо, Том. Я не ищу от вас кодового решения, я просто имел в виду, что это именно то, что я делаю, и просто нуждался в точке в правильном направлении отсюда, так как новичкам немного трудно правильно интерпретировать все с самого начала. Я не прошу вас заставить его делать то, что я хочу, я могу сделать это сам. Я думаю, вы меня неправильно поняли. В любом случае, спасибо за помощь., @KDK


1 ответ


3

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

Последовательный интерфейс имеет строку, известную как запрос на отправку (RTS), которая указывает микроконтроллеру, что компьютер готов к приему данных. Когда порт закрыт, эта линия является ВЫСОКОЙ (что указывает на то, что компьютер не готов), а когда вы открываете последовательное соединение, линия становится НИЗКОЙ (что указывает на то, что компьютер готов сейчас), и переход от ВЫСОКОГО к НИЗКОМУ запускает сброс.

Есть несколько способов предотвратить это:

  • В программном обеспечении: отключить зависание при закрытии (HUPCL). Это предотвращает рост линии RTS после ее закрытия, позволяя впоследствии открывать ее, не вызывая сброса. Однако это не сработает с первой попытки (первое, первоначальное подключение все равно приводит к сбросу). То, как это настраивается, зависит от настроек вашего программного обеспечения / драйвера, но оно широко поддерживается.

  • В программном обеспечении: в первую очередь отключите линию RTS от СНИЖЕНИЯ. Я не уверен, что это легко возможно с обычными последовательными драйверами.

  • В программном обеспечении: измените свой рабочий процесс, чтобы всегда поддерживать соединение открытым, предотвращая связанный сброс.

  • В аппаратном обеспечении: на плате вашего принтера будет установлена некоторая схема, которая переводит линию RTS с ВЫСОКОГО уровня на НИЗКИЙ, чтобы вызвать сброс, обычно это реализуется в виде одного конденсатора между RTS и RST. RST обычно вытягивается на высокий уровень с помощью подтягивающего резистора (порядка 10 Ком или около того), и когда RTS переходит на низкий уровень, конденсатор на короткое время пропускает некоторый ток, вытягивая RST на низкий уровень. Один из способов предотвратить это - включить более сильный подтягивающий резистор, который преодолевает ток утечки, связанный с разряжением линии RTS. Отключение автоматического подключения к сети Serialconnection предполагает использование резистора 330 Ом между VCC и GND.

  • В аппаратных средствах: выпаяйте конденсатор, упомянутый ранее.


,

Спасибо тебе, Том, за твой очень подробный и информативный ответ. Я очень новичок в этой области. Я пытаюсь получить доступ к рабочей температуре 3D-принтера, используя простой код python и отправив команду M105. Не могли бы вы, пожалуйста, помочь мне с этим?, @KDK

@TomvanderZanden Я думал, что последовательная связь ограничена одним соединением между шиной и программным обеспечением. Если вы используете последовательное подключение для запуска принтера и пытаетесь выполнить команду, вы рискуете переопределить предыдущее подключение. Таким образом, потенциально лучшим вариантом было бы использовать программное обеспечение для нарезки с API-оболочкой. Что-то вроде движка Cura может работать следующим образом., @tbm0115

Я предположил, что он печатал с SD, в противном случае попытка доступа к последовательному интерфейсу во время печати была бы безумием, поскольку она действительно ограничена одним одновременным подключением в любой разумной реализации., @Tom van der Zanden