Giter Club home page Giter Club logo

drybox's Introduction

DryBox

2 in 1 solution for Storing and Drying Filament for 3D printing.

This repo contains all the information I gathered while developing my DryBox. It is a work in progress, and I will keep updating it as I go.

Image of a LCD screen with the message 'DryBox 1.0 by LeandroSQ01'

Features

  • PID control of the temperature
    • Feed forward control using the hotend temperature
      • After stabilizing the box temperature, I get .1ºC of error. I'm happy with that.
    • Anti-windup
  • IO/Serial
    • Send values and readings to the serial port every X seconds
    • Receives serial commands such as:
      • SETPOINT <value> - Set the temperature setpoint
      • PID <Kp> <Ki> <Kd> <FF> - Tune the PID values
      • FAN <value> - Override the FAN speed
      • HEATER <value> - Override the Heater output
  • Home assistant integration
  • Silent FAN PWM control
  • Safety features
    • Over temperature protection
    • DHT sensor error detection
    • Watchdog timer
  • Calculates absolute humidity and the water vapor mass inside the box
  • LCD 16x2 display using I2C
    • Custom icons on the LCD display
  • Bowden tube from the box to the printer
  • Filament runout sensor
    • Already bought, have to install

Integrations

Python

Under src/tools you can find a python script that enables realtime plotting and control of the DryBox.

Example while I was developing this

Home Assistant

Using template sensors you can integrate via USB/Serial the DryBox with Home Assistant. (Only if your board supports Serial communication, or you can use a TTL converter too)

sensor:
  - platform: serial
    name: drybox
    serial_port: /dev/ttyACM1 # Replace with your port
    baudrate: 9600 # Replace with your baudrate
template:
  - binary_sensor:
    - name: "drybox_status"
      template: "{{ has_value('sensor.drybox') }}"
  - sensor:
      - name: "Fan Speed (PWM)"
        unit_of_measurement: "PWM"
        state: "{{ states('sensor.drybox').split(',')[0] | float(default=0) }}"
      - name: "Fan Speed"
        unit_of_measurement: "%"
        state: "{{ states('sensor.drybox').split(',')[1] | float(default=0) }}"
      - name: "Hotend temperature"
        unit_of_measurement: "ºC"
        state: "{{ states('sensor.drybox').split(',')[2] | float(default=0) }}"
      - name: "Heater setpoint"
        unit_of_measurement: "ºC"
        state: "{{ states('sensor.drybox').split(',')[3] | float(default=0) }}"
      - name: "Heater PID output"
        unit_of_measurement: "%"
        state: "{{ states('sensor.drybox').split(',')[4] | float(default=0) }}"
      - name: "Box temperature"
        unit_of_measurement: "ºC"
        state: "{{ states('sensor.drybox').split(',')[5] | float(default=0) }}"
      - name: "Box humidity"
        unit_of_measurement: "rh%"
        state: "{{ states('sensor.drybox').split(',')[6] | float(default=0) }}"
      - name: "Box absolute humidity"
        unit_of_measurement: "g/m³"
        state: "{{ states('sensor.drybox').split(',')[7] | float(default=0) }}"

Into your configuration.yaml

Hardware

Component Alternatives Description
MCU Arduino Nano or ESP8266 Controls everything
LCD 16x2 I2C OLED 128x64 or TFT screen Display the information, and looks cool
Temperature Sensor DHT11, DHT22 or DS18B20 Reads the temperature and humidity inside the box
FAN 12V 80mm Moves the air inside the box
Heatsink 80x80x10mm Used to increase the surface area and heat more air in contact
3d printer hotend cartridge - Used to heat the air inside the box
3d printer hotend block - Used to attach the cartridge and thermistor to the heatsink block
100K NTC Thermistor - Used to read the temperature of the hotend
12V 5A~ power supply I'm using one with 10A here just to be sure Powers the whole thing
5V to 3.3V Buck Converter Not really needed if your board already has a tension regulator embedded Found that DHT sensors work better at 3.3v
IRLZ44N - Used to control the heater output voltage using PWM
2N2222 - Used to control the FAN output voltage using PWM
Resistors, capacitors, connectors, etc - -
3/16" screws, washers and nuts - Used to hold parts onto the box
60L Foam box - Used to isolate the air inside the box
3D printed parts - Used to hold the parts together
PU glue - Used to fill holes and ensure the seal
Foam glue - Used to glue 3D printed parts into the box
M10 bowden connectors M6 bowden, but I have heard they introduce friction on the filament Used to connect attach a PTFE tube from the box to the printer
PTFE tube - Used to connect the box to the printer

Some other stuff that helps:

  • Hot glue gun
  • IR Thermal gun
  • Multimeter
  • Soldering iron
  • 3D printer (duh)

And some other stuff I forgot to mention here.

Notes

I printed everything with PLA, given that the temperatures should not exceed 60ºC inside the box, it should be fine. But while developing this I had an issue where the box stayed at 70ºC for a long time, and the fan support made with PLA started to deform. It still works, but probably a better idea to print in PETG or ABS ASA.

The PLA I used was HT, but I did not perform the cristalization process, so it is not as strong as it could be.

Circuit

Schematic

Overview

Click here to see the components (Generated from Tinkercad)
Name Quantity Component
MCU 1 Arduino Uno R3
12v 10A Power Supply 1 12 , 10 Power Supply
MOSFET IRLZ44N 1 nMOS Transistor (MOSFET)
Transistor 2N2222 1 NPN Transistor (BJT)
Zener Diode 12v 1 12 V Zener Diode
RResistor 470R 1 470 Ω Resistor
Resistor 1k 1 1 kΩ Resistor
Resistor 2R2 1 2 Ω Resistor
Eletrolytic Capacitor 100uF 16V 1 100 uF, 16 V Polarized Capacitor
DHT22, UThermistor 100K NTC 2 Temperature Sensor
Fan 1 DC Motor
Hotend cartridge 1 Heater
Ceramic Capacitor 104 nF 1 104 nF Capacitor
LCD Display I2C 1 PCF8574-based, 39 (0x27) LCD 16 x 2 (I2C)

I have a KiCad schematic for my PCB somewhere, someday I will upload it here :p

Resources:

Inspiration

OSS Projects

drybox's People

Contributors

leandrosq avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.