Close
0%
0%

Mechaduino

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

Similar projects worth following
Engineers use servo motors to achieve the precision motion required in applications such as robotics, automation, and CNC manufacturing. Like RC servos, industrial servos actively correct for external disturbances. Unlike RC servos, industrial servos can provide very accurate motion, and often support advanced motion control modes. Unfortunately the cost of industrial servos is prohibitive to the individual maker (thousands of dollars per motor).

We've been developing an affordable open-source industrial servo motor, opening the door to sophisticated mechatronics applications. Our design leverages the low cost of mass produced stepper motors. We are able to achieve very high resolution via 14b encoder feedback (after calibration routine!). For more information, including demos of our working prototypes, check out the external links (below to the left).

Kickstarter campaign successful!

Missed the Kickstarter? Mechaduino is available for pre-order here!

Goals: (in no particular order)

  • Position, velocity, torque loops
  • Step & direction inputs for drop-in compatibility with stepper motors / step stick
  • I2c, serial inputs
  • Customizable/open source with access to internal variables
  • Transparent and user-definable control algorithms (commercial servos often lack this)
  • Arduino compatible with easy to use interface
  • High resolution pointing (sub 0.1 degree)
  • Low cost (should not be a huge leap from stepper+stepstick cost)
  • Serial interfaces for inter-motor communication
  • On-board processor allows for stand alone for simple applications
  • Adjustable commutation profiles
  • PID auto tuning
  • Anti-cogging capable
  • Open to customization. Outside of our firmware, we see Mechaduino as a very useful hardware package. If you would like to use the stepper motor in open loop mode w/ encoder to verify location, you can do that.

We also see could see Mechaduino as an educational tool. Since all the hardware is on one board (sensor, processor, motor driver), set up time is very low, and students can focus on playing with the controller.

Mechaduino 0.1 Hackaday Prize Video:


Mechaduino 0.0 Prototype:


Strategy:

An industrial servo motor can be broken down into four main components (below). First we looked at each of these components and tried to piece together an affordable breadboard-level prototype. After some experimentation, we were able to distill out a working lineup of components. From there, we've been iterating on our design, working out all the kinks, and tuning the control loops. It's starting to come together!

...Back to those four main components:

1) The actual motor, usually of the brushless dc variety. When you look at industrial servo motors, a big chunk of the cost is the motor itself. They are often custom built, or at least built in limited quantities, which means $$$. Watt for watt, I'd guess that a mass produced NEMA 17 or NEMA 23 stepper motor is between a tenth and a hundredth the cost of the BDC motors used in industrial servos. Although their design is optimized for "stepping," stepper motors are really just 50-pole brushless dc motors. They can be controlled exactly like a more traditional 3 phase BDC motor with more poles. So that's the plan. It's working!

2) A sensor for feedback, usually an encoder. Optical encoders are pretty standard, but get quite pricey if you want high resolution and/or absolute position information. We were intrigued by some of the cheap, high resolution magnetic encoders offered by vendors like AMS. It turns out that although they claim 12 and 14 bit resolutions (that's 0.09 and 0.02 degrees respectively), they suffer from non-linearities on the order of a degree or so! However, we found that this non-linearity is very repeatable, and we were able to develop a quick, self contained (on motor) calibration routine that restores resolution to better than 0.1 degrees. (More on this later. This was a significant design effort and is worthy of its own build log!)

3) Drive circuitry/power electronics to excite the motor windings. Many industrial servos use discrete H bridges. Each phase requires it's own H bridge ( for a two phase motor... half bridges for each in a three phase motor), which consists of at least 4 if not 8 (...including freewheeling diodes) discrete switching devices. Throw in gate drive circuitry, and things start to get expensive. We hoped to find a single-chip, integrated solution that would allow for current feedback, and we found just that in the A4954 dual full bridge PWM driver.

4) Control Electronics. Usually a microcontroller or FPGA. Early on, we decided that Arduino compatibility was a must in order to make the firmware as accessible as possible. We chose to use a SAMD21 ARM M0+ (Arduino Zero compatible) processor to balance cost and performance. Our breadboard prototype system verified that this processor was more than capable of executing the necessary algorithms....

Read more »

MechaduinoManual.pdf

Adobe Portable Document Format - 1.51 MB - 01/02/2017 at 21:42

Preview

Mechaduino01.sch

Eagle schematic

sch - 2.46 MB - 04/22/2016 at 19:35

Download

Mechaduino01.brd

Eagle board

brd - 858.11 kB - 04/22/2016 at 19:35

Download

Mechaduino_01_Schematic.png

schematic image

Portable Network Graphics (PNG) - 174.33 kB - 04/22/2016 at 19:35

Preview

  • 1 Ă— ATSAMD21G18 Arduino Zero compatible uC
  • 1 Ă— AS5047 14bit absolute magnetic encoder
  • 1 Ă— A4954 Dual full bridge PWM driver
  • 1 Ă— Stepper motor NEMA 17 or other w/ adapter
  • 1 Ă— Magnet: Diametrically Magnetized NdFeBr We are using a D42DIA from K&J Magnetics

View all 7 components

  • Hardware Available & New Firmware!

    jcchurch01/04/2019 at 19:48 1 comment

    After dealing with some parts shortages in 2018, We've finally completed another batch of Mechaduinos!

    Fully assembled Servos are now available here!  PCB kits are available here!

    We also released an update to the firmware!  The calibration table can now be stored in flash memory!  The Mechaduino Manual has also been updated (links below).

    Quick Links:

  • Mechaduino 0.2 PCBs Available

    jcchurch05/06/2017 at 06:55 1 comment

    The updated Mechaduino 0.2 PCB kit is now available for purchase here. A list of updates is available in the latest version of the Mechaduino Manual, and all source files are available on Github.

  • Update!

    jcchurch04/09/2017 at 22:44 0 comments

    We have another batch of Mechaduinos in production that will be available for purchase on our website in a few weeks. Sorry for the delay. We decided to add a couple of improvements to the boards which slowed things down a bit. We will be posting details about the improvements shortly in an updated version of the Mechaduino manual. We'll upload the updated source files to github as soon as we've polished them up.

    -Joe

  • Improved firmware released

    jcchurch11/25/2016 at 19:13 0 comments

    Hi all,

    We've uploaded a significantly improved version of the Mechaduino firmware. It is available here (master branch of our repo). Older versions of the firmware are still available here and here.

    Improvements include:

    -Menus now work!
    -Faster control loop (running 6kHz by default)
    -Ability to adjust PID gains from menu (does not use non-volatile memory yet, so you do have to update firmware for permanent changes, but this makes tuning a lot easier).
    -Generate sine/commutation table on startup, this makes it easy to experiment with different commutation profiles
    -Lots of documentation in code
    -Much cleaner code ( no more "magic" numbers, etc)

    We are almost ready to release a Mechaduino Manual that covers hardware, firmware, and example code. Please stay tuned!
    -Joe

  • CW & CCW Pins Example

    jcchurch11/22/2016 at 01:51 2 comments

    Here's a quick example showing one way to configure two digital IO pins to control the Mechaduino. Pull pin 2 low and the Mechaduino moves CW, pin 3 and it moves CCW:

    First, run the calibration routine and copy the lookup table in to parameters.cpp.

    Next, add the following code in the bottom of the setup function in Mechaduino.ino:

        pinMode(3,INPUT_PULLUP);  //pin for + direction
        pinMode(2,INPUT_PULLUP);  //pin for - direction 
        
        enableTCInterrupts();     //start in closed loop mode
        mode = 'x';

    ...and then enter this code in the loop:

    void loop()
    {
      if (digitalRead(2) & !digitalRead(3)){
        r+= 0.01;
      }
      else if (digitalRead(3) & !digitalRead(2)){
        r-= 0.01;
      }
      delayMicroseconds(5);
      //serialCheck();  
      //r=0.1125*step_count;
    }

    In this example we use the position mode 'x', and increment/decrement the setpoint based on the pin state. You could also use the velocity mode 'v' and set the setpoint to a velocity based on the pin state.

  • Position loop example: setting angle in code

    jcchurch10/25/2016 at 23:18 1 comment

    Here's a quick example demonstrating how to change the setpoint of the position control loop:

    This motion was implemented as shown below. "r" is our global setpoint variable. Since the control loop is implemented using interrupts, you don't really have to worry about it in your main loop once it is enabled!

  • Mechaduinos in the wild?!

    jcchurch10/09/2016 at 12:01 0 comments

    If you ordered Mechaduino hardware through our Kickstarter, you should receive your reward any day now (If you haven't already)! Sales from our website should start to appear next week! We've also heard from quite a number of folks who couldn't wait and built there own! If you would like to share your Mechaduino applications or design modifications, please feel free to post below in the comments!

  • Shipping Kickstarter Mechaduinos!

    jcchurch10/01/2016 at 05:29 0 comments

    We began shipping our Mechaduino Kickstarter rewards this week!

  • Step/Dir Interface Demo

    jcchurch09/15/2016 at 13:07 2 comments

    I've created a little video demonstrating one way to configure a Mechaduino to work with the popular RAMPS 1.4 3D printer shield. Check it out:


  • Automation!

    jcchurch08/21/2016 at 21:31 0 comments

    From the beginning, we have seen Mechaduino as a way to make motion control for automation accessible. Industrial motion control systems are pretty far outside of the budget of most makers and small businesses. By creating an open source servo motor that is affordable and programmable in the familiar Arduino environment, we hope to give makers a powerful tool to design their own automated systems.

    As a simple example, here's how we used a Mechaduino to help us automate the assembly of (you guessed it!) Mechaduinos! For each motor, we need to replace the stock screws with our custom screws/standoffs. This fixture helps to streamline the process. Though simple, we estimate that this fixture saves us about 10 seconds per motor... that adds up when you have to repeat a process 1000 times!


View all 26 project logs

  • 1
    Step 1

    OVERVIEW:

    Here are some preliminary instructions on how to get your Mechaduino up and running.

  • 2
    Step 2

    ASSEMBLY:You will need to mount the magnet to the back of the motor shaft. Note: the magnet must be diametrically magnetized, as opposed to axially magnetized. The magnet may naturally stick to the shaft, but we recommend a dab of epoxy or super glue to hold it in place. The magnet should be fairly centered, but the calibration routine will correct for minor misalignment.

    The Mechaduino PCB must be mounted so that the magnet is directly under the encoder chip (Very close but not touching. See the AS5047 datasheet for details). We replaced the standard motor hardware with M3 threaded rods and short standoffs to mount on our Mechaduinos, but there are other ways this could be done.

    When wiring your motor up to the Mechaduino board, please make sure that one phase is connected to ouputs 1&2, and the other phase is connected to phases 3&4.

  • 3
    Step 3

    BOOTLOADER:

    You will need to make sure your Mechaduino has the latest Arduino Zero bootloader. If you are getting a Mechaduino as a reward from our Kickstarter, it will already have this! Otherwise you will need an Atmel-ICE or similar SWD programmer...

View all 8 instructions

Enjoy this project?

Share

Discussions

jcchurch wrote 07/02/2016 at 15:24 point

Pins D1 and D0 can be used as step and direction inputs.  

  Are you sure? yes | no

nguyenquochung160 wrote 07/02/2016 at 12:28 point

good work, i see in SCH 2 input signal dir/step is 2 pin bewent of USB port right? Plz help me now it. Thank team :D ( my english not good, i sorry if you hard read it)

  Are you sure? yes | no

Collin Polk wrote 07/02/2016 at 09:34 point

awesome. Just a question? How many pounds can this support

  Are you sure? yes | no

guest2003 wrote 06/26/2016 at 21:20 point

Nice project! 

Just a newbie question, whats the diff / advantage on driving the stepper as a BLDC instead drive as a stepper (using a 1/32 driver for instance) 

  Are you sure? yes | no

jcchurch wrote 07/01/2016 at 04:04 point

One main advantage is that you do not lose torque.  The incremental torque available falls off drastically as you increase your level of microstepping:

http://www.micromo.com/microstepping-myths-and-realities

By "driving the stepper like a BLDC" we mean that we are electrically commutating: Mechaduino constantly measures the rotor angle and uses that measurement to adjust the excitation angle to be 90 electrical degrees ahead of the rotor position.  This means we are always providing the maximum available torque for a given current level.

Additionally, we are running closed loop, so we never lose steps and are constantly correcting for any disturbances.  This also means that we only apply current/torque when necessary: Stepper motors run open loop and draw current even when holding still.  Mechaduino only supplies  current to the motor windings to correct for disturbances.

  Are you sure? yes | no

daniel wrote 06/24/2016 at 11:06 point

starting with nema 17 motors would be a very good idea for the kick starter, there must be 0000 of cheap 3D printers with them, if you can do it so if all the boards go fast and you can just add more it would be good say if you started at 1000 then can added a extra 1000 at a time. it would pay for you time getting it working good with high amp steppers, what could be the next kick starter 

  Are you sure? yes | no

Mike Wirth wrote 06/23/2016 at 06:08 point

How heavily loaded is the ARM M0+?  Memory footprint?  Realtime requirements?  How many GPIOs, timers, other peripherals used?  (Guess I could dig into the firmware to answer all but the first myself :-)  
Reason for asking is to determine the practicality of porting to another ARM, e.g., Nordic nRF51 series (ARM M0) or nRF52 (ARM M4), which would give me the capability to add Bluetooth LE connectivity.  (Note that the Bluetooth stack on these devices may conflict with your timing requirements; the processor gets stolen by the radio for a couple milliseconds every Bluetooth transmission.)
If an nRF51 suffices, one packaging of this processor that you might find interesting is another Hackaday project, OSHChip, done by a friend of mine, Philip Freidin. https://hackaday.io/project/7212-oshchip-v10

  Are you sure? yes | no

jcchurch wrote 06/24/2016 at 23:21 point

Interesting idea.   Mechaduino's timing requirements are pretty tight:  We are running velocity/position loops at about 3kHz, so a multi-millisecond interruption may affect performance.  Depending on the application, this may be acceptable though.

  Are you sure? yes | no

Aerospacesmith wrote 06/23/2016 at 01:43 point

I really like this project. I am currently designing a very large 3D printer right now and think these will be a great addition. How accurate would you say they are on staying synced with each other? Have you done any testing of giving multiple units the same step commands and comparing how close they stay in relation to each other?

I look forward to the KickStarter and plan to back it as soon as I see it go up.

Good luck guys and awesome job.

  Are you sure? yes | no

jcchurch wrote 06/24/2016 at 23:13 point

Thanks!

It's hard to put a number on how well they stay synced:  It really depends on the load on the Mechaduino and how well the controller is tuned.  If two Mechaduinos are used identically, they should behave exactly the same way and stay in sync.

  Are you sure? yes | no

Kameron Larsen wrote 06/22/2016 at 17:55 point

I noticed that you didn't connect VDD3V to VDD on the AS5047D on your schematic. In the datasheet it recommends that they be connected. Was there a reason you did not do this?

  Are you sure? yes | no

jcchurch wrote 06/22/2016 at 22:50 point

Not really.  We found that this connection doesn't seem to matter.  We left it open to preserve the option of not connecting them, but they can be easily connected with a solder bridge.  This is mostly an artifact of earlier designs where we wanted the option of powering it from 5V.  We'll probably connect them in the next iteration, but it doesn't seem to make any difference.  Good catch!

  Are you sure? yes | no

Machinehum (Ryan Walker) wrote 06/21/2016 at 22:43 point

This project is awesome!!

  Are you sure? yes | no

John Matthias Syrinek wrote 06/19/2016 at 01:29 point

How do you mount the magnet/sensor? Cyanoacrylate?

  Are you sure? yes | no

jcchurch wrote 06/20/2016 at 14:14 point

To mount, you need a motor with an exposed rear shaft.  The magnet
naturally sicks to the shaft, but a dab of epoxy makes it a little more
permanent.

  Are you sure? yes | no

david wrote 06/18/2016 at 13:19 point

RS485 Shield please!

  Are you sure? yes | no

Colin Kingsbury wrote 06/09/2016 at 02:16 point

This could be very interesting for the larger-scale 6-axis arm I'm working on (see here: https://hackaday.io/project/2771-open-source-6-axis-robotic-arm). I'm using geared steppers with optical encoders, but this could be a much better solution for getting gravity cancellation and teach capability than the rather convoluted way I've been going at it. 

  Are you sure? yes | no

jcchurch wrote 06/09/2016 at 11:21 point

Woah! Impressive arm build!   

Yeah, I've been developing the Mechaduino with gravity cancellation and teach capabilities in mind.  I've gotten both to work (quite well actually!), but I need to make the implementations a little cleaner (the code is a little crude at this point).  I'll post a video demoing these functions soon.

Also potentially of interest to you:  I just ordered some much bigger steppers to (340 in-oz) to demo with the Mechaduino board.

  Are you sure? yes | no

daniel wrote 06/07/2016 at 06:11 point

you should do a kickstarter I think you will make a killing, putting these boards on cheap 3D printers well it will make them good, a 10000 order will go fast 

  Are you sure? yes | no

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

We will see!  Working on launching a small Kickstarter in the coming weeks.

  Are you sure? yes | no

Jrsphoto wrote 06/05/2016 at 01:29 point

So I see others here that are also interested in telescope control with these.  That is my interest as well.  I am actually going to test them with OnStep Telescope, a full featured arduino based telescope control project:  

https://github.com/hjd1964/OnStep

Two quick questions, first, the motors I'm going to use are of the the .9 deg/step  variety.  Its what most of the people using OnStep are using so that's what I got.  I assume there will be some code issues with this that would need to be addressed?  At the very least, CPR would double to 32768 I guess.  However, given the resolution your already getting, 1.8-deg steppers might be enough?

Second, I was planning on ordering 3 boards from OshPark and just wanted to make sure that the board up there are ok to use.

Thanks, this is an AWESOME project.

-John

  Are you sure? yes | no

jcchurch wrote 06/05/2016 at 06:33 point

Thanks!  That looks like an awesome project as well!

To answer your questions:

0.9 degree steppers will probably be ok.  Since we are using them as closed loop brushless dc motors, the step size does not effect the resolution.  CPR will be the same since it's encoder counts per revolution.  The parameter SPR (steps per rev) will now be 400.

The files on github are current.  We just got the latest prototypes in, and they are working great so far, but we haven't full tested them yet.

Feel free to order your own boards!  We are working to make the assembled boards, as well as fully assembled motors (with magnets and hardware) available on kickstarter or some other platform ASAP.

  Are you sure? yes | no

Jrsphoto wrote 06/05/2016 at 21:26 point

Awesome,  thanks for the reply on that.  I ordered my boards and now I want to order the parts, I see the BOM but any chance you (or anyone else) might have a BOM for Newark or Digikey with part numbers?

  Are you sure? yes | no

jcchurch wrote 06/07/2016 at 16:00 point

That's awesome that you ordered boards! Let me know how they turn out!  

I don't have a Digikey BOM at the moment.  The ICs shouldn't be that hard to track down though.  For most of the passive components I used standard "house parts" from my manufacturer, MacroFab:

https://factory.macrofab.com/parts

If you put together a digikey order, could you forward the BOM and I'll add it to the github repository? 

Thanks!

Joe

  Are you sure? yes | no

Jrsphoto wrote 06/07/2016 at 21:56 point

Ok Joe, I've mostly got a Digikey BOM together, I just have a few questions:

C12 - lead spacing / diameter for cap

D1 - SOD-523 diode - I need voltage/current for that device

F1 - PTC1206 - need the hold/max and trip current for it

SH1 - I assume this is 0-ohm resistor?

U1 - I assume this is the Allegro A4954?

I've got the list on google drive right now: https://docs.google.com/spreadsheets/d/1ANkGLOsWdw8pMS1NF-ShBiBzy0ALeBRFkQzYRKJcGfU/edit?usp=sharing

You should be able to edit it.

  Are you sure? yes | no

jcchurch wrote 06/08/2016 at 04:41 point

Here you go:

C12 is a Panasonic size D surface mount capacitor (6.3mm diameter)

D1 is a BAS16X-TP , 75V, 0.2A

F1 - full part number is PTS120615V050

SH1 is just a short allowing me to connect the two different ground planes.  (It's a bit of a hack: two overlapping vias.) This is left unpopulated.

U1 is the Allegro A4954

Thanks for making the list available!

-Joe

  Are you sure? yes | no

gonkwonk wrote 06/14/2016 at 21:13 point

Hi, there is a bug in your Digikey sheet, item # 399-12289-1-ND appears twice.  I think the part number ofr the 0402 22pF cap is wrong.

Also, there is a bug in hackaday's commenting web code, I can't reply to comments that are already nested deeper than a certain depth (so I can't reply directly to Jrsphoto).  I miss Usenet, this web crap blows.

  Are you sure? yes | no

Tarjei Knapstad wrote 07/11/2016 at 13:02 point

@Jrsphoto

C13 in your BOM has the wrong digikey partno. This is a 1uf 0603 cap and the partno is for a 0402 cap

  Are you sure? yes | no

Thomas Pointhuber wrote 06/04/2016 at 19:39 point

Your project is really cool.

I'm thinking about building some pcb's, and would ask if you can post an image of the magnet (like how big it is, and how you mounted it on the stepper motor)

  Are you sure? yes | no

jcchurch wrote 06/05/2016 at 05:25 point

Thanks!

You need a diametrically oriented magnet. Here's the sensor datasheet (although it doesn't go into to much detail:

http://www.mouser.com/ds/2/588/AS5047D_Datasheet_EN_v4-347336.pdf

We are testing a couple different magnets.  Some are from the sensor manufacturer, AMS, and some are from a magnet supplier:

https://www.kjmagnetics.com/proddetail.asp?prod=D42DIA

So far they all seem to work.

To mount, you need a motor with an exposed rear shaft.  The magnet naturally sicks to the shaft, but a dab of epoxy makes it a little more permanent.

We have been working with a manufacturer and are working to make a batch of prototypes available soon via kickstarter or some other platform.

  Are you sure? yes | no

skrogh wrote 06/03/2016 at 19:22 point

This looks super cool. Thought about doing something similar myself.
How accurate is the output from the ASM encoder chip? The data sheet states +/- 1 degree, but it also looks like most of the error is deterministic (and therefore possible could be calibrated away)?
Are you doing full FOC; and in that case, what maximum speed can you achieve before the sampling rate of the sensor and M0 processor speed becomes an issue? (EDIT: AVR->M0)

It's really cool to see all these closed loop approaches to 3D printing emerging!

  Are you sure? yes | no

jcchurch wrote 06/03/2016 at 20:15 point

Thanks!  You are correct, you can calibrate out almost all of the sensor error.  Check out my build log on the calibration routine!

Our control architecture is not technically FOC.  (We don't do a d-q transform, current control is done in a minor loop).   We do go closed loop on current and postion though, and we commutate based on encoder position.  See the block diagram in the description above.

Since the current loop is handled by the A4954, we don't need an incredibly high sampling rate to do current sensing.   We just need to sample the encoder for the position loop....there is still an upper limit here though.  I'll have to get back to you on a max speed, but we've had them running at something like 600 rpm (10 rotations per second).  With some clever feed-forward control algorithm, you could probably push this higher.  People have been able to achieve very high speeds on traditional open loop steppers using fancy control techniques, but usually at these speeds you lose a lot of torque.

Let me get back to you with some data/hard numbers on this (away from the lab right now).

  Are you sure? yes | no

Overdesign wrote 07/01/2016 at 18:39 point

I wonder if these numbers came out on another page that I haven't seen yet...if not, any more news?

  Are you sure? yes | no

jcchurch wrote 07/01/2016 at 21:33 point

We've just started to play with using phase advance and the preliminary results are promising: speeds over 1000 rpm.  We are a little skeptical of this approach though.  If you're using phase advance to achieve higher speeds you're essentially giving up some of the benefits of feedback and operating in a more open-loop/feed forward manner.

Steppers are generally a good choice for speeds below 5Hz, and Mechaduino works well in that range. If you want to experiment with pushing a stepper to higher speeds, Mechaduino is a great platform to do that since you can implement fancy things like phase advance. You can always use gears/ timing belts to get higher speeds out of the Mechaduino. GT2 belts/pulleys work great, have virtually no backlash, and you can 3d print the pulleys.

  Are you sure? yes | no

Overdesign wrote 07/02/2016 at 09:11 point

Nice that you are thinking about phase advance; there are surely some good ways to get it working well without giving up too much of the feedback benefit, which could be an awesome feature for really high speed applications. But I was just wondering more about [skrogh]'s question, "what maximum speed can you achieve before the sampling rate of the sensor and M0 processor speed becomes an issue?" I know that this implies the question, "how can I make it go faster," but really I just wanted to know how fast it can go with the current setup.

A quick guess might look like RPM=60*<control loops per sec>/<steps per rev>

= 60*3000/200 = 900 rpm

or maybe 450 rpm depending on what you think an "issue" represents...or even 60*3k/2^14/2 = 5.5 rpm if you really wanted to get all the efficiency and torque benefit possible from the encoder -- clearly a faster control loop is the way to go if that's the case...

  Are you sure? yes | no

daniel wrote 06/03/2016 at 04:01 point

I wont one

  Are you sure? yes | no

daniel wrote 06/03/2016 at 04:01 point

I wont one

  Are you sure? yes | no

Jason Doege wrote 06/03/2016 at 01:57 point

Do you put a magnet on the back of the shaft of the motor or do you use the magnetic field of the rotor to affect the encoder?

  Are you sure? yes | no

jcchurch wrote 06/03/2016 at 20:15 point

We put a magnet on the back.

  Are you sure? yes | no

jcchurch wrote 06/02/2016 at 21:09 point

Yes! This is one of the more advanced functions that we had in mind.  Most commercial industrial servos do not give you enough low level control to allow you to really treat them as a programmable compliance device.

The Mechaduino can be programmed to act as a mass-spring-damper system, or even more complicated time-variant or nonlinear mechanical impedances.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates