I love the sound of the steppers. You're making great progress too.
Some obvious questions. Are you using stepper drivers like the Allegro or is the Propeller controlling them via an H-bridges? What language are you using, Spin, PASM, C, or even Forth?
All the code is currently in Spin. I'm using Float32 for some initial setup, but once the motors are moving, all the math is fixed point integer. The motors are controlled with these: http://www.pololu.com/catalog/product/2132
I'm running them in 1/8 microstepping, and there's a 4.5:1 gear reduction (minimum) on the joints. Spin is already becoming limiting - I can't run all three motors as fast as I can run a single one - the code won't keep up with the step rate. Rewriting it in PASM shouldn't be all that hard, and will make it more than fast enough (at least for the simple moves I'm doing now).
I ported the code over to C++ using the new (beta) GCC compiler, and was able to get about a 10x improvement in the speed of the code. I'm now able to handle step rates faster than the arm can really deal with, which is perfect, and the float math is *much* easier to use.
This is using LMM code. The first few moves are identical to what it was doing before. The next couple show how fast it can go now. It can drive the motors quite a bit faster than this, but my belts or motors start to skip.
Jason: You are a real renaissance man. A builder's builder and coder's coder. That arm is beautiful, as are all of your projects. Looking forward to seeing more on this one.
I think the switch to C++ was a wise decision. It's faster than Spin, doesn't have the type safety problems, and the code can be ported to another MCU if you desire. Also if you get into inverse kinematics they're a slam dunk in C++.
IK is where I'm hoping to go pretty soon. I have to refactor the motor control code a bit, because right now it's assuming a simple trapezoidal ramp at all times. I need to change that to be able to tell it Pos / Vel at start, and Pos / Vel at end, so I can string moves together. Once I have that, I'll tackle the IK stuff. I don't actually expect that to be all that hard - It's mostly simple trig, which I know pretty well.
I'd like to plug in a controller of some kind, like a mouse, or joystick, and be able to control the thing in either cartesian or polar coordinates, with the ability to switch between at any time.
@D Rat: Looks very good to me, other than some overcontrol. Can you change your code to desensitize? Less arm joint movement for any given mouse input.
@erco I'm pretty sure that is the same advice you gave me when I first posted that video. It could be made to move a lot smoother but I had just made the mouse work the arm and posted before I cleaned anything up as usual. I also have a "drunk driving video" of crashing the bigger Smart arm. Same thing I was so excited to get something working, I posted first working result video's. http://www.youtube.com/watch?v=3VFvn5B9AZc&list=UUtHTG82Nn83T5JSdWdTgkAg&index=12
Comments
Some obvious questions. Are you using stepper drivers like the Allegro or is the Propeller controlling them via an H-bridges? What language are you using, Spin, PASM, C, or even Forth?
Edit: It turns out I agree with Martin. I hadn't read his reply before posting mine.
http://www.instructables.com/id/A-fully-3D-printable-GlaDOS-Robotic-ceiling-arm-la/
I'm running them in 1/8 microstepping, and there's a 4.5:1 gear reduction (minimum) on the joints. Spin is already becoming limiting - I can't run all three motors as fast as I can run a single one - the code won't keep up with the step rate. Rewriting it in PASM shouldn't be all that hard, and will make it more than fast enough (at least for the simple moves I'm doing now).
This is using LMM code. The first few moves are identical to what it was doing before. The next couple show how fast it can go now. It can drive the motors quite a bit faster than this, but my belts or motors start to skip.
I'd like to plug in a controller of some kind, like a mouse, or joystick, and be able to control the thing in either cartesian or polar coordinates, with the ability to switch between at any time.
http://www.youtube.com/watch?v=3VFvn5B9AZc&list=UUtHTG82Nn83T5JSdWdTgkAg&index=12