Satura rādītājs:

Viedais 3D printera pavedienu skaitītājs: 5 soļi (ar attēliem)
Viedais 3D printera pavedienu skaitītājs: 5 soļi (ar attēliem)
Anonim
Viedais 3D printera pavedienu skaitītājs
Viedais 3D printera pavedienu skaitītājs

Kāpēc jāuztraucas par kvēldiega skaitīšanu? Daži iemesli:

Veiksmīgām izdrukām ir nepieciešams pareizi kalibrēts ekstrūderis: kad gcode liek ekstrūderam pārvietot kvēldiegu par 2 mm, tam ir jāpārvietojas tieši par 2 mm. Sliktas lietas notiek, ja tas pārmērīgi izspiež vai nepietiekami izspiež. Labi kalibrēts skaitītājs var saglabāt ekstrūderi godīgu

Šķēlēji aptuveni nosaka, cik daudz kvēldiega vajadzēs noteiktā drukā (gan garumā, gan svarā), un es vēlos pārbaudīt šīs vērtības

Kvēldiega kustības mērīšana arī ļauj man zināt, kad drukāšana ir sākusies un kad tā ir apstājusies

Man vajadzēja kaut ko, lai aizsegtu vietu, kas atstāta, noņemot neglīto milzu logotipu mana printera priekšpusē

Tas ir forši

Mani iedvesmoja šī pamācība, kas veica jaunu PS/2 peli kā kvēldiegu skaitītāju 3D printerim. Tas ne tikai pievienoja noderīgu funkciju 3D printerim, bet arī pārveidoja veco ierīci, kas citādi būtu nonākusi poligonā. Bet šis projekts tika veidots ap peles PS/2 saskarni, kas šķita nevajadzīgi apgrūtinoša. Tāpēc es to izmantoju kā iespēju uzzināt par vienīgo būtisko sastāvdaļu: rotējošo kodētāju.

Piegādes

Rotējošais kodētājs

Uz ESP32 balstīta izstrādātāju plate

I2C OLED displejs (divu krāsu iekārta izskatās īpaši forša)

Maza īslaicīga spiedpoga

608ZZ gultnis bez taukiem

Divi gredzeni no datortehnikas veikala (~ 33 mm ID x ~ 1,5 mm profila diametrs - skatīt komentārus)

Divas 2,5 mm pašvītņojošas skrūves korpusam

Divas 4 mm skrūves, uzgriežņi un paplāksnes stiprinājuma piestiprināšanai pie printera

Vadu ķekars

3D printeris un daži kvēldiegi

1. darbība: izvēlieties rotējošo kodētāju

Izvēlieties rotējošo kodētāju
Izvēlieties rotējošo kodētāju
Izvēlieties rotējošo kodētāju
Izvēlieties rotējošo kodētāju

Rotējošie kodētāji rotācijas kustību pārvērš elektriskos impulsos. Visas vecās skolas peles tās izmantoja, lai izmērītu ritošās bumbas kustību, un modernākas (ha ha) optiskās peles tās joprojām izmantoja ritināšanas ritenim, ko es biju ievietojis un izmantojis sākotnējiem eksperimentiem. Diemžēl manējais nepiedāvāja acīmredzamus stiprinājuma punktus, un tā izšķirtspēja bija slikta.

Ja ir vērts to darīt, ir vērts pārcensties. Tāpēc es nopirku lielu, draudzīgu 360 pulsa kodēšanas kodētāju un ap to izveidoju savu projektu. Es izvēlējos signālu pieaugošo optisko rotācijas kodētāju, tipa LPD3806-360BM-G5-24C. Bet jebkurš pienācīgs kodētājs to darīs.

2. solis: pievienojiet skriemeli un tukšgaitu

Pievienojiet skriemeli un tukšgaitu
Pievienojiet skriemeli un tukšgaitu

Kvēldiega lineārā kustība ar skriemeli tiek pārveidota par kodētāja rotācijas kustību. Un kvēldiegu pie skriemeļa tur brīvgaita.

Skriemelim ir divas rievas, katrā no tām ir izstiepts blīvgredzens, tāpēc nav slīdēšanas, Tukšgaitai ir viena v-rieva, lai kvēldiegs būtu centrēts uz kodētāja skriemeli. Tas atrodas uz 608ZZ gultņa, kas man bija uzlikts, un tas ir uzstādīts uz spirālveida atsperes, kas iespiesta tieši mana projekta galvenajā korpusā. (STL faili pievienoti zemāk.)

Lai to izdarītu pareizi, bija vajadzīgi daži izmēģinājumi un kļūdas, taču manam dizainam ir jāatbilst dažādiem leņķiem un spoles rādiusiem, ļaujot kvēldiegam atritināties no jebkuras spoles daļas, visu laiku no drukas sākuma līdz beigām. Un ar iespiesto atsperi ir viegli ievietot vai izņemt kvēldiegu, mainot spoles.

3. darbība: kodēšana

Image
Image

Tikai kvēldiega skaitīšanai derēs jebkura izstrādātāju plate ar divām digitālām ieejām. Manis izvēlētajam kodētājam ir četras tapas: Vcc, slīpētas un divas kodētāja tapas. Šeit ir patiešām jauks raksts, kas izskaidro rotējošo kodētāju darbību un to saskarni ar Arduino. (Arī: šis raksts par 3 kontaktu kodētājiem.)

Pamata skaitīšana ir vienkārša: divas ieejas - iestatītas tā, lai tās paceltu iekšēji, lai ārējie rezistori nebūtu jāpielodē Vcc -, un viens pārtraukums. Es arī pievienoju nulles/atiestatīšanas pogu, pieprasot vēl vienu ievadi un pārtraukšanu:

void 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); } void IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {position += 1; } cits {pozīcija -= 1; }} void IRAM_ATTR zeroButtonPressed () {// rokturis nulle un atiestatīšana}

Bet es gribēju vairāk nekā tikai mēmu skaitītāju. Izmantojot ESP32 (vai ESP8266) un tajā iebūvēto WiFi, es faktiski varu kaut ko darīt ar savāktajiem datiem. Izmantojot vienkāršu taimauta kodu (izskaidrots zemāk), es varu noteikt, kad drukāšana sākas un beidzas, un nosūtīt šos notikumus kā paziņojumus uz manu tālruni. Nākotnē es varu pievienot iztukšošanās sensoru un brīdināt sevi (un apturēt printera darbību), kad man nepieciešama uzmanība.

Pilns kods ir vietnē Github.

Dažas piezīmes par kodu:

Lai to pielāgotu savai konstrukcijai, jums ir nepieciešama tikai izšķirtspēja (kodētājsPPR) - impulsos vienā apgriezienā, kas parasti ir divas reizes lielāka par norādīto specifikāciju, un skriemeļa rādiuss (wheelRadius). Šīs vērtības, kā arī jūsu wifi ssid un parole, kā arī īpašās tapas, kas savienotas ar pogu, kodētāju un OLED ekrānu, tiek ievadītas konfigurācijā. H

Nulles poga darbojas arī kā atiestatīšana - turiet to nospiestu, lai atsāknētu dēli, kas ir noderīgi atkļūdošanai

Pārtraukumi ir spēcīgi - dažreiz pārāk spēcīgi. Viens nulles pogas pieskāriens var izraisīt to, ka funkcija zeroButtonPressed () tiek izsaukta 10-20 reizes, tāpēc es pievienoju nedaudz atkāpšanās loģikas. Manam optiskajam kodētājam tas nebija vajadzīgs, bet YMMV

Kamēr pārtraukumi rūpējas par ievadi asinhroni, cikla () rutīna veic grāmatvedības kārtošanu. EncoderState - enum, ko var barot, ievilkt vai apturēt - tiek atjaunināts, mainot kodētāja stāvokli. Taimauti nosaka, kad printeris ir sācis un beidzis drukāšanu. Bet sarežģītā daļa ir tāda, ka 3D printeri bieži sāk un pārtrauc kustību, tāpēc vislabāk bija definēt notikumu "drukas pabeigšana", kas palika nepārtraukti apturēts vismaz 5 sekundes. Jebkura kustība aktivizē otru taimeri, kas definē notikumu "drukāšana sākta" tikai tad, ja 15 sekunžu laikā nenotiek neviens notikums "drukas pabeigšana". Praksē tas darbojas peldoši

Tātad galvenais cilpas () kods var darboties neapgrūtināts, atkāpšanās kods darbojas RTOS uzdevumu ciklā. Tāpat http pieprasījumi par paziņojumu nosūtīšanu ir sinhroni un tāpēc ir pamatoti. Tādējādi animācijas darbojas nevainojami un skaitīšana nekad neapstājas

Manā piemērā ir daudz papildu koda, lai (A) izveidotu un uzturētu tīkla savienojumu, izmantojot WiFi un mDNS, (B) paņemtu laiku no NTC servera, lai es varētu nospiest sākuma un beigu paziņojumus un parādīt nejauku pulksteni manā OLED un (C) apstrādā OTA atjauninājumus, lai man nebūtu fiziski jāpievieno tāfele ar Mac, lai atjauninātu kodu. Šobrīd tas viss ir vienā monolītā C ++ failā, tikai tāpēc, ka neesmu veltījis laiku, lai to labāk sakārtotu

Es izmantoju brīnišķīgo (un bezmaksas) Prowl iOS lietotni, lai nosūtītu paziņojumus uz manu tālruni, izmantojot tikai HTTP iegūšanas metodes

Lai izstrādātu kodu un zibspuldzi, es izmantoju iespaidīgo PlatformIO, kas darbojas uz Visual Studio Code, gan bez maksas

Savam projektam es izmantoju šīs bibliotēkas: Oliver u8g2, pagājušais Millis Paul Stoffregen un HTTPClient Markus Sattler, kas nāk ar Espressif ESP32 platformu. Viss pārējais nāk ar Arduino bibliotēku vai platformu ESP32 platformā PlatformIO

Visbeidzot, es izveidoju sešas vienkāršas sava galvenā skriemeļa bitkartes dažādos leņķos, lai es varētu parādīt glītu mazu rotējošu riteņu animāciju uz OLED aiz letes. Tas pārvietojas atbilstošā virzienā ar kodētāju, lai gan daudz ātrāk, lai iegūtu dramatiskāku efektu

4. solis: elektroinstalācija

Elektroinstalācija
Elektroinstalācija

Es to izstrādāju tā, lai vadi būtu vienkārši, galvenokārt tāpēc, ka mans korpuss varētu būt mazs, bet arī atkļūdošana būtu tieša. Pievērsiet uzmanību šaurajiem apstākļiem manā mazajā kastītē.:)

Pirmā prasība bija mana rotējošā kodētāja 5V barošanas spriegums. No dažādajiem ESP32 izstrādātāju dēļiem, kas bija manā atlicinātājā, tikai daži piegādāja patiesu 5 V sprieguma tapu, kad to darbina USB. (Pārējie mērīja 4,5–4,8 V, kas, ja jūsu matemātika ir slikta, ir zemāka par 5 V.) Tāfele, kuru izmantoju, bija Wemos Lolin32.

Tālāk nāk divas rotējošās kodētāja signāla tapas. Tā kā es izmantoju pārtraukumus, galvenās bažas rada tas, ka manis izmantotās tapas neko netraucē. ESP32 dokumentos norādīts, ka ADC2 nevar izmantot vienlaikus ar WiFi, tāpēc diemžēl tas nozīmē, ka es nevaru izmantot nevienu no ADC2 GPIO tapām: 0, 2, 4, 12, 13, 14, 15, 25, 26 vai 27. Es izvēlējos 16 un 17.

Padoms profesionāļiem: ja pēc visa šī apkopošanas šķiet, ka kodētājs sāk skaitīties atpakaļ, varat vienkārši nomainīt abus tapu uzdevumus konfig.h.

Visbeidzot pievienojiet rotējošā kodētāja zemējuma vadu… cilindra rullim… zemējuma tapai.

Pēc tam nulles/atiestatīšanas spiedpoga tiek savienota starp zemi un citu brīvu tapu (es izvēlējos GPIO 18).

Mana izmantotā poga bija niecīgs īslaicīgs slēdzis, kuru izglābu no iepriekš minētās datora peles, taču derēs jebkura poga, kas atrodas. Jūs varat redzēt, ka tas atrodas nelielā stiprinājumā, ko es tam izveidoju tieši virs dēļa.

Visbeidzot, OLED, ja tas vēl nav pievienots jūsu platei, ir vajadzīgas tikai četras tapas: 3V3, zemējums, i2c pulkstenis un i2c dati. Manā izstrādātāju padomē pulkstenis un dati ir attiecīgi 22 un 21.

5. darbība: izdrukājiet detaļas

Izdrukājiet detaļas
Izdrukājiet detaļas

Šai konstrukcijai es izstrādāju septiņas daļas:

Skriemelis, kas stiprināms tieši uz rotējošā kodētāja vārpstas

Tukšgaita, kas der virs 608ZZ gultņa (noņemiet pārsegus un attaukojiet ar WD40, lai tas brīvi grieztos)

Turētājs, uz kura tiek piestiprināti divi rullīši un kodētājs - atzīmējiet brīvgaitas spirālveida atsperi

Kronšteins turētāja stabilizēšanai. Šīs darbības fotoattēls parāda, kā kronšteins piestiprinās pie turētāja

Korpuss (apakšā), lai turētu manu ESP32 izstrādātāja plati, ar atstarpi USB kabelim sānos un otru augšpusē savienotājam, ko pievienoju kodētāja vadiem. Šis ir paredzēts Wemos Lolin32, tāpēc jums, iespējams, nāksies nedaudz pārveidot šo dizainu, lai tas atbilstu citai plāksnei

Korpuss (augšpusē), lai noturētu OLED ekrānu, vēl viena spirāles poga nulles / atiestatīšanai

Pogas turētājs, kas pielāgots manam mazajam slēdzim, kas paredzēts atpūtai starp diviem plauktiem apakšējā korpusa iekšpusē. Es izmantoju lodāmuru, lai "pielīmētu" slēdzi pie turētāja; skatiet fotoattēla iepriekšējo darbību

Viss ir paredzēts drukāšanai bez balstiem. Parasta PLA jūsu izvēlētajā krāsā ir viss, kas jums nepieciešams.

Salieciet visu kopā, piestipriniet pie sava printera (šeit var būt nepieciešama radošums), un viss ir kārtībā.

Ieteicams: