So, the question again is – how fast is fast enough?

To an extent, the answer depends upon your skills and ambitions as a programmer. With stepper motors, simple sensors, integer arithmetic and an uncomplicated maze solver, competitive mice have been build with simple eight-bit microprocessors such as the Z80 or 6502 running at a couple of MegaHertz.

Let’s assume you are tearing along at 3m/s down a straight. You have an interrupt generated every millisecond which corresponds to 3mm of travel. In that time, even on an ancient Z80, you could execute 1000 instructions. Now that is a lot of computation for the relatively simple tasks that are likely to have to be carried out in a simple mouse.

On the other hand, say you are using DC motors, analogue wall sensors and a cunning PID control loop to keep you going in the right direction. Now you have to do some real sums during each cycle. Avoid dividing because it is no fun and keep to integer arithmetic. How fast can you perform a 16bit signed multiply and how many do you need?

Of course, in days of old, programmers knew all sorts of tricks for getting the maximum performance from sluggish processors. These days (aaah the youth of today…) you are probably going to rely on a processor with a good set of arithmetic instructions, a 16 bit architecture and oodles of bus speed. For example, I am using the intel 80C196KC which has adequate amounts af all of these.

In general, you can get the job done with some rough old eight bit device and a bit of cunning, or you can go for a sexy fast processor and a bit of programmatic idleness.

While there aren’t many out there, there is some scope for multiprocessor micromouse designs. Perheaps a maze solving processor talking to a motion control processor and a sensor processor. Divide and conquer is perfectly feasible with easily programmable and cheap devices like the IC and AVR processors.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.