Programming

The old power supply circuit, the drive motor speed control circuit, and the directional control circuit still work. They are now connected to my laptop via the Phidget 8/8/8 (see below) and I have written new speed control and direction control software in C. Rather than only 10 speeds, Mike now has 200 speeds (100 forward and 100 reverse), for finer control.

I had considered replacing the drive motor speed control with a new DC motor controller, which would have handled the drive signal pulsing in firmware and also provided valuable signal feedback, but I ultimately decided to keep the legacy boards in place where possible. This means that I wrote my own speed functions, delivering from 0 to 100 pulses to the drive motors every 100 microseconds. Fun to do and I’m glad that it works. Down the road, however, this circuit may have to be upgraded or replaced: The legacy speed control circuit delivers the same signal to all drive motors, which are wired in parallel. Separate speed control of each individual drive motor is not possible and Mike’s geometry calls for this feature.

The directional control appeared at first to not function, but it turned out that the drive current was being limited by too great a factor. Probably because my Microtron is powered by a motorcycle gell cell instead of the original old-style liquid acid car battery that Todd’s Mike used. The 4.7 Ohm 10 Watt resistor (limiting the drive current) will need to be replaced with one of smaller value.  But like the speed control circuit, the “proper” step in this case would be to use a full-blown motor controller.

Phidget 8/8/8 mounted on Microtron Robot, in former location of the directional control circuit. The new aluminum sheet on which it is mounted matches Mike's classic 1980s appearance. Visible at the bottom of the photo are part of the battery cage and the new battery charging cable.

All that remains for Mike to be somewhat autonomous is the addition of sensors. Probably fixing  the impact sensors (ie, bumpers) and/or adding the ultrasonic detector will be next.  Then transferring Mike’s new “brain” from my laptop to some sort of on-board SBC.

I ordered the Phidget Interface Kit 8/8/8 today. I read the description and it appears that the rat’s nest of sensor cables, miscellaneous wires, and assorted home-brewed circuit boards that are currently on board my Microton Robot can all be replaced by one off-the-shelf, miniature-sized component board. The field of robotics has apparently come a long way since the early ’80s.

The Phidget 8/8/8 boasts 8 analog inputs, 8 digital inputs, and 8 digital outputs. This will cover all of Microtron’s currently designed functionality, with plenty of room for expansion down the road. Phidget also supplies the library as GPL’d source code, which I hope means that I’ll be able to develop on a GNU/Linux system.

Another plus: I’ll be able to access the device via a single USB port. After programming Microtron in 6502 machine code (w/ 4K of RAM), I’m really looking forward to doing some higher-level, language based robot programming instead.

The phidget libraries are written in C and I plan to write the first stages of Microtron’s new code in C as well. Some of my AI theories are object-based, so I may play around with Objective-C once Microtron’s basic functionality is working.

Completed the Analog-to-Digital Converter and associated Inverter Circuit. The A/D Converter is so that Mike’s on-board microcomputer can detect the position of the directional detector potentiometer, as well as read the joystick. The Inverter Circuit is needed because all output lines on the KIM-1 go high (ie, to 1) when ‘reset’ is pressed-so the programs will output 0 for high, 1 for low and the TTL lines will be inverted.