Motor interface electronics

In my sub-$500 robot project, I am currently using the output of two D/A
converters to drive direction and power.
0V = stop.
0 -> +5V forward
0 -> -5V reverse
The voltage goes into two comparitors. One for direction, the other for PWM.
The PWM is basically a comparison against an integrating ramp generator.
While electrically very cheap to make (A quad comparitor, op amp, resisters,
capacitors, and a few transistors.) It puts a burden on the computer system
to *have* two D/A outputs.
The question is, is there an easier, more cheaper way?
I thought about parallel port, but the parallel port is such a powerful
resource, I'd hate to use it up.
USB, but that increases the cost of the system even more.
I thought about an I2C bus, with two I2C D/A converters, and while that is
cheap, if forces an I2C bus.
Should I just assume that there are two D/A outputs for use?
Reply to
mlw
Loading thread data ...
Don't be silly! Of course! Just assume there are D/A outputs. Sure! That's been exactly what you've been telling us all along, isn't it? Just use the OS and make the system call. It doesn't matter if there's no hardware there. That's what the OS is for, making up stuff that doesn't exist. That's the advantage of using a PC. The OS makes up for all that stuff you need to do robotics, but don't really have, doesn't it?
Of course, all us using microcontrollers are using a single PWM pin output. The PWM pin goes directly into commercially available H-bridges. And there's hardware inside the micro which takes all the software burden off the CPU, so the micro makes one write into a hardware register and everything else is automatic. So we take the PWM pin, hook it to the Hbridge input, then hook the motor to the Hbridge output, and we're done.
But you should be able to search around and find a PWM or D/A driver for Linux and just call it and get the same thing, right? Great! Let us know what you find.
Randy
formatting link

Reply to
RMDumse
TI has some 8 pin DIP D/A converters that have SERIAL input, and a few months back you could get free samples.
Rich
Reply to
aiiadict
I've done nothing of the sort.
Oh, please. On your micro-controller, just run apache and PHP for a web interface, just use MPI and networking for distributed processing, use SQLite for a small self contained SQL database for information processing and logging, use the V4L infrastructure to develop your vision systems, use the PC sound system for speech synthesis, use the video out for a display, use a PC joystick for manual control, etc. etc. Micro-controllers don't even count.
You need at least two signals to run H-Bridge electronics, direction and PWM. A single pin is not a solution, do you have two pins? How many motors can you drive? One? Two? Three?
For the cost of a $1.29 chip per D/A channel, I can create an I2C bus off the parallel or serial port. I am looking for a more comprehensive solution.
The question I was asking is which interface is easier and more cost effective to use.
The D/A and A/D converters as well as a number of I/O devices are well supported on Linux. Linux has, as a native kernel driver, an I2C bus. It has full parallel port access as well. I don't have to "find" anything, I was curious about what people think about the best methodology was and maybe someone may have had a constructive opinion to share.
An I/O solution for a PC is no more than about $49 and a little more if the user wants more sophisticated hardware.
My robot's target price is less than $500, and it would be REALLY cool if I can make it for less than $400.
Reply to
mlw
hi,
are there I/O cards available for PCMCIA slots at reasonable price?
Rich
Reply to
aiiadict
The sn74lv8153 chip below may be what you are talking about. I got some free samples a while back, but have never figured out how to get them to work with a PC serial port. If anybody has ever used these with a PC, please post up the how-to info. The bottom board from futurlec seems to have a good bit of serial port I/O for $49.
formatting link
formatting link
Reply to
Si Ballenger
Yes.
The last computer I bought did not have a either a parallel port or serial port, only USB ports. I'm sure that there are some mini-ITX boards out there that have both parallel and serial ports, but I have real doubts about how long these ports will remain in production -- 1 year (probably), 3 years (maybe), 5 years (I kind of doubt it.) I'm not a big fan of USB (actually I *detest* USB) but it seems to be winning in the market place. Do you want to design your platform such that it requires features that are being progressively designed out of motherboards?
Yup. USB is a real pain in the rear for us hobbyest types. Lot's of people are using FTDI chips to get USB to serial these days. Pololu sells a converter , although I've never used it that particular product.
I'd recommend getting real used to USB for talking to mass produced motherboards.
I2C has its pros and cons. I'd recommend reading the spec. very carefully. Pay particular attention to the recommended bus lengths.
No.
Most of us use a dedicated microcontroller hooked up to an H-bridge to drive our motors. You are welcome to try different solutions, but microcontrollers are probably cheaper than anything you have proposed so far.
My $.02,
-Wayne
P.S. To contact me directly, send mail to Wayne .at. Gramlich @dot@ Net.
Reply to
Wayne C. Gramlich
This $500 price tag does that include the motor/gears?
To buy a kids run about toy using the two motors that you have used would cost me about $500 alone.
It might be worth cross posting electronic questions to electronic newsgroups?
I found some old parallel port cards ($5 each) so I had 3 ports to give myself plenty of i/o to play with.
The modern parallel ports are faster I think.
I also used the games port.
If you pump stuff in/out a serial port don't they need more hardware to convert it to the parallel form?
As another poster pointed out the future appears to be with the USB port so maybe you do need a USB solution.
Regards,
John
Reply to
JGCASEY
I noticed a google add pop up as a result of this USB topic,
formatting link

It is a matter I guess of finding a solution, within the price range, that has a Linux driver?
Reply to
JGCASEY
Yup.
No, I found a kids toy for $65.
Yea, I've been looking at those.
The PCI based parallel ports may be false.
The game port hardware is bad. It is very CPU intensive.
The serial ports accept a parallel write, but send it out serially by UART.
USB is fairly expensive.
Reply to
mlw
Actually they do, especially for larger robots. I wouldn't even THINK about trying to control a larger robot with a single PC, unless the board is using a *real* real time operating system. A tried-and-true approach is to use a microcontroller to control the motors; the controller includes a dead man's feature that will stop the robot if A) the motors stall, B) last-ditch mechanical switches make contact, or C) some other condition that indicates the robot needs to stop *immediately*. These sensors are routed to the controller, separately from the PC, so you have a fail-safe system. You can parallel them to the PC if you want to.
On robots that weigh less than 20-35 pounds fail safe's are not as critical, but as the machine gets heavier, it's important to build in safety features. Cost should not be the overriding factor.
A $5 programmable PIC or AVR will run two motors, or you can splurge and use one chip per motor. Connect the fail safes to hardware interrupt pins. Reaction time is in the hundreds of nanoseconds. Several of these controllers have D/A, though I don't think you need to go the D/A route. They all have internal timers as part of their core, and PWM through timer interrupts is very stable and glitchfree, especially if the chip is crystal controlled.
This approach is not unlike how a a modern PC uses co-processors for graphics, network connections, and other services. Microcontrollers, including the more robust ones that Randy's company sells, go a long way to offloading mundane processing, allowing for faster speech, vision, and other processes where a PC really shines.
-- Gordon
Reply to
Gordon McComb
formatting link
D/A converter with I2c input
Reply to
aiiadict
Not really. FTDI sells USBRS232/FIFO modules in the $25 range. One module can control a number of external hardware, and they do have Linux drivers. I know of several robots that use these modules.
Wayne is right that parallel and serial will not be with us for very much longer. We will all have to do down the USB road sooner or later.
formatting link
-- Gordon
Reply to
Gordon McComb
Sure you have. Just use the OS. Make D/A pins out of the parallel port. Make D/A pins out of the audio channel. Make D/A pins out of the video. Any of these are possible. What's the big problem?
If you use a parallel port, Just use a 100,000 Hz interrupt, count each time, and then along some part of 65536 of those interrupts make the pin go hi, and the remaining make it go low. That will give you a 16-bit D/A output that has about a 1.5 Hz update rate. Easy! right? Maybe there's already some driver written that could do this for you.
Or how about that stereo sound channel? There's two audio outputs, and you can probably shape those waveforms to be just what you need right?
Just assume the D/A's are there, like you suggested. Use the OS. Just pick a couple pins on your PC, and make 'em work. No cost! Easy! You've got them right there on your ITX mobo.
Let us know how it works out.
Reply to
Randy M. Dumse
Also the similarily priced silabs cp2102 (needs less external parts)
as used on this GPS to pc pcb from sparkfun
formatting link
wireless usb is the next one on the way , similar to zigbee but up to 480Mbps supposedly. Intel is one of the main ones pushing it.
The ftdi chips
formatting link
formatting link
For the usb modules
formatting link
around the cheapest I've seen.
formatting link
I've used a couple of the 232 modules
formatting link

I've also see a usb to can bus adaptor
formatting link
a design that won in a recent circuit cellar comp.
Alex
Reply to
Alex Gibson
Can get some cheap pci expansion cards
formatting link
You can buy a 1->2 or more adaptor for the mini-itx boards then could plug a couple of these boards in.
formatting link
Or other option get a pci to 4 port usb card and buy a few embedded boards that have usb inputs
or pci expansion and a usb adaptor and pc io board or extra paralel and serial card
formatting link
have a few their dsp boards are brilliant for motor control
formatting link
use c , forth or isomax or asm
quite a few articles / projects on the web using a servopod or isopod as the io for a mini-itx board
formatting link
some good suggestions at the bottom of this page
formatting link
Mike who posts here a lot is currently selling this on ebay
a single usb connection to a servo pod would let you control 26rc servos if needed
one very cool looking product is the biped scoutn from lynxmotion
formatting link
Could also get a few of the microchip , pic18f4550's which can do usb2 fullspeed(12Mbps), easy to program and use.
Silabs also make 8051 micros with usb ,adcs , spi and smbus on a single micro.
Can get some cheap reasonably powered bridges
formatting link
like they have droped the price, not bad. datasheet
formatting link
dc motor see page 6
Reply to
Alex Gibson
I think you are in over your head. Better toss mlw a lifer saver, er, microcontroller.
Microcontrollers count for plenty. PC motherboards are not some great novel idea ripe for robotics use that everyone in the robotics community just somehow hasn't thought of. The VIA Mini ITX's are interesting, but they sure aren't a complete solution. In fact, the only thing interesting about them is the fairly low price. For actual usefulness in robotics, you'll do better with PC/104 type boards, some of which actually do have hardware facilities suitable for robotics applications; but they are generally $$$. There are a number of problems with motherboards intended for PC's - large power requirements, lack of needed hardware interfaces, stability issues regarding mounting espcially for the PCI cards (robots do move and sometimes hit things), etc, etc.
You don't really think you can do this without microcontrollers do you? Let me rephrase: if your time is worthless to you, you might be able to pinch a few pennies by building all your hardware interfacing from scratch. It will take you many years, lots of proto board, lots of scrapped attempts in the refuse pile, and in the end, you _might_ be where you would have been in a few weeks by simply purchasing a ready-made microcontroller board, reading the datasheet, learning a few development tools, and programming it to do exactly what you need.
You do know that a microcontroller is, don't you? You realize that chip makers go to great pains to include features that are demanded by their customers - people who create and build embedded systems. PC motherboad makers go to great pains to include features that are, well, expected on a typical desktop computer. Which do you think is more suitable for use in robotics?
Microcontroller do what is required, cost effectively. I realize your target is a $500 robot. Are you looking to commercialize this robot? Is $500 your cost or your target price? Or is this an "open source" robot? You know there are already a bazillion of those around, don't you?
I'm betting that you'll spend close to $500 just on the frame, batteries, and heavy duty motors neaded to cart around your Pentium 4, running your MySQL database and Apache web server. Heck, maybe you'll even want a cluster - there are a number of clustering solutions out there - you can run dozens of boards all working on complex gene factoring problems, because you never know when you might want your mobile robot to do some gene analysis on the go.
I'm still waiting to see your mouse encoder. I honestly think its much more cost effective to simply buy a motor with the encoder built in. They add a bit to the cost but look seriously at what you get. You get time. Time to work on the things that are really interesting instead of cutting apart a mouse with a dremel and trying to salvage a few chips and encoder wheels, and then, god forbid, trying to mechanically attach those to your motor / wheel in a way that it won't fall apart if you look at it sideways. I like to just spend an extra $10 for my motor and get one with an encoder - you will get good resolution, pristine signal output and a bomb-proof mechanical connection and housing - no fuss, no muss. Then I save that time to focus on a problem that is more interesting to solve.
Instead of dismissing the advice you are getting, may I suggest that you pick up a few books from your local bookstore on this subject. You'll probably recognize some of the authors on those bookshelves as some of the folks replying to you - some several times over. You are getting some quite expert advice - only a fool would ignore that.
I guess we sometimes need to make our own mistakes for the lessons to sink in.
Good luck!
Cheers, -Brian
Reply to
Brian Dean
Gord> Actually they do, especially for larger robots.
-- Gordon
Wouldn't a fuse (or resetable electronic fuse) be required for protection. Why would a PIC be any more reliable than a PC when it comes to reading sensors for a current overload? I learnt the importance of this with my first robot that ran amuck, hit a wall, and the motors promptly went up in smoke!
I have always seen the PC as a rather oversized programmable IC chip with built developmental software.
How fast are these PICS? A quick web search seemed to return a clock speed of 4MHz with the ability to overclock up to 20MHz?
With say a 800MHz PC couldn't you emulate a few PICs and pump the data in/out the parallel or serial ports to some hardware and still have enough grunt to do "higher" level processing?
I have always thought about playing with these PICs but haven't seemed to find the time. I will have to search the net for some good tutorials on using PICs in circuits. I have done a lot of assembler programming on the 6502, Z80, 68000 and x86 so it shouldn't be that hard to learn yet another instruction set and cpu architecture.
I had thought to use an old 8085A and some 8155s, that have been collecting dust for some years now, for a simple robot brain but found the PC easier to play with and now see it as having more potential.
-- John
Reply to
JGCASEY
No matter what other protection there is, adding a fuse is a good idea, assuming that you can get at the machine to fix it. Take the fuse out and nobody's going to switch it on when they're not meant to. Possibly not a good solution for Mars landers, etc...
I've also got 100A DC circuit breakers (eBay, surplus) for those "whoops, I just dropped my screwdriver across the motor power rails" moments.
If you're looking at Microcontrollers, don't forget to have a look at Atmel's AVR range. (Have a look at )
I'm also looking at some of the Dallas 8051-compatible microcontrollers; the DS80C400 has CAN, 1-Wire, 3 x serial AND an Ethernet MAC all on chip. I would be a happy man if I could get hold of some suitable PHYs for these in sensible quantities (like 1 - 4). Dallas also has a range of higher-speed 8051-compatibles, up to 33MHz. Samples available - what nice people they are.
All the uCs I've mentioned have in-circuit Flash programming facilites. I rather like the idea of being able to re-programme without pulling everything apart.
Cheers
Matthew Smith South Australia
Reply to
Matthew Smith
One way to sell a cut of meat that most people don't buy is to sell it with a good recipe or perhaps already marinated.
Your boards are most likely very useful but for me I would like to see a "How to Build Your Own Working Robot" using those boards and sensors.
I assume someone has made a complete working robot with these boards? How about a complete description perhaps in an electronic form?
This would pull all the information together and provide a demo example from which others could develop or just be content to copy.
Cheers, -John
Reply to
JGCASEY

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.