INHOUDSOPGAWE:
- Voorrade
- Stap 1: Kies 'n roterende enkodeerder
- Stap 2: Voeg 'n katrol en loopwiel by
- Stap 3: Kodering
- Stap 4: Bedrading
- Stap 5: Druk die onderdele uit
Video: Slim 3D -drukker filamentteller: 5 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Waarom die moeite doen om filament te tel? 'N Paar redes:
Suksesvolle afdrukke benodig 'n behoorlik gekalibreerde ekstruder: as die gcode die ekstruder vertel om die filament 2 mm te beweeg, moet dit presies 2 mm beweeg. Slegte dinge gebeur as dit uit- of onder-uitgedruk word. 'N Goed gekalibreerde toonbank kan 'n ekstruder eerlik hou
Slicers benader ongeveer hoeveel totale filament 'n gegewe druk (in lengte en gewig) sal neem, en ek wil die waardes nagaan
Deur die beweging van die filament te meet, laat ek ook weet wanneer die druk begin en wanneer dit stop
Ek het iets nodig gehad om die ruimte te bedek deur die verwydering van die lelike reuse -logo op die voorkant van my drukker
Dis gaaf
Ek is geïnspireer deur hierdie instruksies, wat 'n ou PS/2 -muis hergebruik het as 'n gloeidraadteller vir 'n 3D -drukker. Dit het nie net 'n nuttige funksie bygevoeg tot 'n 3D -drukker nie, maar ook 'n ou toestel wat andersins op 'n stortingsterrein beland het. Maar die projek is gebou rondom die PS/2 -koppelvlak van die muis, wat onnodig omslagtig gelyk het. Daarom het ek dit as 'n geleentheid gebruik om te leer oor die enigste noodsaaklike komponent: die roterende encoder.
Voorrade
Rotary encoder
ESP32 -gebaseerde ontwikkelingsbord
I2C OLED-skerm (eenheid met twee kleure lyk veral cool)
Klein kort drukknoppie
Ontsmeerde 608ZZ-laer
Twee o -ringe van die ysterwarewinkel (~ 33 mm ID x ~ 1,5 mm profieldiameter - sien kommentaar)
Twee 2,5 mm self-tappende skroewe vir die omhulsel
Twee skroewe, moere en ringe van 4 mm om die houer aan u drukker vas te maak
Klomp drade
3D -drukker en 'n bietjie filament
Stap 1: Kies 'n roterende enkodeerder
Draaikodeerders vertaal rotasiebeweging in elektriese pulse. Alle ou-skool muise het dit gebruik om die beweging van die rolbal te meet, en meer moderne (ha ha) optiese muise het dit nog steeds gebruik vir die rolwiel, en dit was wat ek rondgelê en gebruik het vir die eerste eksperimentering. Ongelukkig het myne geen duidelike bergpunte gebied nie, en die resolusie daarvan was swak.
As dit die moeite werd is om te doen, is dit die moeite werd om te veel te doen. Dus het ek 'n groot, vriendelike, 360-pols per omwenteling-encoder gekoop en my projek daar rondom gebou. Die een wat ek gekies het, was 'n Signswise Incremental Optical Rotary Encoder, tipe LPD3806-360BM-G5-24C. Maar enige ordentlike encoder sal doen.
Stap 2: Voeg 'n katrol en loopwiel by
Lineêre beweging van die filament word vertaal in rotasiebeweging van die encoder deur 'n katrol. En die filament word teen 'n katrol teen 'n katrol gehou.
Die katrol het twee groewe, elk met 'n uitgerekte o-ring sodat daar nie gly nie, Die ledertjie het 'n enkele v-groef om die filament in die middel van die katrolskyfie te hou. Dit sit op 'n 608ZZ -laer wat ek gehad het, en dit is gemonteer op 'n spiraalveer wat in die hoofstuk van my projek gedruk is. (STL -lêers hieronder aangeheg.)
Dit het 'n bietjie proef en fout geneem om reg te kom, maar my ontwerp moet 'n verskeidenheid hoeke en spoelradiusse bevat, sodat die filament van enige deel van die spoel tot die einde van die druk kan afwikkel. En die gedrukte veer maak dit maklik om die filament in of uit te spring as u 'n rol vervang.
Stap 3: Kodering
Om net die filament te tel, sal enige dev -bord met twee digitale insette doen. Die encoder wat ek gekies het, het vier penne: Vcc, gemaalde en twee encoder penne. Hier is 'n baie goeie beskrywing wat verduidelik hoe roterende encoders werk en hoe u dit met Arduino kan koppel. (Ook: hierdie artikel oor 3-pins encoders.)
Die basiese telling is eenvoudig: twee insette - intern om op te trek sodat eksterne weerstande nie aan Vcc hoef te word gesoldeer nie - en een onderbreking. Ek het ook 'n nul/reset -knoppie bygevoeg, wat nog 'n invoer en onderbreking benodig:
leë 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, VERANDER); } ongeldig IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {posisie += 1; } anders {posisie -= 1; }} ongeldig IRAM_ATTR zeroButtonPressed () {// hanteer nul en herstel}
Maar ek wou meer as net 'n dom toonbank hê. Met 'n ESP32 (of ESP8266) en sy ingeboude WiFi kan ek eintlik iets doen met die data wat ek versamel. Met behulp van 'n eenvoudige time -out -kode (hieronder verduidelik), kan ek bepaal wanneer die druk begin en eindig, en kan ek die gebeure as kennisgewings na my telefoon stuur. In die toekoms kan ek 'n oploop-sensor byvoeg en myself in kennis stel (en my drukker onderbreek) wanneer my aandag nodig is.
Die volledige kode is op Github.
'N Paar aantekeninge oor die kode:
Om dit aan u ontwerp aan te pas, is die resolusie (encoderPPR) nodig - in pulse per omwenteling, wat gewoonlik twee keer die vermelde spesifikasie is - en die radius van die katrol (wheelRadius). Hierdie waardes, plus die ssid en wagwoord van u wifi en die spesifieke penne wat aan die knoppie, encoder en OLED -skerm gekoppel is, gaan almal in config.h
Die nulknoppie dien ook as 'n reset - hou dit ingedruk om die bord weer te begin, wat nuttig is vir ontfouting
Onderbrekings is kragtig - soms te kragtig. Deur net op die nulknoppie te tik, kan die zeroButtonPressed () -funksie 10-20 keer genoem word, so ek het 'n bietjie terugslaglogika bygevoeg. My optiese encoder het dit nie nodig nie, maar YMMV
Terwyl die onderbrekings asynchronies vir die insette sorg, hanteer die loop () -roetine die boekhouding. Die encoderState - 'n enum wat gevoer, ingetrek of gestop kan word - word opgedateer met die verandering in posisie van die encoder. Tydsbepalings bepaal dan wanneer die drukker begin en die druk begin het. Maar die moeilike deel is dat 3D -drukkers gereeld begin en stop, dus wat die beste gewerk het, was om die gebeurtenis "afdruk voltooi" te definieer wat deurlopend vir ten minste 5 sekondes gestop is. Enige beweging aktiveer 'n tweede timer wat die gebeurtenis "druk begin" definieer slegs as daar geen 'afdruk voltooi' gebeurtenis binne 'n tydraamwerk van 15 sekondes plaasvind nie. In die praktyk werk dit swemend
Die hooflus () -kode kan dus onbelemmerd werk, en die debounce -kode loop in 'n RTOS -taaklus. Net so is http -versoeke om kennisgewings af te stuur sinchroon en word dit dan ook met die agtergrond gemaak. Animasies loop dus vlot en die tel stop nooit
Daar is 'n klomp ekstra kode in my voorbeeld om (A) 'n netwerkverbinding met WiFi en mDNS tot stand te bring en te onderhou, (B) die tyd van 'n NTC-bediener af te haal, sodat ek my begin- en eindkennisgewings kan tydstempel en 'n geluidsklok kan vertoon op my OLED, en (C) hanteer OTA -opdaterings, sodat ek nie my bord fisies aan my Mac hoef te koppel vir kode -opdaterings nie. Op die oomblik is dit alles in een monolitiese C ++ - lêer, net omdat ek nie die tyd geneem het om dit beter te organiseer nie
Ek het die wonderlike (en gratis) Prowl iOS -app gebruik om stootkennisgewings na my selfoon te stuur met niks anders as HTTP Get -metodes nie
Om die kode te ontwikkel en die bord te flits, gebruik ek die skouspelagtige PlatformIO wat op Visual Studio Code werk, albei gratis
Vir my projek het ek hierdie biblioteke gebruik: u8g2 deur Oliver, millis by Paul Stoffregen, en HTTPClient deur Markus Sattler, wat saam met die Espressif ESP32 -platform kom. Al die ander kom ook by die Arduino -biblioteek of die ESP32 -platform in PlatformIO
Uiteindelik het ek ses eenvoudige bitmaps van my hoof katrol in verskillende hoeke geskep, sodat ek 'n netjiese, klein draai -animasie op die OLED agter die toonbank kon wys. Dit beweeg in die regte rigting met die encoder, hoewel dit baie vinniger is vir 'n meer dramatiese effek
Stap 4: Bedrading
Ek het dit ontwerp sodat die bedrading dood eenvoudig sou wees, meestal sodat my omhulsel klein kon wees, maar ook dat die ontfouting eenvoudig sou wees. Let op die beknopte toestande in my boksie.:)
Die eerste vereiste was die 5V -voedingsspanning van my roterende enkodeerder. Van die verskillende ESP32 -dev -borde wat ek in my stoor gehad het, het slegs 'n paar ware 5V by die Vcc -pin verskaf as dit deur USB aangedryf word. (Die ander het 4,5-4,8V gemeet, wat, as u wiskunde sleg is, laer is as 5V.) Die bord wat ek gebruik het, was 'n Wemos Lolin32.
Vervolgens kom die twee seinpenne van die roterende encoder. Aangesien ek onderbrekings gebruik, is die belangrikste probleem dat die penne wat ek gebruik, niks belemmer nie. Volgens die ESP32 -dokumente kan ADC2 nie gelyktydig met WiFi gebruik word nie, sodat dit ongelukkig beteken dat ek nie een van die ADC2 GPIO -penne kan gebruik nie: 0, 2, 4, 12, 13, 14, 15, 25, 26, of 27. Ek het 16 en 17 gekies.
Pro tip: as dit lyk asof u encoder agteruit tel, nadat u dit alles bymekaargemaak het, kan u die twee pen -opdragte in config.h omruil.
Sluit laastens die roterende encoder gronddraad aan … tromrol… die grondpen.
Vervolgens word die drukknop nul/herstel verbind tussen die grond en 'n ander gratis pen (ek het GPIO 18 gekies).
Die knoppie wat ek gebruik het, was 'n kort rukkie wat ek van die bogenoemde rekenaarmuis gered het, maar enige knoppie wat u in die omtrek het, sal dit doen. U kan dit sien rus in 'n klein berg wat ek daarvoor gemaak het, regoor die bord.
Uiteindelik benodig die OLED, as dit nog nie aan u kaart gekoppel is nie, slegs vier penne: 3V3-, grond-, i2c -klok- en i2c -data. Op my dev -bord is die klok en data onderskeidelik 22 en 21.
Stap 5: Druk die onderdele uit
Ek het sewe dele vir hierdie konstruksie ontwerp:
Die katrol, wat direk op die as van die roterende encoder gemonteer word
Die luier, wat meer as 'n 608ZZ -laer pas (verwyder die ringe en ontvet met WD40 sodat dit vrylik draai)
Die houer waarop die twee wiele en encoder gemonteer word - let op die spiraalveer vir die ledig
'N Beugel om die houer te stabiliseer. Die foto in hierdie stap wys hoe die hakie aan die houer geheg word
Die omhulsel (onder) om my ESP32 dev board te hou, met 'n spasie vir die USB -kabel aan die kant en nog een bo -op vir die connector wat ek by my encoder drade gevoeg het. Hierdie een is ontwerp om by die Wemos Lolin32 te pas, dus u moet hierdie ontwerp dalk 'n bietjie modifiseer om op 'n ander bord te pas
Die omhulsel (bo) om die OLED -skerm te hou, nog 'n spiraal vir die nul / reset -knoppie
'N Knoppiehouer wat aangepas is vir die klein skakelaar wat ek gehad het, wat ontwerp is om tussen die twee rakke in die onderste omhulsel te rus. Ek gebruik 'n soldeerbout om die skakelaar aan die houer te "plak"; sien die vorige stap vir 'n foto
Alles is bedoel om gedruk te word sonder ondersteuning. Normale PLA in u gekose kleur is al wat u nodig het.
Sit alles bymekaar, koppel dit aan u drukker (hier kan kreatiwiteit nodig wees), en u is gereed.
Aanbeveel:
Slim lessenaar LED -lig - Slim beligting met Arduino - Neopixels -werkruimte: 10 stappe (met foto's)
Slim lessenaar LED -lig | Slim beligting met Arduino | Neopixels Workspace: Ons spandeer deesdae baie tyd tuis, studeer en werk virtueel, so waarom nie ons werkruimte groter maak met 'n pasgemaakte en slim beligtingstelsel Arduino en Ws2812b LED's nie. Hier wys ek u hoe u u Smart bou LED -lessenaar op die tafel wat
IoT -gebaseerde slim tuinmaak en slim landbou met behulp van ESP32: 7 stappe
IoT -gebaseerde slim tuinmaak en slim landbou Met behulp van ESP32: Wêreld verander soos die tyd en so landbou. Tans integreer mense elektronika op elke gebied en die landbou is geen uitsondering hierop nie. Hierdie samesmelting van elektronika in die landbou help boere en mense wat tuine bestuur
DIY slim weegskaal met wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): 10 stappe (met foto's)
DIY Smart Scale With Alarm Clock (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In my vorige projek het ek 'n slim badkamerskaal met Wi-Fi ontwikkel. Dit kan die gebruiker se gewig meet, plaaslik vertoon en dit na die wolk stuur. U kan meer inligting hieroor kry op die onderstaande skakel: https: //www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Koppelvlak Honeywell Vista alarm met slim hub (knipoog/slim): 7 stappe (met foto's)
Koppelvlak Honeywell Vista alarm met slim hub (knipoog/slim): Hallo daar! Ek wou 'n kort handleiding gee oor hoe ek my Honeywell Vista -alarmstelsel in my slim hub kan integreer. Ek gebruik Wink vir hierdie tutoriaal, maar dit behoort te werk met enige slim hub (Smartthings/Iris/ens.) Voordat ons begin, gaan
Slim straatlig met behulp van Ir -sensor met Arduino: 4 stappe (met foto's)
Slim straatlig met behulp van Ir -sensor met Arduino: Teken in op my kanaal vir meer projekte. Hierdie projek handel oor slim straatlig, straatlig sal aanskakel terwyl die voertuig daardeur beweeg. Hier gebruik ons 4 IR -sensors wat die posisie van die voertuig, elke IR -sensor beheer