bondus / klippertoolboard Goto Github PK
View Code? Open in Web Editor NEWA 3D printer tool head controller board
License: GNU General Public License v3.0
A 3D printer tool head controller board
License: GNU General Public License v3.0
Do you think replacing the SN65HVD230 with MCP2542FD makes sense?
You have the CanHatFD; adding the MCP2542FD will extend the capability...
Also, what do you think about adding a rotary position encoder onto the back of the PCB? that way you could have a closed loop stepper driver.
Its a good concept, for my particular use being able to add a bl touch in addition to an endstop would be useful, the touch could remove an additional 2-4 wires though it does require being able to supply 300ma at 5V briefly
Along the same lines, support for an inductive probe might instead of the touch would likely be preferred by some, because they're unlikely to both be used you might be able to save some space by overlapping the header footprints or selecting the supply voltage pin as either 5 or Vin via a solder jumper
Hello,
I like this idea and been looking for a solution for my Wanhao i3 v2.1.
Found this when I watched eddietheengineers video. He mentioned that he had issue with 12v system.
Could you add some type of heat sink to the board to alleviate the heat?
I have moded my printer with a BLTouth probe and dual 12v blowers for part cooling.
TIA
Daniel
How do you connect the StealthBurner LEDs to Huvud 0.61?
Would it be possible to jumper the VCC on the .6x revision to support either 3.3V or 5V? Depending on the hardware used this would allow for broader support.
Heyho,
is it possible to hook up a chamber thermistor on the board ?
and is it possible to control led via the board ? (5v excluding)
and can i read a tacho signal ?
and wen it is possible how ?
Thank you
It might be early on but adding silkscreen labels for the intended use of all the connectors would be helpful.
Hi, I was reading the Klipper CAN code and noticed that it is not using any protocols to send anything more then 8 bytes. This is not error proof especially for the "Waveshare Raspberry Pi CAN hat", the packets can be lost or go out of order.
I mainlined J1939 support to the Linux kernel, in case you are interested to implement it for Klipper - ping me, i'll try to help you.
Hi,
I'm having trouble establishing serial with the toolboard, the board is detected by ~/klipper/scripts/canbus_query.py but klipper fails to see a identify_response on start up. I've pasted my configurations below, it is interfacing with the Waveshare RS485 CAN HAT
Created a socket
Wait for identify_response
Traceback (most recent call last):
File "/home/pi/klipper/klippy/serialhdl.py", line 65, in _get_identify_data
params = self.send_with_response(msg, 'identify_response')
File "/home/pi/klipper/klippy/serialhdl.py", line 249, in send_with_response
return src.get_response([cmd], self.default_cmd_queue)
File "/home/pi/klipper/klippy/serialhdl.py", line 306, in get_response
cmd_queue)
File "/home/pi/klipper/klippy/serialhdl.py", line 241, in raw_send_wait_ack
raise error("Serial connection closed")
error: Serial connection closed
Timeout on connect
My environment:
========= Last MCU build config =========
CONFIG_LOW_LEVEL_OPTIONS=y
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_STEP_DELAY=2
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_FLASH_START=0x8000800
CONFIG_FLASH_SIZE=0x10000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
# CONFIG_STM32_FLASH_START_2000 is not set
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
# CONFIG_STM32_FLASH_START_10000 is not set
CONFIG_STM32_FLASH_START_800=y
# CONFIG_STM32_FLASH_START_0000 is not set
CONFIG_STM32_CLOCK_REF_8M=y
# CONFIG_STM32_CLOCK_REF_12M is not set
# CONFIG_STM32_CLOCK_REF_16M is not set
# CONFIG_STM32_CLOCK_REF_25M is not set
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
CONFIG_CANSERIAL=y
# CONFIG_STM32_USB_PA11_PA12 is not set
# CONFIG_STM32_SERIAL_USART1 is not set
# CONFIG_STM32_SERIAL_USART2 is not set
# CONFIG_STM32_SERIAL_USART3 is not set
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
CONFIG_STM32_CANBUS_PB8_PB9=y
CONFIG_CANBUS_FREQUENCY=500000
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
CONFIG_USB_SERIAL_NUMBER="12345"
# CONFIG_CUSTOM_STEP_DELAY is not set
CONFIG_INITIAL_PINS=""
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_GPIO_BITBANGING=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
/boot/config.txt
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=12000000,interrupt=25,spimaxfrequency=2000000
dtoverlay=spi1-1cs
/etc/network/interfaces.d/can0
auto can0
iface can0 can static
bitrate 500000
up ifconfig $IFACE txqueuelen 128
Thanks!
Is this still an issue with the new Pi Zero W 2? The new Pi is 5x faster than the original. I am looking to use it with 1 toolhead w/ADXL. In the future, I'd like to upgrade to 2 toolheads w/ADXL.
The MCP2515 is a very common SPI connected CAN bus chip. It is a pretty bad options since it has very small buffers on chip and creates a lot of CPU load on the Raspberry Pi, and has a tendency to drop packet. It is not recommended if you use more than 1 or 2 boards or if you plan to use the accelerometer.
You have to run the CAN bus at 250kbits/s or possibly 500kbits/s. An older Pi, or a Pi Zero will not work reliably, it has to be a Pi3 or Pi4 or better.
Just a suggestion for a future iteration.
The pin headers for the ST-LINK programming are taller than the surrounding connections.
I have a Voron 2.4 and I use the Huvud board on the X/Y (A/B) motors.
If the gantry is crooked (which can happen if the printer is off and you lean on the back gantry rail like an idiot)...
and you go to home, you can crash the back rail into the bottom plate.
Since the pins of the header are the highest point, they impact first and they bend.
Picture below was AFTER I had straightened most of them, they were essentially bent down on top of each other.
I'm shocked I didn't fry the board by shorting power and ground.
Next iteration maybe use a 90 degree header so these pins aren't the first thing to hit if a stepper goes too low?
What are you thoughts on using a TMC driver module with a low profile header? This way if the driver goes bad it can be quickly and easily replaced. This also allows us to upgrade the driver module to alternate versions.
Example Low Profile Header: https://www.digikey.com/en/products/detail/samtec-inc/TLW-108-06-G-S/1105092
Other benefit, if you use taller headers for the TMC driver you can place component underneath to maximize footprint.
MWSA0503-100MT according to LCSC is discontinued so not available anymore.
There are 2 SMD Resistors (R4,R7) that don't even show up as parts.
L4 and U3 show as no inventory available. Any possibilities of changing the pcb so that other parts can replace them?
There is no email or other way to contact the author.
Do you think it would be difficult or even feasible to adapt the design to make use of the rp2040 chip rather than the stm32? It seems the stm32s are impossible to buy at the moment and one can pick up single units of the pi pico for about โฌ1. I think the one potential issue is that the pico doesn't have a native CAN implementation but it seems there are multiple implementations of it using the PIO pins.
Just wanted to get your thoughts on the possibility of the above, I am very interested in building a few of these boards but sourcing the parts is not super easy in the current environment :P
I was wondering what are the minimal components needed if you just want a CAN stepper motor controller? Also would the firmware be okay if only the functionality for the stepper motor is populated?
Using the Waveshare RS485 CAN HAT to control the Huvud board over CAN.
Tried both installation with Klipper master using current approach, as well as the updated approach on the klipper work-can-* branch.
Using the pins as described in your sample printer.cfg when attempting stepper moves (e.g. M83, G1 E50
) the stepper successfully moves but shortly after Klipper crashes with the error Transition to shutdown state: Timeout on wait for 'tmcuart_response' response
.
Any ideas?
Are there still major shortages of chips or are these able to be produced?
Can you provide some documentation of the USB functionality? I only need 1 tool head board so I don't need the CAN to daisy chain it.
Thanks for an AMAZING board. Best idea ever.
Like many who are already using higher quality industrial sensors on their 3D printers.
This project was brought to my attention, as part of an ongoing effort to bring CAN Bus effectors to 3D printers.
With Marlin and Klipper firmwars in mind.
However, due to the need for reliability, thermocouple support is essential
Please consider a Thermocouple version
I could not see pins for the accelerometer.
Gnd, 3.3v , sclk miso and mosi?
Hello was not sure how to contact you other than on here. Does this board work with current master of klipper or does it require a branch version?
I have an issue with the thermister reading at low temperatures ( below 10 degrees celcius ). When I start up Klipper shuts down through an ADC threshold error, I have to blast the hot end with a heat gun to get the firmware to start. It seems the thermister on my 0.61 board is out by about 10 degrees at lower temperatures compared to the bed temps but fine at higher temperatures.
The pertinent bits from my extruder section are:
heater_pin: head0:PA6
sensor_type: ATC Semitec 104GT-2
sensor_pin: head0:PA0
pullup_resistor: 2200
min_temp: 0
max_temp: 300
Anyone else find this, or am I configuring something wrong? The sensor type is carried forward from my old non-toolboard config so I know is accurate.
Does this board support an inductive probe (Omron)? Vorons use a 3-wire inductive probe or Klicky. Add this connector and everyone will want to use the board. It's more important than endstops which are not on the toolhead.
Update buy links and photo in README for 0.61
Do you suggest we always install a termination resistor on the board side? Why was it not included on the board?
Thanks!
You have so much crammed into this gem! If you need to free up space you might consider the following:
Eliminate 2 of the mounting holes. Leaving 2 diagonal holes should be sufficient for mounting.
Replace the MicroFit3 connector with one of the fancy NanoFit connectors.
If we could integrate a switching power supply to drop the V-In to 5v, we could avoid powering the Raspberry Pi over USB. I have not read much into the backpowering via the 5V pin; but, this is a feature you could consider.
Meanwell has a ready to use module: MDS15B-05 (18 ~ 36V in, 5V @ 3A out) Datasheet link: https://www.meanwell.com/webapp/product/search.aspx?prod=MDS15
They have a larger version as well: https://www.meanwell.com/webapp/product/search.aspx?prod=MDS20
I know they are on the larger side; but, they are usually fit and forget. No need to adjust the output voltage
Hi,
Really like this project.
Do you think it would be feasible to support a wider range of voltages, up to 48V or 60V for use with large machines and motors?
Would it be possible to get a STEP file of the assembled board? This would really help with figuring out clearances on dense toolheads.
Wanted to ask if you have considered adding a 24 to 5v regulator to the can hat possibly with two jumpers (one positive, one negative) which would feed 5v back into the pi to power it. thus eliminating the need for the micro usb or usb c cable to power the pi. Jumpers so it could be easily disabled or bypassed if that made sense for a given application.
Just thinking aloud as I am running pi 3b+ on my machines and utilize a small buck converter on the gpio pins (04,06) for power. Given the hat design photographed I would need to change some of my setup should I ever try to utilize a setup on par with what you have demonstrated here. but eliminating the extra dangling buck converter would be a nice to have.
hello, can you provide a full list of pins ??
Klipper semi-recently added support for using an accelerometer to help calibrate the input shaper. It would be awesome to have one built into this board (space and CAN bus bandwidth permitting).
is it possible to add 3 steppers onto the board?
by tapping into 4more pins from th stm32f103?
this is needed for a pan/tilt function on my printer as well as the extruder,or can you bring out a version with 2 extra stepper motor driver inputs? (connection solderd directly on the stepstick)
don't need 3 boards on the gantry this way (weightsavings)
regards giel
Can use RP2040? STMs have become very expensive :(
https://jlcpcb.com/parts/componentSearch?isSearch=true&searchTxt=rp2040
Hello! I love the Huvud boards--I have a ton of the V0.50 on my printers and just installed the first V0.61 on a printer last night! There were a few gotchas/clarifications as more people install this:
Add flashing instructions
-8Mhz clock for make menuconfig build
-Add note -- if the wrong bootloader option is selected and you try to flash the Huvud, it will not work--need to flash the bootloader again using an ST-Link
Updated pin descriptions:
Extruder
Step: PB3
Dir: PB4
Enable: PB5
Uart TX: PA9
uart (RX): PA10
Thermistor 1 - PA0
Thermistor 2 - PA1
Heater - PA6
Fan 1 - PA7
Fan 0 - PA8
Endstop 1 - PB10
Endstop 2 - PB11
Endstop 3 - PB12
ADXL CS pin - PB1
Diag for TMC2209? - PA15
I bought a used Huvud board that I accidentally bricked with a bad flash update, it had an old version of CanBoot on it from the previous owner and I compiled Klipper with the wrong bootloader offset (2k instead of 8k), and the CanBoot bootloader happily overwrote part of itself while flashing.
I didn't find any clear documentation on how to restore the bootloader on the Huvud but have been looking at the datasheet for the STM32F103 and it seems this chip does not support bootloader recovery through USB, only UART. And those UART pins are in use by the stepper driver I believe, while the pins that go to the jumper header block are used for the stock bootloader?
Am I right in thinking that the chip would have to be desoldered to be reflashed?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.