Things are now starting to fall into place with this project.
For those that are interested...
I'll share detailed results in due course on a page in my Github repo which goes into detail on some important aspects to provide clarity on why this is possible and how it's done since there's some misunderstandings.
It'll include the following:
- The firmware/offloaded stepper generator aspects and why that's important to understanding how this is different to mesa/parallel ports (Remora is a similar principal)
- Why the "udp-thread" for commands doesn't need to run as fast as you might believe and test results indicating why
- Proof of follower error rates for a 75khz pulse generator for a single axis (in metric) - TLDR; for a 1600ppr drive scaled at 320 units (e.g 5mm ballscrew) FERROR is consistently below 1.8 units at max speed in metric mode, almost a flat line. No hacks or workarounds in firmware to mask it. Same results via both USB and Ethernet. Can be improved further with more work.
Multi-axis motion has similar results (200khz combined total) which is great to see
Further improvements on the radar to reduce further.
I believe that is very good considering the involved speeds for a stepper driven system. Be interested to know others thoughts regarding this?
- Detailed comparisons of Native Ethernet and USB performances and any limitations
- ESP32, ESP32-S2 vs ESP32-S3 differences and what features will be supported across each
- Round trip packet and time-to-first pulse generation in 1.1ms~ works on USB (MCU to host) and 0.9ms on Ethernet
- How input pins and sensors connected to the MCU are handled keeping latency as low as possible
- How smooth motion pulses are generated with low delay
- How high velocity "position mode" functions and how errors are handled to ensure LCNC is always aware of any step gen issues
- How axis encoder to host feedback is going to be handled in future (ESP32 + ESP32-S3 only)
Unrelated to this software project but based on the development and findings around it I intend on developing a multi-axis integrated stepper servo drive controller (60VDC 5A per axis) and a DC motor drive controller (80VDC 20A) with all drive related configuration done in software. No dips or jumpers.
Includes multi-type encoder support, drive current sensing, sensorless homing and motion integrated. Lots of IO.
Galvanic isolation as required. Modular driver components in the event one is damaged.
Based on the Trinamic TMC4671.
One board will support both lathe and milling machines which includes VFD control - rs458/modbus or PWM and encoder+indexing.
It will be in prep for the ESP32-P4 release (+ESP32-S3 for dedicated ESP-NOW features) for a reasonable cost including support.
Multi-axis AC servo drive would be nice but it's heavily patented and very complex - who knows maybe in the future?
I'm interesting to hear others opinions and ideas...