Difference between revisions of "Reheat A0"

From iagent
Jump to: navigation, search
(Add VUSB errata)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
Reheat is a 6 output heater board with temperature sensors and fans for multi material printing.
 +
<div class="res-img">
 +
[[File:Reheat A0.png]]
 +
</div>
 +
 +
==Schematics==
 +
* [https://github.com/intelligent-agent/Recore/blob/master/Schematics/Reheat_A0.pdf Reheat A0 Schematics (PDF)]
 +
 +
==Features==
 +
* RP2354B microcontroller (ARM Cortex-M33, 150 MHz)
 +
* 6x heater outputs (24 V, MOSFET-switched)
 +
* 6x fan outputs (24 V PWM) with tachometer inputs
 +
* 6x thermistor/temperature sensor inputs
 +
** Supports: NTC 10K, NTC 100K, PT100, PT1000, Type K thermocouple
 +
** Jumper-selectable per channel
 +
* 12x endstop inputs (5 V tolerant, TVS-protected)
 +
** ENDSTOP-12 supports a bidirectional signal (e.g. filament encoder)
 +
* USB-C interface (USB 2.0)
 +
* 24 V power input with onboard 5 V (3 A) and 3.3 V regulation
 +
* Overcurrent detection on fan bus
  
 +
==Pinout==
  
 +
{| class="wikitable"
 +
|-
 +
! GPIO !! Signal !! Connector
 +
|-
 +
| GPIO0 || HEATER-1 || J2
 +
|-
 +
| GPIO1 || HEATER-2 || J3
 +
|-
 +
| GPIO2 || HEATER-3 || J6
 +
|-
 +
| GPIO3 || HEATER-4 || J11
 +
|-
 +
| GPIO4 || HEATER-5 || J12
 +
|-
 +
| GPIO5 || HEATER-6 || J13
 +
|-
 +
| GPIO6 || FAN-1 || J34
 +
|-
 +
| GPIO7 || FAN-2 || J35
 +
|-
 +
| GPIO8 || FAN-3 || J36
 +
|-
 +
| GPIO9 || FAN-4 || J37
 +
|-
 +
| GPIO10 || FAN-5 || J38
 +
|-
 +
| GPIO11 || FAN-6 || J39
 +
|-
 +
| GPIO12 || TACH-1 || J34
 +
|-
 +
| GPIO13 || TACH-2 || J35
 +
|-
 +
| GPIO14 || TACH-3 || J36
 +
|-
 +
| GPIO15 || TACH-4 || J37
 +
|-
 +
| GPIO16 || TACH-5 || J38
 +
|-
 +
| GPIO17 || TACH-6 || J39
 +
|-
 +
| GPIO18 || ENDSTOP-1 || J14
 +
|-
 +
| GPIO19 || ENDSTOP-2 || J15
 +
|-
 +
| GPIO20 || ENDSTOP-3 || J16
 +
|-
 +
| GPIO21 || ENDSTOP-4 || J17
 +
|-
 +
| GPIO22 || ENDSTOP-5 || J18
 +
|-
 +
| GPIO23 || ENDSTOP-6 || J19
 +
|-
 +
| GPIO24 || ENDSTOP-7 || J20
 +
|-
 +
| GPIO25 || ENDSTOP-8 || J21
 +
|-
 +
| GPIO26 || ENDSTOP-9 || J22
 +
|-
 +
| GPIO27 || ENDSTOP-10 || J23
 +
|-
 +
| GPIO28 || ENDSTOP-11 || J24
 +
|-
 +
| GPIO29 || ENDSTOP-12 || J25
 +
|-
 +
| GPIO30 || MUX-S0 || Internal
 +
|-
 +
| GPIO31 || MUX-S1 || Internal
 +
|-
 +
| GPIO32 || MUX-S2 || Internal
 +
|-
 +
| GPIO33 || PWM-GAIN || Internal
 +
|-
 +
| GPIO34 || PWM-OFFSET || Internal
 +
|-
 +
| GPIO35 || PWM-CURRENT || Internal
 +
|-
 +
| GPIO36 || EN-PULLUP || Internal
 +
|-
 +
| GPIO37 || ENDSTOP-12-DIR || J25
 +
|-
 +
| GPIO38 || FAN-OC (overcurrent) || Internal
 +
|-
 +
| GPIO40 / ADC0 || THERM-1 || J27
 +
|-
 +
| GPIO41 / ADC1 || THERM-2 || J28
 +
|-
 +
| GPIO42 / ADC2 || THERM-3 || J29
 +
|-
 +
| GPIO43 / ADC3 || THERM-4 || J30
 +
|-
 +
| GPIO44 / ADC4 || THERM-5 || J31
 +
|-
 +
| GPIO45 / ADC5 || THERM-6 || J32
 +
|-
 +
| GPIO46 / ADC6 || ADC (MUX output) || Internal
 +
|-
 +
| GPIO47 / ADC7 || CURRENT sense || Internal
 +
|}
  
Reheat is a 6 output heater board with temperature sensors and fans for multi material printing.
 
<div class="res-img">
 
[[File:Reheat A0.png]]
 
</div>
 
 
==Hardware connections==
 
==Hardware connections==
  
The Revolt add-on baord is designed to stack on top of the Recore A7 board. There are two dual row connectors on the Revolt board, but only one on Recore A7. The enable/disable for the TMC2160 drivers are connected to the +24V from the bottom board, so the drivers are enabled when . It is enabled by default. There is also no diag output from the drivers. Those are broken out on the two other rows and can be connected to pins on the MCU header or DBG header if sensorless homing is required.  
+
===Power===
 +
The board takes 24 V DC on a 4-pin connector (J33). A fuse (F1) and a 2 mΩ current-sense resistor (R98) protect the input. Onboard regulators provide +5 V (TPS54302 buck converter, 3 A) and +3.3 V (AMS1117-3.3, 1 A) for logic and sensor pull-ups.
  
==Klipper config==
+
===Heaters===
This config is using stepper x and y as the high voltage drivers, typical of a core-xy printer setup for speed. This gives the option of having 4 Z-drives and two extruders, 8 steppers in total.
+
Six heater outputs use 2SK3019 N-channel MOSFETs driven from GPIO0–GPIO5. Each output has a 2-pin female connector and a flyback Schottky diode. The heater voltage is 24 V.
  
This section sets up the two drivers (X = S6 and Y = S7)
+
===Fans===
 +
Six fan outputs (GPIO6–GPIO11) use N-channel MOSFETs with a 24 V supply. Each has a 3-pin connector (V+, GND, TACH). Tachometer signals are read on GPIO12–GPIO17. An LM393 comparator monitors the fan bus for overcurrent and signals FAN-OC on GPIO38.
 +
 
 +
===Thermistors===
 +
Each thermistor channel has a 3-pin connector (J27–J32) with a jumper (JP1–JP6) to select the measurement mode. An analog MUX (CD4051) and op-amp signal conditioning chain feed the ADC inputs (GPIO40–GPIO45). The signal conditioning supports:
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Sensor type !! Measurement method
 +
|-
 +
| NTC 10K || Voltage divider with 4.7 K pull-up
 +
|-
 +
| NTC 100K || Voltage divider with 4.7 K pull-up
 +
|-
 +
| PT100 || 1 mA constant current source (Kelvin connection)
 +
|-
 +
| PT1000 || 1 mA constant current source (Kelvin connection)
 +
|-
 +
| Type K thermocouple || ×101 gain amplifier, buffered
 +
|}
 +
 
 +
For NTC thermistor or PT1000 measurements, close jumpers JP1–JP6 to connect the 4.7 K pull-up resistors. With the jumpers closed, ADC0–ADC5 (GPIO40–GPIO45) can be used as standard thermistor inputs with a 4.7 K pull-up to 3.3 V, without the need for any additional signal conditioning.
 +
 
 +
==Errata==
 +
# DP/DM USB data lines are swapped.
 +
# RUN pin is hardwired to ground, preventing software reset.
 +
# U11 and U15 (LMV321 op-amps in thermistor circuit) have V+ and V- supply pins reversed.
 +
# Pull-up resistor footprints (JP1–JP6) use a 1 mm pin pitch instead of the standard 2.54 mm.
 +
# VUSB is unconnected, so the board requires 24 V power to operate even when connected over USB.
 +
 
 +
==Klipper configuration==
 +
 
 +
The Reheat A0 connects to the host over USB and is configured as an MCU in Klipper. Find the serial path with <code>ls /dev/serial/by-id/</code> and add to <code>printer.cfg</code>:
 +
 
 +
<pre>
 +
[mcu reheat]
 +
serial: /dev/serial/by-id/usb-Klipper_rp2350_XXXXXXXXXXXX-if00
 +
</pre>
 +
 
 +
===Heaters===
 +
<pre>
 +
[heater_generic heater1]
 +
heater_pin: reheat:gpio0
 +
sensor_type: NTC 100K MGB18-104F39050L32
 +
sensor_pin: reheat:gpio40
 +
control: pid
 +
pid_Kp: 22
 +
pid_Ki: 1.08
 +
pid_Kd: 114
 +
 
 +
[heater_generic heater2]
 +
heater_pin: reheat:gpio1
 +
sensor_type: NTC 100K MGB18-104F39050L32
 +
sensor_pin: reheat:gpio41
 +
control: pid
 +
pid_Kp: 22
 +
pid_Ki: 1.08
 +
pid_Kd: 114
 +
</pre>
 +
 
 +
===Fans===
 
<pre>
 
<pre>
[tmc5160 stepper_x]
+
[fan_generic fan1]
run_current: 0.6
+
pin: reheat:gpio6
hold_current: 0.2
 
sense_resistor: 0.05
 
cs_pin: ar100:PD0
 
spi_software_sclk_pin: ar100:PD2
 
spi_software_mosi_pin: ar100:PD1
 
spi_software_miso_pin: ar100:PD3
 
chain_position: 2
 
chain_length: 2
 
stealthchop_threshold: 9999
 
  
[tmc5160 stepper_y]
+
[fan_generic fan2]
run_current: 0.6
+
pin: reheat:gpio7
hold_current: 0.2
 
sense_resistor: 0.05
 
cs_pin: ar100:PD0
 
chain_position: 1
 
chain_length: 2
 
stealthchop_threshold: 9999
 
 
</pre>
 
</pre>
  
To route step and dir signals to the same motors:  
+
===Endstops===
 +
Endstop pins can be referenced in the relevant stepper sections:
 
<pre>
 
<pre>
 
[stepper_x]
 
[stepper_x]
step_pin: ar100:PL10
+
endstop_pin: reheat:gpio18
dir_pin: ar100:PE14
+
</pre>
  
[stepper_y]
+
==Flashing Klipper==
step_pin: ar100:PL11
 
dir_pin: !ar100:PE15
 
</pre>
 
  
==Recompiling Klipper==
+
# Put the board in BOOTSEL mode: hold the BOOT button while plugging in USB (or hold BOOT, press RESET, then release BOOT).
<div class="alert alert-warning">
+
# Build and flash from the Klipper source directory:
===='''Note'''====
 
If you use Rebuild v1.0.0-RC0 or later, a recompilation is not necessary.
 
</div>
 
Klipper needs to be recompiled to add software based SPI. Starting with Refactor v3.2.0-RC3
 
 
<pre>
 
<pre>
cd /home/debian/klipper
 
nano src/Makefile
 
<remove thermocouple.c sensor_adxl345.c and sensor_angle.c>
 
 
make menuconfig
 
make menuconfig
<enable Support software based SPI "bit-banging">
+
# Processor model: rp2350
make clean
+
# Bootloader offset: No bootloader
 +
# Communication interface: USBSERIAL
 
make
 
make
mv out/ar100.bin /opt/firmware/
+
picotool load out/klipper.uf2 --force
 +
picotool reboot
 
</pre>
 
</pre>
 +
The board will reboot and appear as <code>/dev/ttyACM0</code> (or similar).
  
==Tuning curves==
+
[[Category:Hardware]]
The following oscilloscope capture shows the Revolt A1 running a NEMA 17 stepper at 30 V. The traces are A1 output (yellow) and gate for A1 (pink). The tuning looks good, very little ringing.
 
<div class="res-img">
 
[[File:Tuning gate and source.png]]
 
</div>
 
 
 
  
 
==Errata==
 
==Errata==
# Plus and minus silkscreen has changed places.
+
# DP/DM USB data lines are swapped.
# The enable LED is lighting even though the 24 V input is not present.
+
# RUN pin is hardwired to ground, preventing software reset.
 +
# U11 and U15 (LMV321 op-amps in thermistor circuit) have V+ and V- supply pins reversed.
 +
# Pull-up resistor footprints (JP1–JP6) use a 1 mm pin pitch instead of the standard 2.54 mm.

Latest revision as of 18:00, 16 May 2026

Reheat is a 6 output heater board with temperature sensors and fans for multi material printing.

Reheat A0.png

Schematics

Features

  • RP2354B microcontroller (ARM Cortex-M33, 150 MHz)
  • 6x heater outputs (24 V, MOSFET-switched)
  • 6x fan outputs (24 V PWM) with tachometer inputs
  • 6x thermistor/temperature sensor inputs
    • Supports: NTC 10K, NTC 100K, PT100, PT1000, Type K thermocouple
    • Jumper-selectable per channel
  • 12x endstop inputs (5 V tolerant, TVS-protected)
    • ENDSTOP-12 supports a bidirectional signal (e.g. filament encoder)
  • USB-C interface (USB 2.0)
  • 24 V power input with onboard 5 V (3 A) and 3.3 V regulation
  • Overcurrent detection on fan bus

Pinout

GPIO Signal Connector
GPIO0 HEATER-1 J2
GPIO1 HEATER-2 J3
GPIO2 HEATER-3 J6
GPIO3 HEATER-4 J11
GPIO4 HEATER-5 J12
GPIO5 HEATER-6 J13
GPIO6 FAN-1 J34
GPIO7 FAN-2 J35
GPIO8 FAN-3 J36
GPIO9 FAN-4 J37
GPIO10 FAN-5 J38
GPIO11 FAN-6 J39
GPIO12 TACH-1 J34
GPIO13 TACH-2 J35
GPIO14 TACH-3 J36
GPIO15 TACH-4 J37
GPIO16 TACH-5 J38
GPIO17 TACH-6 J39
GPIO18 ENDSTOP-1 J14
GPIO19 ENDSTOP-2 J15
GPIO20 ENDSTOP-3 J16
GPIO21 ENDSTOP-4 J17
GPIO22 ENDSTOP-5 J18
GPIO23 ENDSTOP-6 J19
GPIO24 ENDSTOP-7 J20
GPIO25 ENDSTOP-8 J21
GPIO26 ENDSTOP-9 J22
GPIO27 ENDSTOP-10 J23
GPIO28 ENDSTOP-11 J24
GPIO29 ENDSTOP-12 J25
GPIO30 MUX-S0 Internal
GPIO31 MUX-S1 Internal
GPIO32 MUX-S2 Internal
GPIO33 PWM-GAIN Internal
GPIO34 PWM-OFFSET Internal
GPIO35 PWM-CURRENT Internal
GPIO36 EN-PULLUP Internal
GPIO37 ENDSTOP-12-DIR J25
GPIO38 FAN-OC (overcurrent) Internal
GPIO40 / ADC0 THERM-1 J27
GPIO41 / ADC1 THERM-2 J28
GPIO42 / ADC2 THERM-3 J29
GPIO43 / ADC3 THERM-4 J30
GPIO44 / ADC4 THERM-5 J31
GPIO45 / ADC5 THERM-6 J32
GPIO46 / ADC6 ADC (MUX output) Internal
GPIO47 / ADC7 CURRENT sense Internal

Hardware connections

Power

The board takes 24 V DC on a 4-pin connector (J33). A fuse (F1) and a 2 mΩ current-sense resistor (R98) protect the input. Onboard regulators provide +5 V (TPS54302 buck converter, 3 A) and +3.3 V (AMS1117-3.3, 1 A) for logic and sensor pull-ups.

Heaters

Six heater outputs use 2SK3019 N-channel MOSFETs driven from GPIO0–GPIO5. Each output has a 2-pin female connector and a flyback Schottky diode. The heater voltage is 24 V.

Fans

Six fan outputs (GPIO6–GPIO11) use N-channel MOSFETs with a 24 V supply. Each has a 3-pin connector (V+, GND, TACH). Tachometer signals are read on GPIO12–GPIO17. An LM393 comparator monitors the fan bus for overcurrent and signals FAN-OC on GPIO38.

Thermistors

Each thermistor channel has a 3-pin connector (J27–J32) with a jumper (JP1–JP6) to select the measurement mode. An analog MUX (CD4051) and op-amp signal conditioning chain feed the ADC inputs (GPIO40–GPIO45). The signal conditioning supports:

Sensor type Measurement method
NTC 10K Voltage divider with 4.7 K pull-up
NTC 100K Voltage divider with 4.7 K pull-up
PT100 1 mA constant current source (Kelvin connection)
PT1000 1 mA constant current source (Kelvin connection)
Type K thermocouple ×101 gain amplifier, buffered

For NTC thermistor or PT1000 measurements, close jumpers JP1–JP6 to connect the 4.7 K pull-up resistors. With the jumpers closed, ADC0–ADC5 (GPIO40–GPIO45) can be used as standard thermistor inputs with a 4.7 K pull-up to 3.3 V, without the need for any additional signal conditioning.

Errata

  1. DP/DM USB data lines are swapped.
  2. RUN pin is hardwired to ground, preventing software reset.
  3. U11 and U15 (LMV321 op-amps in thermistor circuit) have V+ and V- supply pins reversed.
  4. Pull-up resistor footprints (JP1–JP6) use a 1 mm pin pitch instead of the standard 2.54 mm.
  5. VUSB is unconnected, so the board requires 24 V power to operate even when connected over USB.

Klipper configuration

The Reheat A0 connects to the host over USB and is configured as an MCU in Klipper. Find the serial path with ls /dev/serial/by-id/ and add to printer.cfg:

[mcu reheat]
serial: /dev/serial/by-id/usb-Klipper_rp2350_XXXXXXXXXXXX-if00

Heaters

[heater_generic heater1]
heater_pin: reheat:gpio0
sensor_type: NTC 100K MGB18-104F39050L32
sensor_pin: reheat:gpio40
control: pid
pid_Kp: 22
pid_Ki: 1.08
pid_Kd: 114

[heater_generic heater2]
heater_pin: reheat:gpio1
sensor_type: NTC 100K MGB18-104F39050L32
sensor_pin: reheat:gpio41
control: pid
pid_Kp: 22
pid_Ki: 1.08
pid_Kd: 114

Fans

[fan_generic fan1]
pin: reheat:gpio6

[fan_generic fan2]
pin: reheat:gpio7

Endstops

Endstop pins can be referenced in the relevant stepper sections:

[stepper_x]
endstop_pin: reheat:gpio18

Flashing Klipper

  1. Put the board in BOOTSEL mode: hold the BOOT button while plugging in USB (or hold BOOT, press RESET, then release BOOT).
  2. Build and flash from the Klipper source directory:
make menuconfig
# Processor model: rp2350
# Bootloader offset: No bootloader
# Communication interface: USBSERIAL
make
picotool load out/klipper.uf2 --force
picotool reboot

The board will reboot and appear as /dev/ttyACM0 (or similar).

Errata

  1. DP/DM USB data lines are swapped.
  2. RUN pin is hardwired to ground, preventing software reset.
  3. U11 and U15 (LMV321 op-amps in thermistor circuit) have V+ and V- supply pins reversed.
  4. Pull-up resistor footprints (JP1–JP6) use a 1 mm pin pitch instead of the standard 2.54 mm.