Mesa 5i24 - 7i52S, ODrives and a Fanuc S420F robot arm.

03 Sep 2020 13:13 #180542 by freemoore
Hi all,

I’ve been reading and tinkering around this for a while but can’t tell if I’m barking up the wrong tree, or not far enough up the right one. Lots of questions, I hope someone can help me fill the gaps in my understanding here…any and all help appreciated.

I have a Fanuc S420F robot arm from 1991 with 6 red cap servo motors with pulse coders (details below) but no control box; the goal is to get it moving and usable for the least cost, driven by Linuxcnc as I’m familiar enough with it (use it for lathe, mill, router and plasma).

I have a Mesa 5i24-16 and a 7i52s as interface cards but not sure of correct firmware.

I have three ODrives (v3.6) with 2x 56V/120A channels per board. I know the Fanuc motors are nearer 150V, but my understanding is that I’ll be able to use the ODrives and just lose some max velocity. They take step/dir and PWM input plus some others. They require single-ended quadrature encoder input - I’ve had one motor turning by attaching a £15 encoder and using the ODrive’s native protocol over USB, so I have proof of concept that the ODrives will move the redcaps.

If I understand, ODrive can do commutation using the differential encoder inputs so I can bypass the Fanuc C1C2C4C8 signal, is that correct?

So. I’d prefer to use the built-in encoders, and (if possible) keep the absolute-position features. I think the system might look like this:

Motor enable signal switches relays to release DC brakes. 6v battery bank powers pulse coder position memory.

I believe the pulse coders need a REQ signal sent so they’ll output encoder count to last known position? How is that signal sent? Am I right in thinking that the Mesa cards/Linuxcnc will read that as encoder real-time input moving quickly to a specific place? Can a LCNC component send that signal, and how?

Encoders AA-BB-ZZ- differential signals are wired to Mesa terminal blocks and show up as HAL pins …encoder.0.position sort of thing…What I think I need to do to complete the control loop is to then have the Mesa card duplicate that encoder signal and output it as single-ended to the ODrive so it can do servo commutation and control.

Is this the right place to branch the signal, or do I need a separate hardware splitter/converter to send differential signals to the Mesa card and single-ended to the ODrives? I’ve seen the Pico cards but it’s a chunk of extra cash I’d rather not spend if I can do it with the hardware I already have.

Both hostmot2 and the BLDC component seem to have some provision for dealing with Fanuc encoders but I’m not sure if I need that, which to use, or where to start.

Also, will this be doable with the 5i24-7i52 combination, which bitfile/firmware do I need, or will I need a custom firmware (will I need to learn to write one? eek…). Is there a better Mesa daughtercard or FPGA/daughtercard combination for this task?

I know there’s a version of this where I attach the £15 encoders to each axis motor, drive the ODrives directly with them and have the whole system effectively working as though it were 6 open-loop steppers. I’d rather use the Fanuc encoders - better quality, higher resolution, already built in, better noise resistance, and if I can get the absolute positioning bit working that would be great. I’ve recently been wrestling with closed-loop steppers on a plasma table and it had some quite big spasms before I got the shielding and grounding sorted: not so bad on a 3-axis cartesian table, but somewhat terrifying on a 1.5ton 6-DOF arm - I’m happy to sacrifice some top speed while I get used to how this thing works! I understand that the STMBL drives, when available, are likely my best option for a full-speed upgrade for this, but I’d like to get started.

Phew. I know it’s a lot of questions, I feel like I’m missing some foundational knowledge here but would really appreciate it if anyone can help me out. Many thanks in advance!


3x Model 10 / A06B-0501-B751
stall torque / amps 12Nm/11A
8 pole / 3 phase / 2000rpm

2x Model 20 / A06B-0352-B731
stall torque / amps 23Nm/20A
8 pole / 3 phase / 2000rpm

1x Model 20S / A06B-0502-B751
stall torque / amps 23Nm/20A
8 pole / 3 phase / 2000rpm

Pulse coders:
all Fanuc ABS Pulse Coder A860 - 0320 - T111, 2000P

Power supply:
4x daisy-chained 12v server PSUs outputting 48V up to 200A

Please Log in or Create an account to join the conversation.

03 Sep 2020 20:41 #180585 by tommylight
ODrive might not be the best choice for anything CNC as last time i checked last year they were very slow at returning to the position after moving them. Things might have changed.
The other issue i see is the voltage for the drives/motors as 50V might prove enough for what you need, but then again, might not have enough torque to even start moving if there is a lot of power required from them.
But since you already have them, wire the drive to the motor and use the ODrive software to move them and try to get a feel for how much power/torque they can produce with that voltage.
As for Fanuc encoders, from the numbering i would guess standard incremental ones, but not sure so try to find a datasheet for them. If they are proprietary ones that makes things more pricey/complicated, but there is always the possibility of replacing them with normal ones.
The following user(s) said Thank You: freemoore

Please Log in or Create an account to join the conversation.

17 Sep 2020 22:35 #182585 by Roiki
You're not going to be running those with odrive. It's meant for small hobby motors, not large industrial servos. Those motors require drives in the kW range.

It's possible they could work with 220v drives so buying cheap chinese drives and new encoders could work with linuxcnc
Though it's far from ideal.

Please Log in or Create an account to join the conversation.

Time to create page: 0.069 seconds
Powered by Kunena Forum