Trouble Connecting to External Stepper Motor Driver

Hi all,

I have the Smoothieboard v1 which I am hoping to use for printing ceramics with a kit from Stoneflower. I already have the 3 motors for controlling my delta printer connected to M1, M2, and M3, respectively. The end effector is moving as expected.

However, I am having trouble sending commands to the Stoneflower control unit, which has its own stepper motor driver for moving the ceramic printhead. I am referencing page 18 of the Stoneflower manual (linked above and pictured below for convenience), which actually uses the Smoothieboard v1 as an example. I did exactly what they said, but no data seems to be getting to the Stoneflower printhead. I am able to manually “jog” the printhead motor on the Stoneflower control board, so I know that the printhead motor is operational.

Note that my Smoothieboard does NOT have the two stepper motor drivers that I circled in yellow in the image above (the board just came like this). I figured this shouldn’t be an issue in my case since the ceramic printing kit has its own internal stepper motor drive (as mentioned above). However, for testing purposes, I did try connecting the Stoneflower control unit to M1 instead, and this DID generate movement in the printhead and ram extruder. This part is confusing to me: wouldn’t the signal essentially be passing through 2 stepper motor drivers at that point?

I didn’t change anything related to M4 or M5 in my config file, but I am pasting at the end of this post for reference.

I will also paste the .gcode I was testing with.

Does anyone know what could be going on? Is there something else I need to edit in the config file to send data to the pins labeled EN4, DIR4, ST4, GND on the Smoothieboard?

Please let me know if I can provide any more information about my build. I realize its a pretty specific set of circumstances. Thanks so much in advance!

CONFIG FILE

# Smoothieboard configuration file, see http://smoothieware.org/configuring-smoothie
# NOTE Lines must not exceed 132 characters, and '#' characters mean what follows is ignored
## Robot module configurations : general handling of movement G-codes and slicing into moves

# Basic motion configuration
default_feed_rate                            4000             # Default speed (mm/minute) for G1/G2/G3 moves
default_seek_rate                            4000             # Default speed (mm/minute) for G0 moves
mm_per_arc_segment                           0.0              # Fixed length for line segments that divide arcs, 0 to disable
#mm_per_line_segment                         5                # Cut lines into segments this size
mm_max_arc_error                             0.01             # The maximum error for line segments that divide arcs 0 to disable
                                                              # note it is invalid for both the above be 0
                                                              # if both are used, will use largest segment length based on radius
delta_segments_per_second                    100              # For deltas only, number of segments per second, set to 0 to disable
                                                              # and use mm_per_line_segment

# Arm solution configuration : Cartesian robot. Translates mm positions into stepper positions
# See http://smoothieware.org/stepper-motors
alpha_steps_per_mm                           100              # Steps per mm for alpha ( X ) stepper and tower
beta_steps_per_mm                            100              # Steps per mm for beta ( Y ) stepper and tower
gamma_steps_per_mm                           100              # Steps per mm for gamma ( Z ) stepper and tower

# Delta configuration
# See http://smoothieware.org/delta
arm_solution                                 linear_delta     # Selects the linear delta arm solution
arm_length                                   440.0            # This is the length of an arm from hinge to hinge
arm_radius                                   227.4            # This is the horizontal distance from hinge to hinge when the effector is centered

# Planner module configuration : Look-ahead and acceleration configuration
# See http://smoothieware.org/motion-control
acceleration                                 3000             # Acceleration in mm/second/second.
#z_acceleration                              500              # Acceleration for Z only moves in mm/s^2, 0 uses acceleration which is the default. DO NOT SET ON A DELTA
junction_deviation                           0.05             # See http://smoothieware.org/motion-control#junction-deviation
#z_junction_deviation                        0.0              # For Z only moves, -1 uses junction_deviation, zero disables junction_deviation on z moves DO NOT SET ON A DELTA

# Cartesian axis speed limits
x_axis_max_speed                             30000            # Maximum speed in mm/min
y_axis_max_speed                             30000            # Maximum speed in mm/min
z_axis_max_speed                             30000            # Maximum speed in mm/min

# Stepper module configuration
# Pins are defined as  ports, and pin numbers, appending "!" to the number will invert a pin
# See http://smoothieware.org/pin-configuration and http://smoothieware.org/pinout
alpha_step_pin                               2.0              # Pin for alpha stepper step signal
alpha_dir_pin                                0.5              # Pin for alpha stepper direction, add '!' to reverse direction
alpha_en_pin                                 0.4              # Pin for alpha enable pin
alpha_current                                1.5              # M1 stepper motor current
alpha_max_rate                               30000.0          # Maximum rate in mm/min

beta_step_pin                                2.1              # Pin for beta stepper step signal
beta_dir_pin                                 0.11             # Pin for beta stepper direction, add '!' to reverse direction
beta_en_pin                                  0.10             # Pin for beta enable
beta_current                                 1.5              # M2 stepper motor current
beta_max_rate                                30000.0          # Maxmimum rate in mm/min

gamma_step_pin                               2.2              # Pin for gamma stepper step signal
gamma_dir_pin                                0.20             # Pin for gamma stepper direction, add '!' to reverse direction
gamma_en_pin                                 0.19             # Pin for gamma enable
gamma_current                                1.5              # M3 stepper motor current
gamma_max_rate                               30000.0          # Maximum rate in mm/min

## Extruder module configuration
# See http://smoothieware.org/extruder
extruder.hotend.enable                          true          # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend.steps_per_mm                    140           # Steps per mm for extruder stepper
extruder.hotend.default_feed_rate               600           # Default rate ( mm/minute ) for moves where only the extruder moves
extruder.hotend.acceleration                    500           # Acceleration for the stepper motor mm/sec²
extruder.hotend.max_speed                       50            # Maximum speed in mm/s

extruder.hotend.step_pin                        2.3           # Pin for extruder step signal
extruder.hotend.dir_pin                         0.22          # Pin for extruder dir signal ( add '!' to reverse direction )
extruder.hotend.en_pin                          0.21          # Pin for extruder enable signal

# Extruder offset
#extruder.hotend.x_offset                        0            # X offset from origin in mm
#extruder.hotend.y_offset                        0            # Y offset from origin in mm
#extruder.hotend.z_offset                        0            # Z offset from origin in mm

# Firmware retract settings when using G10/G11, these are the defaults if not defined, must be defined for each extruder if not using the defaults
#extruder.hotend.retract_length                  3            # Retract length in mm
#extruder.hotend.retract_feedrate                45           # Retract feedrate in mm/sec
#extruder.hotend.retract_recover_length          0            # Additional length for recover
#extruder.hotend.retract_recover_feedrate        8            # Recover feedrate in mm/sec (should be less than retract feedrate)
#extruder.hotend.retract_zlift_length            0            # Z-lift on retract in mm, 0 disables
#extruder.hotend.retract_zlift_feedrate          6000         # Z-lift feedrate in mm/min (Note mm/min NOT mm/sec)

delta_current                                    1.5          # M4 driver - typically first extruder stepper motor current

# Second extruder module configuration
#extruder.hotend2.enable                         true         # Whether to activate the extruder module at all. All configuration is ignored if false
#extruder.hotend2.steps_per_mm                   140          # Steps per mm for extruder stepper
#extruder.hotend2.default_feed_rate              600          # Default rate ( mm/minute ) for moves where only the extruder moves
#extruder.hotend2.acceleration                   500          # Acceleration for the stepper motor, as of 0.6, arbitrary ratio
#extruder.hotend2.max_speed                      50           # mm/s

#extruder.hotend2.step_pin                       2.8          # Pin for extruder step signal
#extruder.hotend2.dir_pin                        2.13         # Pin for extruder dir signal ( add '!' to reverse direction )
#extruder.hotend2.en_pin                         4.29         # Pin for extruder enable signal

#extruder.hotend2.x_offset                       0            # x offset from origin in mm
#extruder.hotend2.y_offset                       25.0         # y offset from origin in mm
#extruder.hotend2.z_offset                       0            # z offset from origin in mm

#epsilon_current                                 1.5          # M5 driver - typically second extruder stepper motor current

## Laser module configuration
# See http://smoothieware.org/laser
laser_module_enable                           false           # Whether to activate the laser module at all
laser_module_pwm_pin                          2.5             # This pin will be PWMed to control the laser.
                                                              # Only pins 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 1.18, 1.20, 1.21, 1.23, 1.24, 1.26, 3.25 and 3.26
                                                              # can be used since laser requires hardware PWM, see http://smoothieware.org/pinout
#laser_module_ttl_pin                         1.30            # This pin turns on when the laser turns on, and off when the laser turns off.
#laser_module_maximum_power                   1.0             # This is the maximum duty cycle that will be applied to the laser
#laser_module_minimum_power                   0.0             # This is a value just below the minimum duty cycle that keeps the laser
                                                              # active without actually burning.
#laser_module_default_power                   0.8             # This is the default laser power that will be used for cuts if a power has not been specified.  The value is a scale between
                                                              # the maximum and minimum power levels specified above
#laser_module_pwm_period                      20              # This sets the pwm frequency as the period in microseconds

## Temperature control configuration
# See http://smoothieware.org/temperaturecontrol

# First hotend configuration
temperature_control.hotend.enable            true             # Whether to activate this ( "hotend" ) module at all.
temperature_control.hotend.thermistor_pin    0.23             # Pin for the thermistor to read
temperature_control.hotend.heater_pin        2.7              # Pin that controls the heater, set to nc if a readonly thermistor is being defined
temperature_control.hotend.thermistor        EPCOS100K        # See http://smoothieware.org/temperaturecontrol#toc5
#temperature_control.hotend.beta             4066             # Or set the beta value
temperature_control.hotend.set_m_code        104              # M-code to set the temperature for this module
temperature_control.hotend.set_and_wait_m_code 109            # M-code to set-and-wait for this module
temperature_control.hotend.designator        T                # Designator letter for this module
#temperature_control.hotend.max_temp         300              # Set maximum temperature - Will prevent heating above 300 by default
#temperature_control.hotend.min_temp         0                # Set minimum temperature - Will prevent heating below if set

# Safety control is enabled by default and can be overidden here, the values show the defaults
# See http://smoothieware.org/temperaturecontrol#runaway
#temperature_control.hotend.runaway_heating_timeout      900  # How long it can take to heat up, max is 2040 seconds.
#temperature_control.hotend.runaway_cooling_timeout        0  # How long it can take to cool down if temp is set lower, max is 2040 seconds
#temperature_control.hotend.runaway_range                20   # How far from the set temperature it can wander, max setting is 63°C

# PID configuration
# See http://smoothieware.org/temperaturecontrol#pid
#temperature_control.hotend.p_factor         13.7             # P ( proportional ) factor
#temperature_control.hotend.i_factor         0.097            # I ( integral ) factor
#temperature_control.hotend.d_factor         24               # D ( derivative ) factor

#temperature_control.hotend.max_pwm          64               # Max pwm, 64 is a good value if driving a 12v resistor with 24v.

# Second hotend configuration
#temperature_control.hotend2.enable            true           # Whether to activate this ( "hotend" ) module at all.
#temperature_control.hotend2.thermistor_pin    0.25           # Pin for the thermistor to read
#temperature_control.hotend2.heater_pin        1.23           # Pin that controls the heater
#temperature_control.hotend2.thermistor        EPCOS100K      # See http://smoothieware.org/temperaturecontrol#thermistor
##temperature_control.hotend2.beta             4066           # or set the beta value
#temperature_control.hotend2.set_m_code        104            # M-code to set the temperature for this module
#temperature_control.hotend2.set_and_wait_m_code 109          # M-code to set-and-wait for this module
#temperature_control.hotend2.designator        T1             # Designator letter for this module

#temperature_control.hotend2.p_factor          13.7           # P ( proportional ) factor
#temperature_control.hotend2.i_factor          0.097          # I ( integral ) factor
#temperature_control.hotend2.d_factor          24             # D ( derivative ) factor

#temperature_control.hotend2.max_pwm          64              # Max pwm, 64 is a good value if driving a 12v resistor with 24v.

temperature_control.bed.enable               true             # Whether to activate this ( "hotend" ) module at all.
temperature_control.bed.thermistor_pin       0.24             # Pin for the thermistor to read
temperature_control.bed.heater_pin           2.5              # Pin that controls the heater
temperature_control.bed.thermistor           Honeywell100K    # See http://smoothieware.org/temperaturecontrol#thermistor
#temperature_control.bed.beta                3974             # Or set the beta value
temperature_control.bed.set_m_code           140              # M-code to set the temperature for this module
temperature_control.bed.set_and_wait_m_code  190              # M-code to set-and-wait for this module
temperature_control.bed.designator           B                # Designator letter for this module

# Bang-bang ( simplified ) control
# See http://smoothieware.org/temperaturecontrol#bang-bang
#temperature_control.bed.bang_bang           false            # Set to true to use bang bang control rather than PID
#temperature_control.bed.hysteresis          2.0              # Set to the temperature in degrees C to use as hysteresis

## Switch modules
# See http://smoothieware.org/switch

# Switch module for fan control
switch.fan.enable                            true             # Enable this module
switch.fan.input_on_command                  M106             # Command that will turn this switch on
switch.fan.input_off_command                 M107             # Command that will turn this switch off
switch.fan.output_pin                        2.6              # Pin this module controls
switch.fan.output_type                       pwm              # PWM output settable with S parameter in the input_on_comand
#switch.fan.max_pwm                          255              # Set max pwm for the pin default is 255

#switch.misc.enable                          true             # Enable this module
#switch.misc.input_on_command                M42              # Command that will turn this switch on
#switch.misc.input_off_command               M43              # Command that will turn this switch off
#switch.misc.output_pin                      2.4              # Pin this module controls
#switch.misc.output_type                     digital          # Digital means this is just an on or off pin

## Temperatureswitch
# See http://smoothieware.org/temperatureswitch
# Automatically toggle a switch at a specified temperature. Different ones of these may be defined to monitor different temperatures and switch different swithxes
# Useful to turn on a fan or water pump to cool the hotend
#temperatureswitch.hotend.enable              true            #
#temperatureswitch.hotend.designator          T               # first character of the temperature control designator to use as the temperature sensor to monitor
#temperatureswitch.hotend.switch              misc            # select which switch to use, matches the name of the defined switch
#temperatureswitch.hotend.threshold_temp      60.0            # temperature to turn on (if rising) or off the switch
#temperatureswitch.hotend.heatup_poll         15              # poll heatup at 15 sec intervals
#temperatureswitch.hotend.cooldown_poll       60              # poll cooldown at 60 sec intervals

## Endstops
# See http://smoothieware.org/endstops
endstops_enable                              true             # The endstop module is disabled by default and must be enabled here
delta_homing                                 true             # Forces all three axis to home a the same time regardless of what is specified in G28
alpha_min_endstop                            1.25^               # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
alpha_max_endstop                            1.24^            # Pin to read max endstop, uncomment this and comment the above if using max endstops
alpha_homing_direction                       home_to_max      # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
alpha_max                                    0                # This gets loaded as the current position after homing when home_to_max is set
beta_min_endstop                             1.27^               # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
beta_max_endstop                             1.26^            # Pin to read max endstop, uncomment this and comment the above if using max endstops
beta_homing_direction                        home_to_max      # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
beta_max                                     0                # This gets loaded as the current position after homing when home_to_max is set
gamma_min_endstop                            1.29^               # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
gamma_max_endstop                            1.28^            # Pin to read max endstop, uncomment this and comment the above if using max endstops
gamma_homing_direction                       home_to_max      # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
gamma_max                                    437.21           # This gets loaded as the current position after homing when home_to_max is set

alpha_max_travel                             1000             # Max travel in mm for alpha/X axis when homing
beta_max_travel                              1000             # Max travel in mm for beta/Y axis when homing
gamma_max_travel                             1000             # Max travel in mm for gamma/Z axis when homing

# Endstops home at their fast feedrate first, then once the endstop is found they home again at their slow feedrate for accuracy
alpha_fast_homing_rate_mm_s                  50              # Alpha tower fast homing feedrate in mm/second
alpha_slow_homing_rate_mm_s                  20               # Alpha tower slow homing feedrate in mm/second
beta_fast_homing_rate_mm_s                   50              # Beta  tower fast homing feedrate in mm/second
beta_slow_homing_rate_mm_s                   20               # Beta  tower slow homing feedrate in mm/second
gamma_fast_homing_rate_mm_s                  50              # Gamma tower fast homing feedrate in mm/second
gamma_slow_homing_rate_mm_s                  20               # Gamma tower slow homing feedrate in mm/second

alpha_homing_retract_mm                      5                # Distance to retract from the endstop after it is hit for alpha/X
beta_homing_retract_mm                       5                # Distance to retract from the endstop after it is hit for beta/Y
gamma_homing_retract_mm                      5                # Distance to retract from the endstop after it is hit for gamma/Z


# Endstop debouncing options
#endstop_debounce_count                       100              # Uncomment if you get noise on your endstops, default is 100
#endstop_debounce_ms                          1                # Uncomment if you get noise on your endstops, default is 1 millisecond debounce

# Endstop trim options
alpha_trim_mm                                   0                # Software trim for alpha stepper endstop (in mm)
beta_trim_mm                                    0                # Software trim for beta stepper endstop (in mm)
gamma_trim_mm                                   0                # Software trim for gamma stepper endstop (in mm)

# End of endstop config
# Delete the above endstop section and uncomment next line and copy and edit Snippets/abc-endstop.config file to enable endstops for ABC axis
#include abc-endstop.config

## Z-probe
# See http://smoothieware.org/zprobe
zprobe.enable                                false           # Set to true to enable a zprobe
zprobe.probe_pin                             1.28!^          # Pin probe is attached to, if NC remove the !
zprobe.slow_feedrate                         5               # Mm/sec probe feed rate
#zprobe.debounce_ms                          1               # Set if noisy
zprobe.fast_feedrate                         100             # Move feedrate mm/sec
zprobe.probe_height                          5               # How much above bed to start probe
#gamma_min_endstop                           nc              # Normally 1.28. Change to nc to prevent conflict,

# Levelling strategy

# Example for the delta calibration strategy
#leveling-strategy.delta-calibration.enable   true            # Enable basic delta calibration
#leveling-strategy.delta-calibration.radius   100             # the probe radius
#leveling-strategy.delta-calibration.initial_height   10      # initial probe height

# Example for the delta grid leveling strategy
#leveling-strategy.delta-grid.enable          true            # Enable grid leveling
#leveling-strategy.delta-grid.radius          50              # Grid radius in millimeters
#leveling-strategy.delta-grid.size            7               # Grid size, must be an odd number
#leveling-strategy.delta-grid.do_home         true            # Whether to home before calibration
#leveling-strategy.delta-grid.save            true            # Whether to automatically save the grid
#leveling-strategy.delta-grid.initial_height  10              # Height at which to start probling

## Panel
# See http://smoothieware.org/panel
# Please find your panel on the wiki and copy/paste the right configuration here
panel.enable                                 false             # Set to true to enable the panel code

# Example for reprap discount GLCD
# on glcd EXP1 is to left and EXP2 is to right, pin 1 is bottom left, pin 2 is top left etc.
# +5v is EXP1 pin 10, Gnd is EXP1 pin 9
#panel.lcd                                   reprap_discount_glcd     #
#panel.spi_channel                           0                 # SPI channel to use  ; GLCD EXP1 Pins 3,5 (MOSI, SCLK)
#panel.spi_cs_pin                            0.16              # SPI chip select     ; GLCD EXP1 Pin 4
#panel.encoder_a_pin                         3.25!^            # Encoder pin         ; GLCD EXP2 Pin 3
#panel.encoder_b_pin                         3.26!^            # Encoder pin         ; GLCD EXP2 Pin 5
#panel.click_button_pin                      1.30!^            # Click button        ; GLCD EXP1 Pin 2
#panel.buzz_pin                              1.31              # Pin for buzzer      ; GLCD EXP1 Pin 1
#panel.back_button_pin                       2.11!^            # Back button         ; GLCD EXP2 Pin 8

panel.menu_offset                            0                 # Some panels will need 1 here

panel.alpha_jog_feedrate                     6000              # X jogging feedrate in mm/min
panel.beta_jog_feedrate                      6000              # Y jogging feedrate in mm/min
panel.gamma_jog_feedrate                     200               # Z jogging feedrate in mm/min

panel.hotend_temperature                     185               # Temp to set hotend when preheat is selected
panel.bed_temperature                        60                # Temp to set bed when preheat is selected

## Custom menus : Example of a custom menu entry, which will show up in the Custom entry.
# NOTE _ gets converted to space in the menu and commands, | is used to separate multiple commands
custom_menu.power_on.enable                true              #
custom_menu.power_on.name                  Power_on          #
custom_menu.power_on.command               M80               #

custom_menu.power_off.enable               true              #
custom_menu.power_off.name                 Power_off         #
custom_menu.power_off.command              M81               #


## Network settings
# See http://smoothieware.org/network
network.enable                               false            # Enable the ethernet network services
network.webserver.enable                     true             # Enable the webserver
network.telnet.enable                        true             # Enable the telnet server
network.ip_address                           auto             # Use dhcp to get ip address
# Uncomment the 3 below to manually setup ip address
#network.ip_address                           192.168.3.222   # The IP address
#network.ip_mask                              255.255.255.0   # The ip mask
#network.ip_gateway                           192.168.3.1     # The gateway address
#network.mac_override                         xx.xx.xx.xx.xx.xx  # Override the mac address, only do this if you have a conflict

## System configuration
# Serial communications configuration ( baud rate defaults to 9600 if undefined )
# For communication over the UART port, *not* the USB/Serial port
uart0.baud_rate                              115200           # Baud rate for the default hardware ( UART ) serial port

second_usb_serial_enable                     false            # This enables a second USB serial port
#leds_disable                                true             # Disable using leds after config loaded
#play_led_disable                            true             # Disable the play led

# Kill button maybe assigned to a different pin, set to the onboard pin by default
# See http://smoothieware.org/killbutton
kill_button_enable                           true             # Set to true to enable a kill button
kill_button_pin                              2.12             # Kill button pin. default is same as pause button 2.12 (2.11 is another good choice)

#msd_disable                                 false            # Disable the MSD (USB SDCARD), see http://smoothieware.org/troubleshooting#disable-msd
#dfu_enable                                  false            # For linux developers, set to true to enable DFU

# Only needed on a smoothieboard
# See http://smoothieware.org/currentcontrol
currentcontrol_module_enable                 true             # Control stepper motor current via the configuration file

GCODE

;Sliced at: Sun 26-07-2020 16:56:34
;Basic settings: Layer height: 1 Walls: 2.5 Fill: 0
;Print time: 26 minutes
;Filament used: 35.012m 213.0g
;Filament cost: None
;M190 S0 ;Uncomment to add your own bed temperature line
;M109 S0 ;Uncomment to add your own temperature line
G21        ;metric values
G90        ;absolute positioning
M82        ;set extruder to absolute mode
M107       ;start with the fan off
M302 P1    ; allow cold extrusion
;G28 X0 Y0  ;move X/Y to min endstops
;G28 Z0     ;move Z to min endstops
G92 Z0                  ;zet current Z as zero
G1 Z15.0 F3000 ;move the platform down 15mm
G92 E0                  ;zero the extruded length
G1 F200 E3.0               ;extrude 3 mm of feed stock
G92 E0                  ;zero the extruded length again
G1 F3000
;Put printing message on LCD screen
M117 Printing...

;Layer count: 150
;LAYER:0
M107
G0 F3000 X-47.170 Y4.645 Z1.000
G0 X-48.512 Y4.786
;TYPE:WALL-OUTER
G1 X-48.689 Y2.400 E1.46222
G1 X-48.748 Y0.008 E2.92455
G1 X-48.691 Y-2.382 E4.38563
G1 X-48.515 Y-4.769 E5.84841
...
(rest of file truncated)

Could you post a picture of your fully-wired board to make sure there are no missing assumptions?

1 Like

Sure! Here is a photo of the board in the current configuration:

I circled where the Stoneflower wire is currently plugged in.

The En/Dir/Step connections are 3.3V logic signals. When you plugged it into the M1 you did plug it in downstream of the stepper driver, and you sent the motor voltage to the external stepper driver. I hope it wasn’t damaged by that!

The M1-3 connections are connected to motor voltage, 12-24V depending on what you have connected. This may have damaged the Stoneflower stepper driver if it isn’t protected from those high voltages on what are supposed to be logic signals. :frowning: Those voltages change relative to each other so movement isn’t a surprise. See the bright red warning on page 16 of the manual you sent:

image

If you are lucky, you have Control Unit 2.x (See page 20) which can accept both logic and motor voltage levels.

The control unit extracts pulses from an input signal, converts them into a logical pulses, and use those pulses to rotate motors of the kit via embedded drivers. The control unit V1 can use only logical STEP signal of the 3d printer as an input, thus converting it into its own logical signal with the 1:1 ratio. The control unit V2.0 can use either the logical STEP signal (in the same way as CU V1.0 did) or the voltage oscillations from the power circuits of extruder motor of the 3d printer. Since those circuits are easily available on all 3d printers, the KIT is compatible with all 3D printers, powered by 12V and 24V DC.

But note that it disables microstepping. If it worked correctly but slower than you expected, you probably have the V 2.x control unit. :crossed_fingers:

I believe this configuration you have is correct for the extruder pins:

extruder.hotend.step_pin                        2.3           # Pin for extruder step signal
extruder.hotend.dir_pin                         0.22          # Pin for extruder dir signal ( add '!' to reverse direction )
extruder.hotend.en_pin                          0.21          # Pin for extruder enable signal

Page 13 of the manual you sent says to turn off bed and extruder heating. You haven’t done that in your configuration. You have:

temperature_control.hotend.enable            true             # Whether to activate this ( "hotend" ) module at all.

I don’t know whether smoothie has a setting to disable the extruder if it is too cold, but it is a common firmware feature. I’d suggest reading through the manual carefully. Perhaps printing it out, and checking off with a pencil every step after you confirm that you have taken it, in order? :smiling_face:

If you can’t figure out how to configure Smoothieware to do what the manual is asking, I’d suggest asking specific questions here, quoting from the stoneflower manual, providing the URLs to the smoothieware documentation you have read that look like they are relevant to the question, and ask for help finding/interpreting it relative to what the stoneflower manual is telling you.

Hope that helps!

2 Likes

Hey thanks so much for the reply!

Yes, I do have the V 2.x control unit, so I don’t think I broke anything (yet haha…). But you might be onto something with the temperature.hotend.enable flag! That makes sense to me. I’m going to try it out and will report back if I find anything. If it doesn’t work, I’ll try to do some more research on my end and put together some specific questions, as you suggested.

Thanks so much for the quick replies and for reading through the Stoneflower manual. This was really helpful already.

-Mike

2 Likes

Yes please make sure you understand which cable is power and which is logic, and not to mix up each ( the documentation has quite a bit of explanation around this, make sure to read all of the documentation at smoothieware.org it should make you much safer ).

So unfortunately, disabling temperature_control.hotend.enable didn’t work :frowning:

I’m going to keep digging around, but just wanted to post a quick update. I’m a bit lost at this point as to what else it could be…so if anyone has any other ideas or things for me to try, I’m all ears!

I should also mention that I have been using Pronterface to load .gcode onto the Smoothieboard, initiate prints, and send various other commands during testing. So, I’m not sure if there could be a setting within Pronterface itself that would somehow interfere with this process? Just want to make sure I’ve laid out all of the variables…

http://smoothieware.org/pronterface

not sure how temperaturecontrol would be related to motors at all. that would be the extruder module, which is also documented at smoothieware.org. it sounds like you’d greatly benefit from reading the wiki ( in particular the guide for your machine, of the 3 main guides ), you’re really not supposed to use the system without reading the docs first, which sounds very much like the situation here

The reason why I was looking at the temperature_control setting was based on a suggestion from @mcdanlj earlier in this thread:

and it was simple enough to try. Unfortunately, I don’t know enough about firmware to say whether the “automatic disabling of the extruder” mentioned above is true. But at least based on my simple tests, it seems like it’s not a factor.

I actually have read the wiki quite carefully, which is what allowed me to get this far (converting my delta printer from the stock board over to Smoothieboard, getting the z-height calibrated, controlling the motors over Pronterface, etc.).

I will go through it again, but I’m not sure it has the answer to my question. I have looked at the page related to external stepper motor drivers, the page related to extruder configuration, and the page you linked related to Pronterface, which just tells you how to connect to the printer and load .gcode. However, my question was related to the fact that Pronterface itself has many settings, which could conceivably override / conflict with those in my Smoothieboard’s config file. This information is not on the Wiki, but I will continue to search online.

I understand that these questions might be quite simple for someone more familiar with electronics and hardware, but I’m a beginner and bound to make some dumb mistakes, so I’m doing the best I can! Appreciate the patience and guidance thus far, and will do more research on my end for now.

do you have some way to check if smoothie is in fact outputing the signals from the pins you expect as you expect it to? that would probably help.

@Arthur_Wolf Does smoothieware lock out the extruder until the hotend is up to temperature? It’s a common firmware feature to avoid grinding filament to have a minimum hotend temperature before the extruder will advance. I know Marlin has it; I don’t know whether Smoothieware has it.

@mike_r1 is using — or trying to use — a ceramic extruder that doesn’t heat up, and the instructions explicitly say to disable heating, which makes sense, since it’s extruding diluted clay. (As you know, I’m not a smoothieware expert, and my eyes glaze over trying to figure out whether I’ve even read everything on any particular topic in the smoothieware documentation let alone all of the documentation entire, so I really don’t know to configure smoothieware to enable the extruder without the heater.)

Note that the ceramic extruder that @mike_r1 has actually has a feature where it will allow you to send either digital EN/STEP/DIR signals or motor power up to 24V on the same interface, and it figures out which you are doing and just does the right thing. It’s an interesting approach, just not something I’m used to!

@mike_r1 I’m guessing you don’t have an oscilloscope handy. Do you have a multimeter?

nope, that’s a very odd one: I had no idea this existed until a few years back, nobody has every asked for it to be implemented or ever complained it’s not in there, and in more recent conversations about it some users have said they’d rather we don’t have it ( well, it could be optional… ) as they find it annoying.

Yes I do have a multimeter - I just measured the pins in question (EN/STEP/DIR) and it does indeed seem like no signal is being sent to them. Verified that M1/M2/M3 are behaving as expected. Going to double-check all of my slicer settings, although it seems like that wouldn’t be the issue here…

no, your config file looks correct, and your gcode has E values changing so it can’t be your slicer config
can you try using other pins for your extruder’s pins ( any free pins in http://smoothieware.org/pinout like P1.22 will do ) and see if you get output on those?

what happens if you plug your external stepper driver to the step/dir pins for your X axis?

So, plugging the external stepper driver into the step/dir pins for the X axis (or Y / Z) doesn’t seem to work either. I did note on the multimeter that the EN pin for all of these was not showing any signal, however…is that normal as well?

As for your first suggestion: I tried setting extruder.hotend.dir_pin to 1.22 in the config, but still no signal on that pin either =/

Your priority should now be trying to get the stepper driver working off the X driver’s step/dir pins, this is sounding very much like there’s an issue with the external driver itself. Please try connecting EN+ to EN- on the driver itself with a short wire, and only controlling it with the step and dir pins. If that still doesn’t work, try using the open-drain method ( which should make it so the on-board X driver doesn’t work anymore, but hopefully the external one will )

1 Like

Can you show how you were measuring that? The drivers on board can’t move the axes if they aren’t enabled, and you said that it did move when you hooked it up to M1, which means that you can’t be measuring it correctly if you aren’t seeing an enable signal to the M1 stepper driver.

Ok so maybe I am misusing the symbol “M1” here (apologies if that’s the case), but the printhead moved when I connected it to the pins circled in RED in the diagram above, although we determined that this may not be appropriate / correct, per the Stoneflower documentation. It does not move when I connect it to the pins circled in YELLOW (or any of the other corresponding 4-pin slots for M2, M3, M4).

This is how I was measuring the EN pin with my multimeter:

The DIR pin in this group reads 3.3v as expected. The EN pin reads 0. Let me know if I can clarify any of that any further.

Interestingly, I just measured ~2.4v coming out of both the EN and DIR pins of the 4-pin slot circled in purple-ish/blue above, which I thought corresponded to M5 (which I don’t even have enabled in my config?). I am pretty confused.

Had a look through your manual but not quite sure what is happening. The Smoothieboard in your picture is loaded with 5 outputs but only three are on the board with the ability to drive a stepper motor. The Alpha Beta and Gamma outputs which equate to the X axis Y axis and Z axis. The remaining two outputs do not have motor drivers added to the circuit board. This would, if I read it correctly, need an interface between the En Dir and Pulse pins (The 4th pin is Gnd) the interface would be a stepper driver which expects to see these signals on its input. The smoothie outputs 3.3 v logic but some drivers need 5v logic, You can buy a level shifter for a few pence on ebay.
Don’t connect a stepper motor to these pins because if you rotate the stepper it generates voltage back into a logic circuit which is bad, Smoothie has protection against these reverse voltages but only on the motor output pins.
If you are driving your printer using Pronterface, you can address all the outputs from the interface using G Code directly without running a program set of instructions. Just type the code into the right hand panel a line at a time. You might need to double check your config file on the memory card on the smoothieboard,
Not sure if this is any help at all but I tried.

1 Like

~ENABLE is active low, so it should read 0V when enabled. On datasheets it is shown with a bar over the top to indicate that.

1 Like