82 Maxim DOHC 400 electronics retrofit

Any code changes since the above snippet?
I was wondering how you're timing and firing the second cylinder?
I imagine DOHC bikes are still a 180° crank?

A timing light will help a lot too.

Ill be honest - Ive never used a timing light. The stock DOHC's timing cant be adjusted. Ill see if I can find one. Im home for spring break starting Friday. Yes, as far as I know the DOHC is a 180 crank. Havent been firing the second cylinder yet - but really, it should at least pop without the second cylinder firing. I havent changed the code really at all.

Congrats on getting a spark! Sounds like the spark is occurring on the intake stroke rather than compression.

Thanks! Im firing at TDC every cycle - wether intake or compression. Thats basically a wasted spark system, correct? So it shouldnt matter...? I might be wrong about that.
 
I'm not a fan of wasted spark ignitions. Twice the wear on the ignition system, more heat in the coil, etc. But that is just my opinion.

Try advancing the timing, either mechanically or electronically. Stock is 10 deg BTDC static (and at idle). If your timing is at or after TDC, that may explain the backfiring. A lean fuel mix, or stale fuel could also cause backfiring.
 
Even on stock bikes the initial timing can be set by rotating the pickup plate. Just eyeballing the hall sensor could put you more than a few degrees off TDC.

A timing light would really help with setting the initial timing but you could put an led in the circuit that lights up when it hits TDC, then manually turn the crankshaft until it lights. Adjust the pickup location until it lights at the TDC mark. Kind of like timing a points bike.

The wasted spark setup should work fine for testing. Once you get an rpm calculation going and program the advance it wouldn't take much more to delay one cylinder by 180° and save the wasted spark energy.
 
Even on stock bikes the initial timing can be set by rotating the pickup plate. Just eyeballing the hall sensor could put you more than a few degrees off TDC.

A timing light would really help with setting the initial timing but you could put an led in the circuit that lights up when it hits TDC, then manually turn the crankshaft until it lights. Adjust the pickup location until it lights at the TDC mark. Kind of like timing a points bike.
DOHC static timing is not normally adjustable. It is either right or there is something wrong. That said, it is possible to slot the mounting holes for the pickup plate to add adjustment.
 
Ah. Bad example for stock bikes. Still may be necessary for a scratch-built ignition.
 
Good info here guys! Another hair-brained theory I had is that maybe the exhaust stroke sucks all of the starter spray vapor out before the spark even happens. Dont know. Ill be home on saturday for a full week to do lots of testing!
 
This is probably the most confusing thing I have ever attempted.

I did get it to pop! I heard it, and I could see the crank jerkily accelerate! it was kinda weak though, and now, I can not replicate it, which makes me think it was just a fluke/random.

If you look carefully of the DOHC, the stock sensors arent actually mounted at TDC. They are about 10º BTDC (just a guess). Maybe this is to account for dwell time? I originally had no dwell, but when I added 5ms of dwell it popped.

I calculated 5ms at 100 RPMs, plus 4ms of dwell was 6º of advance. Of course, that is 6 actual degrees of advance. This is when it popped. The manual in the appendix of the manual is very confusing. Does the advance stay the same from 1200 RPMs and below? Even though the manual calls for a certian amount of electronic advance, is that compounded by the "physical" advance (caused by the stock sensors being mounted roughly 10 degrees BTDC).

This is kinda confusing, so if anyone wants clarification, let me know.

Is this why they pay engineers alot of money?!
 
Without any dwell there's no time for the coils to charge.

Not sure how the DOHC ignition is set up. You'd probably be better off totally ignoring the stock setup. Don't get mixed up with physical/electronic advance.
The advance is whatever the manual says it is. The stock electronic ignition would have been designed to fire properly with the sensors where they are.
The seca manual leaves out everything under 1200 rpm but it'll be 10 degrees all the way down to 0.

5ms dwell across the entire rpm range will probably be plenty. Possibly too long.

I calculated 5ms at 100 RPMs, plus 4ms of dwell was 6º of advance.
Dwell and advance are two totally different things.
Still figuring this all out myself but I'm not really sure what you're trying to calculate.

Speculating, but if your sensor is at TDC you'll have to calculate how long to wait after TDC to start the dwell, and then how long to wait to stop it.
Start backwards from the advance.
If you want 10 degrees advance, you need to calculate the rpm, then calculate how long it will take for the crank to rotate 350 degrees at that rpm.
Coils fire when you stop charging them, so that's when you end the dwell time in order to have 10 degrees total ignition advance.
Dwell would have to start 5ms before then.

Haven't really gotten further on mine. Hung up on interrupts and the photodiode circuitry. Doesn't fire, then gets stuck firing continuously.
The wife and I bought a CBR250 that's much easier to hop on and go... so that's not helping.
 
I'm going to repeat what @BBS360 said, using different words:

The factory wants the spark to fire at 10º BTDC from 1 to 1200 RPM. Do what ever it takes with your system to make that happen. Once you can get the bike running, you can worry about advancing the spark at various RPM's. And I'll bug you to add a MAP sensor for load compensation. That can be discussed later. ;)

Dwell (effectively the charging of the ignition coil) was originally measured in degrees of crank rotation, as the tech to measure in ms wasn't cheap or common. Now, with your fancy gear, you can measure and adjust the dwell to what ever you want. The goal is to get the ignition coil fully saturated (magnetically) just before the spark event. Use the lowest dwell that achieves this to prevent overheating the coils. It should be noted that the ignition coil design will determine the actual dwell required. And you will need to factor in the time it takes for the primary circuit's magnetic field to collapse, the time for the secondary circuit to build energy, the time delay caused by the resistance of the secondary circuit (wires, boots, spark plugs, gap), and even the time required to establish the flame kernel in the cylinder.

For now, just pick a reasonable dwell time and work backwards from 10º BTDC to determine when to start charging the coils.
 
...Dwell and advance are two totally different things.
Still figuring this all out myself but I'm not really sure what you're trying to calculate.

Speculating, but if your sensor is at TDC you'll have to calculate how long to wait after TDC to start the dwell, and then how long to wait to stop it.
Start backwards from the advance.
If you want 10 degrees advance, you need to calculate the rpm, then calculate how long it will take for the crank to rotate 350 degrees at that rpm.
Coils fire when you stop charging them, so that's when you end the dwell time in order to have 10 degrees total ignition advance.
Dwell would have to start 5ms before then.

I think dwell and advance are more connected than we think, because they are both measured in time.

I should also mention that oil started pouring out of the engine side hole (where the pickup cover is, obviously I had it off). I have been cranking it on and off for weeks and it hasent leaked a drop. After I had the first pop, oil began pouring out. Dave, any idea why? I thought that perhaps that now that there was compression/ignition in the cylinder, some of that pressure would be translated to the crankcase and push oil to a higher level? It poured out, very similar to taking the drain plug out. Didnt spray or have pressure really.

I re read my post and it was sorta confusing. The main problem is that how do I calculate 350º? If I use time, that should work reliably - once the engine is running, because the change in acceleration is relatively low. However, while cranking, its acceleration just too sporadic. I calculated 350º at 100 RPMs (thats how fast I guessed it was cranking). 100RPMs is 1º/1.7ms according to my calculations. That means that 4ms of dwell would spin the motor 2.3º. My calculation for 350º at 100 RPMs is 607ms. Theoretically, if you add 4ms (of dwell) to the 350º that would be 352º which is 611ms which is 8º BTDC, or 352º after the sensor trigger. I also tried 600ms. The manual calls for 10º+-, so while 8º isnt optimal - something should happen, right? Nothing.

My process was: carbs on, no airbox/filters, spray a little starting fluid in the spark plug hole, put spark plug in, then plug boot on - crank. Its worth mentioning that I dont have much oil in the engine. Probably a 1/4 of what should be in there.

The problem is even if something did happen, and it fired once. The engine would accelerate very fast, (way above 100 RPMs) and all of the timing (namely 607ms of delay or 350º) is now completely wack, because even at 300RPMs, (which is what im guessing it spins at minimum after a single pop/ignition in the cylinder) 350º is only 194ms. Of course, the advance would still be coded in at 607ms, and would mean that the engine has turned almost 3 times (350º x 3 = 1050º) and the spark plug is firing at who knows where.

Im thinking what I could possibly do, is have a set of tables with values for specific RPMs that, depending on what RPM the sensor picked up (aka the actual engine speed), it would use that value and change the advance accordingly. I need to learn about interrupts to write something like that.

The probelm with that is that one pop will only accelerate the engine for so long. By the time it gets back to the sensor at TDC, it may have decelerated enough that whatever RPM the arduino senses, might not be the actual engine speed and then once agian, the advance values are inaccurate.

It seems that more sensors/different sensors are in order? Im not sure but Im very hesitant to do that.

Maybe the 2 sensors (left and right TDC) could be used in tandem to measure RPM during cranking. Arduino would know how long it is "supposed" to take to get 180º (aka the next sensor) and if it takes less time, viola - the sets timing accordingly. There would still be the point from 180º to 350º that it would be "blind" from acceleration.

Lets keep in mind that the Pamco ignition does this with just 2 hall sensors. What are we missing?

I was really hoping that the engine would at least pop when at TDC. If we could get it to pop/idle with zero advance (aka TDC) that would help, alot.



..And I'll bug you to add a MAP sensor for load compensation. That can be discussed later. ;)..

Dreams. I need those. I am committed to this - MY MOTORCYCLE WILL RIDE AGIAN.
 
HOLYYY CRAAP I was just taking a peek at the stock pickups agian before i wrap her up in the shed for the weekend - I forgot they arent mounted at TDC!!!! They are mounted 1/2 inch or so BTDC, which my guess is about ~10º BTDC! (Dave, maybe you can elaborate or confirm this) I actually think thats a game changer!

What if the stock ignition system is configured to fire exactly when the sensor gets triggered?? That would mean that instead of waiting for the engine to make a full revolution, and counting seconds and time and loosing accuracy, it could just fire right away, because the sensors are mounted ~10º, it is thus provided 10º of advance (of course it would be more like 7º or 8º because of dwell time, but agian, i was just guessing at the mounting point being 10º. Maybe its 12º to account for that!).

It seems like once we start counting/waiting for full revolutions, that leaves room for error while its starting/popping/firing. Like I said, once its running - the acceleration of the engine shouldnt be that much change. Hopefully.

Anyone with a Pamco able to tell where the position of the sensor is? At TDC? BTDC? Thanks!

also, alt 0 to make the little degree signº on Mac.
 
Last edited:
I think dwell and advance are more connected than we think, because they are both measured in time.
I might have misunderstood what you were calculating. Yes. They're both measured in time. You wouldn't use one to calculate the other, but once you have their values in time you can add and subtract with them.
I re read my post and it was sorta confusing. The main problem is that how do I calculate 350º? If I use time, that should work reliably - once the engine is running, because the change in acceleration is relatively low. However, while cranking, its acceleration just too sporadic. I calculated 350º at 100 RPMs (thats how fast I guessed it was cranking). 100RPMs is 1º/1.7ms according to my calculations. That means that 4ms of dwell would spin the motor 2.3º. My calculation for 350º at 100 RPMs is 607ms. Theoretically, if you add 4ms (of dwell) to the 350º that would be 352º which is 611ms which is 8º BTDC, or 352º after the sensor trigger. I also tried 600ms. The manual calls for 10º+-, so while 8º isnt optimal - something should happen, right? Nothing.
You would subtract the dwell from the time needed to rotate 350º so that the dwell ends at 350, firing the spark plug.
So if 1º=1.667ms, then 350º = 583.45ms
Subtract your dwell from that. 583.45-4ms=579.45ms to wait after a TDC sensor is triggered to start the dwell period. Stop the dwell 4ms later and the coils will fire.
My process was: carbs on, no airbox/filters, spray a little starting fluid in the spark plug hole, put spark plug in, then plug boot on - crank. Its worth mentioning that I dont have much oil in the engine. Probably a 1/4 of what should be in there.
Making a stratch-build electronic ignition would certainly be easier with a complete/working bike. I'm not saying this is the problem but it can't be helping.
It would be ideal to somehow run the arduino ignition in parallel with a stock ignition on a working bike. Let the stock system run the bike while the arduino fires dummy coils. Put strobes or something similar on both systems to see if they match up.
Unfortunately not something I could setup anytime soon.
The problem is even if something did happen, and it fired once. The engine would accelerate very fast, (way above 100 RPMs) and all of the timing (namely 607ms of delay or 350º) is now completely wack, because even at 300RPMs, (which is what im guessing it spins at minimum after a single pop/ignition in the cylinder) 350º is only 194ms. Of course, the advance would still be coded in at 607ms, and would mean that the engine has turned almost 3 times (350º x 3 = 1050º) and the spark plug is firing at who knows where.
Im thinking what I could possibly do, is have a set of tables with values for specific RPMs that, depending on what RPM the sensor picked up (aka the actual engine speed), it would use that value and change the advance accordingly. I need to learn about interrupts to write something like that.
Yeah, you need to be sensing RPM at least once per revolution, constanting recalculating your time/degree, multiplying that by your advance, and doing the subtraction.
The probelm with that is that one pop will only accelerate the engine for so long. By the time it gets back to the sensor at TDC, it may have decelerated enough that whatever RPM the arduino senses, might not be the actual engine speed and then once agian, the advance values are inaccurate.
It seems that more sensors/different sensors are in order? Im not sure but Im very hesitant to do that.
I'm not sure how much of an issue this actually is. With the crank's rotational mass and the second cylinder firing it might not be a significant difference. Once the engine is running it'll be even less of an issue.
That being said, the power arc ignitions have two sensing tracks in their optical disk. One with only 1 slot at TDC for triggering, and one with something like 100 slots for constant RPM calculating.

Someone could always determine the actual RPM when kicking, starting, and then determine that rotational acceleration from 0 rpm to these values and determine just how significant the difference would be. It might only be a degree or two under the most extreme acceleration and deceleration.
Maybe the 2 sensors (left and right TDC) could be used in tandem to measure RPM during cranking. Arduino would know how long it is "supposed" to take to get 180º (aka the next sensor) and if it takes less time, viola - the sets timing accordingly. There would still be the point from 180º to 350º that it would be "blind" from acceleration.
Lets keep in mind that the Pamco ignition does this with just 2 hall sensors. What are we missing?
The two sensors would certainly help with the rpm calculation. It'd be nice to know how the pamcos or any other electronic ignition does their triggering/calculating.
Being one of the only popular DIY electronic ignitions Megasquirt forums have a fair bit of info.
I was really hoping that the engine would at least pop when at TDC. If we could get it to pop/idle with zero advance (aka TDC) that would help, alot.
Yeah, it should at least pop at TDC, if it's actually firing at TDC. Getting it to spark anywhere reliably would be a good starting point.
HOLYYY CRAAP I was just taking a peek at the stock pickups agian before i wrap her up in the shed for the weekend - I forgot they arent mounted at TDC!!!! They are mounted 1/2 inch or so BTDC, which my guess is about ~10º BTDC! (Dave, maybe you can elaborate or confirm this) I actually think thats a game changer!
Not sure where they're mounted but I believe most electronic ignitions will put the pickup slightly before the point of maximum advance. Maybe 40º BTDC on an engine with max 35º advance.
It would help with the accuracy issue of waiting a full rotation and still give enough time for the dwell to start before firing.

Had a look at your photos in the other thread:
http://www.xs400.com/threads/dohc-maxim-pick-up-coil-replacement.15948/#post-163280
I keep forgetting that DOHC bikes have the pickups on the crank. Where's the pickup disk when the engine is at left TDC?
SOHC pickups spin half as fast. Might compound the issue for me.
 
You would subtract the dwell from the time needed to rotate 350º so that the dwell ends at 350, firing the spark plug.
So if 1º=1.667ms, then 350º = 583.45ms
Subtract your dwell from that. 583.45-4ms=579.45ms to wait after a TDC sensor is triggered to start the dwell period. Stop the dwell 4ms later and the coils will fire.

Making a stratch-build electronic ignition would certainly be easier with a complete/working bike. I'm not saying this is the problem but it can't be helping.
It would be ideal to somehow run the arduino ignition in parallel with a stock ignition on a working bike. Let the stock system run the bike while the arduino fires dummy coils. Put strobes or something similar on both systems to see if they match up...

...I'm not sure how much of an issue this actually is. With the crank's rotational mass and the second cylinder firing it might not be a significant difference. Once the engine is running it'll be even less of an issue...

Not sure where they're mounted but I believe most electronic ignitions will put the pickup slightly before the point of maximum advance. Maybe 40º BTDC on an engine with max 35º advance.
It would help with the accuracy issue of waiting a full rotation and still give enough time for the dwell to start before firing.

Had a look at your photos in the other thread:
http://www.xs400.com/threads/dohc-maxim-pick-up-coil-replacement.15948/#post-163280
I keep forgetting that DOHC bikes have the pickups on the crank. Where's the pickup disk when the engine is at left TDC?
SOHC pickups spin half as fast. Might compound the issue for me.
Unreal. I have no idea in all the world why I did the math wrong there and got 607ms. What a giant pain, because I already put everything away, and cant try it... Moving on, I wonder if that small amount of time would have made a difference. Is it worth trying? I suppose it would...

Totally agree. Its much harder with a bike that doesnt run at all... I do have the airbox actualy on the bike. I just didnt connect it.

I think the acceleration is whats causing the problems so far, but I could be wrong. Also, I could actually see the crank accelerating in correspondence with the pops. I suppose something to consider is that every calculation we are making right now is for just one cylinder, and with 2, it should be popping twice as much. But the DOHC bike will start on only 1 cylinder right? If it does, that means we dont have to worry about the 2nd cylinder.

If it does start on 1 cyl, then extending this to fire both cyl at their respective times could help with the crank acceleration issue. 2 pops per revolution would smooth out the change in acceleration i would imagine.

I may change my mounting position to 40ºish BTDC, assuming the engine has a max advance of 35º (it might be 39º, I dont remember). It just seems like that would simplify everything SO much, and make it more accurate! Looking back, I think this was my original plan anyway...

Good find on that last thread. I had forgotten about it. The stock sensors sense when a ferrous object is close to it (the crank lobe/cam, not to be confused with the actual engine camshaft that pulls the valves).

Notice the hole in the center of the crank lobe/cam. I wonder if that hole breaks up the signal into 2 pulses, and the stock system is configured to measure the time between those pulses. That would theoretically be able to tell RPM. That would have the be a killer accurate system. Was that even possible in 1982?

Another possibility is fabricating a 10-20 toothed wheel with individual, very small magnets in each tooth. A classic missing tooth design. Obviously, this would afford lots of accuracy. Could the arduino keep up at 10k RPMs? doubtful. Also, I have heard that digitalRead is a relitevely slow way to read pins, and that may be taking up some time, as Dave hinted at. Im hoping that time is negligible.

I wonder where the DOHC's pickup sensors are mounted exactly. I just guessed 10º BTDC, but that was a quick look as I was packing up to head back to school. Maybe I guessed wrong and they are actually at 40ºish.

I do wonder if using both sensors in tandem is the answer, combined with the mounting at 40ºish BTDC.

Anyone able to measure? Easiest way would be to set engine at TDC, print out a protractor, and measure the difference between where the center of the crank lobe/cam is and where the center of the sensor is.
 
Last edited:
Unreal. I have no idea in all the world why I did the math wrong there and got 607ms. What a giant pain, because I already put everything away, and cant try it... Moving on, I wonder if that small amount of time would have made a difference. Is it worth trying? I suppose it would...
Yeah, 24ms at 100rpm would mean it's firing at 14 deg after TDC.

Notice the hole in the center of the crank lobe/cam. I wonder if that hole breaks up the signal into 2 pulses, and the stock system is configured to measure the time between those pulses. That would theoretically be able to tell RPM. That would have the be a killer accurate system. Was that even possible in 1982?
Not sure about the 2 pulses. I think I read someone saying once that the length of the end of the lobe corresponds to the dwell period, but I might be remembering wrong.
These older electronic ignitions do it all with circuitry. No microprocessor actually thinking about what to do.
There are chips available that turn pulse frequency into a variable voltage. As RPM increases the chip's voltage output increases, causing a proportional increase in ignition advance.
They were pretty clever.
 
Oh, it was in the Seca manual of all places:
"The full ignition advance
is determined by the width of the
reluctor (timing plate) projection."
I'm not sure what that means though. As far as I can tell the width of the projection is fixed and wouldn't change with rpm.
 
...Yeah, 24ms at 100rpm would mean it's firing at 14 deg after TDC...
Hm. I will defenitly make a note to try that next time around. Even if the engine was firing 14º ATDC... wouldnt I hear a pop or something? Or is that when the exhaust valve is open?

The only time I heard/saw a pop was when i had it set at 5ms of advance, 4ms of dwell. Assuming 100RPMs cranking speed(1º = 1.7ms), that 9ms is about 5.2º ATDC. Wonder why it didnt pop with no added advance. It still had 4ms of dwell, but that would only be around 2º ATDC. Wouldnt that have made it more likely to fire?
 
I suck at writing code. Crazy how the arduino is such a high-level language, yet its so hard for me...

Ive spend the last few weeks in computer science labs. Ive learned a metric ton on info, and I feel like im scratching the surface.

Current code:
volatile byte half_revolutions;
float rpm;
unsigned long timeold;
unsigned int led = 4;
float x = 0;
float y = 0;
//4 = dwell
float z = 0;
//10 advance in degrees BTDC
float w = 0;
float ans = 0;


void setup()
{
Serial.begin(9600);
attachInterrupt(0, rpm_fun, RISING); //dont forget, interrupt 0 is actually digital pin 2
pinMode(led, OUTPUT);
half_revolutions = 0;
rpm = 0;
timeold = 0;
}
void loop()
{
if (half_revolutions >= 20) { //all this half_revolutions stuff is kinda weird, but its because the example code uses 2 magnets, aka 2 pulses per revolution. I multiplied to by 2 because I only have 1 pulse, aka 1 magnet per revolution
//Update RPM every 20 counts, increase this for better RPM resolution,
//decrease for faster update. Will proabably have it on 1 or 2 for final code.
rpm = 30*1000/(millis() - timeold)*half_revolutions*2;
timeold = millis();
half_revolutions = 0;
//Serial.println(rpm,DEC);


y = 1/(rpm/60 * 360)*1000; //time in ms for one degree
z = 4/y; //given y, this is the degrees the engine will turn with 4ms of dwell. Change this 4; change dwell time
w = 360 - (10 + z); //degrees ATDC to wait until first action (begin charge coil). The 10 value here is 10BTDC
ans = w*y; //time in ms to wait ATDC to begin charging coil
Serial.print("rpm=");
Serial.println(rpm);
Serial.println(ans,4); //I guess writing a 4 there makes it so it carries the variable out to 4 decimal places




}
if(digitalRead(2) == LOW){
digitalWrite(led, HIGH);
}
if(digitalRead(2) == HIGH){
digitalWrite(led, LOW);
}


}

void rpm_fun()
{
half_revolutions++;
}

Some obvious flaws. Dont use floats, or digitalRead/Write, apparently they take alot of time. I plan on some oscilloscope testing in the future to measure how accurate this code really is. Maybe, just maybe - at sub 2k RPMs, current code will be fine. The interrupt used there is pretty much copied from the Arduino site (readRPM), but hey - it worked.

Timing issues aside, the current main problem is that the advance is hardcoded in at 10º BTDC. Havent given much thought to adjusting that because for now, I just want my engine to start and idle. 10º BTDC should be just perfect for that, so for now itll stay like that.

Something to think about is the latency/delay/error with a hall sensor, because its a digital and therefore square wave signal. Notice how the digitalWrite is written. Technically, there isnt any time for it to be on, becasue as fast as it writes HIGH, it writes LOW. Therefore, the only way it could even turn the light on at all is because of the time it takes the magnet to pass by the hall sensor. This may force a change to a more accurate optical sensor. I suspect at higher RPM's it will skip because of this.

Any feedback on the math? I am fairly confident in it - I had some engineer friends verify. More eyes are always good tho.

As for hardware, I just have a small DC motor with a magnet on the end of an arm Ive been using for testing, and holding it up the a hall sensor i have connected (see adafruit's hall sensor for wiring diagram) and signal to digital pin 2 (aka interrupt 0). The digital pin 4 is just a small led i had lying around. I think im going to hook it to a flashlight to create a sort of timing light...
 
I really should be going to bed, but when I typed out all that about a timing light, and saw that I had a flashlight, I thought that I had to stay up a few extra hours. Notice that when I bring the beam of light to the side, the blade "dissapears". This is because the pulses of light are perfectly timed so that they are missing the blade. When at "TDC" they are hitting the blade so we can see it. Remember, the code is written so the light triggers exactly when the sensor is tripped (aka TDC). Not exactly sure how to write a variable in a delay or interrupt, but Ill figure it out. I need to take the "ans" value, and use that as the delay in ms

Progress is exciting!

(make sure to click on the video, itll bring you to Facebook where I have them hosted)

 
Last edited:
Re-Igniting (Yeah?!) this project. I've since gotten an different bike, and given the 1982 XS400 in question to my engineering buddy. Him and I actually worked on this last spring, and were really gunna try to get it working. We've looked at notes and retraced steps and are about to the point we were at in post #57/#58. Got that little timing light dealio to work again, and the arduino to trigger spark at 200 sparks/second by hard coding in the code (not listed here) to trigger that fast. (200 sparks/second is more than enough for 10k rpms).

Next step: get the sensor working again, and get it to trigger with a spinning disk (just like the video i posted in post #58). See the code in post #57, thats what we're using)

In the video I posted in post #58, the light is triggered at "TDC" (aka the exact place of the sensor). If we can get the timing light to work with the current code (post #57) we'll know the advance/dwell combo calculation is working if we have the sensor at 0º TDC, but the light is flashing BTDC. Theoretically it should be around 20º-30º BTDC. It'll depend on how fast the disk we set up is spinning, because the speed of the disk should (as per code) correspond to the suggested advance as per required by the XS400, which is another way we'll test it, by varying the speed of the spinning disk. When we slow the disk down, the advance (aka where the timing light flashes) should also change. Does this make sense?

Also, can anyone find the 1982 XS400 (Seca or Maxim/DOHC version) advance curve? having a hard time finding it.
 
Back
Top