Testing schematic for differential bus... ground issue

Hi.

My project is a microcontroller that can read fault codes from older (pre 2008) chrysler vehicles. One of the protocols I need to implement to talk to pre 2000 vehicles is the CCD bus. It's a differential bus, kind of like the predecessor to CAN. so theres a + and - line that both read about 2.5 volts at idle, and when a module on the bus tries to talk, it creates a differential voltage to indicate a 0 bit. Anyway.

My breadboard test circuit just involves an arduino micro powered thru USB, but eventually I will power my circuit from the OBD connector.

So I had everything wired on the breadboard and was about to start coding when I noticed I forgot to connect the arduino ground to the OBD2 cable ground. As soon as I did that, both CCD wires read 0 volts on my multimeter, completely dead. I eventually found that, even with both CCD wires left not connected to the breadboard, when the OBD2 ground comes into contact with my ground, the CCD wires go dead. Can anyone tell me why that is? Should I not be joining the ground wires?

I can't see your breadboard set up from here, so I guess you will just have to supply a schematic and perhaps pictures of what you have.

Paul

OK, I'll work on a more specific schematic (since I am merely testing a single circuit from my full schematic), but my EAGLE files are here: CDJPScanMaster/Vehicle_Link/Hardware at master · katemonster33/CDJPScanMaster · GitHub

CCD circuit is on the top of page 2, it's the MAX13444EASA+T tranceiver and TL331 comparator.

Maybe I included too much detail in my original post though. Let me rephrase a bit, maybe this will make it clearer.

With only the Arduino Micro by itself, powered by USB, and the vehicle ECU powered by a bench +12V supply (basically a 12V wall wart I found lying around), and my PicoScope conncted to CCD+ and CCD- watching the voltages, if I run a ground wire from the vehicle ECU (pin 4/5 from the OBD connector), the CCD lines go completely dead. Could it be my 12 volt supply? What can I check? I should be able to connect the grounds together in this way with no ill effects, right?

My PicoScope conncted to CCD+ and CCD- watching the voltages

Do you mean the ground connection of the Picoscope is connected to one of the CCD wires?
If so, there's your problem, you are shorting out that CCD wire to ground.

Yes that's it, I connect the Pico that way to watch the differential signal. It's fine without the OBD and Arduino ground touching. So basically I'm unintentionally connecting CCD- to ground by touching the OBD ground and Arduino ground together? The Arduino and Pico are connected to the same PC.... I didn't even think about that.

Oscilloscope inputs are not (usually) differential, they are unbalanced. You need to connect a separate input to each of the 2 wires. The rule with any balanced signal of any kind is whatever you do to one wire you do the same to the other. In this case scope probe to one, scope probe to the other.

Just tested... that's exactly what it was! You're a genius guy! Thank you! Now I just need to finish buying resistors... why do they make so many of them?! :frowning:

Be very careful working with this, you can destroy your vehicle if you make a major mistook. This is the communication network for the vehicle as well as being available for diagnosis. Please go to this link before proceeding: Chrysler -- CCD (Chrysler Collision Detection) Data Bus - IAmAProgrammer - 博客园 It may save your vehicle.

The Chrysler Collision Detection (also referred to as CCD or C2D ) data bus system is a multiplex system used for vehicle communications on many Chrysler Corporation vehicles. This was there predecessor to OBD2. Within the context of the CCD system, the term “collision“ refers to the system’s ability to avoid collisions of the electronic data that enters the data bus from various electronic control modules at approximately the same time.

What you are describing is what the bus should do when faulted. There are essentially 12 “hard failures“ that can occur with the CCD data bus:

  1. Bus Shorted to Battery
  2. Bus Shorted to 5 Volts
  3. Bus Shorted to Ground
  4. Bus (+) Shorted to Bus (–)
  5. Bus (–) and Bus (+) Open
  6. Bus (+) Open
  7. Bus (–) Open
  8. No Bus Bias
  9. Bus Bias Level Too High
  10. Bus Bias Level Too Low
  11. No Bus Termination
  12. Not Receiving Bus Messages Correctly

The differential Bus systems typically runs at a bus speed of 7812.5 bits/second, this is not a standard baud rate.
This is only a very small sample of what the web page explains: Chrysler -- CCD (Chrysler Collision Detection) Data Bus - IAmAProgrammer - 博客园
Good Luck, & Have Fun!
Gil

I'm glad to find somebody on this forum who knows a bit more about this bus. I dont suppose you've tackled a project like this before?

Anyway, I'm actually using an old 1996 ECU by itself wired up to an OBD port. So I wouldn't be risking my own vehicles electronics by making a mistake, but I am trying to be careful. Thanks for the note, the link seems very helpful :slight_smile:

Yes, I was involved in several projects in that time frame, at the chip and protocol level. Chrysler CCD was the first multiplex to go into production at that time, followed by Ford and GM. It did not take the government long to figure out if they could read the data they could enforce there laws. From this the California CARB gave the industry a few short years to make this happen. The real problem was each had there own protocol and was not going to change it. Under the aspusus of the SAE a group was formed to determine how to comply with the pending laws. OBDII came from this. The J1850 connector was defined by this group along with several connector manufacturers. If you check you will find that all three protocols plus CAN and If I remember J8141 a serial protocol are available on the J1850 connector. There was a compliance meeting hosted by SGS where it was shown that it was possible to keep all three protocols on the same connector and diagnostics read. When the OBDII tester is connected it grounds a pin putting some of the on board modules in a diagnostic mode. This allowed the manufacturer to update modules software at the dealer eliminating the changing of modules. Please realize this this happened a lot of years ago and my recollection if from my memory. I hope this answers your question "I don't suppose you've tackled a project like this before?"
Good Luck, & Have Fun!
Gil

Well I was most concerned with whether you knew CCD from an electrical standpoint. I know the "official" CCD chip from chrysler is still out there but I'm not interested in putting a project out there for other people to consume that uses an EOL chip. So I was wondering if you could give tips on how I've implemented CCD and whether it could be simplified. The MAX13444EASA transceiver chip in particular is very expensive.

Yes I can but no I cannot. I am under a NDA and cannot disclose that information. A quick check does not show any chips available, realize each manufacturer uses or did use there own custom chips. but take a look at trying to drive the buss with current sink and source made with discrete components. That is what I did when we first worked with it it was published in one of the SAE papers. There are cables available for OBDII testers. There is CAN on the later units but I do not believe it is on yours. For grins try this link: https://www.iso.org/obp/ui/#iso:std:iso:9141:-2:ed-1:v1:en that protocol should be on yours and is available to the world. That is what the non us cars initially used. If my memory is correct it starts at a very low baud and negotiates its way to a faster rate.
Good Luck & Have Fun!
Gil

I guess the only question I have why is it necessary
to connect the bus signals to the arduino anyway?
Why not isolate the two circuits with opto-couplers
so there no physical connection, just a 5000V isolation barrier ?
I think I've differential opto- isolators that are
just like bus differential tranceivers but have
a photon barrier in the middle so the connections
are identical on inputs and outputs but there is no physical connection from input to output because
they are isolated by the photon barrier.

gilshultz:
Yes I can but no I cannot. I am under a NDA and cannot disclose that information. A quick check does not show any chips available, realize each manufacturer uses or did use there own custom chips. but take a look at trying to drive the buss with current sink and source made with discrete components. That is what I did when we first worked with it it was published in one of the SAE papers. There are cables available for OBDII testers. There is CAN on the later units but I do not believe it is on yours. For grins try this link: https://www.iso.org/obp/ui/#iso:std:iso:9141:-2:ed-1:v1:en that protocol should be on yours and is available to the world. That is what the non us cars initially used. If my memory is correct it starts at a very low baud and negotiates its way to a faster rate.
Good Luck & Have Fun!
Gil

Yeah I know ISO9141. I work in automotive diagnostics so this is very much my area of expertise, the message structure anyway.

Anyway, great news. After plugging in everything I finally managed to get my comparator working, the RX circuit appears to work! I believe I still need a capacitor somewhere, the bus seems unreliable on the scope, but I’m making progress.

raschemmel:
I guess the only question I have why is it necessary
to connect the bus signals to the arduino anyway?
Why not isolate the two circuits with opto-couplers
so there no physical connection, just a 5000V isolation barrier ?
I think I’ve differential opto- isolators that are
just like bus differential tranceivers but have
a photon barrier in the middle so the connections
are identical on inputs and outputs but there is no physical connection from input to output because
they are isolated by the photon barrier.

I mean that’s a cool thought, but I have zero idea how to accomplish that, and whether an opto isolator can work with serial bus traffic.

They are differential optos, identical to what you are using in every
way except inputs and outputs are optically
isolated so one could assume they designed
for serial bus traffic.
Did you even bother to Google it ?

https://www.renesas.com/us/en/www/doc/application-note/an1991.pdf

raschemmel:
They are differential optos, identical to what you are using in every
way except inputs and outputs are optically
isolated so one could assume they designed
for serial bus traffic.
Did you even bother to Google it ?
https://www.nve.com/Downloads/ab20.pdf

https://www.renesas.com/us/en/www/doc/application-note/an1991.pdf

I generally don't do a google search for every person that says "I think I may have heard of this one thing that might help." I mean I'm sorry, not trying to be rude, but this isn't the first time I've had people insist I change the schematic and it doesn't work because they don't understand the signal I'm working with.

Especially because, this is not RS485, which I said before. I tried connecting the lines directly to an RS485 IC. It doesn't work. A 0 bit tends to be 150-200 mV on CCD. Thus my schematic, where I have to have a separate circuit for the RX signal because the RX line on the MAX13444 always reads high.

MAX13442E

Especially because, this is not RS485, which I said before. I tried connecting the lines directly to an RS485 IC. It doesn’t work. A 0 bit tends to be 150-200 mV on CCD. Thus my schematic, where I have to have a separate circuit for the RX signal because the RX line on the MAX13444 always reads high.

How do explain this on the MAX13444E datasheet ?

General DescriptionThe MAX13442E/MAX13444E are fault-protected RS-485 and J1708 transceivers

Can’t you post a schematic that shows how you are trying to talk the MAX13444E ?

Either I am missing something or you are not telling us everything.

Which chip on the CCD are you connecting to ?

You are asking us about a CCD circuit without providing any CCD schematic.
How exactly do expect us to troublehoot an elctronic issue with no schematic ?
In what universe does that work ?

I don’t see anything in your post that tells us how much experience you have working with CCD .
Is this your FIRST CCD project ?
Have you ever built a CCD circuit that worked ?
How much do you know about CCD ?
Why are you telling us your project doesn’t use RS-485 and the datasheet for the
chip you said you are using says it is RS-485 ?

Please explain because it’s not adding up.
For one thing , we don’t know what the CCD “+” CCD “-” are or what chip they are on.
Don’t you think we have a "NEED TO KNOW " ?

raschemmel:
Either I am missing something [...]

From post #2 from me in this thread.... Like I said. Page 2 of the schematic file there. Top left of the page.

Have you ever built a CCD circuit that worked ?
How much do you know about CCD ?
Why are you telling us your project doesn't use RS-485 and the datasheet for the
chip you said you are using says it is RS-485 ?

Yes I did. I used the CDP68HC68S1 interface chip which is a very old end-of-life chip for interfacing CCD. I put in a crystal and it started outputting messages.

With the chip being EOL though, I don't think it's correct to use it in a new project. I want something kind of "future proofed" so I am working with simple components and technologies still in use. J1708/RS-485 is the closest thing I've come to. My current setup is capable of transmitting using RS-485 (1.5V differential is OK for sending a message, bus doesn't care, but nobody will talk back with that high of a differential), and I just started receiving messages with the RX circuit I made.

How much do I know about CCD? Not very much. I've seen examples of what CCD bus traffic looks like, and I know the baud is 7812.5 but that's the most I know. Electrically I am shooting from the hip and hoping something eventually works. I started this project with absolutely zero knowledge of electronics, I am learning as I go.

From post #2 from me in this thread.... Like I said. Page 2 of the schematic file there. Top left of the page.

Those are Eagle files and that's a .sch file .
I don't have Eagle and I can't read a .sch file.
Can't you export a PDF or BMP like Orcad does ?

My current setup is capable of transmitting using RS-485 (1.5V differential is OK for sending a message, bus doesn't care, but nobody will talk back with that high of a differential), and I just started receiving messages with the RX circuit I made.

with the RX circuit I made.

Which circuit ? The .sch file or some other circuit ?
Can you post a schematic of that circuit or are you good now ?

raschemmel:
Those are Eagle files and that's a .sch file .
I don't have Eagle and I can't read a .sch file.
Can't you export a PDF or BMP like Orcad does ?

Which circuit ? The .sch file or some other circuit ?
Can you post a schematic of that circuit or are you good now ?

That's not what you said before though, you said I posted no schematic. And yet, there it is. And since you're being so nice, here's a screenshot of the schematic.