Hello everyone, I'm trying to create a system to sync up the RPMs on two single cylinder two stroke infernal combustion engines. These engines are currently carbureted, but I have some EFI kits I'll eventually be installing. They will eventually go into an experimental ultralight MODEL aircraft.
I have the outputs from the generator, and and a hall effect sensor installed into the crankshaft housing.
I built a circuit to isolate and rectify the sensor outputs, and read them and convert them into RPM's. Currently works at about 2hz which isn't near fast enough, but we're getting there.
I'd like each sensor to have it's own AVR, and all of the sensors communicate with a host controller, which does the math to bring them to sync and compare the redundant sensor data, and then outputs desired RPM to each of the AVR's handling the servo based throttle control.
The EFI will also have a bunch of sensor information I might be able to make use of, so having a surplus of communication nodes on the host controller will be useful.
I've been brought in to help out with this project, and there have already been a few people who have tried to get things done already, so I'm taking stock of whats available and going from there.There are a bunch of ATTiny45
s lying around, but Im a few years out of date as to what is the new hotness in AVR`s.
That is the background, so essentially my question is what would be a good communications protocol choice that is fairly easy and inexpensive and light weight (in terms of physical mass) to implement.
attiny`s using USI talking to an ATmega?
new hotness version of attiny using CanOpen or CanBus shields to just spam the bus with all the different sensor data and an ATmega grabbing that data as fast as it can and processing it?
AT328 using I2C to connect to the 4 individual UARTS on an ATMega?, then using something else to send the data out to the throttle control servos?
Plane Jane SPI with multiplexed shift registers?
The max RPM's of the motors are 6800 rippums. Therefore the counting of the RPM's and getting an accurate number doesn't need to be ridiculously fast. The communications of the RPM data shouldn't also require a really high speed data network. I'm not sure how fast the communications are going to need to be in order to really get the Motors to sync up, but their change in RPM isn't incredibly fast so I imagine I won't need the most blazing protocol.
I would also like to stick to the design mantra of use lego blocks, so implementing this with off the shelf available parts would be ideal.
The wiring is fairly near to the ignition coils, so I was leaning towards canbus as it's pretty reliable in noisy environments.
I think that's enough info to make an informed decision about which protocol to use, let me know if you need any more info and thanks for dropping wisdom on me. Much appreciated.