Honda CX 500 Forum banner

101 - 120 of 130 Posts

·
Registered
Joined
·
49 Posts
Discussion Starter · #102 ·
Everything is still going well so far. I initially only planned on setting up for fuel and then implementing ignition much later on. The software has been much easier to configure than expected, so I'm going to go ahead and start thinking about the ignition system as well. Recall that the originally desired trigger method is two cam triggers spaced 80° apart and reading a 48-2 wheel (the missing teeth being 180° apart). As per this link : MicroSquirt® Dual Spark , option 1b is only capable of reading a single tooth wheel, so clearly the 48 tooth wheel will not work.

Fortunately, the developers seem to have implemented Auto Trigger pretty effectively. (AutoTrigger). Since the 48-2 wheel (again with the missing teeth being 180° apart), the signal it generates can be read as a crank trigger if one Hall sensor is used. Therefore, all I have to do is setup the software for option 3, set the Trigger Offset to 90° (arbitrary for now), set the odd-fire angle to 80°, and....



The data labels are off by a degree here and there, but the general trend should be as follows:

1) The falling edge of cam signals should occur every 360 degrees at 0°, 360°, 720°, 1080°, etc.
2) IGN01 should trigger 90° before this falling edge at 270°, 630°, 990°, etc.
3) IGN02 should trigger 80° after IGN01 at 350°, 710°, 1070°, etc.

The fuel signal is also visible, although the pulse width will need additional adjustment. Right now I'm primarily interested in seeing a signal that's periodic with the Cam triggers.


Here's the status of integration so far. I haven't committed to final wire-routing yet, so I'll be using temporary methods for now.



There's a lot of interference on the left side... Namely, the voltage regulator hits one of the connectors and the fuel pump outlet. I plan on removing the CDI box and relocating the regulator there. You can also see the preliminary fuel lines. The aluminum AN fitting weren't my first choice, but the contrasting color is growing on me. There's a 40micron Russell Street filter (p/n 645150) upstream of the pump and a Wix 10 micron filter (p/n 33095) between the pump and injectors. THe fuel lines are 5/16", nylon braided/reinforced hose.

Also visible are the throttle cables. They fit, but unfortunately the bind due to the bottom of the tank. It works and can be used for garage-tuning, but will eventually need to be overhauled somehow.



And here are the replacement ignition coils from an LS2 (Megasquirt Sequencer Coils , $19 each on ebay). The physical envelope is pretty much identical to the stock coils, although its needs a spacer/bracket to mount in the stock locations. The cylinder near the bottom is a generic CDI coil. I'm going to keep it wired up for now.



And to connect the LS2 coils...

1) 1x MSD-3304 (spark plug boot, coil side, pair)
2) 1x MSD-3301 (spark plug boot, plug side, pair)
3) MSD-34033 (8.5mm ignition wire, 6ft)

and the following connector bits:

 

·
Registered
Joined
·
49 Posts
Discussion Starter · #103 ·
Quick update for now -- I'll hopefully post more details on Monday.

I'm still paranoid about the ignition timing and wanted to run one final test to verify a wholesale swap-out will work. With the help of Internet sleuthing, I generated the following capacitive pickup circuit (very similar to a commercial timing light). In a nutshell, the wire wrapped around the spark plug coil triggers a transistor which in turn triggers a 555 timer. The 555 is set to output a noise-free, 5V, 10msec pulse and can be easily read by Labview.





The fuel system still isn't ready yet, but I can use the starter to crank and collect data for a few seconds at a time. After adjusting the timing (both mechanical and software timing), the stock ignition system and Microsquirt ignition overlays very well. The blue circuit seems a little too sensitive and is actually picking up the spark from the green circuit -- disregard the double humps there.

Microsquirt is set to output a simple 5V signal (typically a few milliseconds long) and can be read directly into Labview. Closer inspection indicates the stock/Microsquirt is off by 0-10msec, but for all practical purposes it's good enough. I'm declaring victory for the ignition setup and will be fully removing the stock ignition system soon.
 

·
Registered
Joined
·
400 Posts
Most Excellent!
 

·
Registered
Joined
·
49 Posts
Discussion Starter · #105 · (Edited)
Phew. It doesn't seem like there's been much progress, but there's dozens of small things that just add up. Here's a summary of where I'm at today... It's coming to the home stretch!

Cam trigger is buttoned up and timing has been set. Per previous bench-testing, there's only one cam sensor installed. In hopes of longevity, the sensor wire has been wrapped in ceramic insulation loom. Unfortunately, it looks like there's a leak behind the cam cover seal. I spotted a cool copper gasket on ebay, and I'm not sure if that's entirely the culprit or if I simply didn't torque the bolts down enough.



Wiring routing and connector-izing is done. There's a few power wires I need to run to the relays, though, but should be trivial.



Engine left. The fuel lines won't be installed until the throttle body mods are done.



Microsquirt highly recommends using GM coolant and air temperature sensors. Typical ones are 3/8" NPT (massive) but fortunately Saturn uses a 1/8" NPT variant. I may have stuffed a few in my pocket while at Pick'n'Pull. Note: there are brass-body and plastic-body variants. The coolant sensor is all brass and is fitted into the CX500's stock thermostat location using a M16 x 1.5 to 1/8" NPT adapter.



The voltage regulator has been relocated, but the stock starter solenoid is still in the same approximate location via a welded tab on the frame. This actually works well since I don't have to redo any of the battery/starter/stock wiring.




Close-up of the stock throttle pulley. Throttle cables are still a major hurdle. The stock setup is responsible for idle control and the return spring, so unfortunately just relocating it isn't very easy. More on this later.



With the stock CDI ignition box removed, there's room to fit the voltage regulator there instead.

 

·
Registered
Joined
·
49 Posts
Discussion Starter · #106 ·
I'm retaining the side covers so the airbox cover has to stay. There's some room for expansion, however right now it houses a service loop and the air intake temperature sensor (10 o'clock position near the middle). This is another one of those 1/8" NPT Saturn sensors except this has a plastic tip (not visible). I should also note color-coding the wire has made wiring relatively easy. There's an ebay member (brussellex) that sells handlebar-wiring-extension-kits for Harleys. I think I got the 12 wire kit @ 36", and it covered most everything needed. All the kits are 18ga GXL wire, and I did have to grab a few additional wires (namely 10/12/16ga wire for power lines).



The fuse bus is pretty much at capacity!



O2 sensor bung is welded onto a Mac exhaust near the right footpeg. It's kinda hard to image it well, but it's a perfect fit there.



A couple brackets are welded onto the radiator whereby the SPAL electric fan is bolted on. This is as flush as I could get it, and it actually still interferes with the cam trigger by <1/8 of an inch. Clearances are tight up there!



The LS2 coils are mounted and wiring completed. Remember that list of components a couple posts back? Don't do it that way. Just buy some pre-terminated connectors with pigtails and solder to them (check ebay). I've honestly spent dozens of hours messing around with connectors, and can advise the following:

1) Molex MX150L series -- Avoid at all cost.
2) Molex MX150 series -- Slightly better, but still avoid.
3) Molex 150 series -- Avoid at all cost (see a trend here?)
4) Delphi Weatherpak -- Recommended. Easy to assemble, but I find that the hold-down tabs break easily, especially as they age.
5) Deutsche -- Recommended. Fairly easy to assemble, but they are expensive and ideally require a special crimper. Still, given all the time and frustration spent on the Molex connectors, it'd be worth it.

If anyone can recommend a modestly priced, weather-resistant connector that's easy to assemble, I'd love to keep it in mind for future projects.

Back on topic, though, all I need now are to make up those spark plug wires.

 

·
Registered
Joined
·
49 Posts
Discussion Starter · #107 ·
The fuel rail had to be modified again due to fitment/routing issues. The unconventional rubber hose in the middle actually holds pressure up to ~75psi! I'm undecided on the Constant Velocity sliders... The R6 guys sometimes install spacers to keep them open for better throttle response.

Those two "L" tubes the the left and right of the black caps are atmospheric vents. They're kinda unsightly, and I need to figure out how to filter and route them out-of-sight.



The opposite side. The fuel return barb was poorly bent at an angle for better hose routing.



Here's a prototype for a new throttle pulley. I'll still keep the original one in place to maintain its idle control and return spring functionality. The new one is placed similar to a stock CX500 and should eliminate any cable binding. It also helps since I can change the pulley diameter and get a "quickturn" feel.

 

·
Registered
Joined
·
3,804 Posts
Run the lines for the atmospheric vents up under the gas tank and terminate with the filter caps as far forward under it as possible.
 

·
Registered
Joined
·
49 Posts
Discussion Starter · #109 · (Edited)
Big weekend completed:

Throttle pulley has been successfully relocated to the "stock" position to avoid cable binding. You can see the cable bracket above the pulley. There was a bit of interference from the linkage shaft and required a notch to clear the throttle cables.

Instead of cutting the stock cables to length (again -- I've actually cut them before and butchered them again recently) I spotted a nice universal cable kit from Venhill. I don't have pictures, but it fits, looks, and works perfectly! There was initially a bit of a sluggish return at full-right, but I was able to increase the tension on the return spring by coiling it an additional turn.




Instead of dealing with the CV sliders and atmospheric vents, I opted for the R6 slider mod I mentioned previously (HOW TO: $4 DIY Slide Stops! 05 R6 & 06-09 R6S! Improve throttle response : Yamaha R6 : R6 Forum). I have access to a lathe, so I was able to at least make it a little more professional-looking than shown in the thread. You can see it in the picture below:




Here's how the body inlets look like with the sliders locked open. The R6 guys typically do this mod for better throttle response and sacrifice low-end performance. I'm mostly worried that the slides won't behave well on a CX500 (it would analogous to removing the stock airbox on a stock carb setup -- it just never seems to work as well as OEM), and since I will be doing a full custom tune, the low-end losses should hopefully be minimized. If needed, the mod is very easily reversed, too.

Furthermore, most everything was ultrasonically cleaned, vacuum hoses are routed, and atmospheric vents are plugged. The throttle bodies are done!



I'm afraid there aren't pictures of other stuff completed (it's pretty mundane), but:

1) Fuel lines routed and leak-checked to 75psi
2) Spark plug cables completed
3) Battery/power cables routed and terminated

There's still an oil leak at the cam cover and a sundry of small details (and some bigger ones), but there's nothing critical that needs immediate attention. In my next update, I hope to have video of the bike running on a standalone Microsquirt fuel and ignition system!
 

·
Registered
Joined
·
3,804 Posts
Actually, changing the cutout profile will do the same thing as shimming them open with out sacrificing low end response. [same as if using a Mikuni carb]

A 1mm rise in the center of the cutout will make a huge difference.
 

·
Registered
Joined
·
49 Posts
Discussion Starter · #111 ·
Actually, changing the cutout profile will do the same thing as shimming them open with out sacrificing low end response. [same as if using a Mikuni carb]

A 1mm rise in the center of the cutout will make a huge difference.
Would any changes need to be made on the spring? For example it is necessary to ensure that at WOT, there's enough vacuum to pull the slides full-open as well?
 

·
Registered
Joined
·
3,804 Posts
No change in spring as long as the slide will hit the top.
You would not actually take any off the top of the arch but would open it up slightly wider to gain the air flow desired/required.
 

·
Registered
Joined
·
49 Posts
Discussion Starter · #113 · (Edited)

It idles and (kinda) revs on Microsquirt fuel and ignition! There's major exhaust leaks everywhere, so don't mind the sound too much. Tuning has hardly begun, and I'm actually pretty surprised it didn't stall after revving it up.

There was a major hiccup in the ignition coil wiring, hence the alligator clips (the coils/wiring were firing on the opposite cylinder). I've got a stupid series of questions for anyone who can help:

1) Which cylinder is cylinder #1?
2) The stock ignition coils are identified with a pink and yellow wire -- which one goes to which cylinder?
3) I've read the stock ignition advance is 10° at idle -- can anyone confirm this?
 

·
Registered
1978 CX500 "The Grub", '83 GL650, '82 GL500 Project "AdventureWing", '79 CX500C, '78 CX500 Scrambler
Joined
·
10,393 Posts
I assume the left is number one, but only because the FSM has us set those tappets first. :confused:

In the stock setup, the yellow lead goes to the left cylinder, the pink to the right.


R
 

·
Registered
Joined
·
400 Posts
Most excellent - "...she lives..."

Thanks for the video clip.

Jerry
 

·
Registered
Joined
·
49 Posts
Discussion Starter · #116 ·
Not much tuning has happened recently, primarily due to a sketchy LC-1 and O2 sensor (?). A replacement system should be coming in, although it'll take a couple weeks. I might be able to get some tuning done with the LC-1 still, but I don't particularly trust its output at the moment.

Otherwise there were still a few issues to sort out. The cam cover still leaks, even with an OEM gasket. I've got some grafoil and will give that a shot.

I completely spaced out about the Ignition Kill Switch and didn't even include it in my original plans. The stock switch on the bike kills the engine by grounding the CDI box, but for EFI I felt much more comfortable using it to kill power to the Microsquirt instead. Inspection of the stock wiring diagram and internals of the switch indicate that minor surgery is needed. I originally planned on hacking the stock switch somehow (note the odd cut marks on the white disc in the image below), but stopped to pursue a cleaner, more reliable fix.

Long story short, the white disc was remade with two contacts, and those contacts were subsequently wired to the brake lights +12V and Microsquirt. Flipping the switch to OFF now completely kills the EFI system.




Like many things I build, there's a mysterious Black Box (casually outlined in the EFI wiring diagram). It hasn't been a major focus, but it's been bumped up since the O2 sensor issue has stalled everything else.

There's three primary purposes for the box: 1) Help connectorize everything and make the install a little cleaner and easier to service in the future, 2) turn on/off the electric fan, and 3) notify the rider if the engine starts overheating (the stock thermostat is long gone -- there's only an LED now).

The SPAL electric fan I got is the slimmest I could find, but it nominally operates at 12V and 7A = 84 Watts. I'm already power limited and wanted to bring this down to ~2A, hence there's an ebay PWM controller nested inside. To keep the FETS cooled, the on-board transistors have been removed and attached to the aluminum case. The case is further heat-sinked with some ~1" high fins to help even more.

To provide flexibility in setting when the fan turns on/off, there's an Arduino Nano placed on the left wall. It intercepts the Coolant Temperature reading and switches things on as needed. Note: It turns out Microsquirt could have essentially done the same functions as the Arduino, but I didn't realize it until too late.

Those massive black rectangles on the right wall? They're weather-resistant switches. They ground out the Microsquirt and LC-1 to enter Boot Loading and Calibration Mode, respectively. I really wish those switches were smaller...




To make the Arduino worthwhile, I opted to make the LED blink at various rates depending on the measured temperatures. The following the is mode diagram and BASIC code. The code doesn't have the Boot Up LED sequence yet, and I'll update the post when it does.



Code:
const int analogInPin = A0;  // Analog input pin
int ledDO = 8;
int fanDO = 3;

double TEngine = VtoF(analogRead(analogInPin));
int onThreshold = 205;
int hyst = 10;

double sampRate = 1;        //[Hz]; Analog input sampling rate, stay below 10kHz
unsigned long tAIStamp = -1001;
unsigned long tDOStamp = micros();  
unsigned long tNow = millis();  

int mode = 0;
boolean modeChange = 0;

boolean bool0 = 0;
boolean bool1 = 0;  
boolean bool2 = 0;
boolean bool3 = 0;
boolean bool4 = 0; 

double tOn = 0;
double tOff = 0;  
 
//Mode 20 variables
long tRamp = 5;    //5 seconds to full on
long fPWM = 25000;   //PWM frequency
unsigned long tFirstFanOn = micros();  

//Mode 30 variables 
double thermRange = 0;   
double slowBlink = 0.5;
double medBlink = 1.5;
double fastBlink = 4;
double blinkRate = 0;
double tTot = 0;  

void setup() {
  // initialize serial communications at 9600 bps:
  pinMode(ledDO, OUTPUT);  
  pinMode(fanDO, OUTPUT);    
  Serial.begin(9600);
  //Boot Up Mode
  Serial.println("Booting up");  
  bool0 = 0;
  bool1 = 0;
  bool2 = 0;
  bool3 = 0;
  bool4 = 0;    
  digitalWrite(ledDO, 0);  
  digitalWrite(fanDO, 0);     
  //TODO:  "Arduino-On" LED blink sequence
  delay(10000); //Wait 10 seconds
  modeChange = 1;  
  mode = 10;  
  Serial.println("jk going to 10");    
}

void loop() {    
  while (mode = 10)  {  //Startup/Null Mode
    tNow = millis();    
    if ((tNow - tAIStamp) >= 1000/sampRate)  {      
      if (modeChange == 1)  {  //Reinitialize boolean banks if after mode transition 
        bool0 = 0;
        bool1 = 0;
        bool2 = 0;
        bool3 = 0;
        bool4 = 0;    
        modeChange = 0;  
        digitalWrite(ledDO, 0);  
        digitalWrite(fanDO, 0);         
      }  
      
      //Shift boolean banks
      bool4 = bool3;      
      bool3 = bool2;
      bool2 = bool1;
      bool1 = bool0;
        
      TEngine = VtoF(analogRead(analogInPin));      
      if (TEngine >= onThreshold)  {
        bool0 = 1;
      }          
      else  { 
        bool0 = 0;
      }
      Serial.print("Voltage=");
      Serial.println((analogRead(analogInPin)/1023.)*5, 4);
  
      Serial.print("Temperature=");
      Serial.println(TEngine, 4);
      Serial.println(tNow-tAIStamp);
          
      //If five consecutive samples above threshold
      if (bool0+bool1+bool2+bool3+bool4 == 5)  {
        mode = 30;
        modeChange = 1;     
        Serial.print("Changing to Mode 20");     
        break;   
      }  
      tAIStamp = millis();       
    }
  }
  
 while (mode == 30)  {  //Fan On; Blink to indicate overheat   
    tNow = millis();    
    if ((tNow - tAIStamp) >= 1000/sampRate)  {      
      if (modeChange == 1)  {  //Reinitialize boolean banks if after mode transition 
        bool0 = 0;
        bool1 = 0;
        bool2 = 0;
        bool3 = 0;
        bool4 = 0;  
        tDOStamp = millis();
        modeChange = 0;  
        digitalWrite(ledDO, 0);  
        digitalWrite(fanDO, 1);         
      }  
      
      //Shift boolean banks
      bool4 = bool3;      
      bool3 = bool2;
      bool2 = bool1;
      bool1 = bool0;
        
      TEngine = VtoF(analogRead(analogInPin));      
      if (TEngine < onThreshold -hyst)  {
        bool0 = 1;
      }          
      else  { 
        bool0 = 0;
      }
//      Serial.print("Voltage=");
      Serial.println((analogRead(analogInPin)/1023.)*5, 4);
  
      Serial.print("Temperature=");
      Serial.println(TEngine, 4);
      Serial.println(tNow-tAIStamp);
          
      //If five consecutive samples above threshold
      if (bool0+bool1+bool2+bool3+bool4 == 5)  {
        mode = 10;
        modeChange = 1;     
        Serial.print("Changing to Mode 10");     
        break;   
      }  
      tAIStamp = millis();          
    }
    //Thermal range baskets and blink rate definition   
    if (TEngine < 225)  {
      blinkRate = -1;
      digitalWrite(ledDO, 0);       
    }            
    if (TEngine >= 225)  {
      blinkRate = slowBlink;        
    }          
    if (TEngine >= 235)  {
      blinkRate = medBlink;
    }  
    if (TEngine >= 245)  {
      blinkRate = fastBlink;
     }  
   
    if (blinkRate > 0)  {      
      tTot = 1000/blinkRate;      
      tOn = 100;   
      if (tNow < tDOStamp + tOn)  {
        digitalWrite(ledDO, 1);        
      }
      if (tNow >= (tDOStamp + tOn))  {
        digitalWrite(ledDO, 0);      
      }
      if (tNow > (tDOStamp + tTot))  {  
        tDOStamp = millis(); 
      }      
    }    
  }
}

double VtoF(int analogIn){  //This function is most accurate for converting temperatures around 170-250°F
  double temp = (analogIn/1023.)*5;  //Convert to 5V FSO
  double tEng = 152.69*pow(temp, -0.362);  //From oil bath calibration
  
  if (tEng >= 300)  {
    return 300;  //Saturate output at 300°F to avoid returning inf
  }          
  else  { 
    return tEng;
  }
}
I believe most electric fan conversions are set to turn on at 80°C (176°F), and clearly I'm pursuing a more aggressive operating temperature. Any comments regarding the engine, performance, and reliability?
 

·
Registered
Joined
·
1,521 Posts
The contacts on the black disc appear to be touching. Wouldn't that defeat the purpose of the swicth?


R
I thought the same thing for a moment, but when you realize that in the 'center' position, it connects the outer contacts, and when to the left or right there is no continuity between left and right, it makes sense.
Think like a big 1P3T switch: far left / far right = no continuity; centered = continuity.
Code:
Left (off):
O
 \|o
  |o
    
 /
O

Centered (run / on):
O
  \
   |o
   |o 
  /
O

Right (off):
O
  \
   
   |o 
  /|o
O
 

·
Registered
Joined
·
554 Posts
jigglypuff, I am finally getting back into my efi conversion. Have you figured out how to verify base timing? I dont know what to shoot a timing light at, espeicially in your case since you aren't using the stock vr sensors.
Also I have a copy of the stock timing map if you need some info on that. I will go out and console into my Ignitech and pull the curve if you want to start with that for you base timing.

I was going to just use my ignitech for timing, but I decided against it, since it can only reference TPS and RPM. It cannot adjust for load.
 
101 - 120 of 130 Posts
Top