Go Down

Topic: Motorcycle ignition advance, simple project? (Read 17148 times) previous topic - next topic

dafyddclaud

Has anyone bothered to look at the time before
TDC instead of degrees.
I think you'll find the curve to be quite interesting.
Just a though.
Dwight

Good morning,
Your recent letter keeps interrupting my normal breakfast routine.
I keep thinking about what you have written over & over again.
With regards to my simple ignition system.

My question,  why is it that when I set the ignition timing according to the manufactures specification that the engine does not rev freely?

I got around it by advancing the attack angle physically, that is, by advancing the hall sensor, so that is will see the magnet earlier by about 30 degrees BTDC.

For the last say 6 months I have known that it is not the processor, the Ardino is doing its duty & doing it well.
I compromised, I physically patched up what I should of written inside my sketch.

Because I have not allowed for the period of TIME for COIL EXCITATION!

Regards
Dafydd Claud.

dafyddclaud

Good morning,
Your recent letter keeps interrupting my normal breakfast routine.
I keep thinking about what you have written over & over again.
With regards to my simple ignition system.

My question,  why is it that when I set the ignition timing according to the manufactures specification that the engine does not rev freely?

I got around it by advancing the attack angle physically, that is, by advancing the hall sensor, so that is will see the magnet earlier by about 30 degrees BTDC.

For the last say 6 months I have known that it is not the processor, the Ardino is doing its duty & doing it well.
I compromised, I physically patched up what I should of written inside my sketch.

Because I have not allowed for the period of TIME for COIL EXCITATION!

Regards
Dafydd Claud.
Good morning, Again,
OK!
What I wrote about earlier is almost BOLLOCKS!

But thanks to you I sure that this time I have definitely worked out where I have gone wrong with my ignition sketch.

I have allowed for coil excitation time. Because if I had not then I would not get a spark!
And I do get good quality multiple sparks!

But within my sketch I have energised the ignition coil in the wrong place.
I need to energise the ignition coil about 2 to 6 milliseconds before the Hall sensor sees the magnet!
I have not done so!

I am charging the ignition coil when the Hall sensor sees the magnet. That is to late by 2 to 6 milliseconds.
Even using my lawn mower engine running at between 700 to 3000RPM this is a critical miscalculation !!!

Think I know how to rectify the problem, unfortunately more to follow.

Hope that this is of help for others that are planning a similar system.
 

Regards
Dafydd Claud Miggiano.

dafyddclaud

// read RPM

volatile int rpmcount = 0;//see http://arduino.cc/en/Reference/Volatile
int rpm = 0;
unsigned long lastmillis = 0;

void setup(){
Serial.begin(9600);
attachInterrupt(0, rpm_fan, FALLING);//interrupt cero (0) is on pin two(2).
}

void loop(){

if (millis() - lastmillis == 1000){ /*Uptade every one second, this will be equal to reading frecuency (Hz).*/

detachInterrupt(0); //Disable interrupt when calculating

rpm = rpmcount * 60; /* Convert frecuency to RPM, note: this works for one interruption per full rotation. For two interrups per full rotation use rpmcount * 30.*/

Serial.print("RPM =\t"); //print the word "RPM" and tab.
Serial.print(rpm); // print the rpm value.
Serial.print("\t Hz=\t"); //print the word "Hz".
Serial.println(rpmcount); /*print revolutions per second or Hz. And print new line or enter.*/

rpmcount = 0; // Restart the RPM counter
lastmillis = millis(); // Uptade lasmillis
attachInterrupt(0, rpm_fan, FALLING); //enable interrupt
}
}

void rpm_fan(){ /* this code will be executed every time the interrupt 0 (pin2) gets low.*/
rpmcount++;
}


**********
Good morning,
Attached is a sketch that I personally like the feel of.
It compiles, so I am presuming that it does work properly.
However what I really like about it is the thought behind the sketch.
It has an interrupt attached, it can measure RPM, & it demonstrates how to update information every second with a hertz plotter too.
Hope that is of assistance
DafClaud.



dafyddclaud

Harley Davidson
883
2007.

Good Morning Hugo,
yesterday a friend of mine visited the valley.
He was riding a Harley Davidson model 883.

What really caught my attention was that there was only 2engine sensors used
on that model of motorcycle.
They are a crankshaft sensor & an inlet manifold
pressure sensor measuring atmospheric air pressure & depression
due to air flow.

That model Harley has one carburettor & is not fitted with a wasted spark system.
There is no oxygen sensor,
no knock sensor &
no throttle position sensors.
Not even a Temperature sensor of any kind.

Interesting!!

DafClaud.

AndersStenhammar

Hello.
I am working on an arduino ignition system for vw air-cooled engines. I think I am about to succeed. I may change they way I controll the advance curve by using binary search or map functions. The vw air-cooled engines may not need the high resolution advance curve that I have now.
Forum:
https://forum.arduino.cc/index.php?topic=369684.45
Website:
https://andersstenhammar.com/2016/11/04/aeroduino-ignition-versio-4-2/

tombauer

Hi all. I have scanned through the posts and unless I missed it what I find is that a lot of people fail to understand is how timing is done electronically. You cannot anticipate when the next spark should occur!
What you can do and what is done by every engine with electronic ignition like CDI, is to place a pickup at a point way before you would ever want the spark and then based on rpm delay that signal. So in effect the less delay, the more advance. This can be done several ways even with RC, but the most precise is using a PIC, I suppose you could use an Arduino as well but so far I have never seen it done.

noisymime

This can be done several ways even with RC, but the most precise is using a PIC, I suppose you could use an Arduino as well but so far I have never seen it done.
For what it's worth, this is how it's being done on Speeduino. It uses both first derivative (Speed) and 2nd derivative (acceleration) prediction from the current position in order to estimate the required dwell start time. The end dwell time (ie Spark time) is continually estimated up to the point this fires (Typically within +/-16uS).

tombauer

Hi, Well +/- 16uS is just under 2° at over 9000 rpm so that is pretty crude timing.

noisymime

Hi, Well +/- 16uS is just under 2° at over 9000 rpm so that is pretty crude timing.
16uS is accuracy to better than 1°, which is typically fine at those RPMs. You'd be surprised with how many OEM setups are far worse than 2 degrees @ 9k (Anything using a cam based signal for a start).

It all comes down to your trigger inputs in the end. A 60-2 crank wheel is going to be a lot more accurate than a 2 pulse per rev signal from a distributor.


Go Up