Problem testing Root Controller ISO

I have the Root Controller set up on the bench and have been attempting to get a basic setup working before replacing the current controller in my home-built CNC. I followed your video showing your demo and have FluidNC updated to 3.7.5.

I downloaded the RootCNC/Root-Controller-ISO/Root_4_Base.yaml file from your GitHub repository and edited it to match the file that you show in the demo, and checked that against the X-Motor settings you have on About | Root CNC Wiki.

My current CNC motor drivers are DQ542MA devices with Y axis duplicated. I’m currently using a Protoneer controller. It works fine but cannot be expanded to 4-axis. I also have four Cloudray DM542S drivers.

I checked the data sheets for the drivers plus the RootCNC wiki page (as above) for the driver wiring but I’m seeing nothing happening between the step/enable/direction controller pins and the driver. I’m powering the system from 36Vdc - and I checked the PSU voltage was 36V before connecting. It’s a 350W 36Vdc OEM type supply from Aliexpress.

I am able to access ESPD for FluidCNC through my browser and upload the .yaml file using the FluidNC tab.

From the dashboard the commands window shows I have successfully unlocked using $x. I have reset the controller after altering and uploading the .yaml file.

I’m monitoring the driver pins using an oscilloscope after hitting the x-axis jog there is nothing on the pins connecting the controller and driver. I have tried both common anode and cathode connections but I’ve had no joy.

Could you have a look at my .yaml file and see if there is something I have got wrong. If you have time, maybe you can check the docs for the drivers I have to see if there is a compatibility issue.

Many thanks, Maurice

board: Root Controller ISO
name: Root 4 V20
stepping:
  engine: I2S_STREAM
  idle_ms: 255
  pulse_us: 4
  dir_delay_us: 1
  disable_delay_us: 3

axes:
  shared_stepper_disable_pin: NO_PIN
  x:
    steps_per_mm: 160.000
    max_rate_mm_per_min: 3700.000
    acceleration_mm_per_sec2: 250.000
    max_travel_mm: 1198.000
    soft_limits: true
    homing:
      cycle: 1
      positive_direction: true
      mpos_mm: 1197.000
      feed_mm_per_min: 100.000
      seek_mm_per_min: 2000.000
      settle_ms: 1000
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: NO_PIN
      limit_pos_pin: NO_PIN
      limit_all_pin: gpio.26:low
      hard_limits: true
      pulloff_mm:2.000
      standard_stepper:
        step_pin: I2SO.7:low
        direction_pin: I2SO.5:low 
        disable_pin: I2SO.3:high

  
i2so:
  bck_pin: gpio.22
  data_pin: gpio.12
  ws_pin: gpio.21

spi:
  miso_pin: gpio.19
  mosi_pin: gpio.23
  sck_pin: gpio.18

sdcard:
  card_detect_pin: NO_PIN
  cs_pin: gpio.5

control:
  safety_door_pin: NO_PIN
  reset_pin: NO_PIN
  feed_hold_pin: NO_PIN
  cycle_start_pin: NO_PIN
  macro0_pin: NO_PIN
  macro1_pin: NO_PIN
  macro2_pin: NO_PIN
  macro3_pin: NO_PIN

coolant:
  flood_pin: NO_PIN
  mist_pin: NO_PIN
  delay_ms: 0

probe:
  pin: NO_PIN
  check_mode_start: true

macros:
  startup_line0:
  startup_line1:
  macro0:
  macro1:
  macro2: 
  macro3:
  
user_outputs:
  analog0_pin: NO_PIN
  analog1_pin: NO_PIN
  analog2_pin: NO_PIN
  analog3_pin: NO_PIN
  analog0_hz: 5000
  analog1_hz: 5000
  analog2_hz: 5000
  analog3_hz: 5000
  digital0_pin: i2so.12
  digital1_pin: i2so.13
  digital2_pin: i2so.14
  digital3_pin: i2so.15


start:  must_home: false
  • Discourse wouldn’t allow me to add links to the post because I’m a new user.

Data sheet links for the above post

DQ542MA datasheet: https://openbuildspartstore.com/content/DQ542MA%20English%20Manual.pdf

DM542S datasheet: Cloudray DM542S 2-Phase Stepper Motor Driver – Cloudray Laser

I think I have found the problem. On the video the parameter hard_limits: is set to true but since there are no limit switches on the test rig I changed this to “false” and all ran well. Am I right to assume that this is the reason or is it a coincidence?

Hi Maurice,

Thank you for all the background information - that is very helpful, especially for me to focus down on a fault finding route.

I would recommend starting off with the Root Controller connected Via USB to the PC and communicate with it via Fuildterm.bat - It’s especially helpful.

So I have taken a prototype Rev 3 card and copied you’re configuration file and created my own YAML file called “maurice.yaml”. This is to help validate the configuration is working.

Given you’ve uploaded your configuration file, I would like to ensure it has been correctly set as the configuration to load on power up; as you can have multiple YAML files on the Root controller.

To verify what configuration is being used, send the following in the terminal:
$config

For my machine
image

Just uploading the file does not assign it to be the configuration that loads on power up! so you have to set it to be. For my instance I need to send change the default yaml file from “lcd_text.yaml” to “maurice.yaml”
To do this send the following command:
$config/filename=maurice.yaml

Then reset the controller (Crtl+R)
image

Now you can see if there has been any errors in the configuration, in this instance - it looks good!

Next check the state of the end stops, to do this send:
?
You should get an output like this:
image
As you can see, the X axis limit switch has been triggered - even though we’ve not got anything connected - thus the motor wont move!

to fix this, we need to change:
limit_all_pin: gpio.26:low
to:
limit_all_pin: gpio.26:high
Re-upload the configuration file and you should be good to go! I have a moving stepper motor!

I think a good take away from this would be to use Fuildterm to get the configuration file working for your machine - then use the web page for day to day use of the machine.

I hope that helps!

let me know how you get one!

Kind Regards Pete

Thanks for the response to my question Pete.

I’m not entirely clear why

does show me that the X limit has been triggered. Clearly I need to go and have a read of the FluidNC docs so I can interpret the ? outputs. Presumably it is showing me the current status of Pin X:

Anyway I’m up and running on the test rig so now I’ll start wiring up the new cabinet and then start calibrating the axis. From desktop testing it appears that I am likely to be able to get a significant performance increase over my existing setup - and a rotary axis. :grinning:

Thanks for the assistance. The Root Controller ISO is a great piece of hardware - well done. I spent many months looking at controller options to upgrade my Protoneer/RaspberryPi controller which I adopted after I had two LinuxCNC PC’s cook themselves as a consequence of the salt air here - I’m less than 100m from the Pacific Ocean. I was pretty much set on returning to LinuxCNC and a Mesa board - fortunately I’m very happy to have stumbled across your site.

Root Controller ISO has a comprehensive set of features and so easy to connect up. The biggest challenge is getting my head around configuring FluidNC.

Cheers
Maurice

Yup, This is telling us the X axis limit switch has been triggered. seeing nothing here means they’re all open. but you could get a combination of characters here, like; “XYZABCPD” etc…

You have to share some photos of your build! I do like to seem them!

Thank you for those kind words! it helps motivate me.

Dont worry - it took me a while to get my head around it too!

Kind Regards Pete

I like yourself have a home built that I’m the middle of hopefully converting over to the Root controller. I’m currently running with a Black Box 32 Grblhal based system. Like you I’m trying the Root system on the bench to work out the bugs and learn the configuration process so I can fine tune my CNC to use both my spindle and Laser. This gave me a problem with the B B 32 system because of non buffered lines. I’m hoping to use the RS 485 for the spindle and PWM for the Laser. So here I am at 77 trying to learn a new language Fluidnc and the whole PINS thing is giving a fit. I was wondering if you would be willing to give me a jump start with access to your configuration Yaml. It sounds like you got things working for your system. Any help would
be greatly appreciated

Joe May Lewisburg Pa

Hi Joe,

It’s been a while since I have looked at my set-up process so I’ll need to go through it to get familiar with what I did. Here is my YAML file.

Just as well we “old-timers” keep the world turning - I’m 71 so a mere whipper snapper :slight_smile:

Maurice

Start
board: Root Controller ISO
name: MJM_CNC
stepping:
engine: I2S_STREAM
idle_ms: 255
pulse_us: 4
dir_delay_us: 1
disable_delay_us: 3

axes:
shared_stepper_disable_pin: NO_PIN
x:
steps_per_mm: 800.0
max_rate_mm_per_min: 3500.0
acceleration_mm_per_sec2: 100.0
max_travel_mm: 1293.000
soft_limits: true
homing:
cycle: 2
positive_direction: false
allow_single_axis: true
mpos_mm: 0.000
feed_mm_per_min: 50.00
seek_mm_per_min: 1000.0
settle_ms: 250
seek_scaler: 1.100
feed_scaler: 1.100

motor0:
  limit_neg_pin: gpio.34
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 2.000
  standard_stepper:
    step_pin: I2SO.7:low
    direction_pin: I2SO.5:low 
    disable_pin: I2SO.3:high

y:
steps_per_mm: 800.0
max_rate_mm_per_min: 3500.0
acceleration_mm_per_sec2: 100.0
max_travel_mm: 1030.000
soft_limits: true
homing:
cycle: 2
positive_direction: false
allow_single_axis: true
mpos_mm: 0.000
feed_mm_per_min: 50.00
seek_mm_per_min: 1000.0
settle_ms: 250
seek_scaler: 1.100
feed_scaler: 1.100

motor0:
  limit_neg_pin: gpio.35
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 2.000
  standard_stepper:
    step_pin: I2SO.12:low
    direction_pin: I2SO.10:low 
    disable_pin: I2SO.8:high 

motor1:
  limit_neg_pin: gpio.32
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 2.000
  standard_stepper:
    step_pin: I2SO.13:low
    direction_pin: I2SO.11:low 
    disable_pin: I2SO.9:high  

z:
steps_per_mm: 2000.0
max_rate_mm_per_min: 600.0
acceleration_mm_per_sec2: 50.0
max_travel_mm: 144.000
soft_limits: true
homing:
cycle: 1
positive_direction: true
allow_single_axis: true
mpos_mm: 0.000
feed_mm_per_min: 50.00
seek_mm_per_min: 400.0
settle_ms: 250
seek_scaler: 1.100
feed_scaler: 1.100

motor0:
  limit_neg_pin: gpio.27
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 2.000
  standard_stepper:
    step_pin: I2SO.18:low
    direction_pin: I2SO.16:low 
    disable_pin: I2SO.14:high

a:
steps_per_mm: 2400.00
max_rate_mm_per_min: 1500.00
acceleration_mm_per_sec2: 15.0
max_travel_mm: 100000.00
soft_limits: false
homing:
cycle: -1
positive_direction: true
allow_single_axis: true
mpos_mm: 0.000
feed_mm_per_min: 50.00
seek_mm_per_min: 400.0
settle_ms: 250
seek_scaler: 1.100
feed_scaler: 1.100

motor0:
  limit_neg_pin: NO_PIN
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 2.000
  standard_stepper:
    step_pin: I2SO.6:low
    direction_pin: I2SO.4:low 
    disable_pin: I2SO.2:high

i2so:
bck_pin: gpio.22
data_pin: gpio.12
ws_pin: gpio.21

spi:
miso_pin: gpio.19
mosi_pin: gpio.23
sck_pin: gpio.18

sdcard:
card_detect_pin: NO_PIN
cs_pin: gpio.5

control:
safety_door_pin: NO_PIN
reset_pin: gpio.2
feed_hold_pin: gpio.14
cycle_start_pin: gpio.15
macro0_pin: NO_PIN
macro1_pin: NO_PIN
macro2_pin: NO_PIN
macro3_pin: NO_PIN

coolant:
flood_pin: NO_PIN
mist_pin: NO_PIN
delay_ms: 0

probe:
pin: NO_PIN
check_mode_start: false

macros:
startup_line0:
startup_line1:
macro0:
macro1:
macro2:
macro3:

user_outputs:
analog0_pin: NO_PIN
analog1_pin: NO_PIN
analog2_pin: NO_PIN
analog3_pin: NO_PIN
analog0_hz: 5000
analog1_hz: 5000
analog2_hz: 5000
analog3_hz: 5000
digital0_pin: I2SO.21
digital1_pin: NO_PIN
digital2_pin: NO_PIN
digital3_pin: NO_PIN

Huanyang:
uart:
txd_pin: gpio.17
rxd_pin: gpio.16
rts_pin: gpio.4
baud: 9600
mode: 8N1
modbus_id: 1
tool_num: 0

start:
must_home: false
Finish

Thank you for your quick response!

I hope to be able to spend some time with the system later this week.
Still recovering from a stroke I had about a month ago, brain not as clear as it needs to be.
But with your file it will get me there faster. I see in your configuration you indicate that you are setting up the rs485.
Do you have a spindle using the Huanyang drive? Any Insight on the wiring would be a big step forward for my project.

Thanks again

Joe May

Yes I have a Huanyang drive. The RS485 interface works well. I have previously had LinuxCNC running my machine but living on the beach the toll on PC power supplies was beyond a joke. I switched to and 8bit GRBL system and RPi with a sealed PSU which solved one problem but couldn’t be expanded to permit a rotary axis so I jumped onto the Root controller. Good value for money and Pete has designed it very well. Lots of isolation and the FluidNC core works a treat.

Health is an ever present concern as we age. I couldn’t believe the clarity of thought I had when prescribed Prednisone after a trip to the ED. Unfortunately the course of Prednisone finished a few weeks back and the mental fuzziness has returned. Aging is better than the alternative when all said and done. :slight_smile:

Maurice

Hi it’s been a long road but I have the machine running except for the spindle I was wondering if you had a copy of your settings for your drive? I have been stuck with getting the drive to talk to the controller!! I have the wiring right I think I get queue full or unresponsive. I’m sure it’s the settings in the drive that are the issue. I feel it’s just 1 that is stopping them from talking to each another. I hope things are going ok for you out on the west coast.

I take it you mean the settings for the Huanyang drive itself as the Root Controller config includes the Huanyang UART settings. I don’t have a file for them as I set them by hand but I may have the settings written down ‘somewhere’. I’ll take a look and get back to you.

Good news - I’ve found my notes. Since it is a while ago I set the spindle up I’ll check my actual settings against what I have written down and let you have a copy. It’ll be tomorrow as our day is almost done.

Thanks ahead of time I have been fighting this for 2 weeks now. If I can get this working the next thing is the laser and then hopefully a tool changer in the future.

Hi Joe,
Your comment about " I hope things are going ok for you out on the west coast." confused me because we are on the East coast of New Zealand… ah but that is West of you I guess :upside_down_face:

Here are my settings for the VFD. Just note that we have a 220vac 50HZ supply but looking through the settings I think most of the voltage and frequency settings are associated with the output and not input - I may have missed something. This is working with my Root controller and FluidNC with the VFD under Serial control…

If you need anything else - there are loads of settings I didn’t touch - ask and I’ll take a look.

Maurice

Huanyang HY01D523B 220v Single phase supply/3 phase out 1.5kW water cooled spindle
VFD Programming code Value
d000 0
d001 2
d002 2
d003 400
d004 400
d005 400
d006 2.5
d007 0.5
d008 220
d009 15
d010 8
d011 0
d012 null
d013 RESET << I skipped over this one
d014 6
d015 6
d016 20
d017 20
d018 40
d019 40
d020 80
d021 80
d022 Reserved?
d023 1
d024 1
d041 8
d042 5
d043 0
d141 220 Rated motor voltage from case
d142 7 7 amps I believe
d143 2 Poles
Serial settings
d163 1 RS485 slave
d164 1 9600 Baud
d165 3 8 bits, no parity, 1 stop

Thanks for the info. I wasn’t aware you were down under! I have been fighting with spindle and laser issues for 4 weeks now. Other controllers I have used in the past I was able to get control of the spindle and laser but because of non ISO boards I lose control from the board. I have had 3 Open Builds black box 32 that failed on me. that’s why I went with the Roots ISO to try to avoid the issue. Thanks again for you help. I’ll let you know how I make out.