SpinDrive | A Propeller Chip™ Based Engine Control System
SourceForge Page | Introduction | Architecture | Connections | Specification [ 1. Hardware | 2. Firmware - Coordinator | 3. Firmware - Supervisor | 4. Software ]


This project is still in the planning stages! The links above contain the results of my brainstorming thus far.

Project Scope

I envision an engine control system consisting of a pair of circuit boards connected by headers and fitted inside many different sizes and shapes of case, with many different harness connectors tailored to the application.

One board (likely surface-mount) will be standardized and will contain all of the components needed to process sensor information and generate control signals. The second board (through-hole of surface-mount) will be completely custom and will contain all of the conditioning and driver components needed to control a particular engine configuration.

Communications with a host PC will be via USB, although additional wireless functionality could be added to the driver board through a ZigBee daughterboard etc.

Due to the nature of the Parallax Propeller Chips used, the firmware is intended to be very flexible as well, with separate objects being written to perform the common functions with standardized outputs but with different inputs. For example, Subaru 6/7 would be decoded by a different object than Subaru 36-2-2-2. Only one object would be loaded for a given engine, saving memory space.

True 12-cylinder Sequential Injection and Coil-on-Plug

I/O Features (Maximums depending on driver channels available):

320 MIPs of Processing Power for $16

My design incorporates two $8 Parallax Propeller Chips. Propeller chips are 8-core processors, with each core accessing 32kB of shared memory in a round-robin fashion. Operating at 80 MHz, each core is capable of 20 MIPs, for a total of 160 MIPs per chip.

Using two Propeller chips booting from 32k EEPROM chips, SpinDry will have 64kB of internal shared memory and 320 MIPs processing capability, with 16 cores simultaneously accessing 64 I/O pins.

Because of the flexibility of the Propeller chip, it can be programmed with both the SPIN interpreted langauge and PASM assembly language. The SPIN language requires far less memory than PASM to perform complex operations, but PASM operates approximately 10x faster. By using each language based on speed and memory constraints for each task, I will be able to provide a lot of functionality in only 64kB of RAM.

Case (Flexible)
Features (Maximum)
Driver Board (Flexible)
MAP Sensor Baro Sensor
Low Pass Filters IGBTs
Zero Crossing Detectors Schmitt Triggers
Battery Backup Power Regulators
Processor Board (Universal)
ADC (8)Real Time Clock
Supervisor Propeller ChipEEPROM
Coordinator Propeller ChipEEPROM
12V (Battery)
12V (Run Position)
12V (Start Position)
Fuel Pump Relay
Tachometer Output
5V (Sensor Reference)
5V (Sensor Power)
Manifold Air Pressure
Manifold Air Temperature
Coolant Temperature
Barometric Temperature
Throttle Position
Ambient Temperature
Exhaust Gas Oxygen (Universal)
8 Spare Sensors
3 Wheel Sensors
12 Injection Channels (Sequential)
12 Ignition Channels (Coil On Plug)
4 Channel Stepper Idle Control Valve
2 Fan Relays
12 Spare I/O
-Power Ground
-Sensor Ground


My name is Keith, a.k.a. thebigmacd. I frequent many automotive forums, including the London Auto Club, the VWvortex, Megasquirt Extra, and diyefi forums. I am a graduate of Control Engineering Technology (Systems) at Fanshawe College in London, Ontario.

Volkswagen Jetta

I have a 1991 Volkswagen Jetta with an engine swap that I am running on Megasquirt II Extra (V3 mainboard).

Subaru Legacy

My brother-in-law has a 1998 Subaru Legacy that we built a plug-n-play Megasquirt II Extra (V3 mainboard) setup for.


The name "SpinDrive" is sort of a play-on-words. I needed a name for the project and I wanted to incorporate something that would associate the project with both the Propeller platform and the automotive field. "Spin" is a common prefix for projects that involve the Propeller chip, and "Drive", well you know the rest. It also happens to sound a lot like "spin-dry", which helped me decide on the name.


I was inspired to take this project public after reading about Ryan David's DAQpac contest-winning entry at the Parallax website.


I like Open Source and Open Hardware. I currently run my car on a Megasquirt ECU, but I am itching to do engine control with a multi-core processor in a language other than C. This project's goals and requirements will not be subject to consensus among the community; I will program it the way I want with the features I want, but I will let others do things "their way" with derivative works. I will be open to suggestions of course.


It is my intent to release the source code for this project under the MIT license, which is commonly used for Propeller-based projects.