Files
arduino-filament-dryer/README.md
2026-07-05 14:11:57 +02:00

127 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Voron filament dryer
Arduino Nano firmware for a chamber dryer with four SHT31 humidity/temperature sensors, PID heater control, and PWM fan mixing.
## Pinout (Arduino Nano)
All settings below are defined in `include/config.h`.
| Signal | Nano pin | Notes |
|--------|----------|-------|
| I2C SDA | A4 | Shared bus (Wire) |
| I2C SCL | A5 | Shared bus (Wire) |
| TCA9548A mux | I2C `0x70` | 8-channel I2C multiplexer |
| SHT31 sensors | Mux channels 2, 3, 4, 5 | One sensor per channel |
| SHT31 address | `0x44` | ADDR pin low; use `0x45` if ADDR is high |
| Fan | D5 | 24 V fan via N-channel MOSFET (hardware PWM) |
| Heater | A2 | Solid-state relay (burst control) |
USB serial: **115200 baud**.
## Dev setup
### PlatformIO
This repo uses the PlatformIO CLI (see `.vscode/tasks.json`). If PlatformIO is already installed under `~/.platformio/penv/`, use that directly — you do not need to run the web installer again.
```bash
~/.platformio/penv/bin/pio --version
~/.platformio/penv/bin/pio run # build
~/.platformio/penv/bin/pio run -t upload # flash
~/.platformio/penv/bin/pio device monitor # serial monitor
```
On Arch Linux / CachyOS, install via the package manager if you prefer:
```bash
sudo pacman -S platformio
```
If upload cannot find the port, add to `platformio.ini`:
```ini
upload_port = /dev/ttyUSB0 ; or /dev/ttyACM0, or a /dev/serial/by-id/... path
monitor_port = /dev/ttyUSB0
```
List available ports:
```bash
ls -la /dev/serial/by-id/
```
### Serial port permissions (Linux)
**Recommended — udev rules (one-time, works in Cursor without re-login):**
```bash
sudo ./scripts/install-udev-rules.sh
# unplug and replug the Arduino
```
This installs PlatformIOs `99-platformio-udev.rules` (covers CH340 clone Nanos and other common adapters).
**Alternative — group membership:**
```bash
# Arch / CachyOS
sudo usermod -aG uucp $USER
```
You must **fully log out of the desktop** (not just reboot or open a new terminal) so `id` shows the new group. Cursors terminal often keeps the old group list until you restart Cursor after logging out.
**Immediate workaround** (no sudo, current terminal only):
```bash
sg uucp -c "$HOME/.platformio/penv/bin/pio run -t upload"
```
Verify access: `test -w /dev/ttyUSB0 && echo ok`
## First run
1. Flash firmware and open the serial monitor at 115200 baud.
2. Confirm `TCA9548A detected` and four valid sensor channels (`ch2``ch5`).
3. Run PID autotune once per physical unit (values are stored in EEPROM):
```
target 0
autotune 45
```
4. Start drying:
```
target 55
```
Send `help` over serial for all commands (`target`, `fan on/off`, `log on/off`, `status`, `pid`, etc.).
## Raspberry Pi control
On the Pi, use the curses TUI to set targets and monitor the chamber (SSH with a TTY: `ssh -t`):
```bash
python3 scripts/capture_csv.py tui
```
Keys: `0` idle · `t` target · `p` material presets · `f`/`F` fan · `l` CSV log · `a` autotune · `:` command · `q` quit
Headless CSV-only logging (e.g. systemd) is documented in [pi-instructions.md](pi-instructions.md).
## Filament drying table
| Filament | Dryer temperature | Drying time (hours) |
|----------|-------------------|---------------------|
| PLA | 5055 °C (122131 °F) | > 6 |
| ABS | 6065 °C (140149 °F) | > 6 |
| PETG | 6065 °C (140149 °F) | > 6 |
| Nylon | 7075 °C (158167 °F) | > 24 |
| Desiccants | 6065 °C (149 °F) | > 12 |
| PVA | 4045 °C (104113 °F) | > 24 |
| TPU/TPE | 5055 °C (122131 °F) | > 8 |
| ASA | 6065 °C (140149 °F) | > 8 |
| PP | 5055 °C (122131 °F) | > 6 |
| HIPS | 6065 °C (140149 °F) | > 8 |
| PC | 7075 °C (158167 °F) | > 12 |
| PEEK | 120125 °C (248257 °F) | > 24 |