Magic Smoke
   


Once the magic smoke comes out, things don't work any more.

John Kasunich
jmkasunich@fastmail.fm
GPG Key

Postings:

Index (titles only):

If you are into RSS, you can Subscribe to a syndicated feed.


Links


Friends


I Support

Individual Rights

Electronic Frontier Foundation


Powered by



       

Sat, 09 Dec 2006

Thinking about I/O requirements

Although EMC2 is quite capable of generating step/dir signals in software, there is a limit to the maximum step rate you can generate that way. Because I want to use 10x microstepping, and I want my rapid speeds to be limited by the motors and drives, NOT by the software, I'm going to use "hardware assist". There are a number of products out there that use hardware to generate step pulses at rates that software can't manage.

I've decided to use the Mesa Electronics 5i20 "Anything I/O Card". What I find most attractive about it is that it is "open". The board contains a 200K gate Xilinx FPGA, and an interface to the PCI bus. Seventy-two of the FPGA pins are brought out of the back of the PC on three 50 pin ribbon cables. What you do with those pins is up to you, because the FPGA is reconfigurable. The board comes with several FPGA configurations, such as 4 channel analog servo (4 DACs, 4 encoder counters, and misc I/O). Most users just load one of those configurations into the part and use it. (EMC2 already has a driver for the 4 channel servo configuration.)

However, I'm going to be using stepper motors, not servos, so I'll have to modify the FPGA design. Linux hosted development tools for the FPGA are available free from Xilinx, and I already know in general terms how to make a hardware step pulse generator. The resulting FPGA configuration and the EMC2 HAL driver for it will of course be released under the GPL as part of the EMC project.

Several other EMC people are interested in the 5i20, and we're working on a group buy to get the already quite reasonable $199 price down to the five-piece price of $159. Interested? Contact me!

So, are 72 pins of I/O enough? To do that I've put together a list of everything that I might someday want to connect to the PC:

  1. step and direction for the three main axes (6 pins)
  2. home switches for the three main axes (3 pins)
  3. limit switches for the three main axes (6 pins)
  4. lathe spindle encoder with index pulse for threading (3 pins)
  5. mill spindle encoder for rigid tapping (2 pins)
  6. estop input and output (2 pins)
  7. jogwheel encoder inputs (2 pins)
  8. jogwheel axis and scale factor selection buttons (6-8 pins)
  9. feed/spindle override knob encoder and selection buttons (4-6 pins)
  10. step/dir/home/limits for a rotary table (5 pins)
  11. step/dir/home/limits for a millhead lift motor (5 pins)
  12. control for lathe and mill spindle motor contactors (2-4 pins)
  13. spindle motor encoder (3-6 pins)
  14. PWM outputs for spindle motor drive (3 pins)
  15. serial A/D converters for spindle motor drive (3-5 pins)
  16. fault and interlock bits for spindle motor drive (2-4 pins)
So far I have 57 to 70 pins, out of 72, assuming I add all the features on the list. Some of those features, like a millhead lift, are way out in the future (a millhead lift would require major mechanical changes to the machine, for example).

(posted: 09 Dec 2006 16:05) (permalink)