How to build a test bed robot

Control Systems & Robotics Topics
Post Reply
User avatar
Neo
Site Admin
Site Admin
Posts: 2642
Joined: Wed Jul 15, 2009 2:07 am
Location: Colombo

How to build a test bed robot

Post by Neo » Mon Nov 30, 2009 1:46 am

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.jpg
RoboMon.jpg (39.46 KiB) Viewed 4506 times
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)
RoboMonBase.jpg
RoboMonBase.jpg (39.13 KiB) Viewed 4506 times
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
(27.81 KiB) Downloaded 485 times
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

Courtesy: Larry Barello
Post Reply

Return to “Control Systems & Robotics”