1 2
Keith
Keith SuperDork
8/13/10 3:44 p.m.

Anyone here know much about dealing with a CAN bus? The 2006-10 Miata has one, and I'm trying to figure out how to make the gauges fit with a, ahem, non-standard engine. Specifically, the tach signal. That's sent to the cluster via the CAN bus. Is there a way to inject a new tach signal into the bus? Most of the information I've found has been on how to extract a tach signal for running a shift light, for example.

Tyler H
Tyler H Dork
8/13/10 4:02 p.m.
Keith wrote: Anyone here know much about dealing with a CAN bus? The 2006-10 Miata has one, and I'm trying to figure out how to make the gauges fit with a, ahem, non-standard engine. Specifically, the tach signal. That's sent to the cluster via the CAN bus. Is there a way to inject a new tach signal into the bus? Most of the information I've found has been on how to extract a tach signal for running a shift light, for example.

All I know is that my 8 year old MINI has three different bus systems and I hope they don't fail.

The shop manual tells me that the Big Ben speedo in the middle of the car is IKE. And you don't F with IKE.

Keith
Keith SuperDork
8/13/10 4:10 p.m.

I've tapped into the ibus on my E39 M5. I can eavesdrop as the light control module chatters away to the radio about where the GPS thinks we are. It's awesome.

But I haven't tapped into the CAN bus...

Fit_Is_Slo
Fit_Is_Slo Reader
8/13/10 9:37 p.m.

Sell car.... Buy older car.....

VanillaSky
VanillaSky HalfDork
8/13/10 10:18 p.m.

I'd like to know a bit about this as well.

AngryCorvair
AngryCorvair SuperDork
8/14/10 12:02 a.m.
Keith wrote: Anyone here know much about dealing with a CAN bus? The 2006-10 Miata has one, and I'm trying to figure out how to make the gauges fit with a, ahem, non-standard engine. Specifically, the tach signal. That's sent to the cluster via the CAN bus. Is there a way to inject a new tach signal into the bus? Most of the information I've found has been on how to extract a tach signal for running a shift light, for example.

Does Mazda have an engineering center in the USA? I'd think that with your Miata cred, you could probably call someone "on the inside" and get a properly engineered solution.

Keith
Keith SuperDork
8/14/10 12:16 a.m.

I wish I had that much cred We'll give that a try, and I have a couple of engineers with brains the size of a planet looking into it as well. I was just curious if anyone had this sort of knowledge base already. It actually looks like a pretty cool system.

mistanfo
mistanfo SuperDork
8/14/10 1:53 a.m.

Keith:

Step One:nget factory wiring (remove from car) Step Two: ????? Step Three: Profit.

Really, might this be a good time to rewire an NC? Of course, you would then have to obtain new instruments, likely lose the HVAC, etc. But with LSx power, would you really care about any of that?

Ranger50
Ranger50 New Reader
8/14/10 8:13 a.m.

CAN bus operates as a nearby module gathers signals and then distributes all those signals out to the other modules for them to decide what they want and what they don't want.

So basically, to keep it simple, you will need to get the engine rpm signal into the factory pcm so it can be "bussed" out to the cluster to display the RPM.

Also, I know in the case of some DCX and GM's, if you remove a module, the network goes down and the vehicle doesn't operate. So be careful! :)

Brian

Keith
Keith SuperDork
8/14/10 9:15 a.m.

Rewiring the car really isn't an option, the bus is dug into all sorts of things like the ABS and probably even the control for the folding hardtop. And our customers will expect cars that have all the mod cons. One of the biggest complaints about the NA/NB conversions is that we don't have functioning cruise control! I know we'll likely lose the traction control and stability control but that's okay.

Injecting the engine RPM signal into the bus so the cluster can read it is exactly what I want to do. I just don't know how or if it's ever been done.

I don't think tell the stock PCM what the engine rpm is because I suspect it'll then get cheesed off that it's not controlling the engine and that the sensors don't agree with each other - my thoughts are that the best way to make this work will be to set things up so the stock ECU knows the ignition is on but not that the engine is running. I'm guessing the speedo will still work at that point, along with the other gauges other than the tach. Here's what I can find that's attached to the bus in the 2006 Miata. It's interesting that the fuel signal comes through the ECU but the oil pressure does not.

Looks like the CAN bus in the NC talks to:
PCM (duh)
Instrument cluster
Data link connector
Steering angle sensor
Keyless control module
DSC
ABS
TCM

Possibly more on a later car, that's an O6.

Extrapolating from the wiring diagram, the following gauges are run by the PCM via the bus:
Fuel
Temp
Tach
Speeeeedo
Various idiot lights

I may start with a fully functioning car and start disconnecting various pieces to see how the system reacts. The ibus in the M5 is giving me a good concept of how this is all working, and I'm reasonably computer-savvy so I can understand the idea of an in-car network.

Tyler H
Tyler H Dork
8/14/10 10:16 a.m.

On the MINI, even the dome light runs on the bus. All of these components have a bus ID and I would imagine the CAN-bus needs to be reprogrammed to interact with a new (different) CAN-bus speedo.

If if I'm not mistaken on the MINI, the CAN operates the engine controls, there is a different bus for ABS/DSC and IKE controls all of the accessories, lights etc.

Is the donor engine managed with CAN-bus?

pigeon
pigeon HalfDork
8/14/10 11:33 a.m.

How does the stock engine give the rpm signal to the CAN bus? I would assume a simple sensor. Any way to graft that sensor onto the "non-stock" engine?

qued
qued New Reader
8/14/10 11:51 a.m.

Check out Madox.net , or search on the AVR or PIC boards.

Knurled
Knurled Reader
8/14/10 12:33 p.m.
pigeon wrote: How does the stock engine give the rpm signal to the CAN bus? I would assume a simple sensor. Any way to graft that sensor onto the "non-stock" engine?

The PCM sends it. There is basically zero direct interaction between sensors and gauges, or switches and accessories, on any modern car. Inputs go to a computer module, data gets thrown around on various buses (up to six) to the item to be controlled, which is also a module, and the item works.

Which is my thought. I am assuming that the problem is that the "non stock" engine has a different engine controller.

I'm surprised the bus works at all with the PCM removed, but this may just be because the PCM tends to be at the end of the daisy-chain. (In which case, I'm also surprised that the IPC or whatever does the bus controlling isn't throwing out a bunch of communications codes)

Question: Why not leave the PCM wired in and give it a crank signal, assuming that this won't be a major production with respect to getting a Mazda-eqsue crank signal from the "other" engine? So what if it freaks out, as long as it sends out an RPM signal. The U-codes will cause a check engine light no matter what.

Another question: Is this "other engine" Ford based? If the Mazda is using EEC-V, the new engine's controller should talk to the CAN just fine all on its lonesome.

Knurled
Knurled Reader
8/14/10 12:41 p.m.
qued wrote: Check out Madox.net , or search on the AVR or PIC boards.

Oh dear god, I love that link.

Tyler H
Tyler H Dork
8/14/10 4:42 p.m.
pigeon wrote: How does the stock engine give the rpm signal to the CAN bus? I would assume a simple sensor. Any way to graft that sensor onto the "non-stock" engine?

Versus a resistance-based analog or a PWM digital sensor, CAN devices trasmit on a protocol, with multiple sensors/devices sharing the same wires. So the speed data would come from whatever sensor, encoded.

Here is a device that taps the CAN-bus and pulls out the speedo and tacho signal. It doesn't list MX-5, but I bet it is similar to Mazda 3.

http://www.racelogic.co.uk/_downloads/vbox/Datasheets/Accessories/RLVBCSI_DATA.pdf

pigeon
pigeon HalfDork
8/14/10 7:41 p.m.
Knurled wrote:
pigeon wrote: How does the stock engine give the rpm signal to the CAN bus? I would assume a simple sensor. Any way to graft that sensor onto the "non-stock" engine?
Question: Why not leave the PCM wired in and give it a crank signal, assuming that this won't be a major production with respect to getting a Mazda-eqsue crank signal from the "other" engine? So what if it freaks out, as long as it sends out an RPM signal. The U-codes will cause a check engine light no matter what.

That's what I was trying to say - if you've got a sensor ready to give the signal to the PCM, which would then sent it along the bus to eventually get to the tach, why not re-use it?

friedgreencorrado
friedgreencorrado SuperDork
8/14/10 8:50 p.m.

I have absolutely nothing of value to add to this thread. I only just barely comprehend what some of these components you're talking about actually are. I just wanted to say that watching you younger guys discuss this issue so calmly and matter of fact makes me very happy about the future of our sport.

Apologies for the derail..back to the diagnosis!

qued
qued New Reader
8/14/10 10:40 p.m.

You might want to look at CanHack , canbus shareware.

Keith
Keith SuperDork
8/17/10 11:16 a.m.

Thanks for the input, guys. As mentioned, the tach is driven directly by the PCM. This isn't restricted to newfangled cars with a CAN bus, even the 1990 Miata does that.

I've thought about giving the Mazda computer an engine rotation signal from the new engine - no big surprise here, we're talking about an LSx - as mentioned earlier. That will likely be the easiest solution, but I don't know if it will work.

I don't know how well the CAN bus will deal with partial amputation. I'm in the preliminary stages right now and haven't started pulling a car apart yet.

Pulling the signal out of the existing bus should be relatively easy - you can get the tach signal from eavesdropping on a coil wire, for example - it's the injection part I need to work with.

Thanks for the links to CanHack and Madox, there's some good information in there. Even if I don't use it, it's something I can pass along to the tame brainiacs who will likely be doing the work. Heck, a standalone signal injection interface might actually be useful for other people with other cars - just give it some inputs, set up the mapping as to what goes where, and let it run.

Keith Tanner
Keith Tanner MegaDork
6/17/21 12:54 p.m.

So I'm giving a video presentation on CAN bus stuff today (part of our Facebook Live series, 2 PM Mountain on FM's FB page and later on YouTube!) and I managed to come across this thread while trying to check something.

Man, we've come a long way. The ND is a CAN beast, the NC is so quaint by comparison. FYI, I don't think we ever did get those gauges working, we tore them out and put in a set of awful aftermarket units. The one thing on that car I would change if we rebuilt it because I sure could do it now.

Run_Away
Run_Away Dork
6/17/21 1:52 p.m.

Hah, I was a bit confused there for a bit until I checked the dates.

 

I'll check out the vidyes

Vajingo
Vajingo HalfDork
6/17/21 11:43 p.m.

In reply to Run_Away :

I thought it was an imposter for a second. The names didn't match but the avatar did. 

Keith Tanner
Keith Tanner MegaDork
6/17/21 11:45 p.m.

Second name was added at the request of my publisher during some promotion in the last 10 years ;)

alfadriver
alfadriver MegaDork
6/18/21 6:56 a.m.

The #1 key to do this is to know what the address of that signal is.  That's it.

I am FAR from a CAN expert, but had a pretty funny issue in a project- we were adding some sensors to a test car that transmitted over the car's CAN- and someone forgot to check the addresses.  One of the sensors would constantly cycle the door locks, and the other would make the dashboard a little crazy.

Once they found new addresses to transmit it, it was all fixed.

If you can find that, then I'm betting even an Arduino can transmit the RPM signal over the network properly.

1 2

You'll need to log in to post.

Our Preferred Partners
dCSsGND8FCH9vpdJEgGpLA5eyOfevb95ebXLPKbaM2vH173a4YflP3rTyjI4Qb5R