Close

What's next?

A project log for Mechaduino

Mechaduino is an affordable, open-source, industrial servo motor. Position, torque, velocity, and custom modes. Arduino compatible.

jcchurchjcchurch 06/01/2016 at 20:107 Comments

We're looking at new features to add to the Mechaduino. Let us know if there are any features/applications that you would like to see! Here's a list of some of the things we're working on implementing:

-An easy to use anti-cogging calibration routine (we have a crude routine right now)

-PID auto-tune routine

-Acceleration limits in position control mode

-SPI firmware (hardware is there, just need to finish code)

We're also thinking about designing a couple shields/daughterboards. There are some hardware features that we decided not to include on the base Mechaduino since they would drive the cost up significantly and would probably be unnecessary in most applications. Shields/daughterboards would allow users to add these features when necessary. Some ideas we've had:

-High current H bridge shield (for larger motors)

-CAN interface shield

-esp8266 shield

- cable to plug into stepstick headers on ramps boards (not a shield, but still add on hardware)

Also, we're working on cleaning up the firmware. Right now it all works, and we've tried to add comments where necessary, but it's still a little messy.

Discussions

llluis wrote 10/12/2016 at 04:10 point

Hi guys, any news on the high current add-on? I'm looking to control a Nema34 at 5A.

Any ideas on the driver to use? I could source it and build it myself. Thanks!!!

  Are you sure? yes | no

flymypg wrote 06/07/2016 at 04:39 point

I would love to have the ability to parallel multiple Mechaduinos and easily load-balance between them (that is, to make multiple smaller Mechaduinos seamless act like a huge one).  Also, to be able to run two Mechaduinos in opposition as an anti-backlash mechanism.  Taken together, use them in opposition at low speed/torque, and in parallel for high speed/torque.  Application: A single drive system capable of both high-accuracy and high-speed pointing, for example of a directional antenna/dish.

  Are you sure? yes | no

jcchurch wrote 06/07/2016 at 12:22 point

Woah, really cool ideas!

To load balance, I think you could have one "master" Mechaduino operate in closed loop position mode, and feed the torque command to the other "slave" Mechaduinos which would operate in torque mode.   This way they would all produce the same torque in any situation, and you wouldn't have to deal with any angular alignment of the Mechaduinos since you are going closed loop on only one encoder.

If you just need more torque though, you could always turn a bigger stepper (with coils wound for low current) into a Mechaduino.

Running them in opposition is interesting.  I think there are a couple different ways you could implement this depending on the exact application.  One way you could do this is have one Mechaduino run in position mode, and another running in opposition in torque mode to preload the system at a constant torque.  You could probably come up with some more sophisticated techniques too!

Thanks for the great ideas!

-Joe

  Are you sure? yes | no

flymypg wrote 06/07/2016 at 23:00 point

The goal would be to have one Mechaduino be the "master" (in position or rate mode) and be able to slave the others to it (in torque mode), either in support or opposition, as needed.  The control law would be straightforward: opposing torque below a certain speed, combined above, with a ramped transition.  But I'd like to push the control code into the Mechaduinos themselves, with a single command interface.

Which, from the hardware perspective, would mainly require adding a dasiy-chain port to the Mechaduino.

For my specific application, only the master would need the daisy-chain port, since the slaves would all receive the same commands and could be connected in parallel.  Still, having the second port should reduce cabling and signal loading for the downstream Mechaduinos.

Another, similar, application is for a precise pan-tilt platform for a camera with a telephoto lens, where smooth low-speed tracking and steady pointing are vital, but where fast slew to known positions is also needed.

Hmmm...  Mechaduinos seem ideal for creating a high-quality low-cost high-performance computer-controlled camera platform, including dolly control.  Stick an IMU on the camera to close the loop.

OK, that means my next wish-list item is for local temperature measurement, so I can run the motors hard without cooking them.

I need to get some Mechaduinos and start playing with them...

  Are you sure? yes | no

AssidiousBlue wrote 06/03/2016 at 10:34 point

Congratulations on the HaD Blog writeup!

If I may suggest;

1) Auto-tune PID is an absolute must.

2) You might do well to change the form factor to the A4988/DRV8845 pinout for a "pin-compatible" format given the high adoption of those boards (but also see #3 )

3) Being able to separate the magnetic encoder; perhaps have either a breakout that can be attached to the motor (e.g to two mounting points for NEMA17) or separately (so as to attach to other sized motors, or to the end-output, e.g. the idler of a reprap-style 3d-printer x/y axis, for closed loop of the output rather than just the motor itself.

4) a variable resistor / trimpot to enable adjusting the current limit; something that goes into vsense on the A4954 such that the current can be adjusted; although see #5 

5) use the SAM21D's DAC to output a 10bit analog to the vsense, so that you can adjust current limiting in software

Enjoy and good luck!

  Are you sure? yes | no

jcchurch wrote 06/03/2016 at 18:45 point

Thanks for the suggestions!  We agree, auto tune is a must.


Suggestions 4&5 are already taken care of:  We control our phase currents from software by using filtered PWM signals from the Arduino to set the
current limits on the A5954. 

Interesting idea about the encoder.  Maybe we can find a way to plug in a secondary encoder so that we can accommodate those cases without modifying the base Mechaduino.  


One thing we really like about having everything on one board on the back of the motor is that you don't have wires from the encoder and motor going everywhere.  Also, everything is hardwired, so its ready to go out of the box and that makes it robust and accessible to less electrically inclined folks.... let me think about this.


Thanks again, really appreciate the feedback!

  Are you sure? yes | no

AssidiousBlue wrote 06/04/2016 at 02:39 point

Aha! I didn't see that (for some reason I thought the Vref resistors R14/15 were all that were fixing it.

Perhaps you could enable a breakout / off-board encoder through the SPI / I2C going out to the header JP5?

  Are you sure? yes | no