Съдържание:

Роботизираният дозатор с нишки за Arduino: 8 стъпки (със снимки)
Роботизираният дозатор с нишки за Arduino: 8 стъпки (със снимки)

Видео: Роботизираният дозатор с нишки за Arduino: 8 стъпки (със снимки)

Видео: Роботизираният дозатор с нишки за Arduino: 8 стъпки (със снимки)
Видео: Роботизированные дозаторы Smartplace E-380 и E-480 2024, Юли
Anonim
Image
Image

Защо моторизиран инструмент

Нишките на 3D принтери - обикновено почти здрави - се изтеглят от екструдера, докато ролката се поставя близо до принтера, свободно да се върти. Наблюдавал съм значителни разлики в поведението на материала в зависимост от нивото на използване, отнасящо се до 1 кг ролки с нишки. Нова (пълна) макара с нишка тече почти добре, но силата, приложена от екструдера, трябва да бъде относително уместна: теглото е най -малко 1,5 кг.

Двигателят на екструдера (в повечето случаи стъпало Nema17) има достатъчна мощност, за да свърши работата, но двете зъбни колела на екструдера изтласкват нишката към страната на горещия край, докато работят, събират частици от нишката поради приложените сили; това изисква честа поддръжка на екструдера, за да се избегне запушване на дюзите. Тези частици са склонни да се отделят и смесват с чистата нишка, докато се подава, което увеличава проблемите с дюзите и по -честото износване на дюзите; това се случва по -често с дюзи с диаметър 0,3 мм.

Когато ролката с нажежаема жичка е използвана наполовина или повече, нейните спирали стават по -малки и при някои условия на околната среда нишката се счупва твърде често. Дългите задания за печат стават по -малко надеждни и стресиращи; Не мога да оставя принтера да работи сам цяла нощ, без да го контролирам. По този начин се контролира подаването на нишки чрез двигателни фигури, решавайки редица проблеми.

Комплектът е достъпен на Tindie.com

Стъпка 1: Съдържание на комплекта

Съдържание на комплекта
Съдържание на комплекта
Съдържание на комплекта
Съдържание на комплекта

Комплектът включва всички 3D отпечатани части и механика за сглобяване на дозатора с моторизирани нишки. Вместо това има две допълнителни части: моторът и платката за управление на двигателя.

В моята настройка съм използвал 12 V двигател с редуктор McLennan, но всеки мотор с диаметър 37 mm може да се побере правилно в опората на двигателя.

Най -добрите изпълнения се постигат с TLE94112LE Arduino щит от Infineon (пълен преглед тук); тази платка за управление на DC мотор може да поддържа до 6 различни роботизирани комплекта дозатори едновременно.

Тествах цялата система както на Arduino UNO R3, така и на съвместимата с Arduino платка XMC1100 Boot kit от Infineon и системата реагира много добре и с двете платки за микроконтролер.

Използването на щита TLE94112LE се препоръчва, но не е от съществено значение. Всеки контролер с постоянен двигател за Arduino - включително вашия собствен проект! - може да работи добре с този инструмент

Комплектът е разделен на два комплекта компоненти, като две части са изградени, за да работят заедно. Базовата платформа ще поддържа ролката с нажежаема жичка, въртяща се върху четирите лагера на свободното движение. Основата е фиксирана към сензора за тегло, за да контролира въртящия се механизъм, задействащ активирането му, както и за наблюдение на условията на нажежаема жичка: тегло, метри и процент. Много информация, както и пълен набор от команди са достъпни от Arduino чрез сериен терминал.

Инструменти, от които се нуждаете

За да завършите монтажа, се нуждаете от здраво пластмасово лепило за някои части, отвертка и комплект винтове с шестостен.

Стъпка 2: Проектът и дизайнът

Проектът и дизайнът
Проектът и дизайнът
Проектът и дизайнът
Проектът и дизайнът
Проектът и дизайнът
Проектът и дизайнът

Този проект е третата еволюция на серията дозатори за 3D принтери с нажежаема жичка Преди няколко пъти създадох въртяща се основа, за да оптимизирам потока на нажежаемата жичка, когато се дърпа от екструдера за 3D принтер.

Вторият модел включва сензор за тегло за наблюдение в реално време с използването на нажежаема жичка с дъска Arduino. Последният проект включва автоматично освобождаване на нишката в зависимост от нуждите на заданието за 3D принтер. Тя се основава на виртуалното изменение на теглото, когато екструдерът започне да дърпа нишката. Това събитие задейства микроконтролера чрез сензора за тегло и моторизираната ролка с нажежаема жичка започва да освобождава няколко инча материал, след което се забавя и спира.

Компонентите са експортирани във формат STL и 3D отпечатани, след което са усъвършенствани и сглобени заедно. Създадох персонализирана поддръжка за подравняване на движещата се част към основата. По -дългата алуминиева релса също беше използвана за поддържане на Arduino и щита на двигателя, за да направи целия инструмент компактен и лесен за преместване.

Създавайки дизайна, следвах поредица от предположения:

  • Правейки автоматизирания двигател почти прост и лесен за възпроизвеждане
  • Намалете максимално броя на компонентите, които не могат да се отпечатват 3D, за да го направите
  • Намалете максимално напрежението, приложено към екструдера по време на печата
  • Използвайте евтина и лесна за програмиране платка за микроконтролер
  • Използвайте сензора за натоварване на теглото, за да държите под контрол разхода на нишките и подаването на нишки Управлявайте шума от околната среда, който пречи на мерките за тегло на нажежаемата жичка

Това е резултатът, който постигнах.

Стъпка 3: Сглобяване на основата

Сглобяване на основата
Сглобяване на основата
Сглобяване на основата
Сглобяване на основата
Сглобяване на основата
Сглобяване на основата

Първата стъпка е сглобяването на основата със сензора за тегло.

  1. Поставете малката тръба на лагерната ос в лагерния отвор
  2. Поставете двата разделителни диска отстрани на лагера
  3. Въведете компонентите вътре в опората на лагера с размер "U", като подравните отворите
  4. поставете шестостенния винт от едната страна и шайбата и гайката от другата страна, затваряйки гайката без прекалено много усилия

Трябва да повторите операцията и на четирите опори на лагера. След това тествайте монтажа: лагерите трябва да се въртят свободно.

Сега фиксирайте с шестостенните винтове четирите опори на лагера на горната основа с четирите регулиращи отвора. Подравнете опорите на лагерите, за да ги поддържате успоредни. Регулирайте разстоянието в зависимост от ширината на ролките с нажежаема жичка.

Следващата стъпка е сглобяването на сензорната лента за тегло, като държите долната и горната основа заедно. Сензорът за тегло има два различни шестостенни винта от двете страни и трябва да го ориентирате така, че етикетът за максимално тегло да се чете, когато основата е правилно позиционирана. Долната основа има два допълнителни странични отвора за фиксиране на A/D усилвателя на сензора за тегло. Усилвателят, базиран на IC HX711, ще бъде захранван и свързан към платката Arduino чрез четирите проводника, както е показано в прикачения лист с данни за сензора.

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

Първият компонент е настроен!

Стъпка 4: Сглобяване на частите на двигателя на макарата

Сглобяване на части на двигателя на макарата
Сглобяване на части на двигателя на макарата
Сглобяване на части на двигателя на макарата
Сглобяване на части на двигателя на макарата
Сглобяване на части на двигателя за макара
Сглобяване на части на двигателя за макара

По -лесната процедура за сглобяване на движещия механизъм на макарата е сглобяването поотделно на четирите най -важни компонента и след това завършване на окончателното изграждане:

Двигателят с постоянен ток в трансмисионната кутия на двигателя

Двигателят с постоянен ток трябва да бъде монтиран в централната част на опората на конструкцията; преди да завиете двигателя, трябва да решите коя е предпочитаната от вас страна, където да поставите страната на зъбните колела, за да подравните правилно двете рамена, които държат двигателя, и задвижваната голяма предавка.

Задвижваната голяма предавка

Голямата предавка трябва да се завинтва с пресечен конусен блок с четирите винта с шестостен. Това зъбно колело ще бъде блокирано по въртящата се ос от гайки; конусовидната част ще държи макарата с нажежаема жичка, която е заключена от другата страна с подобни контрагайки вътре в друг пресечен конусен блок. Това решение не само задържа движещия се механизъм на място, но насочва цялото тегло към основата и това е теглото на тарата на системата.

Поставката за заключване на макарата

Това е отсечения коничен блок, който заедно със задвижваната предавка подобна заключваща страна ще държи механизма за движение към намотката. В интерес на тактиката, ролката с нажежаема жичка завършва сградата, докато движението на двете рамена е свободно да се движи от другата страна.

Както е показано на снимките, държачът за заключване на макарата е вграден в две части. Първо поставете гайката М4 в по -голямата част на блока, след това залепете втората част (капака), като държите блоковете заедно. Гайката остава затворена в държача на ключалката, която ще се завинтва към задвижваната ос с резба.

Кутия с лагери

Лагерната кутия има две функции: осигурява добра опора на предавките и плавно и безшумно движение. За да сглобите лагерната кутия, следвайте тези лесни стъпки:

  1. Завийте първата гайка M4 към един от двата края на задвижваната ос на държача на макарата с резба
  2. Поставете първия лагер
  3. Поставете разделителя
  4. Поставете втория лагер
  5. Завийте втората гайка и я заключете умерено. Вътрешният пластмасов сепаратор ще се противопостави на достатъчна сила, за да запази нещата на място и за продължителна употреба.
  6. Поставете сглобените лагери в лагерната кутия. Трябва да се направи принудително, за да се постигнат по -добри резултати, така че не разширявайте прекалено много вътрешността на кутията, когато рафинирате пластмасовите части.

Готови сме за окончателното сглобяване на компоненти!

Стъпка 5: Завършване на сглобяването на Motion Engine

Завършване на сглобяването на Motion Engine
Завършване на сглобяването на Motion Engine
Завършване на сглобяването на Motion Engine
Завършване на сглобяването на Motion Engine
Завършване на сглобяването на Motion Engine
Завършване на сглобяването на Motion Engine

На път сме да завършим монтажа на конструкцията, след което можем да преминем към тестване на движението. Сега отново имате нужда от няколко лепила. Лагерната кутия - сглобена в предишната стъпка - трябва да се постави в отвора на държача на кутията на опората на двигателя с две рамена и евентуално да се залепи преди да се завинтва капака на кутията.

Внимание: не лепете капака на кутията, а само го завийте. Капакът е важен за защита от прах и трябва да се сваля за всяка бъдеща поддръжка.

Когато тази настройка приключи, преди да добавите задвижваната предавка (по -голямата), добавете малкия разделителен пръстен: той поддържа голямата предавка, подравнена с моторната предавка, действаща като шайба за фиксиране на задвижвания подвижен възел.

След това поставете задвижващата предавка (малката) в вала на двигателя. Обърнете внимание, че в двигателя, както и в централния отвор на предавката, има плоска страна, за да се поддържа въртенето на предавката, задвижвано от DC двигателя.

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

Сградата на механиката е завършена!

Стъпка 6: Бонус: Как персонализирах поддръжката за управление на комплекта

Бонус: Как персонализирах поддръжката за управление на комплекта
Бонус: Как персонализирах поддръжката за управление на комплекта
Бонус: Как персонализирах поддръжката за управление на комплекта
Бонус: Как персонализирах поддръжката за управление на комплекта
Бонус: Как персонализирах поддръжката за управление на комплекта
Бонус: Как персонализирах поддръжката за управление на комплекта

За да поддържам комплекта на място, направих много проста структура, базирана на две алуминиеви квадратни тръби, за да поддържа както основата, така и структурата на движението. Основата е фиксирана с четири винта към двете релси (около 25 см дължина) и с няколко малки 3D отпечатани опори имам фиксиращи механизми за движение, свободни за преместване, за да улеснят поставянето и отстраняването на ролката с нажежаема жичка.

Всеки може да избере собствено решение в зависимост от това как е организирана работната му маса.

Стъпка 7: Окабеляване и свързване към Arduino

Image
Image
Окабеляване и свързване към Arduino
Окабеляване и свързване към Arduino

Както е обяснено в стъпката за съдържанието на комплекта, използвах щит за мотор DC на Infineon TLE94112LE за Arduino и тествах двигателя както на Arduino UNO R3, така и на Infineon XMC110 Boot Kit.

Ако ще управлявате двигателя (нуждаете се от PWM функции) с DC контролна платка по ваш избор, просто адаптирайте инструкциите към техническите спецификации на вашия щит.

Бележка за щита TLE04112LE Arduino

Едно от ограниченията, които съм изпитал с други щитове за управление на двигателя за Arduino, е, че те използват функциите на същия микроконтролер (т.е. PWM и GPIO пинове); това означава, че вашата платка се посвещава на тези задачи, докато само няколко други ресурса (MPU и GPIO) са достъпни за други цели.

Като има възможност да сложи ръце на щита TLE94122LE Arduino за пътни тестове, най -очевидното предимство на интегралната схема, на която се основава платката, е просто нейната пълнота. Платката Arduino комуникира с щита чрез SPI протокол, използвайки само два пина. Всяка команда, която изпращате към щита, се обработва автономно от IC TLE94112LE без да се консумират MPU ресурси. Друга забележителна характеристика на дъската Infineon е възможността за управление на до шест четени двигателя с три програмируеми PWM канала. Това означава, че Arduino може да настрои един или повече двигатели, да ги стартира и да продължи да работи по други задачи. Този щит е идеален за поддържане на до шест различни ролки с нишки едновременно. на всеки един контролер с нажежаема жичка за по -малко от 5 евро.

Сензорът за тегло

След като направих някои експерименти, видях, че е възможно да се контролира цялата система - мониторинг и автоматично подаване - с един -единствен сензор; натоварваща клетка (сензор за тегло) е в състояние динамично да измерва вариациите на теглото на макарата с нишки, предоставяйки цялата информация, от която се нуждаем.

Използвах евтина натоварваща клетка в диапазона 0-5 кг заедно с малка платка, базирана на усилвателя HX711 AD, IC, специфична за управление на сензорите за натоварващи клетки. Нямаше проблеми със свързването, тъй като е налична добре работеща библиотека Arduino.

Три стъпки за настройка на хардуера

  1. Поставете щита отгоре на дъската Arduino или комплекта за зареждане на Infineon XMC110
  2. Свържете проводниците на двигателя към съединителите Out1 и Out2 на винта на щита
  3. Свържете захранването и сигналите от усилвателя на сензора за тегло HX711 AD към щифтовете Arduino. В този случай съм използвал пинове 2 и 3, но всички безплатни щифтове са добре.

Предупреждение: точки 8 и 10 са запазени от щита TLE94113LE за SPI връзката

Това е всичко! Готови ли сте да настроите софтуера? Продължавай.

Стъпка 8: Набор от команди за софтуер и управление

Комплектът команди за софтуер и управление
Комплектът команди за софтуер и управление
Комплектът команди за софтуер и управление
Комплектът команди за софтуер и управление
Комплектът команди за софтуер и управление
Комплектът команди за софтуер и управление
Комплектът команди за софтуер и управление
Комплектът команди за софтуер и управление

Пълният документиран софтуер може да бъде изтеглен от хранилището на GitHub 3DPrinterFilamentDispenserAndMonitor

тук разглеждаме само най -значимите части и командите за управление.

Има причина, наложена от броя на наличните пинове на Arduino UNO Реших да контролирам системата чрез USB сериен терминал; Тъй като всяко моторизирано устройство се основава на сензор за тегло, управлението на шест различни дозатора с нажежаема жичка изисква отчитане на данни от шест сензора за тегло. Всяка натоварваща клетка "консумира" два пина, щифт 0 и 1 са запазени (Tx/Rx) за серийния, а щифтове 8 и 10 са запазени за SPI канала, свързващ щита TLE94112LE.

Състояние на системата

Софтуерът за управление работи през четири различни състояния, дефинирани във filament.h:

#define SYS_READY "Готов" // Система готова

#define SYS_RUN "Running" // Нишка в употреба #define SYS_LOAD "Load" // Зареждане на ролка #define SYS_STARTED "Started" // Приложение стартирано // Кодове на състоянието #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD_ #Refine 3

Състояние: Стартирано

Това състояние възниква след нулиране на хардуера или при включване на системата. Извикването при включване (и setup () при стартиране на скицата) инициализира вътрешните стойности по подразбиране и трябва да се стартира без допълнително тегло на платформата, тъй като част от последователността на инициализация е придобиването на абсолютната тара за достигане на физическото нулево тегло.

Състояние: Готов

Състоянието на готовност възниква след меко нулиране (изпратено от серийния терминал). Той е подобен на физическата резекция, но не се изчислява тара; командата за нулиране може да се стартира и когато системата работи.

Състояние: Зареждане

Състоянието на зареждане възниква, когато командата за зареждане е изпратена от терминала. Това означава, че ролката с нажежаема жичка е заредена и динамичната тара е изчислена. Точното тегло на нажежаемата жичка се получава чрез вида настройка на ролката, като се извади теглото на блока на двигателя и на празната ролка.

Състояние: Бяга

Това състояние позволява автоматично изчисляване на теглото и автоматичен дозатор с нажежаема жичка.

Съобщения на терминала

Текущата версия на софтуера връща читаеми за човека съобщения към терминала в зависимост от командите. Низовите съобщения са дефинирани в два заглавни файла: commands.h (съобщения и отговори, свързани с командите) и filament.h (низове, използвани от анализатора за създаване на съставни съобщения).

Команди

Два различни файла са включени в управлението на командите: commands.h, включително всички команди и свързаните параметри и filament.h, включително всички константи и дефиниции, използвани от системата за претегляне и от анализатора.

Докато вътрешните изчисления се извършват автоматично от софтуер, аз внедрих поредица от команди, за да задам поведението на системата и ръчно да контролирам някои параметри.

Командните ключови думи са чувствителни към регистъра и трябва просто да бъдат изпратени от терминала. Ако дадена команда не е подходяща за текущото състояние, тя не се разпознава, връща се грешно командно съобщение, иначе командата се изпълнява.

Команди за състоянието

Променете текущото състояние на системата и поведението също се адаптира

Команди с нишки

С помощта на отделни команди е възможно да се настроят характеристиките на нажежаемата жичка и ролката въз основа на най -често срещаните тегло и размери днес, налични на пазара

Единични команди

Това са няколко команди за задаване на визуализация на мерните единици в грамове или сантиметри. Всъщност е възможно да се премахнат тези команди и винаги да се представят данни и в двете единици.

Информационни команди

Показване на групи информация в зависимост от състоянието на системата

Команди на двигателя

Контролирайте двигателя за подаване или изтегляне на нишки.

Всички команди на двигателя следват пътя на ускорение/забавяне. Двете команди подаване и издърпване изпълняват кратка последователност, както е определено в motor.h от константата FEED_EXTRUDER_DELAY, докато командите feedc и pullc се изпълняват неопределено време, докато не бъде получена команда за спиране.

Команди в режим на изпълнение

Състоянието на работа приема два режима; режим човек просто периодично чете теглото и двигателят се движи, докато не бъде изпратена команда за управление на двигателя. Режим auto вместо това изпълнява две команди за подаване, когато екструдерът се нуждае от повече нишки.

Принципът се основава на показанията за теглото, контекстуализирани за тази конкретна среда. Очакваме, че разходът на нажежаема жичка е сравнително бавен, 3D принтерите са почти бавни и нормалните колебания на теглото зависят от вибрациите на околната среда (по -добре, ако не поставите целия материал на 3D принтера)

Когато екструдерът издърпа нишката вместо това, разликата в теглото се увеличава драстично (50 g или повече) за много малко време, обикновено между две или три показания. Тази информация се филтрира от софтуера, който "приспада", че е необходима нова нишка. За да се избегнат грешни показания, промените в теглото, докато двигателят работи, изобщо се игнорират.

Логика на приложението

Логиката на приложението е разпределена в.ino main (скицата на Arduino) по три функции: setup (), loop () и parseCommand (commandString)

Скицата използва два отделни класа: клас FilamentWeight за управление на всички изчисления на нажежаема жичка и отчитане на сензора чрез HX711 IC и клас MotorControl, свързващи методите за ниско ниво на щита TLE94112LE Arduino.

настройвам()

Стартира се веднъж при включване или след хардуерно нулиране инициализира екземплярите на класовете, настройва хардуера и комуникацията с терминала.

цикъл ()

Функцията на основния цикъл управлява три различни условия.

Въпреки че има два класа за сензор за тегло и двигатели сравнително сложни, има предимството, че получената скица е наистина лесна за разбиране и управление.

  1. Проверете (в режим auto) дали екструдерът се нуждае от повече нишки
  2. Ако двигателят работи, проверете за хардуерни грешки (върнати от TLE94112LE)
  3. Ако има налични серийни данни, анализирайте командата

parseCommand (commandString)

Функцията за синтактичен анализ проверява низовете, идващи от сериала и когато команда бъде разпозната, тя веднага се обработва.

Всяка команда действа като машина на състоянието, влияеща върху някакъв параметър на системата; следвайки тази логика, всички команди се свеждат до три последователни действия:

  1. Изпратете команда до класа FilamentWeight (команди за тегло) или до класа MotorControl (команди за двигатели)
  2. Изпълнява изчисление за актуализиране на стойностите на теглото или актуализиране на един от вътрешните параметри
  3. Показване на терминала и извеждане на информация, когато изпълнението приключи

Инсталирайте библиотеката HX711 Arduino, изтеглете софтуера от GitHub и го качете на дъската си Arduino, след което се насладете!

Препоръчано: