I’m a master’s student at Colorado State University and I’m beginning a project that will ultimately involve controlling at least 9 stepper motors independently and concurrently. I think we will only be able to afford to go the route where I buy the stepper motor drivers and motors myself (as opposed to the $20,000 PCI controller/drive/motor set up from NI) and control them ultimately from Labview, which we already have a license for. (I have coded here and there in school, but haven’t really put significant time into any language-hence the Labview control.) I’m looking into controlling them from a daq card. It seems that the cheapest route would be to buy multiple 4-axis drivers and control them through cards. So, I’ll be controlling at least 3 of these drivers with this architecture.
I’m just wondering if anyone here has tried to control this many motors with DAQ cards, from NI (USB 6501, for example). Was it necessary to use multiple cards? Were they run in parallel from multiple USB ports on the PC, or was some daisychaining needed (or possible)? Will labview be able to handle this “parallel serial” control (multiple USBs at once)? On NI forums there seems to be an issue with not being able to achieve the needed timing through software, so they recommend using the timing on the card. Is there a better (but still cheap) control architecture, given my intents and limitations?
FRC does not directly control motors using NI’s DAQ system as would normally be done in industry. Additionally, FRC does not use steppers - all of the motors we currently use (as far as I am aware) are brushed DC motors. I’m afraid you’re asking the wrong people.
Additionally, FRC doesn’t use “plain” Labview. There are a bunch of wrappers that we use specifically to allow remote shutdown of the robot, and to allow high school students to build robot code.
Have you looked at using Arduino? There is native LabVIEW supportfor this inexpensive platform. There are plenty of stepper drivers available if you search places like SparkFun. These may or may not work for you.
What size stepper are you looking to control? Will you need to execute in real time?
Yeah, I wasn’t sure if this was necessarily the right place to be. If you know of any more general automation/motion control forums you would recommend, please let me know! I’ve been browsing online but haven’t found too many that would fit with my project…
I’m definitely getting nudged the Arduino direction. It’s just that we have a dedicated PC for this project, so I thought I’d be able to use just that. I’ll check out your link though, thanks.
I would like to run the 4A stepper I already have and then 8 more 1-2A steppers. But I could go smaller on the one and just gear it down.
The motors need to run in a very coordinated fashion but not necessarily in real time I don’t think. Basically I’m building something like a filament winder with multiple pay out eyes if you’re familiar with that sort of thing. So, I’m essentially spinning a mandrel and winding multiple tows of fiber around it at constantly changing fiber angles.
Ok. What we use at Biosero is a Peter Norberg Controller (BC2D20 to be precise). This thing can control up to 2 motors at a time, and another version will control up to 4. They will work for what you’re doing, and they can be controlled from a PC and a micro.
If you’re running things in a coordinated fashion (and based on your description), I don’t see the necessity for real-time control, but rather good timing and response.
Arduino does have stepper motor boards. Not sure if they’ll handle 8 steppers though. Might have to network and do timing? Or build your own?
Writing the Arduino code shouldn’t be that difficult (high level procedural, and there’s not too much junk code for getting set up). I have no idea what your control system looks like codewise, so can’t really tell you which would be better.
As for which forums - your project seems to be a systems engineering project (controls with something that sounds oddly like somewhat complex mechanics?). I’m not surprised you can’t find a forum - it’s not a simple Q&A kind of question. For the controls questions, possibly go to the EE stack exchange forum (http://electronics.stackexchange.com/), or the Programmers Stack Exchange (http://programmers.stackexchange.com/).
I think you need to spell out your requirements for us before darting to solutions. Response between command and execution, sensors, motor specs, etc. all need to be identified. Identify the objective and a threshold for each requirement.
Will you be incorporating feedback sensors for positioning?
I think you’ll do OK on this forum, but cnczone.com might have a lot more insight.
I can see where you may need real-time if you have some modeling in the loop to perform the next motion of the system. If you are just executing a set path in a loop-type method, then I don’t see it being a requirement.
I’d recommend you dive into Arduino. It’s easy and most of the coding work is probably done for you already. The ArduBlock software may even be sufficient for you.
I would recommend looking at larger CNC-type stepper drivers - you can find some on eBay. You can use the Arduino board to send the command to the controller. All of these solutions require an external power supply.
If you are set using the NI solution, an external stepper driver shouldn’t be too bad to hook up. You will need to generate a signal that can be interpreted by the driver. This goes back to your original methodology, and makes things seemingly simpler for you. If this is the case, you would have to find stepper drivers that can be controlled similar to the Arduino and build the code in LabVIEW.
There won’t be any feedback as long as I’m not missing very many steps. Open loop.
Steppers: besides the amp rating to get a ballpark torque generated, I don’t have anything spec’d out. Seems like all of the cheapest motors or motor drivers/controllers have been bi polar.
Command/response: This might not be what you have in mind, but I really only need the position of all of the steppers to be coordinated, as I’m essentially ‘weaving’ on a somewhat cylindrical surface with some fiber (carbon, glass, etc.) So, the speed of the motors isn’t as important as long as it isn’t so slow that it takes days to make something. Maybe a revolution every second or two would be nice. I know that accelerating the steppers too much can cause missed steps so I don’t want that. I was planning on using chopper drives to further minimize step loss, since they aren’t hard to get.
Also, I don’t need the steppers to necessarily respond in a certain amount of time-I just need to get the path of the payout eye that I want and also relative to the paths of other payout eyes.
Maybe you had more specific things you were wondering about as far as command/response goes?
I definitely don’t have my heart set on NI. I just already have Labview and a DAQ card, so that was the first architecture I was looking at. But, besides that route, they are literally 10X too expensive for my budget!
You can use NI LabVIEW To build your control algorithm and interface with the Arduino over Ethernet. The Arduino would receive the packet from the host machine (LabVIEW) and perform the commands as directed (still C++ on the Arduino).