Forum Replies Created
-
AuthorPosts
-
ZootalawsMember
I understand that you say nothing’s slipping, but the whole thing about CNC controllers is repeatability – if you are seeing cyclical differences, it’s nearly always something with a dodgy configuration, mechanical or electrical. If not mechanical, you are missing steps.
As you’ve confirmed that the drive system is solid, all that’s left is to check software configuration, electrical connections and interference.
If it was me…
Always start from a factory reset. Save your current settings, reset, then do no more than ensure your axis settings are right. Turn your stepper pots down to 8 o-clock.
Rather than using generated Gcode, just issue the commands you need, then you know nothing else is being introduced:
Tape a digital caliber to your y-axis
Pull the caliber wide open and nudge the carriage up to the caliber end and zero the caliper and axes.G28.3 X0 Y0 // zero x & y
Issue a slow move command like G1 F500 Y50 then G1 F500 Y-50 and repeat a few times.
It should repeat with no variance
Your caliper should read 50mm – if not, your calibration is out.
Do the same for your X-axis.
I always use digital calipers for calibration – easy and accurate
- This reply was modified 6 years, 2 months ago by Zootalaws.
ZootalawsMemberThat usually indicates one of your axes is slipping.
Screw or belt?
August 19, 2018 at 1:00 am in reply to: TinyG support for user parameters (e.g. #1, #2, etc.) #11087ZootalawsMemberJust had a look at G2Core and it adds Marlin compatibility, but still no support for # user params.
August 19, 2018 at 12:50 am in reply to: TinyG support for user parameters (e.g. #1, #2, etc.) #11086ZootalawsMemberI’ve just gone through the latest code and the following are the only GCode parameters parsed:
case ‘G’:
case ‘M’;
case ‘T’: SET_NON_MODAL (tool_select, (uint8_t)trunc(value));
case ‘F’: SET_NON_MODAL (feed_rate, value);
case ‘P’: SET_NON_MODAL (parameter, value);
case ‘S’: SET_NON_MODAL (spindle_speed, value);
case ‘X’: SET_NON_MODAL (target[AXIS_X], value);
case ‘Y’: SET_NON_MODAL (target[AXIS_Y], value);
case ‘Z’: SET_NON_MODAL (target[AXIS_Z], value);
case ‘A’: SET_NON_MODAL (target[AXIS_A], value);
case ‘B’: SET_NON_MODAL (target[AXIS_B], value);
case ‘C’: SET_NON_MODAL (target[AXIS_C], value);
case ‘U’: SET_NON_MODAL (target[AXIS_U], value);
case ‘V’: SET_NON_MODAL (target[AXIS_V], value);
case ‘W’: SET_NON_MODAL (target[AXIS_W], value);
case ‘I’: SET_NON_MODAL (arc_offset[0], value);
case ‘J’: SET_NON_MODAL (arc_offset[1], value);
case ‘K’: SET_NON_MODAL (arc_offset[2], value);
case ‘R’: SET_NON_MODAL (arc_radius, value);
case ‘N’: SET_NON_MODAL (linenum,(uint32_t)value);
case ‘L’: break;I couldn’t find any use of the ‘#’ user parameter and my testing of the board itself
#100 = 50
G0 X#100Resulted in X going to 100, not 50, so it looks like # is parsed as a value, not a variable.
I’ll have a look at G2Core and see if it has a better alignment with NIST GCode.
ZootalawsMemberCould you use an external interface, such as an arduino executing a json command, to flag?
As a point of interest, ‘M’ commands aren’t processed the same way as ‘G’ commands: “Grbl puts all stepper commands into a buffer that is executed by the
Stepper.c interrupt routine
– Codes like M7, M8, M9, M112, etc… do not get put into this buffer
– The buffer takes time to execute in the backgroud
– A code like the M9 (air off command) will get executed BEFORE the
buffer of X,Y (and Z) commands has finished executing”This is so that your emergency stop, etc. is immediately handled, rather than sitting in the serial queue.
Maybe using a comment line may work?
ZootalawsMemberI know you can go up to 50khz, but not whether that’s a limit.
Maybe there’s no limit, other than 8bits, but a point at which there is no effective effect?
It’s unusual to control a stepper using pwm… what’s your use case (speed, application, etc8?
Conventional wisdom says using pwm with a stepper removes the key feature of a stepper – stepping – and just makes it into a bipolar dc motor.
ZootalawsMemberAny controller with pwm is supported, like the one I linked before.
You could get away with any 10k-15k motor, as long as it provided enough HP, but that 80W one would struggle with drag on a 9.5mm pad, unless you’re lubricating it.
If it was me, I would spend $100 on a basic 250-400W DC motor and controller. It will give you bags of power and if you wanted to do more than polishing, you could turn it to any basic cnc task.An ER11 collet will handle a 4mm shaft.
ZootalawsMemberAny dc vfd motor controller with PWM that provides enough hz and amps should work.
24v and 80w is pretty small, though, without knowing what you want to do with it. What kind of collet do you have? That motor doesn’t seem to be designed as a spindle and I’m not sure what kind of runout you would expect to get – it isn’t a precision spindle motor. 3A isn’t going to do much work.
It may be easier to find a cheap air-cooled spindle with vfd\controller than to try and hunt down a compatible controller for such an unusual motor.
Just as an FYI, my small cnc router/Mills have, respectively, a 1050w and 2.5kw spindle.
The 2.5kw is water-cooled and the whole shebang was under $350 shipped.
If 80w is enough, you will find it hard to find a ‘proper’ spindle motor that small. 150w-400w is common, though, for pcb engraving and such.
Not a recommendation, just an example.
Depending on where you are in the world, you may have decent sources locally.
ZootalawsMember@Breiler I will give UGS a go right now – setting up and testing multiple ways of connecting via network to TinyG – ESP32 transparent bridge, SPJS, Websockets, etc.
ZootalawsMemberAnything that supports GRBL.
ZootalawsMemberThe frequency setting is to set the speed at which you communicate with your pwm controlled device.
You set it once to suit your device and shouldn’t need to set it again. Your spindle controller docs will tell you.
To chang the speed issue M3 S10000 to turn on at 10000RPM, M3 S5000 at 5000RPM, etc. M5 to turn off.
This may help: https://github.com/synthetos/TinyG/issues/121
- This reply was modified 6 years, 4 months ago by Zootalaws.
ZootalawsMemberI think he’s talking about pwm frequency
$p1frq=25000
- This reply was modified 6 years, 5 months ago by Zootalaws.
ZootalawsMemberIn addition, if you can talk to it via serial uart (as opposed to USB uart) you should be able to reprogram it and continue to use it via an external interface.
- This reply was modified 6 years, 5 months ago by Zootalaws.
ZootalawsMemberUGS is JSON compliant. You configure it with a json file and it interprets json for control.
ZootalawsMemberThe connection between the USB chip and RPi is working, doesn’t mean anything with regards to the rest of the board.
The power for drivers and power from USB to the main chip are seperate – Without any external power applied, can you talk to it using something like the Arduino IDE com monitor?
Pressing reset while connected to a Comms app, what happens?
Have you tried reloading firmware?
Have you tried running an Atmel diagnostic? The chip is an Atmel ATxmega192A3 – same core as Mega.
Have you tried talking to it via uart- serial tx/rx? If you don’t have a USB-serial breakout, you can use another arduino as a bridge. -
AuthorPosts