Тензодатчик для автоуровня.

TYU TYU
Идет загрузка
Загрузка
29.09.2020
4591
106
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

29
Статья относится к принтерам:
ZAV-mini

Немного расскажу про эксперименты с тензодатчиком для автоуровня.

Ниже будет немного напилинга, промежуточные картинки и полученные результаты, но это не инструкция для повторения, скорее материал для размышлений.

Желание делать автоуровень соплом возникло давно, часто дорабатываю принтер с разным успехом и обычный датчик типа bltouch мало того что постоянно мешался, так и любое изменение в хотенде приводило к необходимости калибровать сам датчик или переставлять крепление под разные конфигурации хотенда.

В очередной раз просматривая варианты датчиков для автоуровня пришла в голову мысль использовать датчик давления. 

Простые датчики типа DF9-40 отверг, т.к. они на мой взгляд не отличаются особой повторяемостью и точность, плюс в документации указано что они склонны "уплывать" если постоянно находятся под нагрузкой.

В наличии имелись дешёвые китайские карманные весы на 100 грамм, я их брал для подсчёта количества мелких деталей при фасовке по пакетам. Вот такие:

Т к все детали были уже расфасованы, весы валялись без дела, разобрав их, я извлёк наружу тензометрический датчик довольно удачной формы, в виде бруска с резьбовыми отверстиями.

Вооружившись классической платкой с HX711 я приступил к настольным тестам. Скачал более менее свежую библиотечку с гитхаба https://github.com/olkal/HX711_ADC

Подключив всё к ардуине я стал проверять что и как.

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

Следующим шагом было отключение усреднения (по умолчанию в библиотеке набирается несколько измерений и выводится усреднённый результат) и перепайка платы HX711 на высокую частоту работы, 80 Гц, Перерезал дорожку на плате и замкнул 2 ножки.

Ситуация радикально улучшилась и появилась надежда на успех.

Прикинув датчик к крепления хотенда я понял что он неплохо туда вписывается.

У принтера ZAV хотенд крепится простой плоской стальной пластиной, что даёт простор для творчества.

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

Получилось страшненько но быстро. Принцип крепления понятен по фото, один край хотенда крепится к неподвижной пластине, второй край хотенда крепится к датчику, а датчик закреплён на пластине:

В процессе экспериментов с датчиком, я снимал показания и записывал их в эксель. Для примера график давления при одном из первых тестов повторяемости, крестом отмечена примерная точка подачи сигнала с датчика. 

Порог был настроен на 100. Сразу видно что стол успевает ощутимо перескочить.

Результат M48 одного из хороших тестирований:

22:22:11.732 : Bed X: 52.00 Y: 51.00 Z: 0.06

22:22:13.644 : 1 of 10: z: 0.050Mean: 0.050000 Sigma: 0.000000 Min: 0.050 Max: 0.050 Range: 0.000

22:22:15.552 : 2 of 10: z: 0.050Mean: 0.050000 Sigma: 0.000000 Min: 0.050 Max: 0.050 Range: 0.000

22:22:17.463 : 3 of 10: z: 0.045Mean: 0.048333 Sigma: 0.002357 Min: 0.045 Max: 0.050 Range: 0.005

22:22:19.372 : 4 of 10: z: 0.048Mean: 0.048125 Sigma: 0.002073 Min: 0.045 Max: 0.050 Range: 0.005

22:22:21.281 : 5 of 10: z: 0.048Mean: 0.048000 Sigma: 0.001871 Min: 0.045 Max: 0.050 Range: 0.005

22:22:23.190 : 6 of 10: z: 0.050Mean: 0.048333 Sigma: 0.001863 Min: 0.045 Max: 0.050 Range: 0.005

22:22:25.098 : 7 of 10: z: 0.052Mean: 0.048929 Sigma: 0.002259 Min: 0.045 Max: 0.052 Range: 0.008

22:22:27.008 : 8 of 10: z: 0.052Mean: 0.049375 Sigma: 0.002421 Min: 0.045 Max: 0.052 Range: 0.008

22:22:28.917 : 9 of 10: z: 0.055Mean: 0.050000 Sigma: 0.002887 Min: 0.045 Max: 0.055 Range: 0.010

22:22:30.825 : 10 of 10: z: 0.057Mean: 0.050750 Sigma: 0.003544 Min: 0.045 Max: 0.057 Range: 0.012

22:22:30.826 : Finished!

22:22:30.827 : Mean: 0.050750 Min: 0.045 Max: 0.057 Range: 0.012

22:22:30.829 : Standard Deviation: 0.003544

Были и менее удачные и несколько раз датчик вообще не срабатывал, стол врубался в хотенд...

Далее я стал копать в сторону скорости срабатывания датчика. А то стол успевал подняться слишком высоко пока появлялся сигнал с датчика.

Выяснил что в библиотеке HX711 используются стандартные медленные процедуры digitalread() и digitalwrite().

После готовности данных с АЦП срабатывает прерывание и запускается процесс чтения, нужно послать 27 импульсов и 27 раз считать сигнал, digitalread() и digitalwrite() занимали очень много времени, пришлось их заменить на битовые операции с портом PORTD | B00100000;  bitRead(PIND,3);

Это радикально снизило задержку между возникновением прерывания о готовности данных и выдачей сигнала срабатывания датчика. 

Следующим шагом я приступил к чтению даташита, там я нашёл пункт который почему-то не встречал в описании аналогичных конструкций в гугле, скорость работы HX711 можно легко поднять с 80 Герц до 140 Герц,  просто установив туда внешний кварц.

When using external clock or crystal, output data rate is directly proportional to the clock or crystal frequency. 

Перерезал ещё одну ножку на плате и запаял туда 20 мГц кварц.

Заодно припаял керамический конденсатор по питанию с тыльной стороны платы, что уменьшило шум АЦП. На результатах это не сказалось, но графики стали чуть более красивые в районе нуля, шум -7 +7 сократился до -1 +1

При 140 Гц  количество точек по прежнему не в избытке, но фронт стал более осмысленный и получилось ускорить срабатывание датчика. Синий - 80Гц, красный - 140 Гц. Графики в разном масштабе.

Следующим этапом пришло понимание крайне высокой чувствительности датчика. Датчик реагирует даже на дуновение ветра. У меня боуден и в разных положениях оси Х трубка торчащая из хотенда сгибается под разным углом, по разному давя на фитинг и это уже влияет на показания датчика. Настолько что колебания боудена во время движения по осям приводили к срабатыванию датчика. Пытался как-то программно отлавливать фронт сигнала и фильтровать мусор, но любое программное решение требовало сбора данных с нескольких точек и не позволяло реагировать мгновенно.

Пришлось активировать в прошивке пробинг по соленоиду #define SOLENOID_PROBE

И завести в датчик дополнительный провод от контроллера. При калибровке контроллер генерирует сигнал для соленоида, сигнал приходит в датчик и датчик обнуляется. То есть перед каждой точкой пробы происходит калибровка датчика для нивелирования перекоса трубки боудена.

В итоге после всех доработок получился вполне рабочий вариант.

Для примера 4 последовательные пробы стола из 9 точек.

21:08:23.913 : Bilinear Leveling Grid:

21:08:23.914 : 0 1 2

21:08:23.915 : 0 -0.704 -0.192 -0.294

21:08:23.916 : 1 -0.019 -0.015 -0.174

21:08:23.917 : 2 +0.127 +0.116 -0.035

21:16:17.736 : Bilinear Leveling Grid:

21:16:17.738 : 0 1 2

21:16:17.739 : 0 -0.714 -0.197 -0.301

21:16:17.739 : 1 -0.014 -0.006 -0.171

21:16:17.741 : 2 +0.119 +0.101 -0.032

21:17:00.647 : Bilinear Leveling Grid:

21:17:00.648 : 0 1 2

21:17:00.649 : 0 -0.721 -0.205 -0.300

21:17:00.650 : 1 -0.014 -0.006 -0.172

21:17:00.651 : 2 +0.152 +0.111 -0.043

21:19:43.254 : Bilinear Leveling Grid: 

21:19:43.256 : 0 1 2

21:19:43.257 : 0 -0.720 -0.205 -0.291

21:19:43.257 : 1 -0.012 -0.007 -0.166

21:19:43.259 : 2 +0.151 +0.112 -0.034

При этом из за медлительности датчика и контроллера, происходит перелёт кровати примерно на 0.1 мм. То есть после срабатывания датчика надо опустить кровать на 0.1 мм чтобы под соплом пролазила бумажка.

Дальше в планах использование китайской микросхемы CS1237, которая выдаёт данные с частотой 1.28kHz, Возможно получится ускорить срабатывание датчика. 

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

Идея подсмотрена у китайского Creality. На видео с 7 минуты хорошо видно место крепления плёночного тензодатчика под белой каплей герметика на кронштейне хотенда.

Исходные коды датчика не выкладываю, там всё примитивно, заменяем в библиотеке медленные функции digitalread() и digitalwrite() на более быстрый аналог или битовые операции, а в скетче из примера к библиотеке включаю сигнал по превышению показания датчика if (i > 100)    {       PORTB = PORTB | B00100000;

Функциями калибровки датчика под реальный вес не пользовался, измерял в попугаях. Но можно используя вторые весы откалибровать датчик, чтобы знать сколько точно в граммах давит стол на сопло.

Из текущих преград к улучшению осталась невозможность использования прерывания для концевиков.

У меня TMC2209 и задействован software uart, который захапал под себя прерывания, marlin не даёт включить прерывание для концевиков при активном софтовом уарте. Хотя по факту UART используется однократно для парковки осей, а всё остальное время ничего не мешает использовать прерывания для других нужд.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

29
Комментарии к статье

Комментарии

29.09.2020 в 14:11
1

там 3мм... упс, пардон 2мм пластина крепления радиатора из алюминия прекрасно работает. итого минус 13.5гр от стальной.

И даже 4мм стеклотекстолит, еще легче.

29.09.2020 в 15:00
0

А смысл? Вес подвижной части в сборе за 100 грам переваливает, 13 грамм роли не играют, лучше уж пожёстче крепление сделать чтобы при движении по Y оси хотенд не клевал соплом по инерции.

29.09.2020 в 15:51
0

10% немало. не клюёт, даже с тяжёлым латунным кубиком.

впрочем хозяин барин

29.09.2020 в 18:55
0

Я даже директ ставил, 300 с лишним грамм и проблем лишнего веса не ощущал, а 13 грамм это пшик.

29.09.2020 в 16:55
0

Из текущих преград к улучшению осталась невозможность использования прерывания для концевиков.

Да проблема еще та, для решения необходимо использовать аппаратный УАРТ, 

Можно ссылку на  cs1237 и на счетверенный пленочный тензо.

29.09.2020 в 19:15
0

Нашёл с трудом, не очень популярный товар. Товар ещё не получил так что рекомендовать не могу.

АЦП: https://aliexpress.ru/item/4001221400172.html

Мост: https://aliexpress.ru/item/4000138317363.html

30.09.2020 в 05:33
1

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

30.09.2020 в 08:49
0

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

Вот для примера счетверённый мост на одной стороне. К сожалению приклеен намертво, пришлось заказать отдельно.

30.09.2020 в 10:53
0

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

Дошло до меня, как такой датчик работает :-) Там разная ориентация проводников в плечах. Поэтому, реально в мосте работают только два датчика, проводники которых ориентированы вдоль балки, другая пара не работает и используется только для температурной компенсации моста. Но чувствительность такого моста в два раза ниже.

30.09.2020 в 11:10
0

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

Я брал как на первой картинке.


30.09.2020 в 12:14
0

Кстати на ютюбе есть ролик от hbm как правильно клеять тензорезисторы на болванку.

30.09.2020 в 14:35
0

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

Максимальные деформации именно под углом 45. 

06.10.2020 в 18:42
0

Под 45° - для измерения крутильных или сдвиговых деформаций.

На ваших картинках верхний мост может воспринимать нагрузки типа растяжения-сжатия и изгиб с чувствительностью 2/4 от максимально возможной в любой из двух осей, а нижний тензомост - только растяжение-сжатие, но зато мост работает полностью 4/4 (но только вдоль одной оси и без термокомпенсации).

06.10.2020 в 18:36
0

Да, можно и так. Только в такой схеме работают только 2 тензорезистора, а другие 2 служат для балансировки моста (ну еще для термокомпенсации, но тут она по-боку). Чувствительность такого моста соответственно будет 1/2 , в отличии от нормального моста, когда  два тензорезистора сверху, а два снизу.

29.09.2020 в 16:59
3

происходит перелёт кровати примерно на 0.1 мм. То есть после срабатывания датчика надо опустить кровать на 0.1 мм чтобы под соплом пролазила бумажка.

так это как раз и есть  истинный ноль. Для корректировки "перелета" есть в настройках "типа офсет датчика" который учитывается прошивкой.

29.09.2020 в 18:57
2

Я понимаю, просто это к тому что механика принтера на эту величину деформируется. что в общем-то не очень хорошо.

29.09.2020 в 17:26
1

Всё новое - это хорошо забытое старое.
Вопрос уже давно поднимался...

https://3dtoday.ru/blogs/pororothepinguin/sensor-auto-levelbased-pressure-sensor-for-rostock

...и более того - был успешно решен (рабочий скетч в комментариях)

29.09.2020 в 19:07
0

Об успешности там даже речи не идёт. 

Точнее, датчику на срабатывание надо 120мс, за это время сопло пройдет 4мм вниз. А дальше все зависит от прочности конструкции и силы моторов. Один раз таким образом у меня получилось разбить стекло на столе.

А если область печати будет меньше реальной, то от заданной области печати сопло будет идти со скоростью в 2 раза меньше скорости калибровки, и ждать окончания процесса придется очень долго..

Даже 140 герц очень мало для приличной быстрой калибровки. 


В библиотеке которая используется так же как и везде сделано медленное чтение через  ногодрыг,   digitalWrite(CLOCK_PIN, HIGH);     digitalWrite(CLOCK_PIN, LOW); что тоже даёт задержку чтения. 

30.09.2020 в 04:27
0

У меня такая балочка работает на ура. Правда контроллер под нее отдельный.

30.09.2020 в 08:55
0

Какое усилие на стол получается?

По опыту использования нет наклёпа на носик сопла?

30.09.2020 в 09:13
0

Усилие очень малое. Его можно в девайсе регулировать. А по факту сейчас Примерно такое, если взять в руки пинцет и губкой легонько коснутся к стеклу. На сопле никаких наклепов нет.

30.09.2020 в 09:22
0

На какой скорости пробинг делаете? Я когда решил сокращать время срабатывания исходил из того что при частоте опроса датчика 80 Гц и скорости движения 10 мм/с, между двумя замерами с датчика ось успевает проехать 0.125мм. 

30.09.2020 в 10:24
0

У меня по скорости вот такие параметры :

>XY_PROBE_SPEED         6000    # X and Y axis travel speed (mm/m) between probes
>Z_PROBE_SPEED_FAST         50    # Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
>Z_PROBE_SPEED_SLOW         50    # Speed for the "accurate" probe of each point bl touch

У меня используется ads1231 c частотой выборки 80 герц. Я думаю , что и hx нормально должна работать. У нее проблема с дрейфом нуля. А я перед каждым измерением делаю коррекцию нуля. Поэтому он и не убегает. Это для обычных весов с этими микрухами есть проблема, а для 3д принтера в самый раз. У меня делается автообнуление через секунду после того, как ось начала опускаться. Истользую сигнал дир по зет. В это время никаких внешних помех нет. 3 д принтером пользуюсь как обычным принтером- послал на печать и пошел спать. Печатаю только абсом на чистом стекле. Кстати, толщина слоя стала четкой после установки в принтер по оси зет винтов с шагом 2мм. Желаю Вам успехов. Вы движетесь в правильном направлении.


30.09.2020 в 10:42
0

Да дрейф приличный между пробами, поэтому я тоже делаю обнуление, марлин с опцией #define SOLENOID_PROBE шлёт импульс перед каждой пробой, по импульсу и обнуляюсь. Но он мне не очень нравится т.к. например для нескольких последовательных проб в одной точке обнуление происходит только в первый раз. 

30.09.2020 в 10:49
0

Так используйте дир в качестве критерия к обнулению.

30.09.2020 в 10:52
0

Спасибо, попробую, раньше в голову не приходило.

03.10.2020 в 17:32
0

Фиг там плавал, не вышло DIR использовать.

Сначала опрашивается концевик, а потом выставляется DIR чтобы стол поехал. Если датчик  вышел за предел и сработал, то плата видит сработавший сигнал и даже не пытается выставить DIR и двигать мотором.

03.10.2020 в 19:09
0

Вы перед командой обнуления или автокалибровки поднимите зет на чуток вверх. Дир станет в 1. А потом кидайте команду. При переходе с 1 в 0 выжидайте 1 сек и делайте обнуление тензо. Все очень просто и все работает.

03.10.2020 в 21:17
0

Пробинг кровати происходит автоматически, G29 и вперёд тыкать по точкам. Между точкам насколько я знаю команд никаких не всунуть.

04.10.2020 в 04:03
0

Все правильно. G29 поднимает сопло и опускает. Анализируйте дир и вовремя обнуляйтесь.

04.10.2020 в 08:53
0

Сенсор в прошивке опрашивается перед тем как сопло начинает опускаться, сначала опрашивается сенсор, если сигнала с сенсора нет - выставляется сигнал DIR. По этому привязка к DIR для меня бесполезна, если ноль уже уплыл и датчик уже triggered.

04.10.2020 в 09:37
0

Так сделайте все на отдельном микроконтроллере. В чем проблема то? Вам нужно получить рабочее решение? или ..........

04.10.2020 в 10:31
0

Проблема в том что нет идей как делать калибровку перед каждой точкой автоуровня. Что сигнал DIR, что сигнал соленоида, не решают проблему полностью. Оба этих варианта бесполезны если ноль сдрейфовал в плюс и датчик выдаёт сигнал срабатывания.

04.10.2020 в 11:08
0

Я Вам рассказал как у меня сделано. Это даже не идея. Это просто рабочее решение. Все работает безотказно. Что в этом бесполезного. А ноль дрейфует не так быстро как Вы думаете.

04.10.2020 в 11:23
0

Между двумя пробами на расстоянии в 50 мм ноль дрейфует настолько сильно что датчик уже срабатывает не касаясь стола. У меня крайне чувствительный датчик, я даже покачивающиеся провода от хотенда вижу на графике данных с датчика. 

04.10.2020 в 11:34
0

Так задайте уставку уровеня срабатывания побольше и не будет он сам от себя срабатывать.

04.10.2020 в 11:37
0

Цель исследований сделать более быстрый и более чувствительный датчик, грубый и медленный датчик уже и так есть =)

04.10.2020 в 11:41
0

Ну как говорится хозяин-барин.))))))

04.10.2020 в 17:16
0

Это не барство, это безжалостная физика консольного стола. Чем дальше от валов сопло давит на край кровати, тем сильнее кровать прогибается. Чем нежнее касаешься кровати тем точнее результат.

04.10.2020 в 17:25
0

Про прогиб валов я в курсе. Вот поэтому и калибрую стол по 16 точкам. Этого достаточно что бы получать по всей площади одинаковый по толщине слой.

04.10.2020 в 17:40
0

У тебя принтер с принципиально другой механикой, эта проблема тебя не касается и ты на своём принтере с ней не сталкивался.

У меня консольный стол, когда сопло на дальнем крае, то стол прогибается, когда сопло близко к подшипнику, стол не прогибается. Чем сильнее давишь соплом тем сильнее будет эта разница. Поэтому давить надо с минимально возможным усилием.

ЗЫ

У меня стол на 12 мм валах, они не прогибаются, по ним ходить можно, гнётся именно сам стол т.к. он из тонкого листа железа.

04.10.2020 в 18:08
0

Я больше с Вами спорить не буду. Успехов.))))

30.09.2020 в 09:02
0

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

30.09.2020 в 17:05
0

Не понимаю, на каком основании вы говорите "Об успешности там даже речи не идёт". Еще как идет - у меня эта конструкция работает успешно уже полтора года. Я вообще не забочусь о положении стола - так, на глазок выровнял, и на этом достаточно (а стол приходилось за это время несколько раз снимать и ставить - то кабель подогрева переломался, то ремень порвался).

30.09.2020 в 17:25
0

Там прям в посте написано, датчик пролетает 4 мм за время срабатывания в 120 мс. Это не кажется мне хорошим результатом.

Я получил время срабатывания на порядок ниже и мне кажется это по прежнему слишком много. При скорости оси в 10 мм/с например сопло пролетает 0.1 мм. Я бы хотел пробинг делать на 30 мм/с оставаясь в рамка перелёта на 0.1 мм

30.09.2020 в 17:29
1

Это у топик-стартера все "пролетает", потому что он сильно усложнил конструкцию и напихал туда ненужной логики.

А вы почитайте вот этот пост: https://3dtoday.ru/blogs/pororothepinguin/sensor-auto-levelbased-pressure-sensor-for-rostock

Там другая реализация, и она прекрасно работает (да, не сразу хорошо получилось, но в итоге правда была найдена - в комментариях найдете)

30.09.2020 в 17:10
0

До меня это делали (см. На сайте тензо и cmd) и я это делал. 

Но стабильности добиться пока не удалось. В основном это связано с изменением характеристик тензо элементов в любой ипостаси при изменении температуры окружающей среды (нагрев экструдера, термокамеры и пр.). Но исследования интересные. В частности я не встречал тензомосты на одной подложке. Теоретически их использование может упростить монтаж и общий конструктив каретки. Положил в закладки. Планирую тоже вернутся к этой теме. И ещё. Надо реализовывать подключаемый при необходимости датчик. И.е. записывать его только когда системе нужна от него информация. Как у БЛ тача. Можно использовать для этого штатные разъемы со вы ременных "матерей". Удачи.

30.09.2020 в 17:44
0

Да, датчики дрейфуют, это я сразу ощутил, потрогал каретку руками и уже датчик вывалился в перманентное ON, ноль сместился дальше порога срабатывания. Но идея в том чтобы обнулять их строго перед срабатыванием. Перед каждой точкой пробы, 10 проб - 10 раз обнулиться. В коротких промежутках там только шум АЦП который особо не влияет.

Вот для примера график показаний с датчика, тут около 2 секунд между двумя "тыками". Дрейф не заметен, разве что шум в районе 1-2 единицы


29.09.2020 в 18:08
0

деванька в видео славная. плюсую.

хорошо откалиброванный стол по бумажке - работает.

01.10.2020 в 11:29
0

Да. До смены сопла/нотэнда. Я сам пока на простом концевике у малого принтера сижу. При поле печати 200х200 и 4 мм стекле даже как-то смешно карту неровностей строить. Однако на первом большом принтере 300х300 карту уже порой хочется. Особенно если как я печатать без рафта соплом 0,2 и слоем 0,1мм. При больших деталях добиться ровного первого слоя уже не легко. Особенно когда стол прогревается. Поэтому решение - сопло/хотэнд есть концевик по-прежнему актуально по многим аспектам.  

30.09.2020 в 12:45
0

всё остальное время ничего не мешает использовать прерывания для других нужд

Не совсем так – это позволяет на лету менять токи драйверов.

30.09.2020 в 16:37
0

но я же не буду одновременно ждать прерывани при пробинге и менять ток, эти две фичи по идее не пересекаются по времени друг с другом. Было бы хорошо иметь возможность работать с прерыванием когда не пользуешься уартом.

Я на гихабе марлина читал что кто-то закоментировал ошибку при билде которая возникает из за уарта, но я не понял как именно это провернуть.

30.09.2020 в 16:52
0

Ну, тогда напишите им FR (Feature Request) на Гитхабе.

30.09.2020 в 18:04
0

Это я как раз и читал в FR с пожеланием разрешать прерывания временно, для парковки, там писано было что неудобно код править в прошивке, сделайте через конфиг, но его закрыли и не стали делать(((

30.09.2020 в 13:40
0

Спасибо за ссылку на пленочный тензомост, не знал, что такие бывают.

А в весах на 100 г действительно датчик на 5 кг ?

30.09.2020 в 16:20
0

Нет к сожалению, это просто красивая картинка с из гугла.

30.09.2020 в 14:41
0

А зачем замерять усилие? Можно просто фиксировать перемещение за счет размыкания контакта. Ловятся сотки. Вот тут про изготовление такого https://vk.com/@print8use-gcodeeditor 

p8u
30.09.2020 в 16:28
0

Почему я использовал тензодатчик? Просто потому что мне так захотелось. Но конечно есть множество других способов замера со своими плюсами и минусами, можно и соленоидом, и блтачем, и сервой с микриком, и оптическим датчиком, и пьезо датчиком, и наверняка как-то ещё.

А оси по X и Y у меня например вообще без датчиков, да да, безсенсорная парковка.

01.10.2020 в 00:16
0

Я, когда возился с тензодатчиком, стал использовать уменьшение помех от вентилятора обдува радиатора hotend при касании соплом стола в качестве критерия срабатывания. Срабатывание по усилию тоже оставил - как аварийную защиту.

Частота опроса около 100 Гц.

01.10.2020 в 01:00
0

стал использовать уменьшение помех от вентилятора обдува радиатора hotend при касании соплом стола в качестве критерия срабатывания.

Можно подробнее, не понятен смысл, как это взаимосвязано.

Спасибо.

01.10.2020 в 01:38
0

Тензодатчик механически связан с hotend (E3dV6), на радиаторе hotend висит вентилятор, вибрация вентилятора передается на тензодатчик - это помеха, ее период примерно 3 отсчета АЦП, на графике хорошо видно. Случайно обнаружил, что при касании соплом стола эта помеха резко уменьшается, решил попробовать отслеживать это уменьшение (для тензодатчика стоял отдельный микроконтроллер). В моем случае это оказалось эффективнее, чем определять срабатывание по увеличению усилия.

01.10.2020 в 17:58
0

Небольшое уточнение, правильно ли я вас понял.

Вы используете стандартную связку мост уинсона с HX711? Пока сопло движется к столу, МК получает данные с 711, которые есть помеха от вентилятора. Как только сопло соприкасается со стеклом, то уровень помехи резко снижается, МК это определяет как "ЕСТЬ КОНТАКТ". 

Уровень помехи стабилен в цикле измерения всего стола?

Вы делаете "обнуление" перед каждой точкой или один раз при старте калибровки стола?

Спасибо.

01.10.2020 в 11:53
0

ВОТ-ВОТ!!!. Я давно об этом думал - использовать TMC драйвера и  их возможности замерять сопротивление нагрузкам (sensor-less homing is enabled), т.е. организация механники без концевиков. Но меня смущал тот момент, что любая червячная-винтовая передача, являясь по сути редуктором, понизит чувствительность до такой степени, что никакая германская микроэлектроника с этим стабильно не справиться. Или тоже станет глючить. И вот вчера случайно натыкаюсь на такое видео - Смотрим тайминг 2:15. Дальше читаем и изучаем матчасть. У автора при конкретном драйвере выставлена "чувствительность" (порог срабатывания) 76 ед. из диапазона 0-255. Да. при разных драйверах (даже одной модели и серии) будут разные значения (погрешности номинала опорного резистора на драйвере). Но незначительные. Если это удастся повторить. То задачу можно считать решённой при конструктиве Z с использованием ШВП (винтовой пары) или даже "лифтовой" на ремнях. Сейчас сижу настраиваю SKR-PRO v1/1... :)

01.10.2020 в 12:32
0

Там у мужика есть второе видео где он в стол тычет и там если приглядеться то видно как стол прогибается.

Я сделал ток парковки Z - 50мА, это минимальный ток на котором Z вобще может двигаться не вызывая ложных срабатываний в надежде что при малом токе раньше наступит критичная нагрузка. Парковка нормально происходит при чувствительности 65. У меня на Z шаг винта 8 мм и то давит слишком мощно, консольный стол ощутимо прогибается. А вот с ремнями по горизонтали всё идеально.

01.10.2020 в 13:06
0

У меня на Z шаг винта 8 мм и то давит слишком мощно, консольный стол ощутимо прогибается.

Вот за это я и беспокоился. Но у мужика на видео на бруске даже вмятины не остаётся... У меня шаг ШВП 4мм - может грузовик поднять. :) Маленький...

01.10.2020 в 13:13
0

На 2:33 отлично видно как уходит стол. 

И потом он жалуется что пробинг с ошибкой произошёл, а ошибка похоже потому что сопло прогнуло стол слишком низко и сработал программный ограничитель по высоте.

p8u
01.10.2020 в 17:58
0

Такие варианты тоже имеют право на существование, однако в деталях сами знаете что (или кто?..)... Любое использование размыкателей, требует в разы больше амплитуды перемещения хотэнда, чем применение датчика давления. А любая "свобода" ведёт к "расхлябанности" и люфтам, что отражается на качестве и стабильности печати. Приходилось встречать на просторах Тудея довольно интересные решения с оптическим "концевиком" и подпружиненном радиатором на миниатюрных направляющих. Как говорится в известном фильме "туда тоже можно", но это усложняет механическую часть конструкции и требует изготовления уникальных деталей. Надо искать дальше.  

01.10.2020 в 19:55
0

Какие амплитуды? Так мкм измеряют. Да и подпружиненный каждый 99 из 100 принтеров. Так что свободу не остановить.

02.10.2020 в 10:18
0

Нет, это не размыкатель, это как раз безсенсорная проба. Когда в первом видео сопло в деревяшку жёстко лежащую на раме тыкается - всё отлично работает, а когда он поставил реальный стол, у него безсенсорная парковка перестала работать. Сопло упирается в стол и отжимает стол вниз.

01.10.2020 в 13:33
0

У меня впечатление, что на оси Z без концевиков (или без датчика автоуровня в том или ином виде) не обойтись.

Не получить с sensor-less homing необходимую чувствительность. На осях X и Y в принципе все равно, при каком усилии происходит парковка, лишь бы ничего не погнуть, сработает она на 0.5 мм ближе или дальше, ни на что не влияет. А для оси Z эти 0.5 мм запредельно...

01.10.2020 в 14:22
1

С tmc2209 безсенсорный хоминг может точно так же как и любой другой хоминг, работать с идеальной точностью по X Y и Z осям, т.к. при хоминге можно и нужно использовать супер крутую опцию #define TMC_HOME_PHASE. Я проверял часовым индикатором повторяемость парковки, она была ниже погрешности индикатора. Не каждый концевик даст такую повторяемость парковки.

Парковка происходит когда ось физически упирается в раму, поэтому ноль всегда в одном и том же месте, в точке касания рамы. Паркуется достаточно мягко, никаких последствий для рамы не будет.

Пробинг не работает в силу консольности стола, чем дальше от крепления стола тем сильнее пружинит, а вот для хоминга подходит отлично.

01.10.2020 в 14:31
0

Вы правы, с парковкой я погорячился - паркуемся в одной точке, даже если слегка прогибаем что-то, это можно учесть. А Вы не измеряли минимальное усилие, на котором устойчиво срабатывает ? 

02.10.2020 в 09:21
0

Ха-Ха!! Пока мы тут упражняемся китайцы вот как сделали:

Немного подробнее у коллеги Dagov в его замечательном вчерашнем обзоре очередного китайского "чуда". Во многом, кстати интересном.

Однако у коллеги надо спросить - голова устойчивая? Не колбасит её при боковых зацепах и прочих неприятностях...

З.Ы. Пошел за надфилем, кронштейн пилить...

02.10.2020 в 10:04
0

Ну да, я не зря видосик с сиськами вставил в конце, там обзор этого китайского "чуда". Хотенд висит на пластине из 2мм железа, не думаю что там есть какие-то отклонения при неприятностях.

Вобще это китайский принтер и по идее к нему должны продаваться недорогие запчасти там же на алиэкспресс, может быть скоро этот кронштейн можно будет просто так купить готовый.

Увидев что у китайцев это работает, я тоже заказал плёночный датчик и попробую сделать по аналогии.

02.10.2020 в 14:50
0

ХОРОШАЯ МЫСЛЬ!!!! Полезу искать. Если найду выложу ссылку. Хотя кто раньше, тот и выложит наверное. Главное работающую платку электронную наковырять. Уж больно неохота опять с ЛУТом и CMD деталями ковыряться. ATTINY там всякие 85-е прошивать...

01.10.2020 в 15:38
0

По Z высокое. Точно больше килограмма. Я паркуюсь упираясь подшипниками стола в дно принтера, поэтому на сам стол нагрузки нет. Но я пока не до конца с Z разобрался, есть ощущение что что-то неправильно настроено, т.к. при парковке Z вал мотора пальцами сложно остановить, а при парковке XY валы останавливается легко.

02.10.2020 в 00:30
0

"упираясь подшипниками стола в дно принтера" - не поясните, почему так ?

02.10.2020 в 10:09
0

Такова конструкция принтера, когда стол едет вниз и доезжает до конца, то подшипники упираются в дно. На фото стол почти в самом низу, ещё сантиметр и подшипники упрутся в дно. Изначально там конечно предусмотрен концевик оптический, но я пользуюсь безсенсорной парковкой и концевик не нужен.

02.10.2020 в 13:22
0

Понял. Я думал, что безсенсорный хоминг срабатывает, когда сопло в стол упирается. Т.е. сменил сопло - не надо уровень 0 по Z перенастраивать.

02.10.2020 в 14:53
0

Вообще-то речь об этом и идет. Просто в другую сторону тоже "автостоп" на драйверах тоже срабатывать должен. Он же "разновекторный" :)) 

02.10.2020 в 17:39
0

Тут ролик с хорошими видами на устройство тензодатчика. Принимаем к сведению.


03.10.2020 в 11:16
0

Офтопик: а никто не пробовал использовать Mechaduino(&co) https://tropical-labs.com/mechaduino/ в качестве замены концевиков и автоуровня? Каретка/Сопло упёрлось - пошли расхождения - есть касание...

PBF
03.10.2020 в 13:39
0

Если я Вас правильно понял, то вы предлагаете использовать иное решение (энкодер) того же "автостопа", который реализован в драйверах TMC2130/2208/2209/ and over реализуемых програмно через SPI или UART?

Так об этом уже писали в самом начале комментов (или в середине). Проблема в том, что при ШВП организации перемещения стола винт играет роль редуктора и сопротивление поступательному движению для мотора будет ничтожно мало для стабильной работы "автостопа".  Вы скорее раздавите стекло или погнёте стол, прежде чем остановится вращение энкодера. При слишком чувствительных настройках возможны ложные срабатывания. Например, при тяжелых моделях.

П.С. Интересно, а какова стоимость девайсов указанных в вашей ссылке? Спасибо.

04.10.2020 в 00:06
0

У меня большая дельта, соответственно, проблем с перемещением стола нет, но по трезвому размышлению пришёл к выводу, что точность получится +-пара соток в лучшем случае.

Стоит удовольствие 50$ от разработчика https://tropical-labs.com/shop/mechaduino-0-2-pcb/ , у китайцев есть куча клонов(легальных(Open Source)) втрое дешевле.

Драйверы TMC умеют отслеживать застревание по изменению потребления тока двигателем, но это хорошо работает только на маленьких скоростях, для безсенсорного хоуминга годится, а вот заметить, что принтер пропустил несколько шагов из-за того, что сопло на большой скорости зацепилось за какую-нибудь каплю, кажется, ни у кого не получается. Mechaduino  могло-бы решить эту проблему, потому к ним и присматриваюсь, но неохота отказываться от TMC2660  - а почему-то на рынке нет готовых клонов Mechaduino с драйверами TMC (хотя народ ля себя такое паяет).

PBF
04.10.2020 в 00:37
0

49*78=3822/3(китайский коэф)=1274 р - вероятная цена. Теперь понять что за это. Если при помощи этого узла мы сможем контролировать и восстанавливать недочеты печати появившиеся в результате пропущенных шагов, то цена более чем оправданная. Только видится мне, что софт и алгоритмы к этим девайсам не скоро появятся. Сообщество Марлин не успевает... :)))

ПС. А вам на большой дельте стол наверное удобно пьезопростукиванием калибровать? Вам мне кажется тенза противопоказана, из за шаровых креплений.

04.10.2020 в 01:12
0

По похожим приблудам есть статья комрада Dagov, почитайте. Полезность этих приблуд для 3Д печати практически равна "0". Статья 2-3 летней давности.

04.10.2020 в 01:23
0

Да это я в шутку сказал. Эти статьи я давно читал. Интересные. Мне вот тоже не пригодилось.

PBF
03.10.2020 в 16:02
0

В роли концевика по X и Y с ремнями наверно подойдёт. Можно настроить выход который срабатывал бы по заданной величине рассинхрона между заданным и фактическим положением.

А по Z с винтом сомнительно, слишком уж хорошо винт усиливает. Стекло лопнет быстрее чем появится рассинхрон.

04.10.2020 в 00:29
0

Согласен.

06.10.2020 в 18:48
0

ИМХО - перемудрили вы с тензодатчиком, не нужен он здесь.

В обычных станках ЧПУ 95% щупов и датчиков высоты инструмента - это подпружиненная площадка. Даже если станок промахнулся или датчик не сработал и въехали в нее, пружина простит это и остановит станок вторым грубым аварийным датчиком.

Главный чувствительный элемент можно сделать по разному. Самый распространенный до сих пор - это обычная механическая контактная пара (ну то есть банальная кнопка), но есть и оптические (светодиод/лазер+фотоэлемент) и датчики холла. И ни разу не встречал на тензорезисторах.

Но вы - молодец! Респект!

06.10.2020 в 18:52
0

Да, только тут речь не о тупом ограничителе рабочей зоны, а о построении карты поверхности с точностью в ну хотя бы в 50 мкм. И без возни со съемными или подъемными щупами (типа BLTouch). И что характерно, что-то подпружиненное именно в 3D-принтерах почему-то не особо котируется.

06.10.2020 в 19:02
0

У меня сын работает в фирме BLUM NOVOTEST фишкой которой являются вот такие измерители для деталей или инструмента для станков ЧПУ с помощью лазера. Однако, больше всего продаются обычные щупы, механические, на кнопках, которые тоже обеспечивают ±3 мкм. Вопрос качества механики, а не электроники. Для дома я бы применил датчики холла - и просто и надежно и  достаточно точно. До недавнего времени, когда еще не было холла, применяли индуктивные датчики. Все уже придумано до нас.

06.10.2020 в 19:05
0

Это совершенно другой мир. Надо за три копейки и надежно, а это значит без точной механики. С датчиком Холла, оптикой или кнопкой надо выдвижной щуп же, или подпружинивать всю голову или стол (последнее, кстати, сделано в X-серии Picaso). А тензодатчик в голове китайцы начали лепить в принтеры, которые стоят, наверное, целиком как один датчик для настоящего станка.

06.10.2020 в 19:13
0

Нет, не так.

На станках ЧПУ датчик располагается на столе в зоне с известными координатами (это если хочется автоматизировать процесс калибровки) или руками подсовывается под сопло в нужном месте (если стол сильно кривой, или работа идет не на столе, а в приспособлении).  Высота датчика (расстояние от подошвы датчика до момента срабатывания чувствительного элемента) - известно, определяется один раз в жизни и далее используется как константа. Далее запускается процедура калибровки. Высота Z, на которой сработал датчик минус эта константа - и вот она искомая координата в станочных координатах.

Не надо помещать датчик на голову станка, на ЧПУ так никто не делает.

06.10.2020 в 19:17
0

А я о том, как это можно сделать в принтере. Вы собираетесь каждую печать датчик подсовывать под сопло? Или как его размещать в столе, который обычно являет собой алюминиевую плиту, на которой стекло лежит?

06.10.2020 в 21:24
0

Именно так я и планирую сделать в своем принтере. Сейчас у меня на принтере бесконтактный датчик уровня, установленный на голове. У меня есть набор сопел, которые нужно иногда менять, а затем калибровать высоту. Поскольку у меня есть опыт работы на станках, то могу сказать - подобная схема не удобна, лучше переделать ее так, как я описывал ранее.

У меня есть подобный покупной датчик на фрезерном станке, но он тоже не идеальный. 

https://aliexpress.ru/item/1005001490059077.html

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

07.10.2020 в 08:27
0

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

    Тензо-, или пьезодатчики на столе, в этом плане несколько лучше. Однако, термостойкий тензодатчик довольно дорогостоящий. А пьезо- чувствительны к помехам.

06.10.2020 в 21:40
0

Датчик хола это BLTouch, он всем хорош, и точность там меньше сотки, но он всегда сдвинут относительно сопла. В моём случае 27 мм, поэтому я имею полосу в 27 мм с края стола которую невозможно протестировать.

С учётом что у меня стол всего 100 мм, почти треть стола недоступна для измерения.

06.10.2020 в 21:37
0

Проблема пробинга соплом в том что в хотенде нельзя делать подвижные части. Хотенд должен быть монолитен с кареткой, нельзя его подпружинивать.

06.10.2020 в 21:52
0

Подвижная часть - пятак в датчике высоты, а не в хотенде.

07.10.2020 в 18:49
0

Видео с работающим датчиком (вся информация здесь ):


07.10.2020 в 19:48
0

Гораздо интересней было бы узнать реальные цифры, время срабатывания от момента касания, какое давление на стол, стандартное отклонение при цикличной пробе. Вот это интересно узнать. Получилось ли у меня сделать не хуже чем у других.

У меня например 100 грамм веса дают прогиб стола в 0.05 мм, это уже на грани разумного. Консольный стол - зло.

А если посчитать время считывания АЦП при частоте в 140 Гц, прикинуть к скорости пробинга в 4 мм/с, получается ещё 0.03 мм неконтролируемой погрешности. То есть данные по всему столу будут плавать в пределах 0.08 мм, а это уже почти равно высоте слоя 0.1мм

08.10.2020 в 08:34
0

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

08.10.2020 в 06:18
0

    Вот это голова О_О У меня аж челюсть отвисла.. Вам не жалко пространства? :)

По существу, приятно видеть, что Ваше изделие реально работает

08.10.2020 в 08:32
0

Голова большая, потому что одно время там двойной экструдер стоял с качалкой (подобие проекта Dondolo). Но потом как-то нужда в двойном экструдере отпала, и конструкция была значительно упрощена.

Плюс там еще габариты определяются наличием тензодатчика. Он довольно большой (длинный), а конструкция реализована таким образим, что тензодатчик одним концом своей балки прикрепляется к каретке, а к другому концу его балки (свободно висящему) прикрепляется конструкция печатающей головки (сопло, хотэнд, радиатор, два вентилятора). При ударе соплом о поверхность стола балка датчика изгибается, а затем схема на HX711 и Arduino Pro Mini эмулирует замыкание концевика, и этот сигнал "скармливается" принтеру через штатный разъем подключения концевика.

Из неудобств: т.к. схема физически расположена на каретке, то пришлось протягивать дополнительные провода для подачи +5 вольт и массы на схему.

08.10.2020 в 10:15
0

    Я хочу себе на "повседневном" принтере сделать две головы, чтобы делать отпечатки с поддержками. Ну, или из прокрашенного пластика. В смысле, полностью прокрашенного, а не поверхностно, как в случае с цветным принтером с окраской струйной головкой с СНПЧ.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Two trees Bluer Plus обзор, или что могут китайцы?(ч. 2) Ребята, я в печали!!!

Обнимашки

Установка огромной линзы на ЧПУ

Новые смолы Formlabs

Ржавые якоря - первый опыт использования пигментов

Череп тролля из TES V: Skyrim