Как прошивка принтера может использовать данные колеса энкодера?
Я пытаюсь понять концепцию колеса энкодера, которое используется в качестве датчика нити, как показано ниже. Он может определять, движется ли нить, что делает его пригодным для обнаружения выбега нити и застревания нити, хотя он не сможет различить эти два события.
Источник: Thingiverse.com
Обнаружение биения нити легко понять, нить больше не проходит, поэтому колесо не вращается, когда должно.
Обнаружение застревания нити, нить не движется, когда должна, но как прошивка узнает, когда следует ожидать движения колеса энкодера? Сравнивает ли она некоторое время последнего перемещения с ожидаемым временем перемещения и некоторым пороговым временем?
В дополнение к вариантам с микропереключателем, таким как показанный в моем вопросе Как различить выбег нити и застревание нити с помощью датчика нити на основе микропереключателя в Marlin?. Я думаю, что вариант с колесом энкодера добавляет еще два типа обнаружения, которые вариант с микропереключателем не может обнаружить:
- Обнаружение обрыва нити: это, вероятно, единственный способ обнаружить редкий случай обрыва нити (после того, как она прошла через датчик), когда один или два микропереключателя, возможно, не сработают (поскольку нить все еще находится в датчике), что приведет к ложноотрицательному срабатыванию, когда принтер продолжает печатать, хотя должен остановиться.
- Обнаружение засорения сопла, засорение сопла также будет обнаружено, поскольку нить просто перестанет поступать.
Однако я думаю, что обнаружение «обрыва нити» и «засорения сопла» не будет отличаться от событий «застревания нити» или «выхода нити» для датчика колеса энкодера, поскольку в обоих случаях нить просто прекращает вращать колесо, когда от нее ожидается запуск.
Кроме того, под видео на YouTube об этом конкретном датчике пользователь 'hd-be7di' прокомментировал:
Этот датчик мог бы работать лучше, если бы он делился данными с экструдером. Он мог бы действовать как "колесо коррекции ошибок", сравнивая параметры экструдера с параметрами датчика, чтобы обнаруживать очень маленькие недоэкструзии (и переэкструзии тоже!) вместо того, чтобы действовать как простой выключатель.
Правильно ли я понимаю, или есть другие способы использования этих колес энкодера для 3D-принтеров? Как прошивка принтера может использовать данные колес энкодера, и как прошивка узнает, когда ожидать вращающегося колеса (с некоторой задержкой или порогом срабатывания, я полагаю), а также игнорировать отводы?
@Bob Ortiz, 👍0
Обсуждение1 ответ
Лучший ответ:
Хотя я ответил на ваш более общий вопрос о датчиках биения в разделе Какие механизмы обнаружения может использовать датчик накаливания?, я могу попытаться добавить в этот ответ больше подробностей, касающихся конструкции энкодеров.
Как указано в ответе по ссылке, да, прошивка (Marlin) должна сравнивать движение энкодера с ожидаемым движением экструдера. Это именно то, что вы почерпнули из видео на YouTube, поскольку контроллер имеет обе части информации. С моей точки зрения как инженера-аппаратуриста, я бы очень предпочел, чтобы эта функция находилась в прошивке, а не в любой другой части цепи печати, такой как Octoprint. Это сводится к скорости обнаружения и задержке.
Вращающиеся энкодеры полагаются на источник света, который активирует фотодиод. Колесо либо создает, либо прерывает свет, поэтому выходной сигнал переключается между включением и выключением по мере вращения колеса. Сразу же мы можем предположить несколько вариантов поведения:
- Частота переключения сигнала зависит от скорости колеса
- Колесо может остановиться в любом состоянии (включено или выключено)
- Конструкция зазоров между колесами будет влиять на скорость переключения
- Энкодер не может определить, в каком направлении движется колесо
Выходной сигнал энкодера имеет ограничения: если колесо движется слишком быстро, выходной сигнал может не успеть. Это происходит не потому, что свет медленный, а потому, что у фотодиода конечное время отклика. Кроме того, контроллер принтера также может не успеть достаточно быстро считывать изменения, чтобы быть точным. С другой стороны, очень медленное движение может оставаться в одном состоянии в течение длительного времени, если зазоры между колесами очень большие. В обоих случаях результатом является неидеальное представление фактического движения. Но считывание нити обычно направлено на обнаружение неисправности, а не на точное измерение того, что делает нить, поэтому целью является «достаточно хорошая» конструкция.
В Marlin целью является обнаружение некоторого движения нити в пределах указанного количества движения экструдера. По сути, указанное количество движения экструдера является минимальным, необходимым для того, чтобы увидеть хотя бы одно переключение энкодера. Я полагаю, что именно это и произошло между интеллектуальными датчиками BTT V1 и V2. Чем меньше зазоры на колесе (или больше колесо), тем выше разрешение при обнаружении движения и тем быстрее прошивка может обнаружить изменение. Пока контроллер и прошивка могут справляться с более частой частотой переключения, это улучшение. Идея о том, что он может действовать как «колесо коррекции», на мой взгляд, требует от датчика биения больше, чем ему нужно.
Когда экструдер движется, а энкодер возвращает какой-либо знак изменения, прошивка может предположить, что все движется вперед или назад, быстро или медленно. Это также означает, что прошивка будет игнорировать неподвижный энкодер, если он не запросил экструдер на движение. Необходимость соотносить экструдер с движением нити также означает задержку при обнаружении неисправности. Эта задержка может быть приемлемой в большинстве случаев, но она добавляет некоторый риск засорения колеса экструдера, которое необходимо очистить для полного восстановления. Это также то, где мы видим, что люди получают ложные срабатывания и нуждаются в отладке датчика.
Я думаю, что по мере того, как люди все больше увеличивают скорость печати, сами кодировщики, вероятно, смогут ее поддерживать. Контроллеры могут устанавливать некоторые ограничения на производительность кодировщика в зависимости от того, сможет ли прошивка справиться с каждым генерируемым переключением и сколько обработки потребляется для поддержания кодировщика. Или кодировщик станет еще умнее и отделится от контроллера. Если бы у кодировщика был собственный микроконтроллер и он мог бы отслеживать сигналы управления экструдером, то он мог бы вернуться к простому сигналу включения-выключения обратно на контроллер.
Спасибо, очень понятный ответ. Последнее предложение о собственном микроконтроллере, а также использование очень высокого разрешения и/или скорости заставили меня задуматься об использовании (уже подключенного) Pi. Мне просто нужно найти правильный способ его подключения либо с точки зрения программного обеспечения, либо с точки зрения оборудования. Главное, что мне пока неизвестно, — это знание того, когда ожидается движение экструдера, и определение правильной задержки. Я ожидаю, что в теории с помощью этого вы также сможете сделать обоснованное предположение о скорости движения нити, но не уверен в варианте использования для этого., @Bob Ortiz
Я видел запросы функций Marlin, требующие сигналов экструдера. Но я бы рассмотрел возможность прямого отслеживания сигналов двигателя с помощью встроенного датчика тока, похожего на этот проект: https://vector3d.shop/products/stepper-motor-analyser Если ваш pi работает на octoprint, я бы был осторожен с нагрузкой обработки и тщательно протестировал., @BrChan
Этот Stepper Motor Analyzer очень интересен, я не знал о его существовании, спасибо за предложение. Pi 4 обычно работает с загрузкой ЦП намного ниже 10% при нормальной печати., @Bob Ortiz
- Какие механизмы обнаружения может использовать датчик филамента?
- Как подключить самодельный датчик биения нити к плате Creality v4.2.2?
- Как распознать обрыв и застревание нити с помощью датчика нити на основе микропереключателя в Marlin?
- Как отключить датчик нити?
- Как прошивка Marlin использует данные датчика ширины нити для управления потоком?
- Насадка 3d-принтера трется о предыдущие слои
- Будет ли 3D-печать нескольких копий одновременно экономить время?
- RAMPS 1.4, 1.5 или 1.6?
Обнаружение обрыва нити, цитирую: «поскольку нить все еще присутствует в датчике», не обязательно, старый PLA часто рвется на катушке, поэтому вы столкнетесь с концом материала., @0scar
Ах, я написал это с точки зрения обрыва после датчика, который я испытал только один раз. Но обрыв до датчика действительно будет определен как выбег. Спасибо, что указали на это., @Bob Ortiz
Никаких проблем, особенно PLA, а тем более вариант 2,85 мм очень хрупкий, если его неправильно хранить, и склонен ломаться возле катушки., @0scar