Can an Arduino Handle Project Requirements?

Thread Starter

3axisfun

Joined Feb 12, 2016
1
I am wondering if an Arduino is capable/powerful enough to handle my project requirements.

My project is to build an industrial 3 axis robot that is capable of manufacturing a wide range of applications. With this project, I have the requirements of:
• Speeds: X:1000mm/s Y:1000mm/s Z:250mm/s
• Max Payload (Tool Weight): 5Kg
• Touchscreen interface for basic start/stop/pause/jog/program select/exc.

I am a mechanical engineer and need some guidance on what the Arduino is capable of. My current option is either an Arduino or an Oriental Motor Controller (http://www.orientalmotor.com/products/stepper-motors/controllers.html). I would prefer to work with the Arduino, but I am not sure if it will be able to handle the requirements of the project. This will be a commercially available product so it needs to be able to perform to the correct specifications. Will an Arduino be able to work for this project? What are the limitations of an Arduino?

Thanks for any help!
 

Papabravo

Joined Feb 24, 2006
21,159
Maybe. It depends on the hardware you have for running the motors. If you're doing it barefoot then, no I think an Arduino (aka ATMega328) will choke on 3-axis control. You ask an unanswerable question with little or no relevant details.Go back and rethink the question and try to do a better job of specifying the available resources for getting to your goal. If you don't have the time for the investigation, then go with the Oriental motor control and be done with it.
 
Last edited by a moderator:

John P

Joined Oct 14, 2008
2,025
Quoting Papabravo, "You ask an unanswerable question with little or no relevant details."

Yup. Are you talking about 3-axis coordinated motion with the processor generating all the motor steps? If so, work out the math for how much resolution, in terms of time, you're going to need in order to produce the most demanding motion this machine must execute. You're a mechanical engineer, and this is your project, so you ought to have it at your fingertips.
 
Last edited by a moderator:

JohnInTX

Joined Jun 26, 2012
4,787
You are really talking 2 different things when you compare Arduino with the controller you linked. That controller takes simple commands or stored sequences of commands and takes over all of the running of the motor, from generating coil currents to power the motor to ramping the speed up and down, avoiding resonance areas etc. To to that with Arduino (or another uC) means that you take over all of the smarts - generating steps, ramping etc. It would still require a simple stepper controller that took step/direction signals and drove the coils to step the motor.

To start, you need to know the steps/sec profiles you need - determined by the motor's steps/rev driving through your drive ratio to find how many steps/sec you need to run the axis at the desired speed. You also need to compute the acceleration/deceleration rates in step/sec^2 to ramp the speeds up and down. After that you can get an idea of what kind of computing horsepower you need. Calculating trajectories in 3 axes is easy enough but you need some computing horsepower to do the math and maintain smooth stepping.

I've done single axis control with a 25MHz PIC18 in C using the internal timers for pulse generation with horsepower left over using interrupt-driven dedicated peripheral hardware. I bet I could do 3 axis as well but it would take some detailed programming on an 8 bit uC. I am not super familiar with Ardunio but I doubt you could get what you need out of one. If I were to start today, I'd look at PIC32 or ARM Cortex.

Good luck.
 

MrAl

Joined Jun 17, 2014
11,389
Hi,

Asking someone else to think this through for you and expecting a good answer is quite ambitious. They would have to know the entire set of specifications for the project as well as each and every component to be used in it.

Yeah, it depends a lot on what kind of sensors, how much resolution on the positiioning is required, and how the positioning is to be done, details like that. If you need to calculate a lot of stuff then the processor will be involved in heavy calculations for at least part of the time, and although you can use interrupts it still needs enough time to do the math, and then the precision of the math required also comes into play due to the time required for different number precisions. In the end there will be compromises.

You may also consider using master/slave Arduinos, where maybe one Arduino is used for each axis, with one master Arduino.

Either way you have to sit down and figure out exactly what has to be done and what amount of time is required for each part to complete, then see if the 16MHz processor speed is enough to service all three channels in the time required for each action. The Arduino library help file would help here, as well as looking up execution times for various instructions. It's a very intricate problem that requires a lot of attention to detail.
Your app will probably also benefit from going outside of the Arduino library a little, where you control the ports with a faster speed than the base library allows.
Various external peripherals could help too, such as a faster or higher resolution external ADC.

The ARM based Arduino (Due) is a little harder to interface because of the limited supply voltage of 3.3 volts. The overall processing speed is only a little faster than a regular Uno board too, however the math is faster and so is the built in ADC and it also has a built in DAC.
 
Last edited:

NorthGuy

Joined Jun 28, 2014
611
I would suggest you hire someone to do the electrical part. You will spend a day or two explaining the task and answering questions. He or she will then pick up a suitable controller for you.

The only alternative to that is to start reading/learning about microcontrollers, electronic devices, motors etc, to get some basic understanding.
 

GetDeviceInfo

Joined Jun 7, 2009
2,192
I'm going to go with a no on the Arduino, even though an Arm core is included in the 'family'. That doesn't mean it can't be a component in the overall system. What you 'roughly' describe is likely doable on a Linux capable machine. Research your linked drivers closely as their 'programming' feature may be redundant for multi axis applications.
 
Top