Go Down

Topic: Controling CNC machines - Quadrature encoder (Read 1 time) previous topic - next topic


Hi all,

We've been designing a system based on Arduino to control CNC machines and more.
Actually I have the following doubt, and any suggestion will be greatly appreciated.

To control several CNC machines we have to give pulses to the servo motors and read the encoder position, however when we control several things at the same time, one CPU can't do all.
So we are designing a controller card.

The idea is the following:
1.- The master CPU gives the direction, acceleration, speed and pulses to the controller card (remember: several motors with at least 2 of them interpolated).
2.- The controller card gives the pulses to the servo-amplifier/motor.
3.- The quadrature encoder in the motor gives the pulses to an IC decoder.
4.- The IC decoder gives the pulses to the controller card which checks the position and acts according to that.
5.- When the position is reached the controller sends a signal to the master CPU, so the master CPU can send the next movement. If an error is produced the master CPU receives an error signal and all further movements are cancelled.

1.- How can I do it: One master CPU and several controller CPU's, or one master CPU and only one controller CPU. Doing only one controller CPU it's better because the communication process simplifies a lot: when you have to interpolate two axis all the process is done in only one CPU of the controller, so no delay with communications. But I'm afraid only one controller CPU will overhead, even that it is dedicated to this task and has a signal decoder.

I'm thinking to use ATMEGA328P IC's for the CPU, and for the decoder it can be a dedicated HCTL-2022 or an ATMEGA328P programmed only to decode the signal, however I don't know how fast can it be reading signals.

Any help will be greatly appreciated!


when we control several things at the same time, one CPU can't do all.

Have you tried? From your description, it doesn't sound completely out of the question that one controller could manage it all.


Thanks PeterH for your answer.

I finally decided to do it "more standard": I will control the steps with the power amplifier/driver.
So the Controller CPU will only need to provide: pulse and direction.

We will design a pcb to control 5 motors with Accelstepper library. However not all motors will work interpolated (sync).

Go Up