Menu

New Design

Chris Moran

These pages are very much in a state of flux at the moment

CPU Core
The new generation is based on the Atmel ATMega16 Microcontroller. It might not be the newest or sexiest MCU on the market, but it's cheap, powerful and suits the needs of the project quite well. It is also available in a 40-Pin DIP package which makes it easy for hobbyists to work with.

A 5MHz clock is used to drive the CPU, which is more than fast enough for our purposes, and will slightly reduce the power demand from the CPU (trivial, but why not?). The original 8085 also used a 5MHz clock, but had far less throughput than the current MCUs

Memory Organisation
Heisermann's original design in some ways implemented a form of Harvard Architecture (separate program and data memories) on the 8085 CPU. Since the Atmel MCU already implements this architecture (and gives us EEPROM for storage), it makes sense to continue with this format.

The initial version utilises 128 bytes of EEPROM for the main memory, while transient data remains in SRAM. Using SPI, it's possible to add significantly more main memory. The original design called for 64KB, and this is easily achievable with an 8-Pin chip.

ENVL acts as a pointer direct to the EEPROM data.

I/O
Original Rodney effectively used bidirectional I/O ports for ENV and ACT, but this is not quite as straightforward on the ATMega chips, so we cheat a little and specify pins on the ports as either input or output (since we can read back a latched output)

PORT A = ENVL/ACTL
PORT B = General Purpose I/O and SPI in the future
PORT C = ENVH/ACTH

ENVL Designations

PIN Name Purpose
0 LMRUN Left Motor Power (OUT)
1 RMRUN Right Motor Power (OUT)
2 LMDIR Left Motor Direction (OUT)
3 LMDIR Right Motor Direction (OUT)
4 LMS Left Motor Stall (IN)
5 RMS Right Motor Stall (IN)
6 FEED On charger
7 N/C Not connected

ENVH Designations

PIN Name Purpose
0 N/C Not connected
1 N/C Not connected
2 N/C Not connected
3 N/C Not connected
4 N/C Not connected
5 N/C Not connected
6 N/C Not connected
7 N/C Not connected

Another deviation (at least in my model) is with the way Rodney detects an obstacle. Originally Heisermann used a photo-interrupter to detect a motor stall condition. The geared motors commonly available today don't (in my experience) lend themselves to this technique, or they have a lot of torque, so are less likely to actually stall in the event of a collision. At the moment, I am experimenting with bumpers and switches to detect collisions instead. This should mean minimal impact to the original code.


Related

Wiki: Home