Металл2024 Реклама
Метобр2024 Реклама

Хочу посоветоваться про установку тензодатчика (weight cell 100g и HX711) на дельта-принтер

Sanja
Идет загрузка
Загрузка
15.09.2016
26306
42
Техничка

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

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

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

13
Статья относится к принтерам:
Micromake D1
Это не пост о готовом решении, а, скорее, вопросы к коллективному разуму.

Имею дельта-принтер со встроенным механизмом автолевела. Радиатор экструдера прикреплён на подпружиненный кронштейн. Когда принтер опускает сопло в стол, кронштейн сдвигается и нажимает на кнопку концевика. Это позволяет принтеру выравниваться по любой точке печатной области в автоматическом режиме.
Хочу посоветоваться про установку тензодатчика (weight cell 100g и HX711) на дельта-принтер

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

Захотелось совсем избавиться от механических деталей в пробнике - чтобы радиатор монтировался на эффекторе жёстко. На просторах Алиэкспресс наткнулся на дешёвые тензодатчики и понял, что это то, что надо.

Для тех, кто не в курсе - в основе принципа работы тензодатчика - плёночные резисторы. Если их тянуть, то они меняют сопротивление. Резисторы клеют на бока алюминиевого бруска и закрывают защитным слоем лака. Если один конец бруска держать, а на другой - давить, микроскопический изгиб будет зафиксирован резисторами. Датчики выпускаются на разные веса - на картинке датчик на 5кг, а я купил самый мелкий номинал - на 100 грамм, он в полтора раза мельче:
Хочу посоветоваться про установку тензодатчика (weight cell 100g и HX711) на дельта-принтер
Едем дальше. Ардуиной такие микроскопические изменения тока на резисторах не поймаешь, нужен усилитель.

Китайская промышленность выпускает грошовые 24-битные усилители HX711, которые прекрасно справляются с этим делом.

Главная беда чипов HX711 с Али в том, что они работают со скоростью 0,5 Гц. Это неприемлемо - за две секунды принтер успеет вогнать сопло в стол. Но изучение даташита подсказало, что если соединить pin 'rate' чипа с плюсом питания, то скорость работы поднимается до 8 Гц:
Хочу посоветоваться про установку тензодатчика (weight cell 100g и HX711) на дельта-принтер
Чтобы это сделать, надо загнать иглу под предпоследнюю 'ногу' чипа (острая игла от шприца справилась лучше всего) и отпаять ногу острым жалом паяльника. Затем аккуратно отогнуть её и либо просто присоединить к соседней шариком припоя или соорудить перемычку из провода к VCC.
Хочу посоветоваться про установку тензодатчика (weight cell 100g и HX711) на дельта-принтер
После всех этих манипуляций я собрал 'стенд'. С заделом на будущее я паял провода не к плате, а через 'телефонный' разъём RJ11, чтобы можно было разобрать-собрать. Провода тензодатчика цепляем так:

красный => E+

чёрный => E-

зелёный => A-

белый => A+

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

Для тестов пока взял Arduino Nano. Pin 'DT' цепляем к пину 'А1' Ардуино, пин 'SCK' - к пину 'А0'. Для HX711 есть 2 библиотеки, навороченная github.com/bogde/HX711 и простая, как валенок, https://github.com/aguegu/Arduino - на ней и остановился.
Хочу посоветоваться про установку тензодатчика (weight cell 100g и HX711) на дельта-принтер
Набросал простейший код:/*

* Library: https://github.com/aguegu/Arduino

*/

// Hx711.DOUT - pin #A1

// Hx711.SCK - pin #A0

#include 'hx711.h'

Hx711 scale(A1, A0);

float curr = 0;

int normalizedValue = 0;

void setup() {

Serial.begin(115200);

}

void loop() {

curr = scale.getGram();

normalizedValue = map(curr, -9999, 9999, -100, 100); // maps measurements to -100 to 100 range.

Serial.print(curr, 1);

Serial.print(' mg --> ';);

Serial.print(normalizedValue);

Serial.println('';);

delay(0);

}


Загружаем скетч в Ардуину и убеждаемся, что всё ещё работает медленно. Чешем репу и лезем в библиотеку.

Там видим строку:



long averageValue(byte times = 32);


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

Следующие шаги:

- прикрутить в цепь оптрон. Цель - полностью имитировать работу концевика, никак не трогая плату принтера.

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

- взять 3d-модель эффектора и передизайнить под габариты тензодатчика. Габариты известны, единственая засада - насчёт диаметра крепёжных отверстий китайцы наврали, их придётся рассверливать под честный М3:

Load Cell Size - 47 x 12 x 6mm / 1.9' x 0.47' x 0.24' (L*W*T)

Thead Hole Diameter - 3mm /0.12'

Hole Center Distance - 40 x 6 mm / 1.6' x 0.24' (L*Max.W)

Пожалуйста, коллективным разумом покритикуйте меня или ткните носом, если я что-то серьёзно упустил, пока я принтер ещё не раскурочил. Спасибо!

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

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

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

13
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама