Testing and optimizing the PID drive


 crucial to the operation of any autonomous robot is the drive controller and motor drive electronics. If you are using hacked servo motors, a motor driver is built in, but for greatly increased flexibility in the robots speed and motion, a precise H-bridge type drive with the appropriate logic is a must. Here we highlight how we built and tested our motor driver and controller at a level of detail that could be used as a guide for others even with different processors or H bridges.
Click on Thumbnails for large view Basic Concept of Drive / Electrical Schematic

 Here is a electrical block diagram I drew up to illustrate the basic layout of the drive. The two motor decoders are PIC16F628 uC which has the code blocked out below. The "Cruise" module, sends a 9600kb data stream to both decoders for control, and is also the same PIC. The key component here is the LMD18201 motor amplifier, which has cruicial logic inside to be able to take the single unchangeable PWM output from the PIC and a direction and make it all work seamlessly. We tried the L298, however in light of the fact you have to add 8 external fast back EMF despikers, and you must invert the PWM everytime you cross zero and go backwards, we opted for the all in one package and much more capable LMD device.
Programming Block Diagram

 A quick block diagram of the method used to move PAAMI about. Although some may argue that a 1/2 second encoder gate time is slow, it works fine for interior situations and in the houshold conditons it is designed for. It was not possible to open these motors up and gain access to the main shaft. The Sonar is not shown here, but will be highlighted in a separate article.
Hardware Implementation

 Seen here is the underside, showing the laser printer encoder wheels designed in Autocad, with 36 sectors for 10 degree resolution. This gives a useable 25 counts per half second for the robots normal speed. The optical detector is a Sharp QRB1114 available from digikey and works superbly, putting out a solid 4v p-p signal into the LM399 quad compartors for digital shaping. They are about a quarter of an inch from the disk, and have a converging beam that is quite insensitive to ambient light due to the IR filteration on the reciever phototransistor. Another very handy thing about this device is the slotted middle for sliding it to the optimal position on a screw or post.

 Two 200 rpm 12vcc motors from Jameco for the drive section. they are good enough to run at a mere 5% duty cycle, however I get very smooth motion at 10 %. You need a slow speed with those huge 5" wheels !

 The top board so far consists of two motor decoders (16F628 PIC's), and the LM399 compartor. The green LEDs are cruicial - they show valid data on each chip, by confirming the qualifier byte is good at both ends of the data stream. The Red LEDs are very valuable, they light only when the PID drive is in the dead band zone, and thus the motors are running at the requested speed. It usually takes about 1 - 2 seconds from a standing start.

  During testing, The optical shaft encoder was read every half second, and displayed on the top line, while the PWM rate which can be varied from 0 to 255 is shown on the bottom. This way we can calibrate for a given count speed, what approximate PWM is required. For the differential term of the PID, we then use about 75% of the estimated PWM as the starting point from a lookup table for rapid changes in speed.

 The motor driver board is separate from the rest of the electronics to keep motor noise and giant switching spikes off the rest of the electronics. Two gel cells are show, the upper is the 12v at .8ah battery for the main electronics. The lower battery is a 12v 1.2ah for only the motor.
Testing and Evaluation (Non Clickable)

 The Rug test. Here we start the Bot rolling on the smooth floor, then it drives over a rug which will slow it down normally. But if the PID controller is working right, it will keep going at a constant speed even as it exits the rug.

In practice, there is always a slight delay from impact of rug to a change in the PWM rate, our goal is to keep this as short as possible - i.e. better than 1 sec.

 Another torture test is the steep ramp. As the Bot encounters the steep slope, it will have to quickly ramp up the PWM to compensate and maintain a constant speed. The ramp here was one foot tall on the far end, and the bot drove up the ramp, and leaped off the end onto the rug, and then continued to drive off at a constant speed!

Here is a short 200k movie of the bot spinning its wheels up the steep hill.

 A very hard torture test is to have one wheel on the rug, and one on the smooth floor. There will always be some pulling toward the left, but the idea is to minimize it so the bot goes straight.
Robotics Main Page HOME

You are visitor number since June 17, 2001

FastCounter by bCentral