Current Updates

This blog is an informal, and sometimes intermittent, record of my MEng project.

Wednesday, 18 January 2012

A Starting Point

Some Toys to Play With
I've had a meeting with my project supervisor, and acquired the robot and a box of extra parts that has already been acquired by past students.  Looking in the box, there are several useful components:

 
  • PICs - all from the PIC18F series, which means they are C programmable using microchip's C18 compiler
  • Some test boards for the current hardware
  • Some surface mount chokes
  • Various leads
  • A CD drive
  • A spare ultrasonic transducer for the SONAR system
There is also a lot of hardware mounted on the robot:
  • A webcam
  • A wireless network adapter (802.11b)
  • An IDE compact-flash drive with 4GB card
  • The parallel interface board, with the 'front panel' for the Mini-ITX board
  • The Mini-ITX computer board
  • The motor control board
  • A SONAR control board
  • A test card for the parallel interface board
I've removed a lot of the mounted equipment for the time being, and attempted to boot the Mini-ITX board.  According to the disk check utility, it hadn't been booted for about 4 years, which works out about right.

PC board and GNU/Linux
The Mini-ITX board has 512MB RAM, of which 8MB is used by the video card.  It looks like this can be reduced in the BIOS, but for now it's slow enough.

My plan was to install Xubuntu on the robot, as it uses much less system resources than Ubuntu.  I hate wasting CD-Rs (and I don't have any), so I intended to use my USB flash disk instead.  Since the board is moderately old, I needed to use a trick (from here) to fool the board into thinking my flash disk was a USB ZIP disk.  It's 2GB, but it worked fine.  I soon ran into problems though, as the latest kernel versions require instructions that the (old) CPU doesn't support.

According to this, any kernel versions after 2.6.35 require the instructions that aren't supported.  The long-term support release 10.04 uses a kernel version prior to this, and so it was chosen instead.

Mini-ITX 'Front Panel' Wiring
As I may have mentioned previously, the 'front panel' LEDs and switches are part of the parallel interface board.  As I intend to replace this, I thought it worth recording the connections on the board.

Motor Current
A motor controller is one of the core components in the robot, and it's important to make sure it can cope with the motors.  To find out what it needs to be capable of, I performed a simple stall current test on the motors, using 13.7V (which is around the level of a fully charged / float charging 12V lead-acid battery).  Each motor pulled about 1.3A, and at what I expect is a 'nominal' load, around 200mA.

Motor Braking
It's always useful to be able to control the deceleration of a robot as well as the acceleration.  While the motors could be powered in reverse to do this, it would put large stresses on both the mechanical and electrical components.  To avoid this, it seemed a good idea to make sure that the motor controller design incorporated electrical braking, which basically shorts the motor's terminals together.  This rapidly stops motors.

Motor Control Board Components
As well as controlling motors, the motor control board currently mounted contains regulators to produce +5V and +8V lines from the 12V input.  It also contains the wheel and floor sensor amplifiers.  These produce digital outputs.  While that's fine for the wheel sensors, it's not ideal for smart line following for the floor sensors.  It would probably be more sensible to use the ADC inside a microcontroller to sense the colour of the floor.

AVR Programmer
While I knew that my department usually uses PICs as their choice of microcontroller, I've always been interested in trying out AVRs.  At this stage I haven't decided which would be better, but my supervisor had an AVR programmer which is now on loan to me, so I really have a free choice now.  I've been advised to use C, not assembler (assembler can be put into C anyway, but not the other way round), and I'll take this advice, having done a substantial quantity of programming in PIC assembler before, and being much more well-practised in using C and C++.

Hopefully I'll get Xubuntu up and running tomorrow.  Then I need to get round to comparing microcontrollers, motor controller options, and suchlike.

    No comments:

    Post a Comment

    Comments are moderated. Sometimes it might take me a long time to get round to it, so please be patient.