Help understanding a strange PCB mistery  - Page 1
Forum section: electronics / beginners

author: john2k
author_rank: Newbie
timestamp: November 07, 2022, 02:31:36 pm
content: Hi,I'm new here and came here in an effort to try and get some help with a very strange PCB issue I am having. I have a PCB board that comes with an aftermarket headunit upgrade for my car. The sole purpose of this PCB is to recognise climate-control related button presses and then send the correct signal to the main car. So the board itself connects to a processing module. There are a combination of LED's for backlight and also some to tell you when a certain function is turned on. The LED's and the switch buttons all appear to share the same ground pin on the connector. Then the climate buttons seem to be grouped into 2 or 3 different pairs going to a single pin. So for example 4 or 6 buttons might be on one pin and another 4 or so might be on another pin etc. These buttons appear to be going through a bunch of resistors to give a certain voltage reading when a button is pressed. It's been working fine in the summer months but all of a sudden in winter and when it's cold, I am getting random voltage readings on the button presses. Like normally I would expect the the circuit only gets completely when the actual switch is pressed down. But in this case it appears to look like a switch is being pressed but then the voltage is randomly different. I'm baffled by why this is happening and ofcourse it being a chinese product there isn't much support.I've attached full resolution picture in the hope that someone can shed some light. Picture contains front and rear view. Can someone help?The question is, if the button isn't being pressed, then the circuit through those resistors are not being completed but then what is doing the random switching to let ghost voltages through?Also, looking at the PCB you can see that the main components are mainly LED's, buttons, resistors. And there seems to be 2 or so components labelled Q which i'm assuming are transistors. Could the transistors be responsible for this? What could be the purpose of the transistors?Many thanks

author: coromonadalix
author_rank: Super Contributor
timestamp: November 07, 2022, 03:24:56 pm
content: Normally to help yourself you should do a reverse schematicThe button may or may not be in a matrixSometimes the buttons will create a voltage divider, and the mcu will read the "function is equal to an x voltage" sometime this is done to simplify the circuit or use less pins on a mcu / controllerNormally your after market radio should be able to read this or learn the buttons and match them to a function, do you have an user manual ?? do you have your car wiring / functionsSome radios have 1 or 2 cables for thisor try to find some car forums related to yours ....

author: john2k
author_rank: Newbie
timestamp: November 07, 2022, 07:37:58 pm
content: Thanks for the reply. This partcular PCB isn't wired to the programmable terminals on the head unit. it's pre-programmed in the MCU only. There is no manual for this particular part as it's part of the frame.The problem i'm facing is that I have two of these same units I purchased for same model car (one for me and another for my friend) Because My PCB is giving ghost voltage readings, the temperature and climate settings all start to randomly move around as if someone is pressing the buttons. But the buttons are not pressed.Wth the PCB completely removed and disconnected like the picture, when I measure the resistance between the ground pin and the pin tied to a few of the buttons on my friends PCB board, unless I press the buttons I do not get any resistance reading. and the minute I press the buttons that are tied to that pin I get different resistance values for each button pressed (and these values are always consistent). However, if i do the same thing on mine, the resistance readings go haywire even when I am not pressing anything at all and because of this the MCU goes haywire too and starts doing all strange things. On my friends PCB board, the readings only appear when I press the button. Sometimes if i leave my PCB inside in hot room and wait then randomly the problem disappears but then comes back again.So when the button is pressed the power is supposed to go through the resistors in it's path hence why on my friends one it shows the correct resistance values. But then why is it on mine that its giving random values hence creating all kinds of voltage readings? What could be bypassing the resistor and the switch and making the actual connection complete?Sorry I hope my explanation all makes sense

author: Gyro
author_rank: Super Contributor
timestamp: November 07, 2022, 08:23:11 pm
content: The problem sounds to be either temperature or moisture related then. Condensation can start to rear its head at this time of year in (very!) wet weather and cold nights.I would check all of the resistor solder joints with a magnifier and also the cleanliness of the PCB. SW1 certainly seems to have been hand soldered and the flux not removed. Try cleaning both sides of the of the PCB carefully with IPA or meths (avoiding getting any in the switches). Some 'no-clean' fluxes can get quite 'leaky' in humid conditions.

author: DavidAlfa
author_rank: Super Contributor
timestamp: November 07, 2022, 08:28:35 pm
content: 99% of the time it's the buttons catching moisture!Replace them all, once they start to fail, the rest will also go soon.Measure the resistance betweebn the button pins with teh multimeter set in at least 1Mohm.Don't touch the board or you might affect the readings. Normally you should read infinite.If you get low reads try inverting the probes.

author: AndyBeez
author_rank: Frequent Contributor
timestamp: November 07, 2022, 08:52:14 pm
content: Push button switch inputs to uCs are normally tied high to a voltage, and grounded low when the button is pressed. There is often a debounce RC network (sometimes with a diode too) on the switch to defeat random false triggering. Is your ghost voltage just the tie up voltage? I have no idea if the designer mapped the uC pins and switches as 1:1 or, did some firmware multiplexing/scanning of the switches to see which is pressed? Random operation might be down to an unstable input voltage?A reversed engineered schematic would help everyone - it might reveal an 'interesting' design. I suspect those two transistors are mosfets - they will have a number on them.Otherwise, it's everyone's best or worse guess.

author: DavidAlfa
author_rank: Super Contributor
timestamp: November 07, 2022, 08:56:21 pm
content: Most of these board use analog sensing, with 5-10 buttons tied to a single line, each with a different resistor, so different voltages will be generated depending on the button being pressed.However this allows little room for error, voltage steps are pretty tight, perhabs 150-200mV, so any button slightly leaking will cause havoc.Or might not be using any analog at all, but most systems will hang is any button is permanently pressed down.

author: AndyBeez
author_rank: Frequent Contributor
timestamp: November 07, 2022, 09:08:53 pm
content: Ouch > China was really cheaping out on the GPIO.Then... my prime suspect is a wobbly supply rail. A defective cap maybe, or even just a crappy pcb connector.On the internal condensation theory, zap it with a hair drier for five minutes. If the parts start falling off, reduce the heat setting.

author: wraper
author_rank: Unknown
timestamp: November 07, 2022, 09:23:24 pm
content: The same issue was plaguing many devices like TVs, monitors, DVD players and others. In presence of moisture switches grow dendrites between contacts due to silver electromigration and become somewhat conductive in off state. Normally they would still work but due to stupid design decision with voltage dividers (especially in harsh environments) to save some I/O pins, this fails miserably. The only thing you can do is replacing all switches but they may not last too long until the same failure will happen again. The only solution that guarantees a long term reliability in harsh environment is using more expensive switches with gold plated contacts instead of usual silver plated.

author: Manul
author_rank: Super Contributor
timestamp: November 07, 2022, 09:56:56 pm
content: Quote from: john2k on November 07, 2022, 07:37:58 pmFor me it is interesting what values of resistance are we talking here? At least what order of magnitude? What about your friends board? Maybe the problem is that someone thought making voltage dividers from 100k or 1M resistors is a good idea because it saves power? I would probably replace all the divider resistors with small values (keeping proportions and not exeeding power dissipation rating obviously). Because who cares about consumption.Also cleaning the board and conformal coating it might help a lot. Be careful with buttons and connectors though to not get the conformal spray inside.Edit: It is also interesting what the transistors do. If their bases / gates float or they are very high impedance, you may get so to speak amplification of leakages.

author: Monkeh
author_rank: Super Contributor
timestamp: November 07, 2022, 10:00:19 pm
content: Quote from: AndyBeez on November 07, 2022, 09:08:53 pmThis is quite normal in cars. It doesn't make sense to have one wire in the harness for every single switch position or button in the car.

author: DavidAlfa
author_rank: Super Contributor
timestamp: November 07, 2022, 10:38:56 pm
content: Exactly. They think using 100K resistors is great for power consumption.What it actually is: plain stupid!Any small leak will cause a lot of problems, a most buttons I replaced before measured 100-400K, messing everything up.Using ~1K resistors would tolerate those issues a lot better.Power consumption? 95Wh/year if you pressed the buttons all the time, but pressed time is probably under 0.01%, so...Ever heard of planned obsolescence?Wouldn't surprise me if these practices are intentional, to make them fail at the slightest thing.

author: john2k
author_rank: Newbie
timestamp: November 08, 2022, 02:48:29 pm
content: Thanks you all for the replies. Much appreciated. When I remove the PCB from the car I will test the resistance between the two poles of each switch.From the previous testing I did, each button is definately tied to the high pin via a resistor. So for example. I remember that it has the following 4 buttons tied to a single pin and a common ground pin. The ground pin seems to be same across all buttons and also there seems to be numerous ground pins that all seem to be ground. But there is only pin tied via the resistor for each group of buttons. The 4 buttons I tested were:1. passenger temperature increase2. passenger temperature decrease3. driver temperature increase4. driver temperature decreaseWith my multimeter set to measure ohms, i had the probe hooked to the common ground and the pin that the 4 buttons are grouped to. When everything was working fine, If i did not press the button I wasn't getting any readings or change on the multimeter. And when i press the buttons I would get the following readings that match the exact resistor value that it's tied to. I tested this on my friends PCB board too and exact same thing.But then when the random issues started happening, I hooked up the multimeter again exactly same and i started noticing all random ohm readings appearing even though nothing was being pressed. I figured out which button it was that was creating these ghost readings, so instead of removing the button itself, i de-soldered the resistor tied to that button and the problem disappeared. And then it works for a many weeks and then the problem occurs again. So it's almost like each button is dying one by one giving different ghost ohm readings.My question is, If the job of the button is simply to link the connection when pressed between high and low through a resistor, then how is it that a faulty button is creating random resistance values which in turn is make the MCU not understand what's going on? So for example driver temperature increase button is tied to a 13k resistor (SMD 133) but when the malfunction was happening, i was getting really strange varying ohm readings going to hundreds of thousands of ohms (cant remember exact) and sometimes it will go down very low. And this strange reading disappears if i remove the resistor linked to the button. and the rest of the buttons then work.The strangest thing is that I have two of these systems and only my PCB is doing this.