Discussion in 'Machine Modifications' started by bmac2, Apr 24, 2017.
I have downloaded the file again and its working perfectly thanks!
Rhynardt1: Thanks for the feedback.
FYI there is a bug in the V2-Rev4.00 program version that prevents backlash correction from being set to zero (turned off). I made a quick fix and uploaded the new program as V2-Rev4.01 - this is available now if this matters to you.
A reminder to anyone reading this: This software is for testing only so there are probably more bugs lurking. I have received a report from another tester that his motor is stalling when he tries to run it in the continuous run mode. I think he may have speed or acceleration set too high,but I could be wrong about this.
Here is what I do know right now: The program is working with my indexer. When I run in in constant run mode, I can hear the motor accelerating. I think this is correct behavior, as the idea is to give the motor time to move a heavy rotary table up to speed (and then decelerate slowly when stopping). However, I only have one indexer to test on, so I am very interested to see how the program works for others.
For anyone testing the program, I would very much appreciate feedback as to whether it worked for you or not. Also, what did you like (or not like) about the program?
Not long after my previous post, I found another bug: Setting the % of maximum speed for continuous running mode was not working. A corrected update has been posted.
As of this writing, the current posted version is 4.11
Downloaded and tried version 4.11. My stepper is not yet installed on the rotab but everything operates properly with the correct rotations for my setup. I had a bit of difficulty downloading the accelstepper.h library but finally found the link imbedded in the middle of the page - it's definitely not obvious.
I like the interface changes. I really like the accel/decel. I suspect that it will significantly decrease the likelyhood of missed steps. A bit more info on the stetting variables would be helpful, in particular the units. I am assuming they are percent unless otherwise noted. It also appears that the percent can be larger than 100. Are there limits to these values?
It looks like there is an interrelation between stepDelay and stepperMaximumSpeed. A step delay of 1000 microsec implies a maxium output step frequency of 1kHz and a stepperMaximumSpeed of 500 gives 500Hz or a pulse cycle of 2000 microseconds. If I interpret it correctly, the stepDelay must be less than half 1000000/stepperMaximumSpeed assuming a 50% step duty cycle. Is that correct?
Great job so far. I'm looking forward to the next release.
SailplaneDrive - I am glad it is working for you, but please keep in mind it's unfinished and not bug-free. I'm currently working on V2-Rev4.50 with a few improvements (but too many bugs yet to be released). With any luck I should have an update posted sometime next week.
I think you are right about stepDelay but I am far from an expert on this so I will defer to others who are more knowledgeable. The version I will be posting next does not use the stepDelay parameter at all, and all of the stepper movement is handled through AccelStepper.h
The program comments contain some useful information on the program but I will add more detail on parameter setting and program operation. Eventually I will post some information on the web page (link below) but I will update the program comments first so that anyone with the program also has the instructions.
I think I answered my own question, stepDelay is no longer used. Is that correct?
SailplaneDrive - you are correct. In the version you have, there is a setting option for it but it's not used. It's sort of like an appendix - I took it out of the next version.
An updated version (V2 - Rev.4.66) of my Rotary Table Control program with acceleration/deceleration is available at the link below. This is a fully working and tested program, but it should still be considered a "working beta" until it has undergone more extensive use and testing. The program is available at the link below. Please read the program comments for instructions and suggestion on use.
Also - many thanks to "VK" for helping to test this program and for many good comments and suggestions.
The program code includes extensive instructions on how to use the program, how to determine optimal speed and acceleration settings, how to determine required backlash corrections, etc.
The program implements the following functions:
All user settings are stored in permanent memory
All user settings can be entered via keypad
All stepper motor moves use acceleration/deceleration
Maximum motor speed and acceleration are set by the user
Backlash compensation is implemented (can be switched on or off)
Beep (audio) function is implemented (can be switched on or off)
Move in indexed steps by setting degrees per move
Move in indexed steps by setting number of sides or (gear) teeth
Move in jog mode (small steps clockwise or counterclockwise)
Move in continuous rotation (clockwise or counterclockwise)
speed and acceleration for this can be set
in particular, speed can be reduced for machining purposes
Move in arc mode: Move back and forth in a defined arc
I thought I would add an additional note here about a useful method I found to monitor rotary table position for the purposes of testing backlash compensation and indexer accuracy. It is quite simple: Just attach a laser pointer to the table and point it at a nearby wall. I then mark the position of the laser dot with a sticky note with a black dot on it (see the photo).
Then, for example, if you rotate the table 360 and the dot does not return to the exact same position, you will know there is an error in your indexer somewhere.
If you rotate the table a full 360 degrees in one direction, and then a full 360 degrees in the opposite direction you will see that the dot does not return to the original position due to backlash. In the comments written into my program linked to in my previous post, I explain how to use this method (along with program features) to determine (and compensate for) backlash.
I use a wall about 2 ft away for this purpose and find the dot is quite sensitive to motor stepping; I can easily detect movement of a 1/2-step. For even more sensitivity, just move farther from the wall.
Thanks for the laser suggestion. Interesting application.
People who have been following this thread may be interested in a video I just ran across on building an Electronic Lead Screw. Even if you are just thinking about building an electronic indexer, the video has a good overview of the different types of Arduinos and other microprocessors, and their pros and cons.
The final version Arduino_Rotary_Table_Control_2019_V2-Rev4.68.ino of my program which implements acceleration and deceleration is available at the link below. If you are trying this program for the first time (even if you tried an earlier version) you must use the Settings mode first to enter your stepper and rotary table parameters.
This is "final" in the sense that there will be no additional program features added, but if any bugs are reported to me I will post fixes as they become available; I will also note any issues on the page linked to below. Bugs can be reported by replying to this thread, or by sending an email to the address found at the link below.
Additional note to anyone trying out this program: I would appreciate if you would let me know what program parameters (maximum speed, acceleration, etc.) worked for your indexer (as well as a brief description of your hardware) as I would like to get a general idea of what workable settings should be.
Finally, I would like to thank a couple of people (you know who you are!) who helped out with testing earlier versions of this program and who contributed many good comments and suggestions.
Program download and additional information here:
Separate names with a comma.