Автоуровень с тензодатчиком на дельте Micromake D1
При обдумывании идеи внедрения тензодатчика в конструкцию принтера, думаю, как и многих, меня удручала примерно такая мысль - любой из доступных на рынке тензодатчиков подходит голове принтера как козе баян, или коню пальто.Вроде функционально, но...
Но, ничто не должно мешать сделать датчик самостоятельно, это почти легко.
Из материального нам потребуется:
- 4 тензорезистора X173-02 с алиэкспресса, или аналогичные.
- Микросхема АЦП HX711.
- Контроллер Arduino nano, или любой другой ардуино.
- Модифицированный держатель радиатора экструдера: http://www.thingiverse.com/thing:2228612
- Немного проводков, клея и аренда паяльника.
- Скетч Arduino nano: https://github.com/VanMo/HX711_Autolevel
- Модифицированная прошивка Repetier для платы принтера Micromake D1: https://github.com/VanMo/Repetier
- Предвкушение победы.
Схема
Схема подключения тензодатчика к ардуино уже много раз обсуждалась, подробно расписывать не буду. Можно почитать здесь и здесь.Тензорезисторный мост подключается к микросхеме HX711. HX711 запитывается от Arduino и связывается с ней по i2c. Arduino запитывается от платы принтера. Один дискретный сигнал (D13) идет из Arduino в контроллер принтера, имитируя концевик автоуровня. Второй обратный дискретный сигнал тянем из контроллера принтера в Arduino на пин D12. Он необходим для подачи сигнала начала измерения.
Предполагалось, что вывод A3 на AUX1 не зря так обозначен и должен идти напрямую в микроконтроллер ATMega2560 именно как A3. Но на деле пришлось кидать соплю напрямую к микросхеме, иначе не работало:Возможно, это косяк только моей платы. Хотя, похоже там хитрая схема, болванка, обманка, замануха.
Датчик
Для изготовления самого датчика нужно изготовить деталь по модели: http://www.thingiverse.com/thing:2228612 Теперь я расскажу как правильно разместить на этой детали тензорезисторы, это важно.
Лёгкая теория. Тензорезистор может изгибаться в обе стороны, соответственно увеличивая, или уменьшая свое сопротивление. Это свойство используется для увеличения чувствительности тензодатчика. Резисторы клеятся к одной и той же пластине с двух сторон, чтобы при изгибе резистор с одной стороны сжимался, а с обратной стороны растягивался.
Здесь основное правило такое: противоположные резисторы моста размещаются с одной стороны пластины.
Обратите внимание на обозначение резисторов разными цветами, так будет проще ориентироваться. Вклеиваем 2 резистора как показано красными линиями на картинке ниже.Это могут быть R1 и R3, например. С другой стороны вклеиваем R4 и R2. R1 и R4 должны оказаться с одной стороны пластины, а R2 и R3 с другой.
Паять резисторы нужно аккуратно - они очень хрупкие. Припаянные проводки можно случайно оторвать вместе с потрохами, а перегрев может убить подложку.
Софт
Скачиваем скетч для Arduino nano: https://github.com/VanMo/HX711_Autolevel Еще, понадобится библиотека: https://github.com/bogde/HX711 Для отладки нужно раскомментировать строку:#define DEBUG
Загружаем в Arduino.
Теперь можно проверить работу датчика. При воздействии на держатель, в терминале должны меняться показания. При этом, нужно чтобы на D12 был высокий уровень.
Вдоволь наигравшись с магическим предметом, можно уже настроить порог срабатывания. Он задается в следующей строке:
#define DETECT 3
При превышении порога, на выводе D13 будет появляться высокий уровень и зажигать светодиод на плате ардуино.
После настройки порога, закомментируем обратно:
//#define DEBUG
В модифицированной прошивке контроллера принтера (https://github.com/VanMo/Repetier) добавлено управление выводом A3. В нужный момент, когда требуется отслеживание касания, на него подается высокий уровень. Это сигнал для Arduino выполнить тарировку показаний датчика и непрерывно сравнивать показания с пороговым значением. Тарировку датчика непосредственно перед касанием необходимо делать потому что на датчик будет влиять много факторов. Например, изменение температуры, или натягивание проводов, подходящих к голове. Тарировка исключает влияние этих факторов.
В настройках принтера нужно задать параметр eeprom Z_PROBE_HEIGH, он определяет разницу между реальным расстоянием от стола до сопла с расстоянием, полученным от датчика калибровки. Это можно сделать в CURA, или любым другим способом. В нашем случае значение должно быть отрицательным, так как срабатывание датчика происходить по сути ниже уровня стола. Значение нужно подобрать экспериментально и оно сильно зависит от алгоритма 'зондирования'. Сейчас у меня Z_PROBE_HEIGH около -0.06 мм.
Микросхему HX711 желательно разместить прямо в голове, чтобы минимизировать расстояние до тензорезисторов. Arduino лучше расположить вблизи контроллера принтера.
Видео
Так это работает:
Еще больше интересных статей
Активная термокамера для Flashforge Adventurer 5M
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Умерли термисторы и концевик по y, creality ender 3 s1
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
GCODE: Основы
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
GCODE: Плюшки от ПавлушкиПосле написания предыдущей...
Комментарии и вопросы
5м от 5м про по сути наличием....
это отсеки под фильтры, которы...
откуда на прошке активная каме...
Посоветовали мне для корректир...
Образовалась пробка в тефлонов...
Всех приветствую. Принтером не...
Не могу получить каких-либо пр...