Go Down

Topic: Motorcycle Quickshifter (Read 31127 times) previous topic - next topic

Jiggy-Ninja

I'd just put a few layers of plastic wrap over it, then a layer of aluminum foil over that. I'm not sure if the foil layer would need to be connected to anything (like GND or the bike frame) for maximum shielding effect or if you can just leave it floating, but that might be good enough for a quick test. If everything works with it right up next to the engine, you've got your solution.
Hackaday: https://hackaday.io/MarkRD
Advanced C++ Techniques: https://forum.arduino.cc/index.php?topic=493075.0

sid1202

Are any of your wires running close (within 6 inches) of ignition coil or wires ? I had and issue on a car where a re routed harness getting to close to a ignition wire caused the ECM to go nuts. Moved the harness and all was well.

Sid

rickerman

Are any of your wires running close (within 6 inches) of ignition coil or wires ? I had and issue on a car where a re routed harness getting to close to a ignition wire caused the ECM to go nuts. Moved the harness and all was well.

Sid
The ignition wires connect directly to my board, they have to as I am interrupting them.

raschemmel

Quote
The ignition wires connect directly to my board, they have to as I am interrupting them.
 
I don't see why that would be a problem as the coil HV output is a completely DIFFERENT circuit.

rickerman

#154
Oct 18, 2016, 12:09 am Last Edit: Oct 18, 2016, 02:09 am by rickerman
I made a few modifications to the circuit and tested it tonight. Added another electrolytic cap on the sensor pin line, and also increased the capacitance on a ceramic cap right next to the sensor pin.

I have also edited the code to not detect a sensor change until it has been in the new state for more than 1ms.

It was working sweet, no false detections at all!

I need to test this when the engine is doing 16,000 rpm, but that is later. For now I'm just happy it is working.

I would like to thank everyone who helped me out in this thread, especially raschemmel and Jiggy-Ninja.

I have attached a diagram of the current circuit which is working. I will of course update once I have tested this at high rpm values.


sid1202

The ignition wires connect directly to my board, they have to as I am interrupting them.
We don't have the same definition of "ignition wire" I mean the think wire for the coil to the spark plug. These wires have between 15k to 90k volts going thought them. If your harness is to close to the coil or the ignition wire you will get interference.

I looked at the drawing you posted, look like your controlling the coil leads in order to manage the spark plug firing timing. This is very interesting in deed. :) Great project!

Sid

Jiggy-Ninja

That's great to hear! Looks like the problem was definitely some kind of EMI, probably radiated from the ignition coils. The two ways to guard against that are blocking it with a metal shield or increasing the amount of energy needed to change the pin's voltage level, which is what you did by adding the capacitor.

Shielding the circuit with metal will probably let you reduce the capacitor so it's not so large. Discharging a 1/2 millifarad capacitor like that might put stress on whatever sensor you're using to trigger the circuit.
Hackaday: https://hackaday.io/MarkRD
Advanced C++ Techniques: https://forum.arduino.cc/index.php?topic=493075.0

rickerman

That's great to hear! Looks like the problem was definitely some kind of EMI, probably radiated from the ignition coils. The two ways to guard against that are blocking it with a metal shield or increasing the amount of energy needed to change the pin's voltage level, which is what you did by adding the capacitor.

Shielding the circuit with metal will probably let you reduce the capacitor so it's not so large. Discharging a 1/2 millifarad capacitor like that might put stress on whatever sensor you're using to trigger the circuit.
The sensor is an Inductive proximity sensor, capable of 300mA.

We don't have the same definition of "ignition wire" I mean the think wire for the coil to the spark plug. These wires have between 15k to 90k volts going thought them. If your harness is to close to the coil or the ignition wire you will get interference.

I looked at the drawing you posted, look like your controlling the coil leads in order to manage the spark plug firing timing. This is very interesting in deed. :) Great project!

Sid
Ah, you are taking about HT leads. In this engine it uses "on-plug" coils. So the HT voltage is contained within the coils.

I am not controlling the timing, I am trying to stop the coils from firing for around 60ms. This unloads the transmission and allows a gear to be changed while still at wide open throttle. The proximity sensor will sense when I am about to engage the next gear (This will take some adjusting I think). The sparks will then be cut for 60ms (Adjustable via the sketch) allowing the gear to be selected as the transmission is no longer under load. After 60ms, hopefully the gear is engaged and the sparks will come back on and I will loose as little time as possible changing gear.

raschemmel

Quote
have also edited the code to not detect a sensor change until it has been in the new state for more than 1ms.
Let's be clear about something. Unless you post your reasons for choosing 1 mS, we can assume the actual REQUIRED delay could be anything and therefore common sense would dictate that you reduce it incrementally using microseconds until the false detections start to occur to ascertain empirically what the required delay actually is.

rickerman

There is no logical reason for choosing 1ms. I just thought it was better than no debouncing and is short enough that it wont cause delays.

During testing I reverted my sketch to the one without de-bouncing and it was still working fine, no false detections. So I must conclude that it was one of the capacitors that helped filter out the noise. My only worry now is if there is too much capacitance on that line, is that possible and can it hurt anything?

raschemmel

Are all systems "nominal" ?
Are you " GO for LAUNCH" ?

sid1202

The sensor is an Inductive proximity sensor, capable of 300mA.

Ah, you are taking about HT leads. In this engine it uses "on-plug" coils. So the HT voltage is contained within the coils.

I am not controlling the timing, I am trying to stop the coils from firing for around 60ms. This unloads the transmission and allows a gear to be changed while still at wide open throttle. The proximity sensor will sense when I am about to engage the next gear (This will take some adjusting I think). The sparks will then be cut for 60ms (Adjustable via the sketch) allowing the gear to be selected as the transmission is no longer under load. After 60ms, hopefully the gear is engaged and the sparks will come back on and I will loose as little time as possible changing gear.
I've re read the thread and I'm not sure where the interference is affecting your code. I think it's in the detection of the shifter movement right ?

You'd still what to have your wiring as far as possible from the COP. You might have more than one source of signal corruption. A better converter would not hurt. Something like https://www.digikey.ca/product-detail/en/seeed-technology-co-ltd/313080006/1597-1243-ND/5488036 It's not ideal, but it's better that what you are currently using.

In my thread I prose having some breakout boards that would do what your trying to do with individual parts. You could just plug and play, and have a conditioned DC converter to have a safe low noise power source for the MCU. If those items where available, would you be interested in them ?

Back to the issue at hand,

You could also use 2 sensors (might conciser micro switches), the first signals the start of the shifting process, the second signal gear engaged. This removes some guessing as to how long it takes to shift and won't messed up when shifting time is different for what ever reason.

You might consider isolating the HV circuit with opto isolators. This would eliminate or at least reduce false reading to the MCU.

I looked that the schematics, and I would interrupt the source of the injectors and the coils only. Interrupting the O2 sensors and the coils at the same time will have unwanted secondary effects.

I'm not sure of the internal workings of the coils and injectors, but it is possible that controlling them by cutting of there power supply might not be the best practice. From the diagram, the ECM controls the coils and injector by sinking them. It is possible that you'll need to interrupt the this signal instead of the source. I might be wrong but I think they work a little like a capacitor where they change up and fire when grounded.

I'm working on a project that has similar environment and issues so I'll be keeping a close eye on your progress :)

Sid

rickerman

The coils work by the 12V feed to them creating a magnetic field. When the power is cut the field collapses and produces a much larger voltage in the secondary coils. The feed is cut by the signal wires coming from the ECU. Or when I cut the feed to all 4 at once when my sensor senses a gear change.

I am not into the idea of using microswitches. The chassis and gear linkage take a lot of hammer, I don't imagine they would last very long. A hall effect type sensor is good as the linkage should never touch it.

Jiggy-Ninja

Quote
I've re read the thread and I'm not sure where the interference is affecting your code. I think it's in the detection of the shifter movement right ?
It's pretty obvious from the solution that it was radiated EMI from the bike affecting the trigger input.

I wouldn't suspect conducted EMI because even if there is some capacitive coupling across the small MOSFET gate capacitance, it goes straight into a low-impedance gate driver and won't be able to cause much noise. I also wouldn't expect much going through the regulators. A Buck + linear combo like that is going to have quite a large rejection ratio so that rules out the power supply as a likely path. Radiated is pretty much all that's left.
Hackaday: https://hackaday.io/MarkRD
Advanced C++ Techniques: https://forum.arduino.cc/index.php?topic=493075.0

raschemmel

#164
Oct 18, 2016, 07:38 pm Last Edit: Oct 18, 2016, 07:38 pm by raschemmel
Quote
During testing I reverted my sketch to the one without de-bouncing and it was still working fine, no false detections. 
Just for the record, is the current working solution using a separate power source for the driver or did you change it back so the driver is powered from the bike now ?

Go Up