Hello! I am relatively new to Arduino, but my partner has many years of experience. The two of us are trying to build a rotary engine management system capable of a maximum 12,000rpm at a rate of 6 combustion events per revolution. Total amount of individual sparks per minute is 72,000 or 1,200 events per second. During these combustion events I will also be modulating dual electronic throttle bodies to smooth incoming air as well as standard engine functionality.
My question is, is the Mega capable of handling the kind to processing power for our application or will the engine exceed the computer's ability to reliably produce spark?
Based on the microscopic amount of information presented, it is not possible to state whether the project would ultimately succeed, but advanced programming skills will be required to accomplish this on a 16 MHz Arduino.
1200 "events per second" is slow for a processor, BUT it can only do one thing at a time and every step in the program adds-up.
It CAN respond rather quickly to an interrupt (a signal from the distributor's rotor?).
Of course modulating the throttle bodies will also use some (unknown) processor time/cycles. IF that uses PWM, the PWM will continue in the background during interrupt processing, or whatever else it's doing but you won't be able to change the PWM when it's doing something else. That might not be a problem is it's only frozen for a few milliseconds, but I don't know.
Sorry for my fragmented understanding, I build cars not boards. One "event" would include reading and reacting from every sensor.
This includes:
1 x 4Bar Manifold pressure sensor
2 x 150C air temperature sensors
4 x Ignition coils
1 x Electronic Boost control solenoid
2 x Wideband 02 sensors
1 x exhaust back pressure sensor
2 x 8 pin throttle bodies with position sensors
1 x Crank angle HAT sensor
not sure if this gives you an idea of how many actions will be taking place. boost control and throttle position will also run PID
ALL electronics are sourced from AEM if you need more specifics. I am already dangerously close to exceeding the rate that the can coils charge and have intermittent spark loss as a result. I am worried an Arduino may hit a similar limit.
A Speeduino board - This is the muscle of the Speeduino ECU and contains all the drivers and IO circuits. This maybe one of the generic boards (Such as the v0.4) or a PNP board for a specific model car
An Arduino - This is the brains of Speeduino and contains the processor, memory and storage. It plugs into the Speeduino board in order to interface with the vehicle wiring. Usually this an Arduino Mega 2560, however various Teensy and stm32 based boards are also suported.
Firmware - This is the system software that runs on the Arduino board and powers its operation. New firmware is released regularly with updates, performance improvements and bug fixes.
Or alternatively search for megasquirt for a variety of built-it-yourself or professionally built options. The heritage and concept is similar to Speeduino.
Due to the unique design of my application the number of operations per second is doubled over a standard 4 stroke engine. I will be using speeduino as a basis for my design. I am more concerned with whether or not it is a fast enough chip.
The Speeduino Dropbear might be better for you, with 8 ignition and injector drives, so you can run a 4 rotor with leading and trailing plugs and two groups of injectors
I think this Teensy-based board would cope easily with the high RPM, especially if you are not using all the ignition and injector outputs.
Otherwise the Speeduino boards just use a Mega2560, which should still work OK. I havent seen any info suggesting a Speeduino is too slow (but it might be out there somewhere)
This article was perfect, thank you. I am running a 4 rotor close to 1500hp and 1450ft/lbs @ 10,000rpm, I hadn't considered that crank timing would be 1 event per trigger wheel tooth rather than (1 event per rotation * the number of combustions). So, before even considering fuel or spark I would be reading timing marks 7,200 timing marks per second. I would definitely exceed the capability most chips considering the software assistance I want to add not to mention I have the equivalent of a 2-stroke V8 engine in terms of complexity. It may be easier to make a custom multi-core PCB and run 1 core per rotor.