Robot Projects

Home>Robot Projects>Dilbert II

Dilbert
Dilbert II
Gyrobot
Cherry Blossom
Robomon
Mail

RoboMon

RoboMon is my test bed robotics base. I use the 8515 since it has plenty of I/O and SRAM for me to play with. There is a lot of good stuff here: LCD drivers, Quadrature encoder drivers, a general PID filter and motion control algorithms. All the code takes around half the available resources of an 90S8515. There is plenty of room for more advanced stuff or more sensors. RoboMon doesn't actually do anything at the moment. I was aiming for some good position control algorithms to drive an XY table for machining purposes.

RoboMon CPU card with motor driver LM298 to the left, two photocells to the right and the LCD display removed to show the connector. The connectors at the top are, from left to right, power, serial io and ISP (In Circuit Programming)

The base uses a couple of surplus Pittman gearhead (1:5.9) motors with HP HEDS encoders and 500 cpr slotted wheels. Due to limitations on how many interrupt lines I have on the 8515, I implemented a 2x encoder to get 1000 counts/revolution of the wheel. Under light loads the PID algorithm can control the wheel position to within 1 count or 1/5900 of the output shaft revolution.

The ZIP file for all the software, targeted to the IAR 1.4 assembler: robomon.zip

The software uses AvrX as the foundation plus the following files:

RoboMon.asm   Top Level initalization code for robotics platform
registers.inc   Register definitions for the entire project
MotionControl.asm   Velocity profiling code
MotorControl.inc   Data structures for motor and motion control
MotorControl.asm   Motor control PID filter
Encoder.asm   Interrupt driver for quadrature encoder feedback
analog.asm   Interrupt driver for two photocell "eyes"
lcdtask.asm   Little task for updating LCD panel
lcdio.inc   Hardware definition file for LCD panel driver
LCD_IO4.asm   Flat (no stack usage) nibble driver for standard LCD panel
eeprom.asm   Field modifiable PID and motion control values
math.asm   A variety of 8x16 and 16x32 mult/divide routines
lightseek.asm   Small task that drives motors based upon analog input
debug.xcl   Xlink command file to build the hex and debug object files
eep.xcl   Xlink command file to build the EEPROM hex file
build.bat   DOS Bat file to build the RoboMon software

[Home] [Comments?]
Last  update 06-Sep-2005 .