How can I define the axis name of a AC spindle motor?

Moderators: TomKerekes, dynomotion

Post Reply
yethsts
Posts: 28
Joined: Sat Jul 25, 2020 11:17 pm

How can I define the axis name of a AC spindle motor?

Post by yethsts » Wed Aug 19, 2020 5:54 pm

I use 5 step motors to drive the gantry. I use another step or a DC servo motor to drive the extruder. I also use a AC motor driven by a frequency converter to be the spindle motor. I will connect the frequency converter with the Kstep board, refer to the figure below:
2.jpg
I will try to run the example program named "KStepPWMCorrected.c" to test it. And I think it should be ok.

My question is: I know in the gcode the code "S**" is to set the spindle speed. But how can the program interpreter knows which port is to control the spindle motor? Because now the AC motor is controlled by the KFLOP IO 44 JP7 Pin5 now, not by the channel 0-3 or 5-7. So it can't be defined by the function named "DefineCoordSystem()" or "DefineCoordSystem8()". So how can the gcode to run the AC motor by a axis name such as A,B,C,U,V?

The nature of my question is: how can we define the axis name of a motor that is not driven by the channel 0-7. For example if the used extruder motor, spindle motor or other motor is not a step motor, but a DC servo motor or AC motor, it can not be connected to the channel 0-7. Then how can we define this DC/AC motor as the A,B,C or U, V axis to make the gcode program can use them?

This maybe a simple question but I am only a beginner come from automation/computer science area. So, sorry...

Yours,
Huang Lei
08-19-2020

User avatar
TomKerekes
Posts: 2676
Joined: Mon Dec 04, 2017 1:49 am

Re: How can I define the axis name of a AC spindle motor?

Post by TomKerekes » Wed Aug 19, 2020 6:29 pm

Hi Huang,

The Interpreter "Actions" for M3, M4, M5, and S are normally configured to control the Spindle. The Spindle should not normally be configured as part of the coordinated motion system. KMotionCNC configures the Interpreter Actions as described here.

See the <>\C Programs\KStep\KMotionCNC examples.

The Spindle_S_Kstep.c example can be used to control the KStep PWM->Analog converter. For this example the Interpreter should be configured to pass the desired Speed value in Var 1.

Spindle_S_Kstep.c

Code: Select all

#include "KMotionDef.h"
#include "..\CorrectAnalogFunction.c"

#define RPM_FACTOR 500.0 // RPM for full duty cycle (max analog out)

// desired speed is passed in variable 1


main()
{
	float speed = *(float *)&persist.UserData[1];  // value stored is actually a float 
	
	FPGA(KAN_TRIG_REG)=4;  			// Mux PWM0 to JP7 Pin5 IO 44 for KSTEP 
	SetBitDirection(44,1);  		// define bit as an output
	FPGA(IO_PWMS_PRESCALE) = 46;  	// divide clock by 46 (1.4 KHz)
	FPGA(IO_PWMS+1) = 1;  			// Enable
	
	FPGA(IO_PWMS) = CorrectAnalog(speed/RPM_FACTOR);  	// Set PWM
}
Regards,

Tom Kerekes
Dynomotion, Inc.

yethsts
Posts: 28
Joined: Sat Jul 25, 2020 11:17 pm

Re: How can I define the axis name of a AC spindle motor?

Post by yethsts » Wed Aug 19, 2020 11:46 pm

I think I understand your mean. I will try. Thank you very much.

Post Reply