µCNC

Just released version 1.4.0-beta2. Besides several fixes added by the previous beta version this now adds:

  1. Basic Trinamic driver support. I’ve only tested with TMC2208 because these are the only ones I have with me, but I think other UART Trinamic drivers should work as well. The library also supports SPI trinamic drivers but I have not tested those.

  2. I’ve also updated the boardmap for RAMPS and RAMBO. For this last one I also added a digipot module to set the stepper motors current and a digipin module to set the MSTEP pins. I don’t have a RAMBO board so testing was quite limited.

  3. Also thanks to @bastardazzo and @jeffeb3 I’ve done some fixes in the kinematic for linear delta machines (this is still being developed).

EDIT: Almost forgot. Also a subset G8x canned cycles are also supported (enabled via config file)

The new module system as really helped me speedup adding new features to this project.
Probably the next module I’ll be adding is going to be a graphic display to this…I have too many things rolling at the same time. :crazy_face:

4 Likes

Version 1.4.0 is out. Resuming all things added since prior versions 1.3.x:

  1. added optional S-Curve acceleration.
  2. added new SERVO pin type that outputs a 50Hz type PWM(Ppm) . Up to 6 SERVO pins can be configured. To support these pins M10 code (set servo pin value) was added to core parser (there is also an optional parser extension to support a partial implementation of Marlin’s M42 that can be used to set any output pin on µCNC)
  3. increased number of generic IO’s in the internal firmware mapping.
  4. partial implementation supporting STM32F4 core. Lacks Flash EEPROM.
  5. resigned module system to accelerate the development of extension modules inspired on C# event/delegate/listener mechanism. This allows to add hook calls inside the core code that are then intercepted by the extension modules.
  6. added initial implementation of bltouch module (untested)
  7. Basic Trinamic driver support. I’ve only tested with TMC2208 because these are the only ones I have with me, but I think other UART Trinamic drivers should work as well. The library also supports SPI trinamic drivers but I have not tested those.
  8. I’ve also updated the boardmap for RAMPS and RAMBO. For this last one I also added a digipot module to set the stepper motors current and a digipin module to set the MSTEP pins. I don’t have a RAMBO board so testing was quite limited.
    1.Integrated a subset G8x canned cycles are also supported (enabled via config file)
  9. Also thanks to @bastardazzo and @jeffeb3 for the help on the Linear Delta Kinematics HAL development.
  10. And also a thanks to @dwburger for the tests on the Inventables X-Controller board now added to the HAL.
  11. Several crucial bug fixes and optimizations to improve the the overall performance (quite visible in the gcode stress tests).
3 Likes

Hi @Paciente8159 - I’ve just loaded µCNC onto my MKS GEN L board and giving it a go. I’m super excited about this project. One thing I’d love is a command like Marlin’s M119 which can help explain which end-stops, etc, are triggered.

Thanks for all the great code - I’ll be familiarising myself with the codebase to see how I can help.

1 Like

Hi there. Thanks. The status message has that.
Just send a ? And the status message Will contain a Pn: followed by the input if any is active.
For example if the X endstop is triggered it Will have a Pn:X on the message.

1 Like

Of course! Thanks!

3 Likes

Hello, I have Arduino Uno, CNC Shield and TMC2209 drivers…is there any possibility to use sensorless homing with µCNC? :slight_smile:

1 Like

Hi there. Sorry for the late reply.
For now only a minimal setup is available on µCNC (microstepping, current and stealthchop threshold) and testing was only performed in Tmc2208.
Sensorless homing is a feature that I intend to build in too in a near future.
The uno is short in pins and program memory but maybe do-able. What would be your application/setup be out of curiosity?

Thanks for reply… :slight_smile:
Well, I want to make CNC, and sensorless homing would be really cool feature… :slight_smile:
I have TMC2209, but maybe I will change them for TMC2160…they are bigger, stronger, etc… :slight_smile:
Arduino uno don’t support lots of features TMC drivers has…if that is only because of software, and you know how to do it…it will really be usefull… :slight_smile:

1 Like

Sensorless homing is not a great option for CNC. It is not all that accurate. Even if ultimate accuracy is not your goal, tool changes could show it the most because of compounding errors.

1 Like

I agree with @vicious1. You can still use TMC2209 in standalone mode though.
To use USART TMC drivers (with dedicated USART pinout at least) you would eat 2 extra pins for each driver. On a 3 axis machine that would result in 6 additional pins on a UNO board that is already lacking IO. You could do it by sacrificing all pins on the left side (estop, hold, resume, coolant, and probe)…but that would max out your IO.

@unique93 just out of curiosity I’ve added stallguard config and M914 command (similar to Marlin) to allow sensorless homing in TMC2209 to µCNC master branch.

I have no way of currently testing if it’s working or not. I have to order a few different TMC controllers to be able to properly test this.

Also a thank you to @jmshrtn for is contributions to µCNC (including a new tool) and helping with all the testing need to improve/fix dual axis drives for self squaring , that are now a lot more easier to setup/configure.

1 Like

Video of the relay tool working here: Starting out on a primo journey in New Zealand - #22 by jmshrtn

1 Like

So i went to the top and was looking over what exactly µCNC is and it appears to be fw for arduino, but what does it do for a person that marlin does not? Or is there a page i can research it?

Hi there @RockinRiley.
µCNC is a firmware designed to be compatible with Grbl protocol and also capable of being flexible and modular like LinuxCNC.
Currently supports Avr MCUs (including Arduino Uno) but also Stm32F1, Stm32F4 and samd21 (arduino zero).
Also has support for corexy and delta kinematics (besides regular cartesian) and other features.
You can read more about it in the github page.
It is in it essence like Gbrl more focused on CNC and laser, not so much 3D printing (although the thought of giving it a spin as come to my mind :rofl:…one Day I’ll give it a go)

1 Like

By the way the the tool @jmshrtn is showing on the video was created by imself using the tool abstraction layer and a bit of c coding.

Thank u

Quick update. Development has progressed a bit more slowly then I would like to but finally µCNC v1.5.beta is out and with it, support for 2 more cores:

  • The NXP LPC176x MCU (there is a board configuration for the Re-ARM board)
  • ESP8266 (and this one I thought I would not be able to pull it off, due to the lack of hardware timers and IO but a minimalistic CNC is achievable on this chip). WiFi connection via telnet is also available on this one. WebUI is in development but it seems to be a bit to much to handle for this one.

ESP32 and RPi Pico are the next targets.

3 Likes

Just released version 1.5.5.

Version 1.5 brought support for LPC176x, ESP8266 and ESP32 boards, 74HC595 IO extender, Laser PPI and several enhancements.

This last version is also now backed up with an online configuration tool to try and ease the configuration process of the firmware.

This is a simple web page with Bootstrap and the deprecated AngularJS that makes for a more friendly interface to configure a custom build of µCNC. It’s kind of ugly and poorly programmed but I’m not a web developer and was the first time I used AngularJS so don’t expect much … :sweat_smile:

4 Likes

I think the web page looks great.

On the boards page is everything under basic board setting optional? As in when the board is selected all the basic fields are filled in, the rest is just optional, like changing the pwm pin?

2 Likes

When you choose a board the page reads the source code boardmap for that board and fills the fields with the values that are already loaded.

Some of them are not optional and others if not filled have default values that the firmware uses.

For example on AVR In which port are PCINT pins 0 to 7 that is fix set for each chip. The loaded values for ATMEGA 328P or 2560 are those. If you change them input ISR will cease to work.
All timers are also mandatory, although if you don’t fill that the MCU has some default ones assigned.

I left them there because this allows the user to configure the firmware to fit a non available boardmap.
For example you can have a board with an AVR (let’s say an ATMEGA 1284) and build a boardmap that enables you to run the firmware).
Not all MCU’s have all the required definitions exposed but they will soon.
And I’m aware that a bit more of explanation is missing although info about MCU customization is in the Wiki.

It’s a work in progress…

3 Likes