You should run separate control lines to RS485 RE~ and DE. I don't remember the reason why off the top of my head, but I do remember I regretted not doing so on the RevA LiBCM PCB.
True, might as well!
I'd add a depopulated resistor between RS485 A & B... I know the instrument panel PCB already has one, but if you're planning to solder to those pads, then it would be much easier to just remove the OEM resistor and then already have one populated on your PCB.
I think it'll be tricky for an end user to desolder a fairly long SMD resistor. It's also glued on since it's on the side of the board that went through wave soldering. I think it won't be too much trouble to leave the existing resistor and solder to it. Alternatively, I could change the RS485 connection points to be at the through-hole cluster connector. Though, it is free to add the footprint, so might as well?
What is your ground referenced to? Previously you've mentioned that the next version will have better grounding to prevent ground loops. So are you using GND_ENG or GND_CHASSIS?
All grounds are referenced to the cluster's signal ground. G401, behind top left of kick panel, according to the cluster wiring diagram. To prevent a ground loop with the OBDII connection, there are digital isolators in the OBDII plug with their own power derived from the OBDII 12V.
Why use logic gates for your inputs? Are they already present in your design? You can get much higher density if you just build the logic yourself (e.g. a single pulldown resistor that drives a single FET gate). Then you don't need bypass capacitance on the logic rails, or the larger logic gates at all. You could probably cut your PCB real estate in half (or more) by using discrete logic, particularly since the digital logic is simply buffering signals. Your BOM would cost for these circuits would also drop considerably.
They are already present and necessary in the design, but mainly... because I already bought the quantity for 50 boards, with their usage here accounted for. I suppose I could just not use all 9 I had allocated per board, and save them for future runs. You're right that a single transistor design is way smaller and cheaper, honestly I hadn't even thought of it because I was set on using the parts I'd already bought. I think I will make that change, thank you!
The board real estate saving will be nice, but honestly, there is a lot of crap on this board, I doubt the circuitry on this page takes up more than 10% of it.
Probably want a zener on FUEL_SENSE, in case the opamp voltage translation is lost.
Oh whoops, good point, I hadn't even realized! Hmm, there is strangely a second fuel-sense circuit on the cluster that scales it to a lower value (about 1.85V max). I might just run the op-amp from 3.3V and read that signal instead. That's still about 2000 ADC counts across the whole fuel sender range, more than enough to scale to 20 bars.
I recommend a 100 kOhm resistor between TLV9041SIDBVR pins 4 & 1 (to match the input impedances). Probably not an issue, but it's good design practice.
Interesting, I can see why that's sensible, but I've never seen it done in a unity-gain configuration (nor have I ever done it before). Have you seen issues from not doing that in the past?
33 kOhm is a lot of input resistance to FUEL_SENSE. That opamp can drive lower-valued resistors.
The 33k on the output was part of a specific resistor divider, but I may not even need it anymore.
Thank you so much for the detailed feedback!
Is that so when you transmit, your receiver (on the same device) doesn't get a copy of what you're sending?
(though I suppose if you left the receiver enabled you might be able to sense a collision by comparing what you sent to what you received. I don't know if that's a thing - I have not done much with RS-485 where I didn't control both ends or was concerned about this)
That's how it's currently configured when connected together, only the receiver or transmitter is enabled at once. You are right that having separate control could allow you to detect collisions,
but the K/H lines are single-master busses, where you transmit a complete packet of data, then wait for the response. I don't think any Insighter OBDII products do collision detection and they work fine. Edit: Forgot we were talking about METSCI, not the K/H lines. The cluster, stock, only receives on this line and does not transmit. Future systems (LiMCM) would be the bus master, so communication would work the same way and there should be no collisions.
But, if I have the spare pins and board space, might as well add the second line.