Large Servo Motor - Possible?

Hi, I have recently acquired a pair of this controller and motor: Link

I can fairly competently control a large stepper via a stepper motor driver via my microcontroller, and perhaps foolishly assumed this would be a similar affair.

I now gather that these sorts of motors are usually controlled via a PC hook up and I can not find any examples of people controlling them via a microcontroller.

Is it even possible? Do I just have the wrong drive board or would I need a specific motor and drive board (perhaps they always are brought together)?

Basically, I am driving a Nema32 size linear actuator but I needed more speed and torque than I was getting with a stepper motor. A friend suggested looking at servo motors.

Hooking up to a pc for control doesn't quite seem a sensible interface for my project, I was hoping to just set its linear position using a simple pot. But controlling the motor does not seem as simple as simply pulsing 5V like you would with a stepper.

I appreciate this question might be coming from a place of deep naivety about large servo motors so if your answer would require way too much hand-holding I would appreciate just knowing if what I am doing is even possible via an Arduino or similar board.

I think I need to obviously do more reading on the responsibilities of the controller here and the nature of the signals it would receive from a pc.

Any help appreciated.

EDIT: I thought a link to the manual might help http://fastech.co.kr/bbs/eng/download.php?type=manual&uid=12

Based on a brief look it seems like that driver is controlled using data sent over a serial link so it should be controllable with an Arduino. I suggest you use a Mega or a Leonardo or a Micro all of which have an extra HardwareSerial port.

…R

Looking at the PDF, this is actually a stepper motor, 32,000 steps per revolution. The associated controller accepts servo type control information and makes the stepper perform the equivalent motion. It also appears to remember the motor position when power goes off. Not sure about the last statement.

Paul

Ok, thanks for that.

So it looks like my first port of call is to get a serial connection between a Mega and the motion controller and try and send some serial commands as in the manual to see if I can get the thing to work that way I think.

I think I will try and get hold of a mega and maybe an rj45 shield for ease to this week.

I suppose the serial commands should be no different sent via the Arduino than if they were sent via a PC

I think the serial is RS485, SW2 sets the termination and baud rate.

Hmm, I see Pauls point above, I think I haven't made the distinction between a closed loop stepper and a servo motor. And you are right this seems to be a "Closed loop stepper"

I had always assumed that seeing the second encoder lead meant it was a servo motor but I see now there is some sort of difference.

Presumably, though it makes no difference to my question because if I want to use that Motor and (What I think it combined driver and motion control board) then I still need to solve the same problems as before?

I am still struggling with those serial commands in the manual but I think I should move those quesitions to a software thread rather than this one,

krishpants:
I am still struggling with those serial commands in the manual but I think I should move those quesitions to a software thread rather than this one,

It is easier to help if you keep all the questions about your project in the same Thread.

…R

Ok, in that case, would my approach be correct in thinking, that I need to send serial commands in the format as outlined on page 7 of the communication function PDF?

I need to construct the frame possibly as follows to send for example a "servo enable command":

void servo_enable(){

	// Send Header - As in Manual
	Serial.write(0xAA);
	Serial.write(0xCC);

	//********Frame Data**********

	//Slave ID
	Serial.write(0); //Only one axix relevant
	//Frame type
	Serial.write(0x2A); //Frame Type as listed in manual
	//Data
	Serial.write(1); // 1 Byte of 1 for on as in manual
	// CRC
	// unclear on this?

	//****************************

	//Send Tail
	Serial.write(0xAA); - As in Manual
	Serial.write(0xEE);

}

Or something like this for getting it to move?

void move_to_absolute_position(long desired_position, long speed){

	// Send Header - As in Manual
	Serial.write(0xAA);
	Serial.write(0xCC);

	//********Frame Data**********

	//Slave ID
	Serial.write(0); //Only one axix relevant
	//Frame type
	Serial.write(0x34); //Frame Type as listed in manual page 16
	//Data
	Serial.write(desired_position); //long sent as 4 bytes?
	Serial.write(speed); //long sent as 4 bytes?
	// CRC
	// unclear on this?

	//****************************

	//Send Tail
	Serial.write(0xAA); - As in Manual
	Serial.write(0xEE);

}

krishpants:
Ok, in that case, would my approach be correct in thinking, that I need to send serial commands in the format as outlined on page 7 of the communication function PDF?

Sorry, but I am just too lazy to take the time to learn all about your driver. And even if I wasn't so lazy I think I would be reluctant to give advice when I could not try out my code first.

...R

Perhaps as I said, this might be better suited to the protocols forum as I think now I need more help interpreting the format of page 7 and creating an SPI command from it.

I think I will have more of a play myself and then reopen this elsewhere when I (inevitably) find a sticking point.