Possible timing issue?: Mobile -> Arduino -> Stepper Motors

I am working on developing a mobile/tablet app for my cable-driven plotter project. My current plan is to use the mobile device to determine the next plotter movement, communicate the movement to Arduino via Bluetooth, then the Arduino commands the stepper motors to move. The mobile app will calculate the next move and communicate it to the Arduino in real time - one move/step at a time.

I haven't worked with interfacing a mobile device and Arduino before but I have a hunch that timing may be an issue when controlling stepper motor speed in real time. The simplest method I can think of to control stepper motor speed is control the frequency at which the mobile device sends the one step stepper motor commands to the Arduino. If I was to use the simple method I would assume that the stepper motor speed will be limited by either the processing power of the mobile device (when calculating the next movement) or the max speed of the stepper motor driver whichever is slower. My plan is to play around with the setup until I find the max speed that the system can handle. [u]Am I overlooking a simpler or already well understood method to do these types of communications?[/u]

I will be using an Android app, Arduino Nano, Bluetooth module, and Easydriver stepper motor driver.

For details on what a cable-driven plotter is refer to my blog: http://www.slantwiseguy.com/

The bluetooth module I will be using: http://www.amazon.com/JY-MCU-Arduino-Bluetooth-Wireless-Serial/dp/B009DZQ4MG?ie=UTF8&psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s00

I use a Python program on my PC to control 3 stepper motors on a small lathe with an Uno. I suspect the communication issue is similar to your situation.

I have arranged that the PC sends the data decribing (say) movement M to the Arduino. The data is less than 64 bytes so it will fit in the serial input buffer. When the Arduino is finished with the movement L the new data is already waiting and the Arduino sends a message to the PC telling it to send the data for movement N. The data for movement N arrives in the serial input buffer while the Arduino is executing movement M.

I hope that makes sense.

Just to be clear, it would be quite impractical to send individual step instructions. My code sends the total time for a movement and the interval between steps for each of the stepper motors. The Arduino uses that to produce the correct number and frequency of steps.

...R Stepper Motor Basics Simple Stepper Code

Excellent, thanks for your reply. By the way, I changed my username.

Robin2: Just to be clear, it would be quite impractical to send individual step instructions. My code sends the total time for a movement and the interval between steps for each of the stepper motors. The Arduino uses that to produce the correct number and frequency of steps.

So your program counts every change in speed as a unique movement?

I totally agree that it seems impractical to just send individual step instructions. The nuance with cable-cable driven plotters is that the possible positions in the workspace is not a uniformly distributed grid pattern like most XY plotters. Consequently, the stepper motor commands for drawing a horizontal line at the top of the workspace is not the same as the stepper motor commands for drawing a horizontal line at the bottom of the workspace. Each movement is a unique set of stepper motor commands; which is why I haven't been able to think my way out of sending individual step instructions.

Now that I think about it, delta 3D printers have already solved some of the same challenges.

jpsol: So your program counts every change in speed as a unique movement?

I'm not sure what you mean.

My simple system deals with movements from x1,y1,z1 to x2,y2,z2. A single movement runs at a constant speed.

Please provide some examples of the sort of data you want to send.

...R