"Running Small Motors with PIC Microcontrollers" fills a void in the literature for those of us who don't write embedded firmware for a living. Sandhu cuts through all the mystery surrounding the PIC, and uses an easy to understand compiler from Micro Engineering Labs called PIC Basic Pro. This makes it especially easy for non-C programmers to get projects up and running quickly. Although only unsigned integer math is supported, it is sufficient for many useful DC servo applications. I was especially interested in running DC motors with quadrature encoders attached to them, and I agree that there is a considerable mystique attached to running these "servo" motors with encoder feedback. What this really means is that a lot of the know-how for doing these things is locked up in trade secrets held by companies who depend on motion control to make a living. Sandhu gives us a rare glimpse into the inner workings of discrete-time (digital) DC servo control on a very practical level, and I for one really appreciate his willingness to share this hard-won knowledge.
"Running Small Motors with PIC Microcontrollers" packs more useful information into 334 pages than any other book I have seen on this subject. It is not overly theoretical, but instead gets right into the nuts and bolts of running PICs and interfacing them to the outside world, including motors. The book covers all the essential details for getting a project up and running, and presents the material in a very logical order, with one concept building on another as the book is read through. The reader follows along by actually doing each "mini-project" using the PIC Basic Pro compiler to run Sandhu's programs on the Micro Engineering Labs "LAB-X1" hardware platform. The editor included with PIC Basic Pro, Micro Code Studio, provides seamless programming at compile time. For this kind of work, where many elements of hardware and software have to work together, there is no substitute for direct experience as the reader gains knowledge. I agree with Sandhu's "learn by doing" philosophy, and I believe this is a trend the engineering schools ought to be following. Pure theory is necessary but not sufficient to build complex machines in the real world.
(4-16-10) In response to a negative review on this site:
I am writing a book to be published this fall entitled "DC Servos: Application and Design with MATLAB". I used the same hardware as Mr. Sandhu, because it was the only platform I could get working in the time I had to publish my book. I tried to reproduce hardware and software from Microchip's application note AN696, but was unable to get it to work in the lab. My philosophy was to only feature hardware and software in the book that I had personally gotten to work on my bench. More specifically:
1-The Lab X-1 board costs $200.00. The USB programmer costs $90.00. The Lab X-1 is a development tool, and many features of it are not used. For making any end product, a new board would normally be designed to eliminate most of the unused parts (like the LCD display and push-buttons).
2-I don't think it's necessarily true that anyone serious about programming PICs should be using C. For those of us who don't know C well (like me), it's a serious barrier to entering the exciting PIC world. As such, I felt shut out of the action until I picked up Sandhu's book. As for the price of the Microchip C compiler, it is free for 60 days on a trial basis. It took me longer than that to optimize my code for chapter 8 of "DC Servos". The price for their full C compiler supporting the PIC 18 series controllers is $495.00. On the other hand, the ME Labs PIC Basic Pro compiler costs $250.00.
3-The pre-packaged amplifier board from Xavien is $45.00 and saves the user the hassle of bread-boarding and heat sinking the LMD18200 IC. If the user prefers to do this, the LMD18200 is available from National Semiconductor as a sample, however the user needs to add charge pump capacitors to the circuit and make sure it is properly heat sunk and properly grounded.
4-The Parallax Basic stamp is a different animal entirely. It uses a Basic interpreter to "compile" code every time the program is run. It is much too slow to handle the servo update rates required for DC motor position control and I don't believe interrupt requests are supported.
I still think this is a great book at a bargain price...highly recommended!