Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations GregLocock on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Choice of Motion Controller for ultrasonic motors 1

Status
Not open for further replies.

nhungr

Mechanical
Apr 22, 2009
7
Hello,

I have recently purchased 5 Shinsei Ultrasonic Motors (USR60-E2N: along with their respective drivers. I need to be able to run all 5 motors from a single PC through a USB or serial connection. Would anyone be able to recommend a minimum 5 axis stand-alone controller, or at least where to look for one? How should I go about choosing an appropriate controller?

As a side note, I have looked at the National Instruments NI 735x Servo Motion Controller, but I would prefer a controller that is external to the PC, so that I can plug it into a number of different computers.

Thanks in advance for any advice.
Nikolai.
 
Replies continue below

Recommended for you

Give PI a try. .



[link ]
btn_liprofile_blue_80x15.gif" width="80" height="15" border="0" alt="View Clyde Hancock's profile on LinkedIn
[/url]
 
I'm still deciding, in fact. Finding an inexpensive 5+ axis controller is not an easy task. I've explored the possibility of using two Phidget 0/16/16 interface kits ( but their update rate is too slow for the encoders. A potential solution would be to hook the encoder pins up to a set of Phidget High Speed Encoder boards, but each encoder requires one board and hence one separate USB hookup. Then I'd have to use a 7-port USB hub which seems like it could cause a serious bottleneck!!! The solution would almost work, but it doesn't seem very elegant.

I recently found this company: and I'm exploring the possibility of using their USB-DIO-48 card. There's still the problem of the high encoder pulse rate. I've asked them about it. I'll post their useful reply below for information.

Good luck!
 
My questions to ACCES:

- is it possible to control each I/O pin separately through your API software, rather than in groups of 8 or all at once?
- I need to read pulses from several incremental rotary encoders mounted to motors, at 1.25 kHz. Is this possible with this I/O card?

----------------------------------------
Their answer:

The USB-DIO-48, and in fact the entire USB-DIO line, supports read and write by bit, byte, and "all."

However, the USB bus is a very real bottleneck, and care should be taken to limit the number of USB transactions that occur in your program. Using the DIO_Read1 or DIO_Write1 API functions consumes as much USB bandwidth as using the DIO_ReadAll and DIO_WriteAll functions, but reads and controls 1/48th the number of bits.

That is, although the throughput of the board is around 4000 transactions per second in Windows XP, you can either get 4000 bits per second, or 4000 bytes per second, or 24000 bytes per second (on the DIO-48. Up to 48000 bytes per second on the USB-DIO-96.)

So, although it does support it, if you're aiming at speed we don't recommend it.

Next, the API provided includes an infrastructure associated with plug-and-play detection of multiple cards of arbitrary types. If you only intend on having a single device of a known type installed in your system (made by ACCES, that is,) then you should pay careful attention to the discussion of diOnly on page three of the document. Using diOnly will eliminate the need for the PnP infrastructure, which can reduce your code to as little as three lines (DIO_Configure, DIO_ReadAll, and DIO_WriteAll.)

Regarding the encoders: maybe. The unit supports throughputs in excess of what Windows XP will allow, which limits the device to about 4000 transactions per second. However, this number of transactions per second is a-periodic and unscheduled. The system can steal control from your application on a whim, causing your timing to go haywire.

If you are able to write your code in a "driver" you can almost certainly schedule a 2.51kHz sample rate (kinda nyquist on your 1.25kHz signals) and read the encoders successfully. From "Userland" code -- normal applications -- I don't think it will be reliable unless you take extreme measures (no other programs running, kill most processes, etc.)

However, the device uses an onboard microcontroller based on the 8051, this microcontroller contains firmware written in "C", in the Keil development tools. The firmware source code is available at no cost, and you could add the encoder reading at that level then simply report the count values up to the host computer, instead of the bit patterns.
 
It is not always the product you should look at but the company who supplies it (true with most things but very true with position control).
The Parker Acroloop ACR9000 is simple, high perfromance and relatively low cost. The company who supply and support it in the UK are also one of the top motion control experts around.
I don't work for HMK or have any affiliation with them other than knowing them from a previous life.
They are also systems integrators for Siemens but their equipment would be a little pricey and maybe too complex.

Not sure where you are in the world but give HMK a call, they know their stuff. They will give good advice.
 
In fact, I made a controller for USR60-E2N by using microprocessor. I used one processor for each motor. It works but made things complicated. Now I am looking for some simple and unexpansive solution. I think we need a controller which has hardware encoder interface. Do you have any idea about how to reduce the minimum speed?
 
nhungr; You haven't really described what you are doing as a system, but trying to run motors and read encoders back and close the loop via a desktop/laptop is really folly - as you are seeing. I don't know of anyone who's really doing it successfully as it's a bad idea on so many fronts.

The successful way to do it is close the loop at each motor with dedicated loops. Then the PC just updates the local controllers as to what the desired speed is, or the desired position. This puts the real-time issues i a small dedicated local processor that can do it efficiently and without delays and nasty indeterminacies.

You need to re-think your design to make it achievable.

Keith Cress
kcress -
 
Additionally to 'itsmoked' post, you need to pay attention that ultrasonic motor is differs from any other ones. Therefore even every standard motion controller may not control this motor properly.
 
Hi blacksea

You really know the ultrasonic motor! Do you have any advice on selecting a controller? Thanks.
 
Hello blacksea,

Sorry for replying so late. I was working other project for several months.

The motor I am using is shinsei USR60-E2N, and the driver is D6060E.
 
Hello blacksea

I check the notes about Galil "DMC programming" section. I have a question, the Ultrasonic motor I am using -- USR60E2N and D6060E driver are different from nanomotion's. For the speed-voltage function, the voltage does not have deadband, but the speed has. Maybe I did not describe it clearly. The driver have a speed input(analog) and two direction enable input(digital)-- CW, CCW. When you set one of the direction enable-- for example, clock wise.The motor will move even speed setting is zero!

I do not know if Galil controller can deal with this motor and driver. Looking forward for your reply. Thanks

Regards

zzzzz490
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor