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.
I/O Features (Maximums depending on driver channels available):
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.
|←||12V (Run Position)|
|←||12V (Start Position)|
|→||Fuel Pump Relay|
|→||5V (Sensor Reference)|
|→||5V (Sensor Power)|
|←||Manifold Air Pressure|
|←||Manifold Air 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|
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.
I have a 1991 Volkswagen Jetta with an engine swap that I am running on Megasquirt II Extra (V3 mainboard).
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 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.