100%
dankdryer dankdryer view
Description

Imported from GitHub: dankamongmen/dankdryer · commit 79a0657 · license Apache-2.0

Description

the world's best filament dryer

README

Features

  • Temperatures up to at least 150℃ when printed with proper materials.
    • Such temperatures are appropriate (necessary) for certain engineering filaments.
    • A high-temperature spool is required at these temperatures.
  • Accurate weight sensing throughout to determine how much water has been exorcised.
    • Post contextless deltas to reddit in the heat of dumbass arguments! DATA, bitch!
  • Slow rotation like delicious savory meat.
  • Equal heating of all the spool's filament.
  • Control and reporting over MQTT via WiFi.
  • OTA firmware upgrades.
  • Isolated hot and cool chambers, with most active equipment in the cool chamber.
  • Humidity sensing and temperature sensing in both chambers.
  • Entirely open source.

More info at dankwiki.

Dependencies

The project is built with GNU Make. Running make in the toplevel will attempt to build firmware and STLs. Building the firmware requires the esp-idf library and a configured ESP-IDF environment (i.e. the various IDF_* environment variables must be set), along with CMake. idf.py ought be in your $PATH, and work when invoked.

Firmware

3D models

  • OpenSCAD 2024.10+

I use BOSL2, which is included as a submodule.

PCB

  • KiCad 8+

Construction / BOM

The device as designed requires approximately 600g of high-temperature filament (PA6-CF, PA6-GF, PAHT-CF, etc.) to print. The exact amount of filament will depend on material and print settings. Six pieces must be printed:

  • Hot chamber
  • Cool chamber
  • Top
  • Motor sheath
  • Sheath coupling
  • Spool platform

The hot and cool chamber dominate filament consumption, though the top is non-negligible.

Hot chamber

We need a temperature sensor and hall effect sensor (and obviously the heating circuit) in the hot box; nothing else ought be there.

Cool chamber

PCB components

Generated via Kicad:

DesignatorFootprintQuantityDesignation
U1TPS621321TPS62132
R4R_1206_3216Metric_Pad1.30x1.75mm_HandSolder1360
R2R_1206_3216Metric_Pad1.30x1.75mm_HandSolder1620
R6,R8R_1206_3216Metric_Pad1.30x1.75mm_HandSolder24.7k
C15,C16C_1206_3216Metric_Pad1.33x1.80mm_HandSolder21n
SW2SW_B3F-1000_OMR1bootmode
R13,R20,R15R_1206_3216Metric_Pad1.30x1.75mm_HandSolder310k
R5,R1,R22R_1206_3216Metric_Pad1.30x1.75mm_HandSolder3680
C7,C3,C9,C8,C20C_1206_3216Metric_Pad1.33x1.80mm_HandSolder50.1u
U2TRANS_AH3712-P-B_DIO1AH3712Q-P-B
C6,C13C_1206_3216Metric_Pad1.33x1.80mm_HandSolder222u
C10,C17C_1206_3216Metric_Pad1.33x1.80mm_HandSolder21u
IC1DIP792W51P254L1905H53Q16N1NAU7802KGI
J10FanPinHeader_1x04_P2.54mm_Vertical1lower fan
C19,C2,C1,C14C_1206_3216Metric_Pad1.33x1.80mm_HandSolder410u
J2JST_VH_B5P-VH-B_1x05_P3.96mm_Vertical1to microboard
J4TerminalBlock_bornier-2_P5.08mm1heater
J8TerminalBlock_bornier-2_P5.08mm1motor
J7FanPinHeader_1x04_P2.54mm_Vertical1upper fan
R9,R19R_1206_3216Metric_Pad1.30x1.75mm215k
U6XCVR_ESP32-C6-MINI-1U-H41ESP32-C6-MINI-1U
J11PinHeader_1x01_P1.00mm_Vertical1testpin
R16R_1206_3216Metric_Pad1.30x1.75mm_HandSolder1412
J13BarrelJack_Wuerth_6941xx3010021barreljack
R7R_1206_3216Metric_Pad1.30x1.75mm_HandSolder11.62k
C4,C18C_1206_3216Metric_Pad1.33x1.80mm_HandSolder2.01u
J5TerminalBlock_bornier-4_P5.08mm15kg load cell
R10,R11R_0805_2012Metric_Pad1.15x1.40mm_HandSolder247
U5TO-92_Inline1LM35-LP
R3R_1206_3216Metric_Pad1.30x1.75mm_HandSolder1100
L1IND_IFSC_1515AH_VIS12.2u
R14R_1206_3216Metric_Pad1.30x1.75mm_HandSolder13.3k
OC1MOC306XS_LTO1MOC3063S
C12C_1206_3216Metric_Pad1.33x1.80mm_HandSolder13.3n
C11C_0805_2012Metric_Pad1.18x1.45mm_HandSolder1470p
R21R_1206_3216Metric_Pad1.30x1.75mm_HandSolder168
J9PinHeader_1x04_P2.54mm_Vertical1UART
J6JST_PHD_B8B-PHDSS_2x04_P2.00mm_Vertical1LCD
J3JST_VH_B5P-VH-B_1x05_P3.96mm_Vertical1to baseboard
Q3TO-263-21T1210-800G
Q2SOT-323_SC-701SSM3K127TU
R12R_1206_3216Metric_Pad1.30x1.75mm_HandSolder1330
U3SOT-89-31HT7550

MQTT

MQTT is used to report status and to accept commands.

Controls

  • NAME/control/tare: tare using the last weight read
  • NAME/control/dry: takes as argument a string "DRYS/TEMP", where DRYS and TEMP are unsigned integers specifying the number of seconds to dry, and the temperature to dry at. Any ongoing drying operation will be replaced with the newly specified one. Specifying zero for DRYS will cancel any ongoing drying operation.
  • NAME/control/lpwm: takes as argument a hexadecimal number between 0 and 255, left-padded with zeroes so as to be exactly two digits, i.e. "00".."ff". Sets the lower fan's PWM.
  • NAME/control/upwm: takes as argument a hexadecimal number between 0 and 255, left-padded with zeroes so as to be exactly two digits, i.e. "00".."ff". Sets the upper fan's PWM.
  • NAME/control/factoryreset: takes no arguments. Blanks the persistent storage, disables the motor and heater, and reboots.

Renderings

View from the top of the lower chamber by itself, with the AC adapter and motor assembly present.

Combined OpenSCAD render for mating testing.

Questions

  • How does air flow? Let's get some visible air and test it.
  • What all could we accomplish by reading RFID?
Comments
Sign in to comment

No comments yet. Be the first to ask about this board.