Мазмуну:

Акылдуу 3D принтер филамент эсептегичи: 5 кадам (сүрөттөр менен)
Акылдуу 3D принтер филамент эсептегичи: 5 кадам (сүрөттөр менен)

Video: Акылдуу 3D принтер филамент эсептегичи: 5 кадам (сүрөттөр менен)

Video: Акылдуу 3D принтер филамент эсептегичи: 5 кадам (сүрөттөр менен)
Video: MKS Gen L - Marlin 1 1 9 (configuration.h) 2024, Июнь
Anonim
Акылдуу 3D принтер филамент эсептегичи
Акылдуу 3D принтер филамент эсептегичи

Эмне үчүн жипти санап убара болосуң? Бир нече себептер:

Ийгиликтүү басып чыгаруу үчүн туура калибрленген экструдер талап кылынат: gcode экструдерге жипти 2 мм жылдырууну айтканда, ал так 2 мм жылышы керек. Жаман нерселер, эгерде ал ашыкча же ашыкча чыгарып кетсе. Жакшы калибрленген эсептегич экструдерди чынчыл кыла алат

Кесүүчүлөр берилген басуунун канча жалпы жипти талап кыларын болжолдошот (узундугу жана салмагы боюнча) жана мен бул баалуулуктарды текшергим келет

Жиптин кыймылын өлчөө, басып чыгаруу качан башталганын жана качан токтоп калганын мага да билдирип коюңуз

Мага принтеримдин маңдайындагы чириген ири логотипти алып салгандан кийин боштукту жабуу үчүн бир нерсе керек болчу

Бул сонун

Эски PS/2 чычканды 3D принтер үчүн жипче эсептегич катары алмаштырган бул нускамадан шыктандым. Бул 3D принтерине пайдалуу өзгөчөлүктү гана кошуп койбостон, таштанды полигонуна түшүп кала турган эски аппаратты алмаштырды. Бирок бул долбоор чычкандын PS/2 интерфейсинин тегерегинде курулган, бул керексиздей оор көрүнгөн. Ошентип, мен муну бир гана маанилүү компонент: айлануучу коддогуч жөнүндө билүү мүмкүнчүлүгү катары алдым.

Жабдуулар

бюрократия коддогуч

ESP32 негизделген өнүгүү тактасы

I2C OLED дисплейи (эки түстүү бирдик өзгөчө сонун көрүнөт)

Майда -чүйдө баскычтар

608ZZ подшипнигин майсыздандырыңыз

Аппараттык дүкөндөн эки о -шакек (~ 33mm ID x ~ 1.5mm профилдин диаметри - комментарийлерди караңыз)

Корпус үчүн 2,5 мм өз алдынча таптап туруучу эки бурама

Принтериңизге орнотуу үчүн 4 мм эки бурамалар, гайкалар жана шайбалар

Зымдардын тобу

3D принтер жана кээ бир жип

1 -кадам: Ротари Encoder тандоо

Ротари коддогучту тандаңыз
Ротари коддогучту тандаңыз
Ротари коддогучту тандаңыз
Ротари коддогучту тандаңыз

Ротари коддогучтар айлануу кыймылын электрдик импульстарга которот. Бардык эски мектептин чычкандары аларды тоголотуучу топтун кыймылын өлчөө үчүн колдонгон, ал эми заманбап (га ха) оптикалык чычкандар дагы эле аларды айланма дөңгөлөк үчүн колдонушкан, мен муну тегерете коюп, алгачкы эксперимент үчүн колдонгом. Тилекке каршы, меники эч кандай ачык тоолорду сунуш кылган эмес жана анын чечилиши начар болгон.

Эгерде ал татыктуу болсо, анда ашыкча жасоо керек. Ошентип, мен чоң, достук, 360-импульстук бир коддогучту сатып алдым жана анын айланасында долбоорумду курдум. Мен тандаганым LPD3806-360BM-G5-24C түрүндөгү Signswise Incremental Optical Rotary Encoder болчу. Бирок, ар кандай татыктуу кодер кылат.

2 -кадам: Пуликти жана боштукту кошуңуз

Пуликти жана боштукту кошуңуз
Пуликти жана боштукту кошуңуз

Жиптин сызыктуу кыймылы шкив аркылуу коддогучтун айлануу кыймылына которулат. Ал эми жип боштукта шкивге каршы кармалып турат.

Пульстун эки оюкчасы бар, алардын ар бири созулган шакекти кармап турат, андыктан тайып кетүү жок, Иштебегенде жипти коддогучтун шкафына борборлоштуруу үчүн бирдиктүү v-оюгу бар. Бул 608ZZ подшипниктеринде отурат, ал менин долбоорумдун башкы корпусуна басылган спираль пружинага орнотулган. (STL файлдары төмөндө тиркелет.)

Бул туура кабыл алуу үчүн бир аз сыноолорду жана каталарды талап кылды, бирок менин дизайным ар кандай бурчтарга жана катушка радиусуна туура келиши керек, бул жиптин басуунун башынан аягына чейин катушканын каалаган бөлүгүнөн бошонууга мүмкүндүк берет. Ал эми басылган жаз булактарды алмаштырууда жипченин ичине кирип кетишин жеңилдетет.

3 -кадам: Коддоо

Image
Image

Жипти эсептөө үчүн, эки санариптик кириши бар ар кандай иштеп чыгуу тактасы аткарат. Мен тандаган кодердин төрт пини бар: Vcc, жер жана эки коддоочу казык. Бул жерде чынында эле сонун жазуу бар, ал айлануучу коддогучтардын кантип иштээрин жана аларды Arduino менен кантип интерфейс кылууну түшүндүрөт. (Ошондой эле: 3-пин коддогучтар жөнүндө бул макала.)

Негизги эсептөө жөнөкөй: эки кириш - ички каршылаштарды Vccке ширетүүнүн кажети жок, ичке тартуу үчүн коюлган - жана бири үзгүлтүккө учурайт. Мен дагы нөлдү/баштапкы абалга келтирүү баскычын коштум, дагы бир киргизүүнү жана үзүүнү талап кылат:

жараксыз setUpPins () {

pinMode (ENCODER_PIN_1, INPUT_PULLUP); pinMode (ENCODER_PIN_2, INPUT_PULLUP); pinMode (ZERO_BTN_PIN, INPUT_PULLUP); attachInterrupt (ENCODER_PIN_1, encoderPinDidChange, CHANGE); attachInterrupt (ZERO_BTN_PIN, zeroButtonPressed, CHANGE); } жараксыз IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {position += 1; } else {position -= 1; }} жараксыз IRAM_ATTR zeroButtonPressed () {// нөлдү кармоо жана кайра коюу}

Бирок мен жөн гана дудук эсептегичтен башка нерсени каалачумун. ESP32 (же ESP8266) жана анын камтылган WiFi жардамы менен мен чогултуп жаткан маалыматтар менен бир нерсе кыла алам. Кээ бир жөнөкөй күтүү кодун колдонуп (төмөндө түшүндүрүлөт), мен басып чыгаруунун башталышын жана бүтүшүн аныктай алам жана бул окуяларды телефонума эскертме катары жөнөтөм. Келечекте, мен түгөнүү сенсорун кошуп, көңүл буруум керек болгондо өзүмө кабарлап (жана принтеримди тындыра алам).

Толук код Githubда.

Код боюнча бир нече эскертүүлөр:

Муну сиздин конструкцияңызга ылайыкташтыруу үчүн, сизге бир гана чечим керек (encoderPPR) - бир революциядагы импульстарда, бул адатта айтылган спецификадан эки эсе көп жана шкивтин радиусу (wheelRadius). Бул баалуулуктар, ошондой эле Wi -Fiңыздын ssid жана сырсөзү жана баскычка, коддогучка жана OLED экранына туташкан белгилүү төөнөгүчтөрдүн бардыгы config.h'ге кирет

Нөл баскычы дагы баштапкы абалга келтирүү катары эки эсе иштейт - тактаны кайра жүктөө үчүн аны кармап туруңуз, бул мүчүлүштүктөрдү оңдоо үчүн пайдалуу

Үзгүлтүктөр күчтүү - кээде өтө күчтүү. Нөл баскычын бир жолу басуу zeroButtonPressed () функциясын 10-20 жолу чакырууга алып келиши мүмкүн, ошондуктан мен кээ бир четтетүү логикасын коштум. Менин оптикалык коддогучума кереги жок болчу, бирок YMMV

Үзгүлтүктөр киргизүүлөргө асинхрондук түрдө кам көрүшсө, loop () тартиби бухгалтердик эсепти жүргүзөт. EncoderState - азыктандыруучу, артка кайтаруучу же токтотуучу энум - коддогучтун абалынын өзгөрүшү менен жаңыртылат. Тайм -ауттер принтердин качан басып чыгууну жана бүтүрүүнү аныктайт. Бирок татаал жери - 3D принтерлер кыймылын тез -тез башташат жана токтотушат, андыктан эң жакшы иштегени "басып чыгарууну аягына чыгаруу" иш -чарасын аныктоо болду, бери дегенде 5 секундага чейин тынымсыз токтотулду. Кандайдыр бир кыймыл "басып чыгаруу башталды" окуясын аныктоочу экинчи таймерди ишке киргизет, эгерде "басып чыгаруунун аягында" эч кандай окуя 15 секунда ичинде болбосо. Иш жүзүндө бул сууда сүзүү менен иштейт

Ошентип, негизги цикл () коду сансыз иштей алат, дебун коду RTOS тапшырма циклинде иштейт. Ошо сыяктуу эле, эскертмелерди жөнөтүү боюнча http сурамдары синхрондуу, ошондуктан фонунда. Ошентип, анимациялар бир калыпта иштейт жана саноо эч качан токтобойт

Менин мисалымда (A) WiFi жана mDNS менен тармактык байланышты орнотуу жана колдоо үчүн, (B) NTC серверинен убакытты алуу үчүн менин башталышым жана аяктоо эскертмелериме убакыт белги коюу жана жагымдуу саатты көрсөтүү үчүн көптөгөн кошумча коддор бар. OLEDде жана (C) OTA жаңыртууларын башкарат, андыктан кодду жаңыртуу үчүн тактайымды Macка физикалык түрдө туташтыруунун кажети жок. Учурда мунун баары бир монолиттүү C ++ файлында, анткени мен аны жакшы уюштурууга убакыт бөлгөн жокмун

Мен укмуштуудай (жана бекер) Prowl iOS колдонмосун HTTP Get ыкмаларынан башка эч нерсе менен телефонго push эскертмелерин жөнөтүү үчүн колдондум

Кодду иштеп чыгуу жана тактаны жаркылдатуу үчүн, мен Visual Studio Codeдо иштей турган укмуштуудай PlatformIO колдондум, экөө тең бекер

Менин долбоорум үчүн мен бул китепканаларды колдондум: Oliver тарабынан u8g2, Paul Stoffregen тарабынан elapsedMillis жана Espressif ESP32 платформасы менен келген Markus Sattler тарабынан HTTPClient. Калганынын баары Arduino китепканасы же PlatformIOдогу ESP32 платформасы менен келет

Акыр -аягы, мен негизги чыгырыктын ар кандай бурчтарындагы алты жөнөкөй разрядды түздүм, ошентип мен эсептегичтин артындагы OLEDде тыкан кичинекей айлануучу дөңгөлөктүн анимациясын көрсөтө алдым. Дагы бир драмалык эффект үчүн алда канча тезирээк болсо да, коддогуч менен тиешелүү багытта жылат

4 -кадам: Кабелдөө

Электр өткөргүчтөрү
Электр өткөргүчтөрү

Мен муну долбоорлодум, анткени зымдар жөнөкөй эле, көбүнчө менин корпусум кичинекей болушу мүмкүн, бирок ошону менен мүчүлүштүктөрдү оңдоо оңой болмок. Менин кичинекей коробкамдагы тар шарттарга көңүл буруңуз.:)

Биринчи талап менин айлануучу кодеримдин 5В камсыздоо чыңалуусу болчу. Менде сакталган ESP32 иштеп чыгуучу такталардын ичинен, USB аркылуу иштегенде, Vcc пининде чыныгы 5V гана берилген. (Калгандары 4.5-4.8В ченеди, бул сиздин математикаңыз начар болгон учурда 5Вдан төмөн.) Мен колдонгон такта Wemos Lolin32 болчу.

Андан кийин, эки айлануучу коддоочу сигнал казыгы келет. Мен үзгүлтүктөрдү колдонуп жүргөндүктөн, негизги түйшүк мен колдонгон казыктар эч нерсеге кийлигишпейт. ESP32 документтеринде ADC2 WiFi менен бир убакта колдонулбайт деп айтылат, ошондуктан, тилекке каршы, мен ADC2 GPIO казандарынын бирин колдоно албайм: 0, 2, 4, 12, 13, 14, 15, 25, 26, же 27. Мен 16 менен 17ди тандадым.

Про кеңеши: эгер мунун баарын чогулткандан кийин, сиздин коддогуч артка саналып жаткандай сезилсе, config.h ичиндеги эки пин тапшырманы алмаштырсаңыз болот.

Акырында, айлануучу коддогучтун жерге өткөрүүчү зымын… барабандын түрмөгүнө… жерге төөнөгүчкө туташтырыңыз.

Андан кийин, нөл/баштапкы абалга келтирүү баскычы жерге жана башка бекер пинге туташып калат (мен GPIO 18ди тандадым).

Мен колдонгон кнопка мен жогоруда аталган компьютердин чычканынан куткарылган кичинекей бир заматта которгуч болчу, бирок тегерегиңизде турган бардык баскычтар аткарылат. Сиз аны тактанын үстүндө мен жасаган кичинекей тоонун ичинде эс алып жатканын көрө аласыз.

Акыр -аягы, OLED, эгерде ал тактаңызга туташа элек болсо, болгону төрт казыкка муктаж: 3V3, жер, i2c сааты жана i2c маалыматы. Менин тактамда саат жана маалыматтар тиешелүүлүгүнө жараша 22 жана 21.

5 -кадам: Бөлүктөрдү басып чыгаруу

Бөлүктөрдү басып чыгаруу
Бөлүктөрдү басып чыгаруу

Мен бул курулуш үчүн жети бөлүктү иштеп чыктым:

Түздөн -түз айлануучу коддогучтун валына орнотулган чыгырык

608ZZ подшипниктерине туура келген боштук (WIL40 менен шелектерди алып салыңыз жана ээрип кетет)

Кармоочу, эки вельс жана коддогуч - бекер турган спираль булагына көңүл буруңуз

Кармагычты турукташтыруу үчүн кронштейн. Бул кадамдагы сүрөттө кронштейндин кармоочуга кантип бекитилери көрсөтүлгөн

Корпус (астынкы жагында) менин ESP32 түз тактамды кармап туруу үчүн, USB кабели үчүн боштук, экинчисинин үстүндө коннектор зымдарыма кошкон туташтыргычы бар. Бул Wemos Lolin32ге ылайыкташтырылган, андыктан сиз бул дизайнды башка тактага ылайыкташ үчүн бир аз өзгөртүшүңүз керек болот

OLED экранын кармоо үчүн корпус (үстүнкү), нөл / баштапкы абалга келтирүү баскычы үчүн дагы бир спираль

Мендеги кичинекей которгуч үчүн ыңгайлаштырылган баскыч кармагыч, астыңкы корпустун ичиндеги эки текченин ортосунда эс алууга арналган. Мен которгучту кармагычка "жабыштыруу" үчүн ширетүүчү темир колдондум; сүрөткө чейинки кадамды караңыз

Баары тирөөчсүз басууга ылайыкталган. Тандооңуздагы кадимки PLA сизге керектүү нерсенин баары.

Баарын чогултуп, принтериңизге тиркеңиз (бул жерде кандайдыр бир чыгармачылык талап кылынышы мүмкүн), ошондо сиз барсаңыз болот.

Сунушталууда: