Мазмұны:

Ақылды 3D принтерлік жіп санағышы: 5 қадам (суреттермен)
Ақылды 3D принтерлік жіп санағышы: 5 қадам (суреттермен)

Бейне: Ақылды 3D принтерлік жіп санағышы: 5 қадам (суреттермен)

Бейне: Ақылды 3D принтерлік жіп санағышы: 5 қадам (суреттермен)
Бейне: 3D-модельдеу.«Ақылды-операторFM1» 2024, Қараша
Anonim
Ақылды 3D принтерге арналған жіптер есептегіші
Ақылды 3D принтерге арналған жіптер есептегіші

Неліктен жіптерді санаудың қажеті жоқ? Бірнеше себеп:

Сәтті басып шығару үшін дұрыс калибрленген экструдер қажет: gcode экструдерге жіпті 2 мм жылжытуды айтқан кезде, ол дәл 2 мм жылжуы керек. Егер ол шамадан тыс экструдирлесе немесе жеткіліксіз болса, жаман жағдайлар болады. Жақсы калибрленген есептегіш экструдерді адал ұстай алады

Бөлгіштер берілген басып шығарудың қанша ұзындығын (ұзындығы мен салмағы бойынша) шамамен алады және мен бұл мәндерді тексергім келеді

Жіптің қозғалысын өлшеп, басып шығару басталғанын және қашан тоқтағанын білуге рұқсат етіңіз

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

Бұл күшті

Мені осы нұсқаулық шабыттандырды, ол ескі PS/2 тінтуірін 3D принтерге арналған жіп санағышы ретінде ауыстырды. Ол 3D принтеріне пайдалы функцияны қосып қана қоймай, полигонға түсетін ескі құрылғыны ауыстырды. Бірақ бұл жоба тінтуірдің PS/2 интерфейсінің айналасында салынған, бұл қажетсіз болып көрінді. Мен мұны жалғыз маңызды компонент: айналмалы кодер туралы білуге мүмкіндік ретінде алдым.

Жабдықтар

Айналмалы кодер

ESP32 негізіндегі даму тақтасы

I2C OLED дисплейі (екі түсті бірлік әсіресе керемет көрінеді)

Кішкене лездік батырмалар

Майланбаған 608ZZ мойынтірегі

Аппараттық дүкеннен екі сақина (~ 33мм ID x ~ 1,5мм профиль - түсініктемелерді қараңыз)

Корпус үшін 2,5 мм екі өздігінен бұрап тұратын бұрандалар

Принтерге қондырманы бекіту үшін 4 мм екі бұранда, жаңғақ және шайба

Сымдар шоғыры

3D принтері және кейбір жіптер

1 -қадам: Айналмалы кодерді таңдаңыз

Айналмалы кодерді таңдаңыз
Айналмалы кодерді таңдаңыз
Айналмалы кодерді таңдаңыз
Айналмалы кодерді таңдаңыз

Айналмалы кодерлер айналмалы қозғалысты электрлік импульстарға айналдырады. Ескі мектептегі барлық тышқандар оларды домалақ доптың қозғалысын өлшеу үшін қолданды, ал қазіргі заманғы (га га) оптикалық тышқандар оларды айналдыру дөңгелегі үшін әлі де қолданды. Өкінішке орай, менікі анық нүктелерді ұсынбады және оның шешімі нашар болды.

Егер жасауға тұрарлық болса, оны асыра орындаған жөн. Сондықтан мен үлкен, мейірімді, 360-импульсті кодтаушы сатып алдым және айналасында жобамды құрдым. Мен таңдаған LPD3806-360BM-G5-24C типті Signswise ұлғайтылатын оптикалық айналмалы кодер болды. Бірақ кез келген лайықты кодер жасайды.

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)) {позиция += 1; } басқа {позиция -= 1; }} жарамсыз IRAM_ATTR zeroButtonPressed () {// нөлді өңдеу және ысыру}

Бірақ мен мылқау есептегіштен басқа нәрсені алғым келді. ESP32 (немесе ESP8266) және оның кіріктірілген WiFi көмегімен мен жинайтын деректермен бірдеңе жасай аламын. Қарапайым күту уақытының кодын (төменде түсіндірілген) қолдана отырып, мен басып шығарудың басталуы мен аяқталуын анықтай аламын және бұл оқиғаларды телефонға хабарландыру ретінде жібере аламын. Болашақта мен сенсорды қосуға және назар аудару қажет болған кезде өзіме хабарлауға (және принтерді кідіртуге) мүмкін.

Толық код Github -та.

Код бойынша бірнеше ескертулер:

Мұны сіздің конструкцияңызға бейімдеу үшін сізге рұқсат етілген ажыратымдылық (encoderPPR) қажет - бір айналымдағы импульстерде, бұл әдетте көрсетілген сипаттамадан екі есе көп және шығырдың радиусы (дөңгелек радиусы). Бұл мәндер, сонымен қатар Wi -Fi желісінің ssid және құпия сөзі және түйме, кодер және OLED экранына қосылған түйреуіштер барлығы config.h ішінде болады

Нөл түймесі қалпына келтіру ретінде де қосылады - тақтаны қайта жүктеу үшін оны ұстап тұрыңыз, бұл отладка үшін пайдалы

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

Үзілістер кірістерге асинхронды түрде қарайды, ал цикл () процедурасы бухгалтерлік есепті жүргізеді. EncoderState - тамақтандыруға, қайтаруға немесе тоқтатуға болатын сандық кодердің орналасуының өзгеруімен жаңартылады. Күту уақыты принтердің басып шығарудың қашан басталғанын және аяқталғанын анықтайды. Ең қиыны - 3D принтерлер қозғалысты жиі бастайды және тоқтатады, сондықтан ең жақсы жұмыс істегені - «басып шығаруды аяқтау» оқиғасын анықтау, кем дегенде 5 секунд бойы үздіксіз тоқтатылады. Кез келген қозғалыс «басып шығару басталды» оқиғасын анықтайтын екінші таймерді іске қосады, егер 15 секунд уақыт ішінде «басып шығаруды аяқтау» оқиғасы болмаса. Іс жүзінде бұл жүзу әдісімен жұмыс істейді

Негізгі цикл () коды нөмірленбестен жұмыс істей алады, қайтару коды RTOS тапсырма циклінде жұмыс істейді. Сол сияқты, хабарландыруларды жіберу туралы http сұраулары синхронды, сондықтан фондық. Осылайша анимация біркелкі жүреді және санау тоқтамайды

Менің мысалда (A) WiFi және mDNS желілік байланысын орнату және қолдау үшін қосымша код бар, (B) NTC серверінен уақытты алады, осылайша мен басталу мен аяқталу туралы хабарландыруларды уақытша мөртабан етіп қоюға және сағатты көрсетуге болады. менің OLED -де және (C) OTA жаңартуларын өңдейді, сондықтан кодты жаңарту үшін тақтаны Mac компьютеріме физикалық түрде қосудың қажеті жоқ. Қазіргі уақытта бәрі бір монолитті C ++ файлында, мен оны жақсы ұйымдастыруға уақыт бөлмегендіктен

Мен керемет (және ақысыз) Prowl iOS қосымшасын телефоныма HTTP Get әдістерінен басқа ештеңе жоқ хабарландыру жіберу үшін қолдандым

Кодты әзірлеу және тақтаны жыпылықтау үшін мен Visual Studio Code -де жұмыс істейтін керемет PlatformIO қолдандым, екеуі де тегін

Менің жобам үшін мен келесі кітапханаларды қолдандым: Оливердің u8g2, Paul Stoffregen -дің elapsedMillis және Espressif ESP32 платформасымен бірге жеткізілетін Markus Sattler HTTPClient. Қалғанның бәрі Arduino кітапханасымен немесе PlatformIO -дағы ESP32 платформасымен келеді

Ақырында, мен негізгі шкивтің әр түрлі бұрыштарындағы алты қарапайым нүктелік кескінді жасадым, сондықтан OLED -де үстелдің артындағы ұқыпты кішкентай айналдыру дөңгелегі анимациясын көрсете алдым. Ол кодермен сәйкес бағытта қозғалады, бірақ одан да әсерлі әсер ету үшін әлдеқайда жылдам

4 -қадам: Сымдарды жалғау

Сымдар
Сымдар

Мен мұны сымның қарапайым болатынын ойлап таптым, көбінесе қоршауым кішкентай болуы мүмкін, сонымен қатар отладтау тікелей болады. Менің кішкентай қорапшамдағы тар жағдайларға назар аударыңыз.:)

Бірінші талап менің айналмалы кодерімнің 5В кернеуі болды. Менде сақталатын әр түрлі ESP32 әзірлеуші тақталарының тек бірнешеуі USB арқылы қосылған кезде Vcc істігінде шынайы 5В жеткізіледі. (Қалғандары 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 -ден асатын мойынтірекке сәйкес келетін бос жұмыс орны (қабықтарды алып тастаңыз және WD40 көмегімен майсыздандырыңыз, ол еркін айналады)

Екі винт пен кодер бекітілген ұстағыш - бос жүріс үшін спиральды серіппеге назар аударыңыз

Ұстағышты тұрақтандыратын кронштейн. Бұл қадамдағы суретте кронштейн ұстағышқа қалай бекітілетіні көрсетілген

Менің ESP32 әзірлеуші тақтасын ұстап тұруға арналған корпус (төменгі жағында), оның жағында USB кабелі үшін бос орын, ал екіншісінде коннектор сымдарына қосқыш үшін. Бұл Wemos Lolin32 қондыру үшін жасалған, сондықтан басқа тақтаға сәйкес келу үшін сізге бұл дизайнды сәл өзгерту қажет болуы мүмкін

OLED экранын ұстап тұруға арналған корпус (үстіңгі жағы) - нөлге келтіру / қалпына келтіру түймесінің басқа спиралы

Мендегі кішкене қосқышқа арналған түймешік ұстағыш, төменгі корпустағы екі сөренің арасында демалуға арналған. Мен қосқышты ұстағышқа «желімдеу» үшін дәнекерлеуішті қолдандым; фотосуреттің алдыңғы қадамын қараңыз

Барлығы тіректерсіз басып шығаруға арналған. Сіздің таңдауыңыз бойынша қалыпты PLA сізге қажет.

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

Ұсынылған: